D.3. General Overview of TrueType Tables

The tables of a TrueType, OpenType, or AAT font are identified by a tag, which must be a string of four ASCII characters (possibly including spaces, but only at the end of the string). Tags that are entirely in lowercase are the private hunting ground of Apple. It was doubtless in response to that that the OpenType-specific tables, as we shall see, use tags consisting of uppercase letters only.

There are some tables that are required in every TrueType font, therefore also in OpenType and AAT fonts:

  • cmap (mapping between characters and glyphs, §D.4.2).

  • head (header, §D.4.3).

  • hhea (header for the horizontal metrics, §D.4.4).

  • hmtx (horizontal metrics, §D.4.4).

  • maxp (maximum profile, §D.4.5).

  • name (table of names, §D.4.6).

  • OS/2 (information related to OS/2 and Windows, §D.4.7). Microsoft considers it mandatory, but Apple does not.

  • post (information that is useful when the font is used in a PostScript environment, §D.4.8).

Next, everything depends on whether the glyph descriptions are written in TrueType or in PostScript. In the first case, there are five other tables that must not be missing:

  • cvt (table of control values, §D.5.3)

  • fpgm (font program, §D.5.3)

  • glyf (glyph descriptions, §D.5.2)

  • loca (pointers to the glyph descriptions, §D.5.1)

  • prep (program of control values, §D.5.3)

In the second case, which is the one seen in Appendix C, §C.8, where the OpenType font contains a PostScript CFF font with Type 2 charstrings, there are two required tables: ...

Get Fonts & Encodings now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.