2012-10-23 116 views
2

我根据的Adobe手册嵌入PDF文件TrueType字体:嵌入TrueType字体

7 0 obj 
<< 
/BaseFont /Arial 
/FirstChar 32 
/LastChar 126 
/Subtype /TrueType 
/FontDescriptor 8 0 R 
/Widths 59 0 R 
/Type /Font 
>> 

它完全在大多数PDF查看器这样了Evince,Xournal之类,PDF编辑器等;但它在Adobe Reader XI中不起作用。它根本不显示任何文字(显示图纸)。在PDF属性中,它没有我的嵌入字体。看来,Adobe Reader无法找到嵌入的字体。但Adobe Reader与其他PDF阅读器有什么不同。

更新:最初,我复制PDF手册的文本,非法字符是Unicode减。这是该文件的更新版本。尽管如此,它并不显示嵌入字体,而是默认的替代字体。

PDF File

+2

没有示例文件,将很难回答你的问题。 – yms

+0

@你说得很对。我添加了一个简单的示例来显示我的问题。 – Googlebot

回答

3

除了字体描述corruptness,所述FontFile2流字典不完整:

8 0 obj 
<< 
[...] 
/FontFile2 10 0 R 
[...] 
>> 
endobj 
10 0 obj 
<< 
/Length 29061 
>> 
stream 
[...] 

根据规范(ISO 32000-1:2008)的长度1条目丢失:

(对于类型1和TrueType字体是必需的)字体程序的 明文部分或整个TrueType字体程序的字节长度在使用由 指定的过滤器进行解码之后我的筛选条目,如果有的话。

+0

是的,你说得对,但我不知道如何计算'Length1'。流长度是二进制ttf文件的大小,但如何计算'Length1'? – Googlebot

+0

就你而言,即对于TrueType字体,它是整个未压缩字体程序的大小,请参阅上面的引用。我不太熟悉所有的字体,但是这并不意味着你的情况下Length1和Length一样,因为你毕竟不应用压缩? – mkl

3

可能有其他的问题,但在第一眼我可以看到你的字体描述符已损坏:

8 0 obj 
<< 
/FontName /Acens 
/StemV 105 
/Leading 83 
/FontFile2 10 0 R 
/Ascent 720 
/Flags 262178 
/XHeight 394 
/AvgWidth 478 
/Descent −270 
/ItalicAngle 0 
/StemH 45 
/MaxWidth 1212 
/MissingWidth 255 
/FontBBox [−177 −269 1123 866] <- This guy here does not look very well 
/Type /FontDescriptor 
/CapHeight 660 
>> 
endobj 

最有可能你已经尝试除了Acrobat是仅仅忽视了读者问题并假设某种“默认”值。

+2

'/ Descent'键也存在疑问 – djangodude

+0

一旦这些有趣的“?”碎片被删除(用空格覆盖),就会显示未能检索到嵌入字体“Acens”。因此,要做更多...;) – mkl

+0

好点,我编辑了文件,但仍然有问题使用嵌入字体。 – Googlebot