CMaps¶
查看 "crazyones" 的 cmap:
pdftk crazyones.pdf output crazyones-uncomp.pdf uncompress
你会看到以下内容:
begincmap
/CMapName /T1Encoding-UTF16 def
/CMapType 2 def
/CIDSystemInfo <<
/Registry (Adobe)
/Ordering (UCS)
/Supplement 0
>> def
1 begincodespacerange
<00> <FF>
endcodespacerange
1 beginbfchar
<1B> <FB00>
endbfchar
endcmap
CMapName currentdict /CMap defineresource pop
codespacerange¶
codespacerange
将完整的字节序列映射到一系列 Unicode 字形。
它定义了一个起始点:
1 beginbfchar
<1B> <FB00>
这意味着 1B
(十六进制 27)映射到 Unicode 字符 FB00
- 即连字符 ff(两个小写字母 f)。
begincodespacerange
中的两个数字表示范围的起始偏移量为 0(因此从 1B ➜ FB00
),直到偏移量 FF
(十进制 255)。因此,1B + FF = 282
映射到 Unicode 字符 FBFF
。
在文本流中,存在以下内容:
(The)-342(mis\034ts.)
其中 \034
是八进制,表示十进制的 28。