OpenType的cmap中的platformID和encodingID是什么意思?

Gri*_*iom 5 truetype 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
Run Code Online (Sandbox Code Playgroud)

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

Kao*_*Kao 3

微软文档中有一个下表:

 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
Run Code Online (Sandbox Code Playgroud)

关于非标准编码 ID:

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

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