How does ZapfDingbats.dfont work?

canderson's picture

I'm curious about how the Mac OS X (10.4) provided ZapfDingbats works. It seems that it only has glyphs mapped into the Unicode range intended for dingbats. However, in Word, Quark 6.5 or InDesign CS2, if I type "a b c" on my keyboard, dingbats appear. In TextEdit, letters appear, but they are in a fallback font. This is with a US keyboard setting. Do some applications make an exception for Zapf, or is this expected behavior?

paul d hunt's picture

i'm not brushed up on my codepages, but i'm suspecting that this has something to do with that...

canderson's picture

The reason I asked is because ZapfDingbats is inconsistant with my understanding of a Unicode font. For example, if the dingbats were glyphs from some other language range, I didn't think they could show up when typing with a US keyboard setting.
This may reveal a big misunderstaning on my part regarding encodings. Do codepages provide a mechanism for this substitution? Is there some key documentation that I should read before posting questions like this?

John Hudson's picture

The Zapf Dingbats font is a special case, in that it has its own 8-bit codepage. Because it is unique, it is fairly easy for an application to invoke special handling when this font is selected, which explains why you don't need to switch keyboard layouts in order to access the characters.

canderson's picture

Thanks for the help. John, did you just know this or did you use a tool to examine the font? Is TTX the best tool to examine the contents of a font file? If it couldn't dump info from a dfont, that would be understandable.

John Hudson's picture

I knew about Zapf Dingbats having its own 8-bit codepage, and the rest is guesswork based on this fact and the sometimes strange behaviour of applications when encountering fonts with 'ding' in the name, e.g. http://typophile.com/node/17883

There is a tendency in programming to hard code special cases. So if you have a font that has unique properties, you stick in some lines of code that say 'if this font is used, perform this operation'. Often, the assumptions involved end up causing problems at a later date.

Syndicate content Syndicate content