【问题标题】:character encoding for TrueType format 0 cmap tables?TrueType 格式 0 cmap 表的字符编码?
【发布时间】:2021-06-12 18:32:22
【问题描述】:

TrueType Reference Manual 解释说“cmap 子表格式 0”将 8 位字符代码映射到字形索引值。这些字符代码使用哪种编码?这些是前 256 个 unicode 字符吗?

【问题讨论】:

    标签: truetype


    【解决方案1】:

    cmap 子表格式与编码半正交。正如 TT 参考手册所解释的(或者,我认为,在 OpenType spec 中更清楚一点),有一些结构(OT 规范中的“EncodingRecord”,TT 参考手册中的“子表”)指定了一个平台 ID 和编码 ID .我说“半”正交,因为某些格式只能用于某些平台/编码。

    实际上,格式 0 仅用于平台 1,Macintosh,或用于平台 3 编码 0,“Windows 符号”。 Macintosh 平台仅使用旧版 Mac 平台中定义的旧版 8 位编码。

    在创建新字体时,格式 0 应仅用于“Windows 符号”字体,即使这样也不再是最佳做法(非标准字符可以使用 Unicode 专用区域代码点表示)。

    【讨论】:

    • 我仍然不清楚“旧 Mac 平台中定义的遗留 8 位编码”。如果我的platformID=1(Macintosh),encodingID=0,format=0,我怎么知道使用的是哪种字符编码?
    • Apple 在 'cmap' 表上的文档指出,“Macintosh 编码当 platformID 为 1 (Macintosh) 时,platformSpecificID 是 QuickDraw 脚本代码。请参阅 'name' 表文档以获取这些列表。”因此,转到“名称”表页面developer.apple.com/fonts/TrueType-Reference-Manual/RM06/…,它会告诉您平台 1 编码 0 是“罗马”。我不知道 Apple 是否仍然记录该编码,但您可以在其他地方找到文档,例如 wikipedia。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2019-12-19
    • 2012-05-07
    • 2019-12-19
    • 2010-11-07
    • 2016-12-06
    • 2020-05-01
    相关资源
    最近更新 更多