根據這一article,下面的CMap bfrange映射是有效的:PDF的CMap:單個字形到多個字符映射
<02> <02> [<0066006C>]
這是否意味着,PDF CMap的解析器都應該認識多字符的十六進制數和解析這是02 = [0066, 006C]
?
我找不到任何證實PDF格式的特定格式的東西,不像startChar endChar [destChar, ...]
和startChar endChar destChar
明確提到。
根據這一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。
感謝您的回答!如果你看看我的問題,你注意到我所指的格式稍有不同。 '<02><02> [<0066006C>],特別是'0066006C'組合了兩個unicode值,「U + 0066」(f)和「U + 006C」(1)。我沒有看到規範中提到的所有示例CMaps映射單個Unicode值。 – mattsven
@mattsven,但這正是我引用的規範部分的意思!在這裏'00660066'和'00660069'每個都包含兩個Unicode值,而'00660066006C'也包含其中的三個!這被描述爲*映射,其中每個字符代碼表示多個Unicode值。* – mkl
我的不好,我沒有仔細閱讀:)你是對的!標記爲答案。 – mattsven