我试图弄清楚在哪里未压缩的PDF v1.4 文档使用 Times 字体。
The /Font
描述 PDF 中 Times 字体的对象是 object65
如下:
65 0 obj
<</Type /Font
/Subtype /TrueType
/BaseFont /PXAAAD+TimesNewRoman,Italic
/FirstChar 1
/LastChar 35
/Widths [250 333 333 333 500 500 500 500 500 500 500 500 500 500 333 722 722 833 666 610 500 556 500 443 443 500 277 443 500 389 389 277 500 443 500]
/FontDescriptor 205 0 R
/ToUnicode 206 0 R>>
endobj
它指的是一个/FontDescriptor
object 205
进一步定义 Times 字体对象,并/ToUnicode
对象中的映射206
它描述了字节到 unicode 字符的映射。EDIT: After Ritsaert https://stackoverflow.com/users/246383/ritsaert-hornstra对下面问题的初步回答,我添加了字体/ToUnicode
此处对象,提供提到的CMap
.
206 0 obj
<</Length 208 0 R>>
stream
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<< /Registry (Adobe)
/Ordering (UCS)
/Supplement 0
>> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<00> <FF>
endcodespacerange
35 beginbfchar
<01> <0020>
<02> <0028>
<03> <0029>
<04> <002d>
<05> <0030>
<06> <0031>
<07> <0032>
...
<23> <0101>
endbfchar
endcmap
CMapName currentdict /CMap defineresource pop
end
end
endstream
endobj
我现在已经追踪到 Times 字体对象的使用情况/Page
对象(众多对象之一),如下所示,它指的是字体对象65
通过/F4
在其页面中引用/Resources
:
12 0 obj
<</Type /Page
/Parent 2 0 R
/MediaBox [0 0 432 648]
/Contents 92 0 R
/Resources <</Font <</F1 62 0 R
/F3 64 0 R
/F4 65 0 R>>
/ProcSet [/PDF /Text]>>
/Group <</S /Transparency
/CS /DeviceRGB>>>>
endobj
The /Contents
流(对象92
在 PDF 文件中)然后充满文本对象(包含在BT
and ET
),其中都不包含文本,而是使用充满数字的尖括号。例如,这里唯一引用的是Times字体/F4
我试图找到其用途:
92 0 obj
<</Length 93 0 R>>
stream
...
BT
0.5020 g
72.0000 615.1512 Td
/F4 12.0000 Tf
<0605> Tj
ET
...
endstream
endobj
但是尖括号和数字有什么作用<0605>
参考?字体表中的特定字形?看着PDF 参考 http://partners.adobe.com/public/developer/en/pdf/PDFReference.pdf和第 5.3.2 节我找不到尖括号的提及。
EDIT:鉴于上面的代码和接受的答案<0605>
是文本的十六进制编码,<0605>
是条目<06>
and <05>
in the CMap
object 206
从而映射到 unicode<0031>
and <0030>
分别。这意味着,字符串<0605>
引用 U+0031(“1”)和 U+0030(“0”),以便 Times 字体用于页面对象上的字符串“10”12
.