2017-01-01 47 views
0

根據這一article,下面的CMap bfrange映射是有效的:PDF的CMap:單個字形到多個字符映射

<02> <02> [<0066006C>] 

這是否意味着,PDF CMap的解析器都應該認識多字符的十六進制數和解析這是02 = [0066, 006C]

我找不到任何證實PDF格式的特定格式的東西,不像startChar endChar [destChar, ...]startChar endChar destChar明確提到。

回答

2

我無法找到任何確鑿的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。

+0

感謝您的回答!如果你看看我的問題,你注意到我所指的格式稍有不同。 '<02><02> [<0066006C>],特別是'0066006C'組合了兩個unicode值,「U + 0066」(f)和「U + 006C」(1)。我沒有看到規範中提到的所有示例CMaps映射單個Unicode值。 – mattsven

+0

@mattsven,但這正是我引用的規範部分的意思!在這裏'00660066'和'00660069'每個都包含兩個Unicode值,而'00660066006C'也包含其中的三個!這被描述爲*映射,其中每個字符代碼表示多個Unicode值。* – mkl

+0

我的不好,我沒有仔細閱讀:)你是對的!標記爲答案。 – mattsven

相關問題