O'Reilly logo

Fonts & Encodings by Yannis Haralambous

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

D.4. The Kernel of the TrueType Tables

These are the tables defined and used since the first version of TrueType.

Before describing them, let us say a few words about the global structure of TTX documents. The global element of these XML documents is ttFont:

   <ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="2.0b2">

This element contains two attributes:

  • sfntVersion, the version of the TrueType format. Fortunately, we are still at version 1 of TrueType, despite the extensions made by OpenType and AAT. Yet the value of this attribute has a peculiar appearance in the example below. In fact, it is the rational number 1.0 written with 32 bits, of which the first 16 bits contain the integer part and the other 16 contain the fractional part: 0x00010000. Here this number is written as a sequence of four bytes, \x00\x01\x00\x00.

  • ttLibVersion, the version of TTX—a very useful value, as TTX is an evolving system and no one can guarantee that the format of a TTX document will not change in the future.

Now we shall describe the different elements that are found in a TTX document and that correspond to the tables of the kernel of TrueType.

D.4.1. The GlyphOrder Table

There is no GlyphOrder table; indeed, how could there have been one? The name, containing more than four letters, is not in any way compliant with the TrueType specifications! Yet, in a TTX document, it is the first element after ttFont:

 <GlyphOrder> <GlyphID id="0" name="missing"/> <GlyphID id="1" name=".null"/> <GlyphID ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required