From ic07 up, an element’s data is a complete image file. The type gives the
size and the density; the image’s own header gives its size again, and its first bytes say
which format it is.
PNG
The data is a whole PNG file, starting with the
signature 89 50 4E 47 0D 0A 1A 0A. Nothing is added or removed: copying the
bytes out gives a file that any PNG reader can open. Its alpha channel is the icon’s
transparency, so these elements have no separate mask.
In the files checked on macOS, the PNG’s own width and height always matched the element’s type.
0Type e.g.ic084 bytes4Length 8 + the PNG’s size4 bytes8PNG file signature, chunks andIENDvaries
JPEG 2000
The same types can hold a JPEG 2000 image instead. Its data starts with either the
12-byte JP2 box signature 00 00 00 0C 6A 50 20 20 0D 0A 87 0A or, for a bare
codestream, FF 4F FF 51. Among the files checked, some held
ic08, ic09 and ic10 this way.
The explorer lists JPEG 2000 elements and offers their bytes for opening, but does not draw them.
Which types
The pixel sizes and densities are on the element
types page. The types ic04, ic05 and icsb can
also be ARGB data, and icp4 and
icp5 can be run-length encoded RGB, so a
reader looks at the first bytes rather than going by the type alone.