Windows Icons

Windows Icons



Microsoft Windows icon files


A Microsoft Windows icon file contains one or more images, at resolutions up to 256 by 256 pixels and various bpp values. The images are encoded either as Portable Network Graphics file (PNG), or in a format similar to Microsoft’s BMP format.

If encoded as BMP, the image includes an ‘AND mask’, which contains 1-bit transparency data. It may also contain additional 8-bit transparency data together with the color information.

Color Depth
Except for the 16 bits per pixel images and images with bit fields, which both are rare, the colors in all BMP encoded images are RGB with 8 bits per channel. Images with bpp values lower than 16 use a palette.

I.e. the bpp value gives the number of distinct colors, not the color depth.

XOR Mask and AND Mask
BMP encoded images contain two pixel maps: The so-called ‘XOR mask’ stores the color information for each pixel, and the ‘AND mask’ stores the transparency belonging to it.

The names and the function of these maps are most easily understood by looking at how a 1-bpp icon image is rendered on a monochrome screen: The pixels on the screen are logically AND-ed with the bits on the AND mask, then the result is logically XOR-ed with the bits on the XOR mask.

The result is that if a bit on the AND mask is reset, the corresponding bit on the XOR mask determines the color of the pixel on the screen. If a bit in the AND mask is set and the corresponding bit in the XOR mask is black (reset), the image is transparent. Finally, if the bits are set in both the AND and XOR mask (the pixel on the XOR mask is white), the background of the screen is inverted.

In color environments, a pixel on the XOR mask outside the opaque area of the image is usually black and sometimes white, but a color other than black and white will hardly give predictable results.

Since Windows XP, there may also be an 8-bit alpha channel in 32-bpp BMP encoded icon images. The AND mask, however, is still required and used e.g. for generating shadows.

PNG encoded images don’t contain AND masks. While rendering a PNG encoded image, Windows constructs an AND mask on the fly from the alpha channel, if present.

Evolution of Windows Icons
The Windows icon file format has undergone some extensions since it was invented in the mid-eighties for Windows 1:

Windows 1 used monochrome 32x32 icons only.

Windows 3.0 added color icons with bpp values up to 8.

Windows 4.0 (a.k.a. Windows95) added support for 32-bpp images and resolutions up to 256 by 256.

NT 5.1 (a.k.a. Windows XP) added support for the 8-bit alpha channel in the unused bits of 32-bpp images.

NT 6.0 (a.k.a. Windows Vista) added support for PNG encoded images

Common Resolutions and BPP Values
Typical resolutions and bpp values of the Windows shell icons include:

<TABLE summary="BPP values" align="center" border=1> <TR><TH>OS</TH><TH>resolutions</TH><TH>bpp values</TH></TR> <TR><TD>Windows 3</TD><TD>32x32</TD><TD>1, 4<BR></TD></TR> <TR><TD>Windows 4</TD><TD>16x16, 32x32, 48x48</TD><TD>4, 8</TD></TR> <TR><TD>NT 5</TD><TD>16x16, 32x32, 48x48</TD><TD>4, 8, 32</TD></TR> <TR><TD rowspan=3>NT 6</TD><TD>16x16, 32x32, 48x48</TD><TD>4, 8, 32</TD></TR> <TR><TD>24x24, 96x96</TD><TD>8, 32<BR></TD></TR> <TR><TD>256x256</TD><TD>32 (PNG encoded)<BR></TD></TR> </TABLE>

Within the icon file, the images with low bpp values are usually stored first. With the same bpp value, the images are sorted by resolution, large images first.

MIME Type and File Name Extension
The MIME type of Windows icon files is registered by IANA as image/, but the unofficial name image/x-icon is still widely used.

The file name extension (used by Microsoft operating systems as file type identifier) is .ico.

More Linux Commands

tkerror(n) - Command invoked to process background errors...
Note: as of Tk 4.1 the tkerror command has been renamed to bgerror because the event loop (which is what usually invokes it) is now part of Tcl. For backward co

Tk_GetImageMasterData(3) - define new kind of image.........
Tk_CreateImageType is invoked to define a new kind of image. An image type corresponds to a particular value of the type argument for the image create command.

fanotify_mark(2) add, remove, or modify an fanotify mark on
For an overview of the fanotify API, see fanotify(7). fanotify_mark(2) adds, removes, or modifies an fanotify mark on a filesystem object. The caller must have

bzdiff(1) - compare bzip2 compressed files - Linux man page
Bzcmp and bzdiff are used to invoke the cmp or the diff program on bzip2 compressed files. All options specified are passed directly to cmp or diff. If only 1 f

pamperspective(1) - a reverse scanline renderer for Netpbm i
This program is part of Netpbm(1) pamperspective reads a Netpbm image as input and produces a Netpbm image of the same format as output. pamperspective interpre

fieldtype(3form) - define validation-field types (Man Page)
The function new_fieldtype creates a new field type usable for data validation. You supply it with field_check, a predicate to check the validity of an entered

chpasswd(8) - change user passwords in batch (Man Page).....
The chpasswd command reads a list of user name and password pairs from standard input and uses this information to update a group of existing users. Each line i

pdftoppm(1) - Portable Document Format (PDF) to Portable Pix
Pdftoppm converts Portable Document Format (PDF) files to color image files in Portable Pixmap (PPM) format, grayscale image files in Portable Graymap (PGM) for

smi_config(3) - SMI library configuration routines (ManPage)
These functions provide some initialization and adjustment operations for the SMI library. The smiInit() function should be the first SMI function called in an

Xutf8SetWMProperties(3) - set standard window properties....
The XSetWMProperties convenience function provides a single programming interface for setting those essential window properties that are used for communicating

idn.conf(5) - configuration files for idnkit library........
idn.conf and .idnrc are configuration files for idnkit library which is a toolkit for handling internationalized domain names. idnkit library tries to load the

iswspace(3) - test for whitespace wide character (Man Page)
The iswspace() function is the wide-character equivalent of the isspace(3) function. It tests whether wc is a wide character belonging to the wide-character cla

We can't live, work or learn in freedom unless the software we use is free.