Netscape Navigator
Netscape's Navigator browser, which originally shipped standalone but more
recently has been bundled as part of the Communicator suite, supplanted NCSA
Mosaic late in 1994 as the standard browser by which all others were measured.
Version 1.1N was released in the spring of 1995, at roughly the same time as
the frozen PNG specification, but despite the hopes and efforts of the PNG
developers, the first Navigator 2.0 betas shipped later that year with animated GIF
support rather than PNG. Navigator 2.0 did offer the possibility of
platform-specific, third-party PNG support via Netscape's new plug-in
interface, but only for Windows and Macintosh. Alas, even that was fatally
flawed from an image-support perspective: Navigator's native image-handling
code (via the HTML IMG tag) had no provision for handing off unknown
image types to plug-ins. That meant that even if PNG plug-ins were written
for both supported platforms, and even if a majority of users downloaded and
installed a plug-in, it would be useless for standard HTML--only pages
using Netscape's proprietary EMBED tag would invoke the custom code.
Moreover, Navigator 2.0 plug-ins were given no access to the existing page
background, which meant that PNG transparency would be completely ignored.
The Navigator 3.0 betas in 1996 extended plug-in support to include Unix
platforms as well, but they fixed none of the fundamental problems in the
plug-in API.[13]
The interface was considerably revamped in 1997 for the 4.0 betas, however,
finally allowing transparency support via something called a windowless
plug-in--though only for the Windows and Macintosh platforms. Support
was also added for images referenced via the new HTML OBJECT
tag. But the basic lack of a connection between plug-ins and the
native IMG-tag code persisted, and this barrier extended to
the new OBJECT-handling code as well--even a JPEG or GIF
image in an OBJECT tag would fail unless an appropriate
plug-in were found. Should the outer OBJECT happen to be a
PNG, Navigator would fail to render even the inner GIF or JPEG in the
absence of a PNG plug-in. Unlike IMG tags, Navigator required
OBJECT tags to include the otherwise optional HEIGHT
and WIDTH attributes to invoke a plug-in. In at least
one version, the browser would ignore not only an undimensioned
OBJECT but also all subsequent dimensioned ones.
But in November 1997, a year after the World Wide Web Consortium (W3C)
officially recommended PNG for web use, Netscape released Navigator 4.04 with
native PNG support--that is, it was at last capable of displaying PNG images
referenced in HTML IMG tags without the need for a third-party
plug-in. Unfortunately, versions 4.04 through 4.51 had no support for any
type of transparency, nor did they support gamma correction, and their
handling of OBJECT tags remained broken. At least a few of
these releases, including 4.5, had a bug that effectively caused any
PNG image served by Microsoft Internet Information Servers to be
rendered as the dreaded broken-image icon. (I'll come back to this in
the server section later in this chapter, but the bug is fixed in
Navigator 4.51.) But the 4.x versions did support progressive display
of interlaced PNGs, at least.
Concurrent with the later Communicator 4.0 releases, on March 31, 1998,
Netscape released most of the source code to its development version of
Communicator, nominally a pre-beta version ``5.0.'' Developers around the
world promptly dug into the code to fix their favorite bugs and add their
pet features. One nice surprise was that the so-called Mozilla sources
already contained a minimal level of transparency support. There were two
main problems with it, however: the transparency mask for all but the
final pass of interlaced images was scaled incorrectly--a minor bug, hardly
unexpected given the early stage of development--and the transparency
was either fully off or fully on for any given pixel, regardless of whether
multilevel transparency information (an alpha channel) was present. The
latter problem proved to be more serious than it sounded. Because of the
way Mozilla's layout engine worked, at any given moment the code had no idea
what the background looked like; instead, it depended on the local windowing
system to composite partly transparent foreground objects with the background
image(s). In other words, adding full support for alpha transparency was
not something that could be done just once in the image-handling code, but instead
required modifying the ``front end'' code for each windowing system supported:
at a minimum, Windows, Macintosh, and Unix's X Window System, plus any new
ports that got added along the way.
Difficult as it may sound, fixing Mozilla's (and therefore Navigator's)
support for PNG alpha channels is by no means an insurmountable challenge.
But in one of life's little ironies, the person who initially volunteered
to fix the code, and who thereafter nominally became responsible for it,
also somehow agreed to write this book. Alas, when push came to shove,
the book is what got the most attention. :-) But all is not lost;
by the time this text reaches print, full alpha support should be well on
its way into Mozilla and then into Navigator 5.0 as well.
Table 2-1 summarizes the status and level of PNG support in all of the major
releases of Netscape's browser to date. The latest public releases,
Navigator 4.08 and 4.51, are available for Windows 3.x, Windows 95/98/NT,
Macintosh 68k and PowerPC, and more than a dozen flavors of Unix; the web
page is at http://home.netscape.com/browsers/.
Version 4.04 for OS/2 Warp is available only from IBM's site,
http://www.software.ibm.com/os/warp/netscape/.
Table 2-1.
PNG Support in Netscape Navigator and Mozilla
|
Version |
PNG Support? |
Level of Support
|
NN 1.x |
No |
N/A |
NN 2.x |
Plug-in (Win/Mac only) |
EMBED tag only; no transparency
|
NN 3.x |
Plug-in (all platforms) |
EMBED tag only; no transparency |
NN 4.0-4.03 |
Plug-in (all platforms) |
EMBED or OBJECT; transparency possible on Windows and Macintosh |
NN 4.04-4.8 |
Native (all platforms) |
IMG; no transparency |
Moz 4/1998 - 3/2000 |
Native (all platforms) |
IMG; binary transparency |
NN 6.x, NN 7.x, Moz 1.x |
Native (all platforms) |
IMG; full alpha transparency |
Table 2-2 summarizes the PNG support in a number of third-party plug-ins.
Note that the Windows QuickTime 3.0 plug-in installs itself in every copy
of Navigator and Internet Explorer on the machine, taking over the
image/png media type in the process. This effectively breaks
the browsers' built-in PNG support (if any) and may be true of other plug-ins
as well. To remove the QuickTime plug-in from a particular instance of a
browser, find its plug-ins directory--usually called Plugins--and
delete or remove the file npqtplugin.dll (or move it elsewhere).
Table 2-2.
PNG Support in Netscape Plug-ins
|
Name |
Platform(s) |
Plug-in API Level |
Level of Support
|
PNG Live 1.0 |
Win 9x/NT, Mac PPC |
2.0 |
No transparency, no gamma, no progressive display |
PNG Live 2.0b5 |
Win 9x/NT |
4.0 |
Full transparency if no background chunk, broken gamma, progressive display |
QuickTime 3.0 |
Win 9x/NT, Mac 68k/PPC |
2.0 |
No transparency, no progressive display |
PNG Magick 0.8.5 |
Unix/X |
3.0 |
No transparency, no progressive display, requires ImageMagick |
G. Costa plug-in 0.9 |
OS/2 |
2.0 |
No transparency, progressive display
|
Netscape's online programming documentation for plug-ins may be found at
http://developer.netscape.com/docs/manuals/communicator/plugin/.
The PNG Live plug-in, versions 1.0 and 2.0b5, is available from
http://codelab.siegelgale.com/solutions/png_index.html and
http://codelab.siegelgale.com/solutions/pnglive2.html, respectively.[14]
Apple's QuickTime is downloadable from
http://www.apple.com/quicktime/.
Rasca Gmelch's PNG Magick plug-in is available from
http://home.pages.de/~rasca/pngplugin/, and the ImageMagick home page
is at http://www.wizards.dupont.com/cristy/ImageMagick.html.
And Giorgio Costa's OS/2 plug-in can be downloaded directly from
http://hobbes.nmsu.edu/pub/os2/apps/internet/www/browser/npgpng09.zip.
|