In this way, the language ID is associated with a language-tag string that specifies the language for name records using that language ID, regardless of the platform. If a language ID is equal to or greater than 0x8000, it is associated with a language-tag record (LangTagRecord) that references a language-tag string. If a language ID is less than 0x8000, it has a platform-specific interpretation as with a version 0 naming table. When version 1 is used, the language IDs in name records can be less than or greater than 0x8000. The language-tag records where langTagCount is the number of records. The version 1 naming table adds additional elements, and is organized as follows: Type The name records where count is the number of records.įormat 0 differs from version 1 in regard to handling of language identification: it uses only numeric language IDs, which generally are values less than 0x8000 and have platform-specific interpretations. Offset to start of string storage (from start of table). The version 0 naming table is organized as follows: Type Both versions include variable-size string-data storage, and an array of name records that are used to identify the type of string (name ID), platform, encoding and language variants of the string, and the location within the storage. Version 1 allows for use of language-tag strings to indicate the language of strings. Version 0 uses platform-specific, numeric language identifiers. There are two versions of the Naming Table.
Some applications might display incorrect strings, however, if strings for the current platform are not included. Many newer platforms can use strings intended for different platforms if a font does not include strings for that platform. Note that different platforms may have different requirements for the encoding of strings. Applications that need a particular string can look it up by its platform ID, encoding ID, language ID and name ID. In addition to language variants, the table also allows for platform-specific character-encoding variants. Other parts of the OpenType font that require these strings can refer to them using a language-independent name ID. To keep this table short, the font manufacturer may wish to make a limited set of entries in some small set of languages later, the font can be “localized” and the strings translated or added. These strings can represent copyright notices, font names, family names, style names, and so on. The naming table allows multilingual strings to be associated with the OpenType™ font.