name — Naming Table (OpenType 1.8.4)
The naming table allows multilingual strings to be associated with the OpenType™ font. These strings can represent copyright notices, font names, family names, style names, and so on. 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. Other parts of the OpenType font that require these strings can refer to them using a language-independent name ID. In addition to language variants, the table also allows for platform-specific character-encoding variants. Applications that need a particular string can look it up by its platform ID, encoding ID, language ID and name ID. Note that different platforms may have different requirements for the encoding of strings.
Many newer platforms can use strings intended for different platforms if a font does not include strings for that platform. Some applications might display incorrect strings, however, if strings for the current platform are not included.
Naming table header
There are two versions of the Naming Table. Version 0 uses platform-specific, numeric language identifiers. Version 1 allows for use of language-tag strings to indicate the language of strings. 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.
Naming table version 0
The version 0 naming table is organized as follows:
Type | Name | Description |
---|---|---|
uint16 | version | Table version number (=0). |
uint16 | count | Number of name records. |
Offset16 | storageOffset | Offset to start of string storage (from start of table). |
NameRecord | nameRecord[count] | The name records where count is the number of records. |
(Variable) | Storage for the actual string data. |
Format 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. See Name Records below for more detail.
Naming table version 1
The version 1 naming table adds additional elements, and is organized as follows:
Type | Name | Description |
---|---|---|
uint16 | version | Table version number (=1). |
uint16 | count | Number of name records. |
Offset16 | storageOffset | Offset to start of string storage (from start of table). |
NameRecord | nameRecord[count] | The name records where count is the number of records. |
uint16 | langTagCount | Number of language-tag records. |
LangTagRecord | langTagRecord[langTagCount] | The language-tag records where langTagCount is the number of records. |
(Variable) | Storage for the actual string data. |
When version 1 is used, the language IDs in name records can be less than or greater than 0x8000. If a language ID is less than 0x8000, it has a platform-specific interpretation as with a version 0 naming table. 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. 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. These can be used for any platform that supports this language-tag mechanism.
A font using a version 1 naming table may use a combination of platform-specific language IDs as well as language-tag records for a given platform and encoding.
Each LangTagRecord is organized as follows:
Type | Name | Description |
---|---|---|
uint16 | length | Language-tag string length (in bytes) |
Offset16 | langTagOffset | Language-tag string offset from start of storage area (in bytes). |
Language-tag strings stored in the naming table must be encoded in UTF-16BE. The language tags must conform to IETF specification BCP 47. This provides tags such as “en”, “fr-CA” and “zh-Hant” to identify languages, including dialects, written form and other language variants.
The language-tag records are associated sequentially with language IDs starting with 0x8000. Each language-tag record corresponds to a language ID one greater than that for the previous language-tag record. Thus, language IDs associated with language-tag records must be within the range 0x8000 to 0x8000 + langTagCount - 1. If a name record uses a language ID that is greater than this, the identity of the language is unknown; such name records should not be used.
For example, suppose a font has two language-tag records referencing strings in the storage: the first references the string “en”, and the second references the string “zh-Hant-HK” In this case, the language ID 0x8000 is used in name records to index English-language strings. The language ID 0x8001 is used in name records to index strings in Traditional Chinese as used in Hong Kong.
Name Records
Each string in the string storage is referenced by a name record. The name record has a multi-part key, to identify the logical type of string and its language or platform-specific implementation variants, plus the location of the string in the string storage.
Each NameRecord is organized as follows:
Type | Name | Description |
---|---|---|
uint16 | platformID | Platform ID. |
uint16 | encodingID | Platform-specific encoding ID. |
uint16 | languageID | Language ID. |
uint16 | nameID | Name ID. |
uint16 | length | String length (in bytes). |
Offset16 | stringOffset | String offset from start of storage area (in bytes). |
The name ID identifies a logical string category, such as family name or copyright. Name IDs are the same for all platforms and languages; these are described in detail below. The other three elements of the key allow for platform-specific implementations: a platform ID, a platform-specific encoding ID, and a language ID.
As with encoding records in the 'cmap' table, name records must be sorted first by platform ID, then by platform-specific ID, then by language ID, and then by name ID. Descriptions of the various IDs follow.
Platform, encoding and language
The platform, encoding and language IDs of a name record allow for platform-specific implementations. Different platforms can support different encodings, and different languages. All encoding IDs are platform-specific. Language IDs are similarly platform-specific, except in the case of IDs used in conjuction with the language-tag mechanism of naming table version 1, described above.
Note: Platform IDs, platform-specific encoding IDs and, in some cases, platform-specific language IDs are also used in the 'cmap' table.
Language IDs refer to a value that identifies the language in which a particular string is written. Values less than 0x8000 are defined on a platform-specific basis. A version 0 naming table must use only language ID values less than 0x8000 from the platform-specific enumerations given below. (Exceptions to this requirement are permitted, however, in the case of user-defined platforms — platform IDs 240 to 255.) Values greater than or equal to 0x8000 can be used in a version 1 naming table in conjunction with language-tag records, as described above. Not all platforms have platform-specific language IDs, and not all platforms support language-tag records.
Tables with detailed listings of platform, encoding and language IDs used within the 'name' table are provided at the end of this chapter. See Platform, encoding and language IDs
Name IDs
The following name IDs are pre-defined, and they apply to all platforms unless indicated otherwise. Name IDs 26 to 255, inclusive, are reserved for future standard names. Name IDs 256 to 32767, inclusive, are reserved for font-specific names such as those referenced by a font’s layout features.
Code | Meaning |
---|---|
0 | Copyright notice. |
1 | Font Family name. The Font Family name is used in combination with Font Subfamily name (name ID 2), and should be shared among at most four fonts that differ only in weight or style (as described below).
This four-way distinction should also be reflected in the OS/2.fsSelection field, using bits 0 and 5. While some platforms or applications do not have this constraint, many existing applications that use this pair of names assume that a Font Family name is shared by at most four fonts that form a font style-linking group: regular, italic (or oblique), bold, and bold italic (or bold oblique). To be compatible with the broadest range of platforms and applications, it is strongly recommended that fonts limit use of Font Family name in this manner. For extended typographic families that includes fonts other than the four basic styles (regular, italic, bold, bold italic), it is strongly recommended that name IDs 16 and 17 be used in fonts to create an extended, typographic grouping. (See examples provided below.) It is also strongly recommended that applications support extended typographic-family groupings using name IDs 16 and 17. Note, in particular, that variable fonts can include a large number of named instances, each of which will use a shared typographic family name (name ID 16) and will have a typographic subfamily name (equivalent to name ID 17). Applications that assume a four-style family grouping based on name IDs 1 and 2 are likely to provide a poor user experience with variable fonts. For fonts within an extended typographic family that fall outside the basic four-way distinction, the distinguishing attributes should be reflected in the Font Family name so that those fonts appear as a separate font family. For example, the Font Family name for the Arial Narrow font is “Arial Narrow”; the Font Family name for the Arial Black font is “Arial Black”. Note that, in such cases, name ID 16 should also be included with a shared name that reflects the full, typographic family. |
2 | Font Subfamily name. The Font Subfamily name is used in combination with Font Family name (name ID 1), and distinguishes the fonts in a group with the same Font Family name. This should be used for style and weight variants only (as described below).
This four-way distinction should also be reflected in the OS/2.fsSelection field, using bits 0 and 5. A font with no distinctive weight or style (e.g. medium weight, not italic, and OS/2.fsSelection bit 6 set) should use the string “Regular” as the Font Subfamily name (for English language). While some platforms or applications do not have this constraint, many existing applications that use this pair of names assume that a Font Family name is shared by at most four fonts that form a font style-linking group, and that Font Subfamily names would reflect one of the four basic styles, regular, italic (or oblique), bold, and bold italic (or bold oblique). To be compatible with the broadest range of platforms and applications, it is strongly recommended that fonts should limit use of Font Family in this manner. For extended typographic families that includes fonts other than the four basic styles (regular, italic, bold, bold italic), it is strongly recommended that name IDs 16 and 17 be used in fonts to create an extended, typographic grouping. Within an extended typographic family that includes fonts beyond regular, bold, italic, or bold italic, distinctions are made in the Font Family name, so that fonts appear to be in separate families. In some cases, this may lead to specifying a Subfamily name of “Regular” for a font that might not otherwise be considered a regular font. For example, the Arial Black font has a Font Family name of “Arial Black” and a Subfamily name of “Regular”. Note that, in such cases, name IDs 16 and 17 should also be included, using a shared value for name ID 16 that reflects the full typographic family, and values for name ID 17 that appropriately reflect the actual design variant of each font. |
3 | Unique font identifier |
4 | Full font name that reflects all family and relevant subfamily descriptors. The full font name is generally a combination of name IDs 1 and 2, or of name IDs 16 and 17, or a similar human-readable variant.
For fonts in extended typographic families (that is, families that include more than regular, italic, bold, and bold italic variants), values for name IDs 1 and 2 are normally chosen to provide compatibility with certain applications that assume a family has at most four style-linked fonts. In that case, some fonts may end up with a Subfamily name (name ID 2) of “Regular” even though the font would not be considered, typographically, a regular font. For such non-regular fonts in which name ID 2 is specified as “Regular”, the “Regular” descriptor would generally be omitted from name ID 4. For example, the Arial Black font has a Font Family name (name ID 1) of “Arial Black” and a Subfamily name (name ID 2) of “Regular”, but has a full font name (name ID 4) of “Arial Black”. Note that name IDs 16 and 17 should also be included in these fonts, and that name ID 4 would typically be a combination of name IDs 16 and 17, without needing any additional qualifications regarding “Regular”. |
5 | Version string. Should begin with the syntax “Version <number>.<number>” (upper case, lower case, or mixed, with a space between “Version” and the number).
The string must contain a version number of the following form: one or more digits (0-9) of value less than 65,535, followed by a period, followed by one or more digits of value less than 65,535. Any character other than a digit will terminate the minor number. A character such as “;” is helpful to separate different pieces of version information. The first such match in the string can be used by installation software to compare font versions. Note that some installers may require the string to start with “Version ”, followed by a version number as above. |
6 | PostScript name for the font; Name ID 6 specifies a string which is used to invoke a PostScript language font that corresponds to this OpenType font. When translated to ASCII, the name string must be no longer than 63 characters and restricted to the printable ASCII subset, codes 33 to 126, except for the 10 characters '[', ']', '(', ')', '{', '}', '<', '>', '/', '%'.
In a CFF OpenType font, there is no requirement that this name be the same as the font name in the CFF’s Name INDEX. Thus, the same CFF may be shared among multiple font components in a Font Collection. See the 'name' table section of “Recommendations for OpenType fonts” for additional information. |
7 | Trademark; this is used to save any trademark notice/information for this font. Such information should be based on legal advice. This is distinctly separate from the copyright. |
8 | Manufacturer Name. |
9 | Designer; name of the designer of the typeface. |
10 | Description; description of the typeface. Can contain revision information, usage recommendations, history, features, etc. |
11 | URL Vendor; URL of font vendor (with protocol, e.g., http://, ftp://). If a unique serial number is embedded in the URL, it can be used to register the font. |
12 | URL Designer; URL of typeface designer (with protocol, e.g., http://, ftp://). |
13 | License Description; description of how the font may be legally used, or different example scenarios for licensed use. This field should be written in plain language, not legalese. |
14 | License Info URL; URL where additional licensing information can be found. |
15 | Reserved. |
16 | Typographic Family name: The typographic family grouping doesn’t impose any constraints on the number of faces within it, in contrast with the 4-style family grouping (ID 1), which is present both for historical reasons and to express style linking groups. If name ID 16 is absent, then name ID 1 is considered to be the typographic family name. (In earlier versions of the specification, name ID 16 was known as “Preferred Family”.) |
17 | Typographic Subfamily name: This allows font designers to specify a subfamily name within the typographic family grouping. This string must be unique within a particular typographic family. If it is absent, then name ID 2 is considered to be the typographic subfamily name. (In earlier versions of the specification, name ID 17 was known as “Preferred Subfamily”.) |
18 | Compatible Full (Macintosh only); On the Macintosh, the menu name is constructed using the FOND resource. This usually matches the Full Name. If you want the name of the font to appear differently than the Full Name, you can insert the Compatible Full Name in ID 18. |
19 | Sample text; This can be the font name, or any other text that the designer thinks is the best sample to display the font in. |
20 | PostScript CID findfont name; Its presence in a font means that the nameID 6 holds a PostScript font name that is meant to be used with the “composefont” invocation in order to invoke the font in a PostScript interpreter. See the definition of name ID 6.
The value held in the name ID 20 string is interpreted as a PostScript font name that is meant to be used with the “findfont” invocation, in order to invoke the font in a PostScript interpreter. When translated to ASCII, this name string must be restricted to the printable ASCII subset, codes 33 through 126, except for the 10 characters: '[', ']', '(', ')', '{', '}', '<', '>', '/', '%'. See “Recommendations for OTF fonts” for additional information |
21 | WWS Family Name. Used to provide a WWS-conformant family name in case the entries for IDs 16 and 17 do not conform to the WWS model. (That is, in case the entry for ID 17 includes qualifiers for some attribute other than weight, width or slope.) If bit 8 of the fsSelection field is set, a WWS Family Name entry should not be needed and should not be included. Conversely, if an entry for this ID is included, bit 8 should not be set. (See OS/2.fsSelection field for details.) Examples of name ID 21: “Minion Pro Caption” and “Minion Pro Display”. (Name ID 16 would be “Minion Pro” for these examples.) |
22 | WWS Subfamily Name. Used in conjunction with ID 21, this ID provides a WWS-conformant subfamily name (reflecting only weight, width and slope attributes) in case the entries for IDs 16 and 17 do not conform to the WWS model. As in the case of ID 21, use of this ID should correlate inversely with bit 8 of the fsSelection field being set. Examples of name ID 22: “Semibold Italic”, “Bold Condensed”. (Name ID 17 could be “Semibold Italic Caption”, or “Bold Condensed Display”, for example.) |
23 | Light Background Palette. This ID, if used in the CPAL table’s Palette Labels Array, specifies that the corresponding color palette in the CPAL table is appropriate to use with the font when displaying it on a light background such as white. Strings for this ID are for use as user interface strings associated with this palette. |
24 | Dark Background Palette. This ID, if used in the CPAL table’s Palette Labels Array, specifies that the corresponding color palette in the CPAL table is appropriate to use with the font when displaying it on a dark background such as black. Strings for this ID are for use as user interface strings associated with this palette |
25 | Variations PostScript Name Prefix. If present in a variable font, it may be used as the family prefix in the PostScript Name Generation for Variation Fonts algorithm. The character set is restricted to ASCII-range uppercase Latin letters, lowercase Latin letters, and digits. All name strings for name ID 25 within a font, when converted to ASCII, must be identical. See Adobe Technical Note #5902: “PostScript Name Generation for Variation Fonts” for reasons to include name ID 25 in a font, and for examples. For general information on OpenType Font Variations, see the chapter, OpenType Font Variations Overview. |
Note that while both Apple and Microsoft support the same set of name strings, the interpretations may be somewhat different. But since name strings are stored by platform, encoding and language (placing separate strings for both Apple and MS platforms), this should not present a problem.
The key information for this table for Microsoft platforms relates to the use of name IDs 1, 2, 4, 16 and 17. Note that some newer applications will use name IDs 16 and 17, while some legacy applications require name IDs 1 and 2 and also assume certain limitations on these values (see descriptions of name IDs 1 and 2 above). Fonts should include all of these strings for the broadest application compatibility. To better understand how to set values for these name IDs, some examples of name usage, weight class and style flags have been created.
All naming table strings for the Windows platform (platform ID 3) must be encoded in UTF-16BE. Strings for the Macintosh platform (platform ID 1) use platform-specific single- or double-byte encodings.
Note that, for a typographic family that includes member faces that differ from Regular in relation to attributes other than weight, width or slope, there may also be some member faces that differ only in relation to these three attributes. IDs 21 and 22 should be used only in those fonts that differ from the Regular face in terms of an attribute other than weight, width or slope.
Name ID examples
The following are examples of how these strings might be defined, based on Times New Roman Bold:
-
0. The copyright string from the font vendor. © Copyright the Monotype Corporation plc, 1990
1. The name the user sees. Times New Roman
2. The name of the style. Bold
3. A unique identifier that applications can store to identify the font being used. Monotype: Times New Roman Bold:1990
4. The complete, unique, human readable name of the font. This name is used by Windows. Times New Roman Bold
5. Release and version information from the font vendor. Version 1.00 June 1, 1990, initial release
6. The name the font will be known by on a PostScript printer. TimesNewRoman-Bold
7. Trademark string. Times New Roman is a registered trademark of the Monotype Corporation.
8. Manufacturer. Monotype Corporation plc
9. Designer. Stanley Morison
10. Description. Designed in 1932 for the Times of London newspaper. Excellent readability and a narrow overall width, allowing more words per line than most fonts.
11. URL of Vendor. http://www.monotype.com
12. URL of Designer. http://www.monotype.com
13. License Description. This font may be installed on all of your machines and printers, but you may not sell or give these fonts to anyone else.
14. License Info URL. http://www.monotype.com/license/
15. Reserved.
16. Preferred Family. No name string present, since it is the same as name ID 1 (Font Family name).
17. Preferred Subfamily. No name string present, since it is the same as name ID 2 (Font Subfamily name).
18. Compatible Full (Macintosh only). No name string present, since it is the same as name ID 4 (Full name).
19. Sample text. The quick brown fox jumps over the lazy dog.
20. PostScript CID findfont name. No name string present. Thus, the PostScript Name defined by name ID 6 should be used with the “findfont” invocation for locating the font in the context of a PostScript interpreter.
21. WWS family name: Since Times New Roman is a WWS font, this field does not need to be specified. If the font contained styles such as “caption”, “display”, “handwriting”, etc, that would be noted here.
22. WWS subfamily name: Since Times New Roman is a WWS font, this field does not need to be specified.
23. Light background palette name. No name string present, since this is not a color font.
24. Dark background palette name. No name string present, since this is not a color font.
25. Variations PostScript name prefix. No name string present, since this is not a variable font.
The following is an example of only name IDs 6 and 20 in the CFF OpenType Japanese font Kozuka Mincho Std Regular (other name IDs are also present in this font):
-
6. PostScript name: KozMinStd-Regular. Since a name ID 20 is present in the font (see below), then the PostScript name defined by name ID 6 should be used with the “composefont” invocation for locating the font in the context of a PostScript interpreter.
20. PostScript CID findfont name: KozMinStd-Regular-83pv-RKSJ-H, in a name record of Platform 1 [Macintosh], Platform-specific script 1 [Japanese], Language: 0xFFFF [English]. This name string is a PostScript name that should be used with the “findfont” invocation for locating the font in the context of a PostScript interpreter, and is associated with the encoding specified by the following 'cmap' subtable, which must be present in the font: Platform: 1 [Macintosh]; Platform-specific encoding: 1 [Japanese]; Language: 0 [not language-specific].
The following is an example of family/subfamily naming for an extended, WWS-only family. Consider Adobe Caslon Pro, with six members: upright and italic versions of regular, semibold and bold weights. (Bit 8 of the fsSelection field of the OS/2 table, version 4, should be set for all six fonts, and none should include 'name' entries for IDs 21 or 22.)
- Adobe Caslon Pro Regular:
Name ID 1: Adobe Caslon Pro
Name ID 2: Regular - Adobe Caslon Pro Italic:
Name ID 1: Adobe Caslon Pro
Name ID 2: Italic - Adobe Caslon Pro Semibold:
Name ID 1: Adobe Caslon Pro
Name ID 2: Bold
Name ID 16: Adobe Caslon Pro
Name ID 17: Semibold - Adobe Caslon Pro Semibold Italic:
Name ID 1: Adobe Caslon Pro
Name ID 2: Bold Italic
Name ID 16: Adobe Caslon Pro
Name ID 17: Semibold Italic - Adobe Caslon Pro Bold:
Name ID 1: Adobe Caslon Pro Bold
Name ID 2: Regular
Name ID 16: Adobe Caslon Pro
Name ID 17: Bold - Adobe Caslon Pro Bold Italic:
Name ID 1: Adobe Caslon Pro Bold
Name ID 2: Italic
Name ID 16: Adobe Caslon Pro
Name ID 17: Bold Italic
The following is an example of family/subfamily naming for an extended, non-WWS family. Consider Minion Pro Opticals, with 32 member fonts: upright and italic versions of regular, medium, semibold and bold weights in each of four optical sizes: regular, caption, display and subhead. The following show names for a sampling of the fonts in this family. (Bit 8 of the fsSelection field in the OS/2 table, version 4, should be set in those fonts that do not include 'name' entries for IDs 21 or 22, and only in those fonts.)
- Minion Pro Regular:
Name ID 1: Minion Pro
Name ID 2: Regular - Minion Pro Italic:
Name ID 1: Minion Pro
Name ID 2: Italic - Minion Pro Semibold:
Name ID 1: Minion Pro SmBd
Name ID 2: Regular
Name ID 16: Minion Pro
Name ID 17: Semibold - Minion Pro Semibold Italic:
Name ID 1: Minion Pro SmBd
Name ID 2: Italic
Name ID 16: Minion Pro
Name ID 17: Semibold Italic - Minion Pro Caption:
Name ID 1: Minion Pro Capt
Name ID 2: Regular
Name ID 16: Minion Pro
Name ID 17: Caption
Name ID 21: Minion Pro Caption
Name ID 22: Regular - Minion Pro Semibold Italic Caption:
Name ID 1: Minion Pro SmBd Capt
Name ID 2: Italic
Name ID 16: Minion Pro
Name ID 17: Semibold Italic Caption
Name ID 21: Minion Pro Caption
Name ID 22: Semibold Italic
Platform, encoding and language IDs
The following sections provide details regarding platform IDs, platform-specific encoding IDs, and platform-specific language IDs used in the 'name' table. For details regarding platform, encoding or language IDs used in the 'cmap' table, see Encoding records and encodings in the 'cmap' table chapter.
Platform IDs
The following platform IDs may be used in the 'name' table:
Platform ID | Platform name | Platform-specific encoding IDs | Language IDs |
---|---|---|---|
0 | Unicode | Various | None |
1 | Macintosh | Script manager code | Various |
3 | Windows | Windows encoding | Various |
Note that other platform IDs have been defined for use only in the 'cmap' table.
Platform-specific encoding and language IDs: Unicode platform (platform ID = 0)
The following encoding IDs for the Unicode platform may be used in the 'name':
Encoding ID | Description |
---|---|
0 | Unicode 1.0 semantics—deprecated |
1 | Unicode 1.1 semantics—deprecated |
2 | ISO/IEC 10646 semantics—deprecated |
3 | Unicode 2.0 and onwards semantics, Unicode BMP only |
4 | Unicode 2.0 and onwards semantics, Unicode full repertoire |
Use of encoding IDs 0, 1 or 2 is deprecated. Either encoding ID 3 or 4 may be used for 'name' entries.
Note that other platform IDs have been defined for use only in the 'cmap' table. Also note that a new encoding ID for the Unicode platform may sometimes be assigned when new 'cmap' subtable formats are defined, and these may also be appropriate for use in the 'name' table. For example, when 'cmap' subtable formats 10 and 12 were added to the specification, encoding ID 4 was added as well.
There are no platform-specific language IDs defined for the Unicode platform. Language ID = 0 may be used for Unicode-platform strings, but this does not indicate any particular language. Language IDs greater than or equal to 0x8000 may be used together with language-tag records, as described above.
Platform-specific encoding and language IDs: Macintosh platform (platform ID = 1)
Macintosh encoding IDs (script manager codes)
The following encoding IDs are defined for use with the Macintosh platform:
Encoding ID | Script | Encoding ID | Script |
---|---|---|---|
0 | Roman | 17 | Malayalam |
1 | Japanese | 18 | Sinhalese |
2 | Chinese (Traditional) | 19 | Burmese |
3 | Korean | 20 | Khmer |
4 | Arabic | 21 | Thai |
5 | Hebrew | 22 | Laotian |
6 | Greek | 23 | Georgian |
7 | Russian | 24 | Armenian |
8 | RSymbol | 25 | Chinese (Simplified) |
9 | Devanagari | 26 | Tibetan |
10 | Gurmukhi | 27 | Mongolian |
11 | Gujarati | 28 | Geez |
12 | Oriya | 29 | Slavic |
13 | Bengali | 30 | Vietnamese |
14 | Tamil | 31 | Sindhi |
15 | Telugu | 32 | Uninterpreted |
16 | Kannada |
Macintosh language IDs
The following are platform-specific language IDs assigned by Apple:
Language ID | Language | Language ID | Language |
---|---|---|---|
0 | English | 59 | Pashto |
1 | French | 60 | Kurdish |
2 | German | 61 | Kashmiri |
3 | Italian | 62 | Sindhi |
4 | Dutch | 63 | Tibetan |
5 | Swedish | 64 | Nepali |
6 | Spanish | 65 | Sanskrit |
7 | Danish | 66 | Marathi |
8 | Portuguese | 67 | Bengali |
9 | Norwegian | 68 | Assamese |
10 | Hebrew | 69 | Gujarati |
11 | Japanese | 70 | Punjabi |
12 | Arabic | 71 | Oriya |
13 | Finnish | 72 | Malayalam |
14 | Greek | 73 | Kannada |
15 | Icelandic | 74 | Tamil |
16 | Maltese | 75 | Telugu |
17 | Turkish | 76 | Sinhalese |
18 | Croatian | 77 | Burmese |
19 | Chinese (Traditional) | 78 | Khmer |
20 | Urdu | 79 | Lao |
21 | Hindi | 80 | Vietnamese |
22 | Thai | 81 | Indonesian |
23 | Korean | 82 | Tagalog |
24 | Lithuanian | 83 | Malay (Roman script) |
25 | Polish | 84 | Malay (Arabic script) |
26 | Hungarian | 85 | Amharic |
27 | Estonian | 86 | Tigrinya |
28 | Latvian | 87 | Galla |
29 | Sami | 88 | Somali |
30 | Faroese | 89 | Swahili |
31 | Farsi/Persian | 90 | Kinyarwanda/Ruanda |
32 | Russian | 91 | Rundi |
33 | Chinese (Simplified) | 92 | Nyanja/Chewa |
34 | Flemish | 93 | Malagasy |
35 | Irish Gaelic | 94 | Esperanto |
36 | Albanian | 128 | Welsh |
37 | Romanian | 129 | Basque |
38 | Czech | 130 | Catalan |
39 | Slovak | 131 | Latin |
40 | Slovenian | 132 | Quechua |
41 | Yiddish | 133 | Guarani |
42 | Serbian | 134 | Aymara |
43 | Macedonian | 135 | Tatar |
44 | Bulgarian | 136 | Uighur |
45 | Ukrainian | 137 | Dzongkha |
46 | Byelorussian | 138 | Javanese (Roman script) |
47 | Uzbek | 139 | Sundanese (Roman script) |
48 | Kazakh | 140 | Galician |
49 | Azerbaijani (Cyrillic script) | 141 | Afrikaans |
50 | Azerbaijani (Arabic script) | 142 | Breton |
51 | Armenian | 143 | Inuktitut |
52 | Georgian | 144 | Scottish Gaelic |
53 | Moldavian | 145 | Manx Gaelic |
54 | Kirghiz | 146 | Irish Gaelic (with dot above) |
55 | Tajiki | 147 | Tongan |
56 | Turkmen | 148 | Greek (polytonic) |
57 | Mongolian (Mongolian script) | 149 | Greenlandic |
58 | Mongolian (Cyrillic script) | 150 | Azerbaijani (Roman script) |
Platform-specific encoding and language IDs: Windows platform (platform ID= 3)
Windows encoding IDs
The following encoding IDs are defined for use with the Windows platform:
Encoding ID | Description |
---|---|
0 | Symbol |
1 | Unicode BMP |
2 | ShiftJIS |
3 | PRC |
4 | Big5 |
5 | Wansung |
6 | Johab |
7 | Reserved |
8 | Reserved |
9 | Reserved |
10 | Unicode full repertoire |
Encoding IDs for platform 3 'name' entries should match the encoding IDs used for platform 3 subtables in the 'cmap' table. When building a Unicode font for Windows, the platform ID should be 3 and the encoding ID should be 1, and the referenced string data must be encoded in UTF-16BE. When building a symbol font for Windows, the platform ID should be 3 and the encoding ID should be 0, and the referenced string data must be encoded in UTF-16BE.
Windows language IDs
The following are platform-specific Language IDs assigned by Microsoft:
Primary Language | Region | Language ID (hexadecimal) |
---|---|---|
Afrikaans | South Africa | 0436 |
Albanian | Albania | 041C |
Alsatian | France | 0484 |
Amharic | Ethiopia | 045E |
Arabic | Algeria | 1401 |
Arabic | Bahrain | 3C01 |
Arabic | Egypt | 0C01 |
Arabic | Iraq | 0801 |
Arabic | Jordan | 2C01 |
Arabic | Kuwait | 3401 |
Arabic | Lebanon | 3001 |
Arabic | Libya | 1001 |
Arabic | Morocco | 1801 |
Arabic | Oman | 2001 |
Arabic | Qatar | 4001 |
Arabic | Saudi Arabia | 0401 |
Arabic | Syria | 2801 |
Arabic | Tunisia | 1C01 |
Arabic | U.A.E. | 3801 |
Arabic | Yemen | 2401 |
Armenian | Armenia | 042B |
Assamese | India | 044D |
Azeri (Cyrillic) | Azerbaijan | 082C |
Azeri (Latin) | Azerbaijan | 042C |
Bashkir | Russia | 046D |
Basque | Basque | 042D |
Belarusian | Belarus | 0423 |
Bengali | Bangladesh | 0845 |
Bengali | India | 0445 |
Bosnian (Cyrillic) | Bosnia and Herzegovina | 201A |
Bosnian (Latin) | Bosnia and Herzegovina | 141A |
Breton | France | 047E |
Bulgarian | Bulgaria | 0402 |
Catalan | Catalan | 0403 |
Chinese | Hong Kong S.A.R. | 0C04 |
Chinese | Macao S.A.R. | 1404 |
Chinese | People’s Republic of China | 0804 |
Chinese | Singapore | 1004 |
Chinese | Taiwan | 0404 |
Corsican | France | 0483 |
Croatian | Croatia | 041A |
Croatian (Latin) | Bosnia and Herzegovina | 101A |
Czech | Czech Republic | 0405 |
Danish | Denmark | 0406 |
Dari | Afghanistan | 048C |
Divehi | Maldives | 0465 |
Dutch | Belgium | 0813 |
Dutch | Netherlands | 0413 |
English | Australia | 0C09 |
English | Belize | 2809 |
English | Canada | 1009 |
English | Caribbean | 2409 |
English | India | 4009 |
English | Ireland | 1809 |
English | Jamaica | 2009 |
English | Malaysia | 4409 |
English | New Zealand | 1409 |
English | Republic of the Philippines | 3409 |
English | Singapore | 4809 |
English | South Africa | 1C09 |
English | Trinidad and Tobago | 2C09 |
English | United Kingdom | 0809 |
English | United States | 0409 |
English | Zimbabwe | 3009 |
Estonian | Estonia | 0425 |
Faroese | Faroe Islands | 0438 |
Filipino | Philippines | 0464 |
Finnish | Finland | 040B |
French | Belgium | 080C |
French | Canada | 0C0C |
French | France | 040C |
French | Luxembourg | 140c |
French | Principality of Monaco | 180C |
French | Switzerland | 100C |
Frisian | Netherlands | 0462 |
Galician | Galician | 0456 |
Georgian | Georgia | 0437 |
German | Austria | 0C07 |
German | Germany | 0407 |
German | Liechtenstein | 1407 |
German | Luxembourg | 1007 |
German | Switzerland | 0807 |
Greek | Greece | 0408 |
Greenlandic | Greenland | 046F |
Gujarati | India | 0447 |
Hausa (Latin) | Nigeria | 0468 |
Hebrew | Israel | 040D |
Hindi | India | 0439 |
Hungarian | Hungary | 040E |
Icelandic | Iceland | 040F |
Igbo | Nigeria | 0470 |
Indonesian | Indonesia | 0421 |
Inuktitut | Canada | 045D |
Inuktitut (Latin) | Canada | 085D |
Irish | Ireland | 083C |
isiXhosa | South Africa | 0434 |
isiZulu | South Africa | 0435 |
Italian | Italy | 0410 |
Italian | Switzerland | 0810 |
Japanese | Japan | 0411 |
Kannada | India | 044B |
Kazakh | Kazakhstan | 043F |
Khmer | Cambodia | 0453 |
K’iche | Guatemala | 0486 |
Kinyarwanda | Rwanda | 0487 |
Kiswahili | Kenya | 0441 |
Konkani | India | 0457 |
Korean | Korea | 0412 |
Kyrgyz | Kyrgyzstan | 0440 |
Lao | Lao P.D.R. | 0454 |
Latvian | Latvia | 0426 |
Lithuanian | Lithuania | 0427 |
Lower Sorbian | Germany | 082E |
Luxembourgish | Luxembourg | 046E |
Macedonian | North Macedonia | 042F |
Malay | Brunei Darussalam | 083E |
Malay | Malaysia | 043E |
Malayalam | India | 044C |
Maltese | Malta | 043A |
Maori | New Zealand | 0481 |
Mapudungun | Chile | 047A |
Marathi | India | 044E |
Mohawk | Mohawk | 047C |
Mongolian (Cyrillic) | Mongolia | 0450 |
Mongolian (Traditional) | People’s Republic of China | 0850 |
Nepali | Nepal | 0461 |
Norwegian (Bokmal) | Norway | 0414 |
Norwegian (Nynorsk) | Norway | 0814 |
Occitan | France | 0482 |
Odia (formerly Oriya) | India | 0448 |
Pashto | Afghanistan | 0463 |
Polish | Poland | 0415 |
Portuguese | Brazil | 0416 |
Portuguese | Portugal | 0816 |
Punjabi | India | 0446 |
Quechua | Bolivia | 046B |
Quechua | Ecuador | 086B |
Quechua | Peru | 0C6B |
Romanian | Romania | 0418 |
Romansh | Switzerland | 0417 |
Russian | Russia | 0419 |
Sami (Inari) | Finland | 243B |
Sami (Lule) | Norway | 103B |
Sami (Lule) | Sweden | 143B |
Sami (Northern) | Finland | 0C3B |
Sami (Northern) | Norway | 043B |
Sami (Northern) | Sweden | 083B |
Sami (Skolt) | Finland | 203B |
Sami (Southern) | Norway | 183B |
Sami (Southern) | Sweden | 1C3B |
Sanskrit | India | 044F |
Serbian (Cyrillic) | Bosnia and Herzegovina | 1C1A |
Serbian (Cyrillic) | Serbia | 0C1A |
Serbian (Latin) | Bosnia and Herzegovina | 181A |
Serbian (Latin) | Serbia | 081A |
Sesotho sa Leboa | South Africa | 046C |
Setswana | South Africa | 0432 |
Sinhala | Sri Lanka | 045B |
Slovak | Slovakia | 041B |
Slovenian | Slovenia | 0424 |
Spanish | Argentina | 2C0A |
Spanish | Bolivia | 400A |
Spanish | Chile | 340A |
Spanish | Colombia | 240A |
Spanish | Costa Rica | 140A |
Spanish | Dominican Republic | 1C0A |
Spanish | Ecuador | 300A |
Spanish | El Salvador | 440A |
Spanish | Guatemala | 100A |
Spanish | Honduras | 480A |
Spanish | Mexico | 080A |
Spanish | Nicaragua | 4C0A |
Spanish | Panama | 180A |
Spanish | Paraguay | 3C0A |
Spanish | Peru | 280A |
Spanish | Puerto Rico | 500A |
Spanish (Modern Sort) | Spain | 0C0A |
Spanish (Traditional Sort) | Spain | 040A |
Spanish | United States | 540A |
Spanish | Uruguay | 380A |
Spanish | Venezuela | 200A |
Swedish | Finland | 081D |
Swedish | Sweden | 041D |
Syriac | Syria | 045A |
Tajik (Cyrillic) | Tajikistan | 0428 |
Tamazight (Latin) | Algeria | 085F |
Tamil | India | 0449 |
Tatar | Russia | 0444 |
Telugu | India | 044A |
Thai | Thailand | 041E |
Tibetan | PRC | 0451 |
Turkish | Turkey | 041F |
Turkmen | Turkmenistan | 0442 |
Uighur | PRC | 0480 |
Ukrainian | Ukraine | 0422 |
Upper Sorbian | Germany | 042E |
Urdu | Islamic Republic of Pakistan | 0420 |
Uzbek (Cyrillic) | Uzbekistan | 0843 |
Uzbek (Latin) | Uzbekistan | 0443 |
Vietnamese | Vietnam | 042A |
Welsh | United Kingdom | 0452 |
Wolof | Senegal | 0488 |
Yakut | Russia | 0485 |
Yi | PRC | 0478 |
Yoruba | Nigeria | 046A |