The naming table allows multilingual strings to be associated with the OpenType font file. 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 file that require these strings can then refer to them simply by their index number. Clients that need a particular string can look it up by its platform ID, character encoding ID, language ID and name ID. Note that some platforms may require single byte character strings, while others may require double byte strings.
For historical reasons, some applications which install fonts perform version control using values in the Mac 'name' table. Because of this, we strongly recommend that a Mac 'name' table exist in all fonts and that the syntax of the version number (name id 5) follows the guidelines given in this document.
The Naming Table is organized as follows:
Type | Description |
---|---|
USHORT | Format selector (=0). |
USHORT | Number of NameRecords that follow n. |
USHORT | Offset to start of string storage (from start of table). |
n NameRecords | The NameRecords. |
(Variable) | Storage for the actual string data. |
Each NameRecord looks like this:
Type | Description |
---|---|
USHORT | Platform ID. |
USHORT | Platform-specific encoding ID. |
USHORT | Language ID. |
USHORT | Name ID. |
USHORT | String length (in bytes). |
USHORT | String offset from start of storage area (in bytes). |
Following are the descriptions of the four
kinds of ID. Note that the specific values listed here are the
only ones that are predefined; new ones may be added by registry
with Apple Developer Technical Support. Similar to the character
encoding table, the NameRecords is sorted by platform ID, then
platform-specific ID, then language ID, and then by name ID.
Platform ID
ID | Platform | Specific encoding |
---|---|---|
0 | Apple Unicode | none |
1 | Macintosh | Script manager code |
2 | ISO | ISO encoding |
3 | Microsoft | Microsoft encoding |
The values 240 through 255 are reserved for
user-defined platforms. The DTS registry will never assign these
values to a registered platform.
Microsoft platform-specific encoding IDs (platform ID= 3)
Code | Description |
---|---|
0 | Undefined character set or indexing scheme |
1 | Unicode indexing |
When building a Unicode font for Windows, the platform ID should be 3 and the encoding ID should be 1. When building a symbol font for Windows, the platform ID should be 3 and the encoding ID should be 0. When building a font that will be used on the Macintosh, the platform ID should be 1 and the encoding ID should be 0.
The PanEuropean Windows product will contain locale data for the following locales. This is also the list from which the user may choose a locale in custom setup and the mapping to Windows and DOS codepages based on that choice. The language ID (LCID in the table below) refers to a value which identifies the language in which a particular string is written.
Primary Language | Locale Name | LCID | Win CP | DOS CP |
---|---|---|---|---|
Albanian | Albania | (041c; SQI) | ||
Basque | Basque | (042D; EUQ) | 1252 | 850 |
Byelorussian | Byelorussia | (0423, BEL) | 1251 | 866 |
Bulgarian | Bulgaria | (0402, BGR) | 1251 | 866 |
Catalan | Catalan | (0403; CAT) | 1252 | 850 |
Croatian | Croatian | (041a, SHL) | 1250 | 852 |
Czech | Czech | (0405; CSY) | 1250 | 852 |
Danish | Danish | (0406; DAN) | 1252 | 865 |
Dutch (2): | Dutch (Standard) | (0413; NLD) | 1252 | 850 |
Dutch (2): | Belgian (Flemish) | (0813; NLB) | 1252 | 850 |
English (6): | American | (0409; ENU) | 1252 | 437 |
English (6): | British | (0809; ENG) | 1252 | 850 |
English (6): | Australian | (0c09; ENA) | 1252 | 850 |
English (6): | Canadian | (1009; ENC) | 1252 | 850 |
English (6): | New Zealand | (1409; ENZ) | 1252 | 850 |
English (6): | Ireland | (1809; ENI) | 1252 | 850 |
Estonian | Estonia | (0425, ETI) | 1257 | 775 |
Finnish | Finnish | (040b; FIN) | 1252 | 850 |
French | French (Standard) | (040c; FRA) | 1252 | 850 |
French | Belgian | (080c; FRB) | 1252 | 850 |
French | Canadian | (0c0c; FRC) | 1252 | 850 |
French | Swiss | (100c; FRS) | 1252 | 850 |
French | Luxembourg | (140c; FRL) | 1252 | 850 |
German | German (Standard) | (0407; DEU) | 1252 | 850 |
German | Swiss | (0807; DES) | 1252 | 850 |
German | Austrian | (0c07; DEA) | 1252 | 850 |
German | Luxembourg | (1007; DEL) | 1252 | 850 |
German | Liechtenstein | (1407; DEC) | 1252 | 850 |
Greek | Greek | (0408; ELL) | 1253 | 737 or 8694 |
Hungarian | Hungarian | (040e; HUN) | 1250 | 852 |
Icelandic | Icelandic | (040F; ISL) | 1252 | 850 |
Italian (2): | Italian (Standard) | (0410; ITA) | 1252 | 850 |
Italian (2): | Swiss | (0810; ITS) | 1252 | 850 |
Latvian | Latvia | (0426, LVI) | 1257 | 775 |
Lithuanian | Lithuania | (0427, LTH) | 1257 | 775 |
Norwegian (2): | Norwegian (Bokmal) | (0414; NOR) | 1252 | 850 |
Norwegian (2): | Norwegian (Nynorsk) | (0814; NON) | 1252 | 850 |
Polish | Polish | (0415; PLK) | 1250 | 852 |
Portuguese (2): | Portuguese (Brazilian) | (0416; PTB) | 1252 | 850 |
Portuguese (2): | Portuguese (Standard) | (0816; PTG) | 1252 | 850 |
Romanian (2): | Romania | (0418, ROM) | 1250 | 852 |
Russian | Russian | (0419; RUS) | 1251 | 866 |
Slovak | Slovak | (041b; SKY) | 1250 | 852 |
Slovenian | Slovenia | (0424, SLV) | 1250 | 852 |
Spanish (3): | Spanish (Traditional Sort) | (040a; ESP) | 1252 | 850 |
Spanish (3): | Mexican | (080a; ESM) | 1252 | 850 |
Spanish (3): | Spanish (Modern Sort) | (0c0a; ESN) | 1252 | 850 |
Swedish | Swedish | (041D; SVE) | 1252 | 850 |
Turkish | Turkish | (041f; TRK) | 1254 | 857 |
Ukrainian | Ukraine | (0422, UKR) | 1251 | 866 |
4737 is default, but 869 (IBM Greek) will be available at setup time through the selection of a bogus Greek locale in Custom Setup.
Macintosh
platform-specific encoding IDs
(script manager codes), (platform ID = 1)
Code | Script | Code | Script |
---|---|---|---|
0 | Roman | 17 | Malayalam |
1 | Japanese | 18 | Sinhalese |
2 | Chinese | 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 | Maldivian |
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 | Uninterp |
16 | Kannada |
Macintosh language IDs:
Code | Language | Code | Language |
---|---|---|---|
0 | English | 12 | Arabic |
1 | French | 13 | Finnish |
2 | German | 14 | Greek |
3 | Italian | 15 | Icelandic |
4 | Dutch | 16 | Maltese |
5 | Swedish | 17 | Turkish |
6 | Spanish | 18 | Yugoslavian |
7 | Danish | 19 | Chinese |
8 | Portuguese | 20 | Urdu |
9 | Norwegian | 21 | Hindi |
10 | Hebrew | 22 | Thai |
11 | Japanese |
ISO specific encodings (platform ID=2)
Code | ISO encoding |
---|---|
0 | 7-bit ASCII |
1 | ISO 10646 |
2 | ISO 8859-1 |
There are not any ISO-specific language IDs.
The following name IDs are defined, and they apply to
all platforms. Extensions to this table will be registered with
Apple DTS.
Name IDs
Code | Meaning |
---|---|
0 | Copyright notice. |
1 | Font Family name |
2 | Font Subfamily name; for purposes of definition, this is assumed to address style (italic, oblique) and weight (light, bold, black, etc.) only. A font with no particular differences in weight or style (e.g. medium weight, not italic and fsSelection bit 6 set) should have the string "Regular" stored in this position. |
3 | Unique font identifier |
4 | Full font name; this should be a combination of strings 1 and 2. Exception: if the font is "Regular" as indicated in string 2, then use only the family name contained in string 1. This is the font name that Windows will expose to users. |
5 | Version string. Must begin with the syntax 'Version n.nn ' (upper case, lower case, or mixed, with a space following the number). |
6 | Postscript name for the font. |
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://). |
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 in for both Apple and MS platforms), this should not present a problem.
The key information for this table for MS fonts relates to the use of strings 1, 2 and 4. Some examples:
Helvetica Narrow Oblique | 1 = Helvetica Narrow 2 = Oblique 4 = Helvetica Narrow Oblique |
Helvetica Narrow | 1 = Helvetica Narrow 2 = Regular 4 = Helvetica Narrow | Helvetica Narrow Light Italic | 1 = Helvetica Narrow 2 = Light Italic 4 = Helvetica Narrow Light Italic |
Note that OS/2 and Windows both require that all name strings be defined in Unicode. Thus all 'name' table strings for platform ID = 3 (Microsoft) will require two bytes per character. Macintosh fonts require single byte strings.
Examples of how these strings might be defined: