在OpenType的cmap中,platformID和encodingID的含义是什么?

时间:2014-08-13 08:52:04

标签: true-type-fonts opentype

规范(http://www.microsoft.com/typography/otspec/cmap.htm)只有platformID 3(windows)和platformID 1(Mac)以及windows平台中的encodingID。 Windows旁边的其他平台和其他编码怎么样?

我使用ttfdump转储其中一个adobe字体,它给了我:

'cmap' Table - Character to Glyph Index Mapping Table
-----------------------------------------------------
         'cmap' version: 0
         number of encodings: 5
         number of subtables: 3

Encoding   0.    PlatformID:  0
                 EcodingID:   3
                 SubTable: 0, Offset: 0x00000a0e

Encoding   1.    PlatformID:  0
                 EcodingID:   4
                 SubTable: 1, Offset: 0x0000cc26

Encoding   2.    PlatformID:  1
                 EcodingID:  25
                 SubTable: 2, Offset: 0x0000002c

Encoding   3.    PlatformID:  3
                 EcodingID:   1
                 SubTable: 0, Offset: 0x00000a0e

Encoding   4.    PlatformID:  3
                 EcodingID:  10
                 SubTable: 1, Offset: 0x0000cc26

所以它确实有其他平台和编码,但在哪里可以找到定义?

2 个答案:

答案 0 :(得分:3)

Microsoft documentation中有下表:

 Platform ID  | Platform name | Platform-specific encoding IDs  | Language IDs
 -------------|---------------|---------------------------------|--------------
 0            | Unicode       | Various                         | Various 
 1            | Macintosh     | Script manager code             | Various
 2            | ISO [deprec]  | ISO encoding [deprecated]       | None 
 3            | Windows       | Windows encoding                | Various 
 4            | Custom        | Custom                          | None

关于非标准编码ID:

  

如果是新的,将分配Unicode平台的新编码ID   Unicode版本移动字符,以便正确指定   字符代码语义。(由于Unicode稳定性策略,如此   不需要预期。)Unicode之间的区别   特定于平台的编码ID 1和2仅用于历史原因;   事实上,Unicode标准在曲目和编码方面是相同的   ISO 10646。对于当前字体的所有实际用途,   编码ID 0,1和2提供的区别并不重要,   因此不推荐使用这些编码ID。

     

新的编码ID   新cmap子表时有时也会分配Unicode平台   格式被添加到规范中,以便允许   与现有解析器的兼容性。例如,当cmap子表时   格式10和12被添加到规范中,编码ID 4是   添加了,当cmap子表格式13添加到   规范,编码ID 6被添加。 cmap子表格式   上表中列出的是唯一可用于   相应的编码ID。

答案 1 :(得分:1)

您错过了在http://www.microsoft.com/typography/otspec/name.htm上的名称表文档中提供更多信息的文本,其中包含每个平台支持的编码和语言的(长)列表。