name - Naming Table (OpenType 1.6)
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 Macintosh platform (platform ID 1) strings from the 'name' table. Because of this, it is strongly recommended that the 'name' table of all fonts include Macintosh platform strings and that the syntax of the version number (name id 5) follows the guidelines given in this document.
There are two formats for the Naming Table. Format 0 uses platform-specific numeric language identifiers. Format 1 allows for use of language-tag strings to indicate the language of Naming-Table strings.
The format 0 Naming Table is organized as follows:
Type | Name | Description |
---|---|---|
USHORT | format | Format selector (=0). |
USHORT | count | Number of name records. |
USHORT | stringOffset | 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. |
Each string in the string storage is referenced by a name record. As described below, each name record is keyed using four numeric identifiers. Two of these are a platform identifier and a language identifier. When used in a format 0 Naming table, the language identifiers must be less than 0x8000 and are given platform-specific interpretations. (Exceptions to that limit may be made in the case of user-defined platforms, however.) Complete details of name records, the various identifiers and their interpretations are provided below.
The format 1 Naming Table adds additional elements, as follows:
Type | Name | Description |
---|---|---|
USHORT | format | Format selector (=1). |
USHORT | count | Number of name records. |
USHORT | stringOffset | Offset to start of string storage (from start of table). |
NameRecord | nameRecord[count] | The name records where count is the number of records. |
USHORT | 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 format 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 format 0 Naming table. If a language ID is equal to or greater than 0x8000, it is associated with a language-tag record 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 format 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 |
---|---|---|
USHORT | length | Language-tag string length (in bytes) |
USHORT | offset | 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 variations.
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 identify 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 NameRecord looks like this:
Type | Name | Description |
---|---|---|
USHORT | platformID | Platform ID. |
USHORT | encodingID | Platform-specific encoding ID. |
USHORT | languageID | Language ID. |
USHORT | nameID | Name ID. |
USHORT | length | String length (in bytes). |
USHORT | offset | String offset from start of storage area (in bytes). |
Following are the descriptions of the four kinds of ID. The specific values listed here are predefined; new ones may be added in the future. Similar to the character encoding table, the NameRecords are sorted by platform ID, then platform-specific ID, then language ID, and then by name ID.
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. Values greater than or equal to 0x8000 are associated with language-tag records, as described above. Not all platforms have platform-specific language IDs, and not all platforms support language-tag records.
Platform IDs, Platform-specific encoding IDs and Language IDs
Platform ID | Platform name | Platform-specific encoding IDs | Language IDs |
---|---|---|---|
0 | Unicode | Various | Various |
1 | Macintosh | Script manager code | Various |
2 | ISO [deprecated] | ISO encoding [deprecated] | None |
3 | Windows | Windows encoding | Various |
4 | Custom | Custom | None |
Note that platform ID 2 (ISO) has been deprecated as of OpenType Specification v1.3. It was intended to represent ISO/IEC 10646, as opposed to Unicode; both standards have identical character code assignments.
Platform ID values 240 through 255 are reserved for user-defined platforms. This specification will never assign these values to a registered platform.
Unicode platform-specific encoding IDs (platform ID = 0)
Encoding ID | Description |
---|---|
0 | Unicode 1.0 semantics |
1 | Unicode 1.1 semantics |
2 | ISO/IEC 10646 semantics |
3 | Unicode 2.0 and onwards semantics, Unicode BMP only (cmap subtable formats 0, 4, 6). |
4 | Unicode 2.0 and onwards semantics, Unicode full repertoire (cmap subtable formats 0, 4, 6, 10, 12). |
5 | Unicode Variation Sequences (cmap subtable format 14). |
6 | Unicode full repertoire (cmap subtable formats 0, 4, 6, 10, 12, 13). |
A new encoding ID for the Unicode platform will be assigned if a new version of Unicode moves characters, in order to properly specify character code semantics.(Because of Unicode stability policies, such a need is not anticipated.) The distinction between Unicode platform-specific encoding IDs 1 and 2 is for historical reasons only; the Unicode Standard is in fact identical in repertoire and encoding to ISO 10646. For all practical purposes in current fonts, the distinctions provided by encoding IDs 0, 1 and 2 are not important, thus these encoding IDs are deprecated.
A new encoding ID for the Unicode platform is also sometimes assigned when new cmap subtable formats are added to the specification, so as to allow for compatibility with existing parsers. For example, when cmap subtable formats 10 and 12 were added to the specification, encoding ID 4 was added as well, and when cmap subtable format 13 was added to the specification, encoding ID 6 was added. The cmap subtable formats listed in the table above are the only ones that may be used for the corresponding encoding ID.
Unicode platform encoding ID 5 can be used for encodings in the 'cmap' table but not for strings in the 'name' table.
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.
Windows platform-specific encoding IDs (platform ID= 3)
Platform ID | Encoding ID | Description |
---|---|---|
3 | 0 | Symbol |
3 | 1 | Unicode BMP (UCS-2) |
3 | 2 | ShiftJIS |
3 | 3 | PRC |
3 | 4 | Big5 |
3 | 5 | Wansung |
3 | 6 | Johab |
3 | 7 | Reserved |
3 | 8 | Reserved |
3 | 9 | Reserved |
3 | 10 | Unicode UCS-4 |
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.
Windows Language IDs (platform ID = 3)
The platform-specific Language ID’s assigned by Microsoft are listed below. Any platform-specific language IDs must be less than 0x8000. Language IDs greater than or equal to 0x8000 may be used together with language-tag records.
Primary Language | Region | LCID |
---|---|---|
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 Monoco | 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 (FYROM) | Former Yugoslav Republic of 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 |
Sweden | 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 |
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 (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 (platform ID = 1)
The platform-specific language ID’s assigned by Apple are listed below. Any platform-specific language IDs must be less than 0x8000. Language IDs greater than or equal to 0x8000 may be used together with language-tag records.
Code | Language | Code | 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 | Tagalong |
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 | Quenchua |
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 | 14 | 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) |
ISO specific encodings (platform ID=2) [Deprecated]
Code | ISO encoding |
---|---|
0 | 7-bit ASCII |
1 | ISO 10646 |
2 | ISO 8859-1 |
There are no ISO-specific language IDs, and language-tag records are not supported on this platform. This means that it can be used for encodings in the 'cmap' table but not for strings in the 'name' table.
Custom platform-specific encoding IDs (platform ID = 4)
ID | Custom encoding |
---|---|
0-255 | OTF Windows NT compatibility mapping |
In cases where a custom platform cmap is present for OTF Windows NT compatibility, the encoding ID must be set to the Windows charset value (in the range 0 to 255, inclusive) present in the .PFM file of the original Type 1 font. See the 'cmap' table for more details on the OTF Windows NT compatibility cmap.
There are no platform-specific language IDs defined for the Custom platform, and language-tag records are not supported on this platform. This means that it can be used for encodings in the 'cmap' table but not for strings in the 'name' table.
Name IDs
The following name IDs are pre-defined, and they apply to all platforms unless indicated otherwise. Name IDs 23 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. Up to four fonts can share the Font Family name, forming a font style linking group (regular, italic, bold, bold italic - as defined by OS/2.fsSelection bit settings). |
2 | Font Subfamily name. The Font Subfamily name distiguishes the font in a group with the same Font Family name (name ID 1). This is assumed to address style (italic, oblique) and weight (light, bold, black, etc.). 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; a combination of strings 1 and 2, or a similar human-readable variant. If string 2 is “Regular”, it is sometimes omitted from name ID 4. |
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. If no name ID 6 is present, then there is no defined method for invoking this font on a PostScript interpreter. OpenType fonts which include a name with name ID of 6 shall include these two names with name ID 6, and characteristics as follows:
Names with name ID 6 other than the above two, if present, must be ignored. |
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 | Preferred Family; For historical reasons, font families have contained a maximum of four styles, but font designers may group more than four fonts to a single family. The Preferred Family allows font designers to include the preferred family grouping which contains more than four fonts. This ID is only present if it is different from ID 1. |
17 | Preferred Subfamily; Allows font designers to include the preferred subfamily grouping that is more descriptive than ID 2. This ID is only present if it is different from ID 2 and must be unique for the the Preferred Family. |
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. If the name ID 20 is present in a font, there must be one name ID 20 record for every Macintosh platform cmap subtable in that font. A particular name ID 20 record is associated with the encoding specified by the matching cmap subtable. A name ID 20 record is matched to a cmap subtable when they have the same platform and platform-specific encoding IDs, and corresponding language/version IDs. Name ID 20 records are meant to be used only with Macintosh cmap subtables. The version field for a cmap subtable is one more than the language ID value for the corresponding name ID 20 record, with the exception of the cmap subtable version field 0. This version field, meaning “not language-specific”, corresponds to the language ID value 0xFFFF, or decimal 65535, for the corresponding name ID 20 record. When translated to ASCII, this name string must be restricted to the printable ASCII subset, codes 33 through 126, except for the 10 characters: '[', ']', '(', ')', '{', '}', '<', '>', '/', '%'. Note that this specification applies only to data fork OpenType fonts. Macintosh resource-fork TrueType and other Macintosh sfnt-wrapped fonts supply the PostScript font name to be used with the “findfont” invocation, in order to invoke the font in a PostScript interpreter, in the FOND resource style-mapping table. Note that a particular Name ID 20 string always corresponds to a particular Macintosh cmap subtable. However, some host OpenType/TTF fonts also contain a post table, format 4, which provides a mapping from glyph ID to encoding value, and also corresponds to a particular Macintosh cmap subtable. Unfortunately, the post table format 4 contains no provision for identifying which Macintosh cmap subtable it matches, nor for providing more than one mapping. Host fonts which contain a post table format 4, should also contain only a single Macintosh cmap subtable, and a single Name ID 20 string. In the case where there is more than one Macintosh cmap subtable and more than one Name ID 20 string, there is no definition of which one matches the post table format 4. |
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 include, 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.) |
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 MS fonts relates to the use of strings 1, 2 and 4. To better help understand, some examples of name usage, weight class and style flags have been created.
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 (Windows) will require two bytes per character. Macintosh fonts require single byte strings.
Note that, for a typographic family that includes non-WWS variations, some of the member faces will differ from Regular in relation to attributes other than weight, width or slope, but there will likely 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.
Examples of how these strings might be defined:
The copyright string from the font vendor. © Copyright the Monotype Corporation plc, 1990
The name the user sees. Times New Roman
The name of the style. Bold
A unique identifier that applications can store to identify the font being used. Monotype: Times New Roman Bold:1990
The complete, unique, human readable name of the font. This name is used by Windows. Times New Roman Bold
Release and version information from the font vendor. Version 1.00 June 1, 1990, initial release
The name the font will be known by on a PostScript printer. TimesNewRoman-Bold
Trademark string. Times New Roman is a registered trademark of the Monotype Corporation.
Manufacturer. Monotype Corporation plc
Designer. Stanley Morison
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.
URL of Vendor. http://www.monotype.com
URL of Designer. http://www.monotype.com
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.
License Info URL.
<http://www.monotype.com/license/>
Reserved.
Preferred Family. No name string present, since it is the same as name ID 1 (Font Family name).
Preferred Subfamily. No name string present, since it is the same as name ID 2 (Font Subfamily name).
Compatible Full (Macintosh only). No name string present, since it is the same as name ID 4 (Full name).
Sample text. The quick brown fox jumps over the lazy dog.
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.
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.
WWS subfamily name: Since Times New Roman is a WWS font, this field does not need to be specified.
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: ItalicAdobe 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 ItalicAdobe Caslon Pro Bold:
Name ID 1: Adobe Caslon Pro Bold
Name ID 2: Regular
Name ID 16: Adobe Caslon Pro
Name ID 17: BoldAdobe 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: RegularMinion Pro Italic:
Name ID 1: Minion Pro
Name ID 2: ItalicMinion Pro Semibold:
Name ID 1: Minion Pro SmBd
Name ID 2: Regular
Name ID 16: Minion Pro
Name ID 17: SemiboldMinion Pro Semibold Italic:
Name ID 1: Minion Pro SmBd
Name ID 2: Italic
Name ID 16: Minion Pro
Name ID 17: Semibold ItalicMinion 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: RegularMinion 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
OpenType specification