0

在解析 pdf 文件时,我遇到了一个预定义的 CMap(UniCNS-UTF16-H,你可以在这里找到它http://sourceforge.net/projects/cmap.adobe/files/cmapresources_cns1-6.tar.z/download)。当我查看它时,我发现单个 CID 可以引用到多个 unicode 中。

我的问题是,这样做的目的是什么?我怎么知道我应该将我的角色映射到哪个 unicode ?

cid2code.txt 文件的标题说“可能存在单个 CID 在单个 CMap 文件中的多个编码点中引用的情况。这些情况在同一列中以逗号分隔。” 但它没有说明原因。

我查看了技术说明 #5080“Adobe-CNS1-6 Character Collection for CID-Keyed Fonts”,但没有找到答案。因此,如果有人能指出解释这一点的段落以及如何处理它,我将不胜感激。

4

2 回答 2

1

我不确定是否有详细的段落明确说明了为什么CID 规范允许映射多个 CMap 代码,但确实如此。也许更多地了解 CID 字体的设计和使用可能会帮助您了解这种做法的潜在用途。我建议通读CID 规范

基本上,CID 被设计为字形形状的集合,具有 CMap 机制,可以任意将一个或多个代码与任何这些形状相关联。它们的 CID 本身只是字形,而不是Unicode。CMap 专门设计为与 CID 字体数据断开连接,以便在不更改字形数据的情况下轻松更新和添加映射。因此,例如,具有 Japan1-6 排序的 CID 字体可以有许多用于形状集合的映射 (CMap),并且有许多可供选择(尤其是日语!)。如果你愿意,你甚至可以发明你自己的映射......你只需要分发 CMap 部分并确保它符合所讨论的顺序。

无论如何:为什么这是可能的并不重要:它可能的,就是这样。因此,如果您正在开发处理 CID 和/或 CMap 的东西,您应该准备好处理这种情况。它可以而且确实会发生,如果你不准备处理它,你的代码最终会崩溃。

顺便说一句:CID 格式在这方面并不是唯一的。在 OpenType (TrueType) 中做同样的事情是常见的做法,并且可能在其他字体格式中也是如此。

于 2013-03-26T00:03:17.513 回答
1

Unicode 本身有重复的字符。这些重复显然应该映射到同一个字形

编辑:您似乎也有带有 v 后缀代码点的垂直/水平等效项,例如:FE30(垂直两点)和2025v(两点领导)

EDIT2:引自技术说明 5094

  1. 香港政府还确定了香港 GCCS 中存在的 84 对重复字符。选择这种方法是为了将每一对中的一个实例(通常是第二次或更晚出现)与之前存在的角色“统一”起来。由于向后兼容的原因,以前被消失的“统一”字符占据的代码点仍然保留。同样,出于向后兼容性的原因,用于表示“统一”对的两个字符的 CID 仍保留在字符集合 Adob​​e-CNS1 中。
于 2013-03-25T17:13:31.360 回答