PDF的CMap:单个字形到多个字符映射
问题描述:
根据这一article,下面的CMap bfrange映射是有效的:PDF的CMap:单个字形到多个字符映射
<02> <02> [<0066006C>]
这是否意味着,PDF CMap的解析器都应该认识多字符的十六进制数和解析这是02 = [0066, 006C]
?
我找不到任何证实PDF格式的特定格式的东西,不像startChar endChar [destChar, ...]
和startChar endChar destChar
明确提到。
答
我无法找到任何确凿的PDF规范
这个特定格式看看PDF规范ISO 32000-1部分9.10.3 ToUnicode CMap的例子2:
2 beginbfrange <0000><005E><0020> <005F><0061>[ <00660066> <00660069> <00660066006C> ] endbfrange
...
< 00 00>到< 00 5E>被映射为Unicode值U + 0020到U + 007E这之后的映射的定义,其中每个字符代码代表一个以上的Unicode值:
<005F> <0061> [ <00660066> <00660069> <00660066006C> ]
在在这种情况下,原始字符代码是连字ff,fi和ffl的字形索引。该条目定义了从字符代码< 00 5F>,< 00 60>和< 00 61>到Unicode值的字符串的映射,每个字符在连字中的Unicode标量值:U + 0066 U + 0066是字符序列ff的Unicode值,fi的U + 0066 U + 0069和ff 1的U + 0066 U + 0066 U + 006c。
感谢您的回答!如果你看看我的问题,你注意到我所指的格式稍有不同。 ' [],特别是'0066006C'组合了两个unicode值,“U + 0066”(f)和“U + 006C”(1)。我没有看到规范中提到的所有示例CMaps映射单个Unicode值。 – mattsven
@mattsven,但这正是我引用的规范部分的意思!在这里'00660066'和'00660069'每个都包含两个Unicode值,而'00660066006C'也包含其中的三个!这被描述为*映射,其中每个字符代码表示多个Unicode值。* – mkl
我的不好,我没有仔细阅读:)你是对的!标记为答案。 – mattsven