Overview

The TrueType Open tables provide typographic information for properly positioning and substituting glyphs, operations that are required for accurate typography in many language environments. TrueType Open data is organized by script, language system, typographic feature, and lookup.

Scripts are defined at the top level. A script is a collection of glyphs used to represent one or more languages in written form (see Figure 2a). For instance, a single script—Latin—is used to write English, French, German, and many other languages. In contrast, three scripts—Hiragana, Katakana, and Kanji—are used to write Japanese. With TrueType Open, multiple scripts may be supported by a single font.

Figure 2a. Glyphs in the Latin, Kanji, and Arabic scripts

A language system may modify the functions or appearance of glyphs in a script to represent a particular language. For example, the eszet ligature is used in the German language system, but not in French or English (see Figure 2b). And the Arabic script contains different glyphs for writing the Farsi and Urdu languages. In TrueType Open, language systems are defined within scripts.

Figure 2b. Differences in the English, French, and German language systems

A language system defines features, which are typographic rules for using glyphs to represent a language. Sample features are a "vert" feature that substitutes vertical glyphs in Japanese, a "liga" feature for using ligatures in place of separate glyphs, and a "mark" feature that positions diacritical marks with respect to base glyphs in Arabic (see Figure 2c). In the absence of language-specific rules, default language system features apply to the entire script. For instance, a default language system feature for the Arabic script substitutes initial, medial, and final glyph forms based on a glyph's position in a word.

Figure 2c. A ligature glyph feature substitutes the <etc> ligature for individual glyphs, and a mark feature positions diacritical marks above an Arabic ligature glyph.

Features are implemented with lookup data that the text-processing client uses to substitute and position glyphs. Lookups describe the glyphs affected by an operation, the type of operation to be applied to these glyphs, and the resulting glyph output.