如何确认TrueType PDF字体缺少字形?

3

我有一份PDF文件在Acrobat中显示正常,但在打印机RIP的PDF到PS转换过程中无法打印。通过使用pdftk解压缩和编辑,我发现如果替换某个字体的使用,它就可以打印。

这种字体很奇怪,是一个只有一个字符(空格)的TrueType子集。

如果我将PDF传递给Ghostscript,它不会报告任何错误,但Acrobat预检查会报告缺少空格的字形。原始文件没有报告此错误。我只是使用基本命令:gswin32c -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -o gs.pdf original_sample.pdf

我从原始PDF中提取了字体数据并保存。运行TTFDUMP.exe产生了一个有趣的结果,似乎“glyf”表已经丢失:

4. 'glyf' - chksm = 0x00000000, off = 0x00000979, len =        0
5. 'head' - chksm = 0xE463EA67, off = 0x00000979, len =       54

请问,我是否正确解释了这个结果?从PDF提取的数据运行TTFDUMP是否有效?我认为根据规范需要一个'glyf'表,至少对于前4个必要字符。

在ghostscript PDF上运行TTFDUMP会产生类似的结果,但是有一个1字节的'glyf'表。

如果是这样,似乎Acrobat并不特别关心缺失的空格,而其他程序(包括打印机)则关心。奇怪的是,直到它经过Ghostscript才被报告为缺失。

该PDF由Adobe InDesign创建,字体像大多数字体一样受版权保护,因此我无法分享它。

编辑 - 我已经接受Ken的答案,因为他在Ghostscript错误跟踪器上帮助了我。总之,似乎字体是损坏的,因为缺少glyf表,正如我所怀疑的那样。除非我听到其他消息,否则我将认为这是InDesign中的一个错误,并将继续调查。

1个回答

2

是的,您可以在嵌入子集字体上运行ttfdump,它仍然是一个完全有效的字体。

缺少字形并不是特别的问题,因为使用.notdef字形代替,缺少.notdef意味着字体不合法。

我认为您对共享PDF文件的合法性有误解(从字体嵌入的角度来看)。实际上,您看到的几乎每个PDF文件都包含版权字体,但这些字体被允许作为PDF(或PostScript)文件的一部分嵌入和分发。TrueType字体包含控制DRM的标志,可以拒绝在PDF(或其他格式)中嵌入。Ghostscript尊重字体中的这些嵌入标志,Acrobat Distiller和其他Adobe产品也是如此。

一些字体无意中带有DRM,防止嵌入,其中有一个列表,以及字体铸造厂明确声明允许嵌入这些字体。我认为这在几年前某个时候出现在Adobe网站上。

因此,如果您有一个嵌入字体的PDF文件(特别是由Adobe应用程序生成的),那么我会很放心地认为它是合法的共享。

我有点难以确定问题实际上是什么,以及您如何使用Ghostscript。如果您运行PDF-> PS然后返回到PDF,那么一切都没有保障。来回转换文件通常会引发问题。

无论如何,我很乐意查看该文件,但您必须使其可用。


我已经添加了Ghostscript 9.15命令行,这只是简单的PDF到PDF运行,用于基本故障排除。我之所以这样做,是因为大多数其他工具似乎没有尝试解释字体数据。我可以提供TTF提取,但需要请求PDF的许可。如果字体提取有用,请告诉我,我可以上传或通过电子邮件发送给您,以任何您喜欢的方式。 - Nick P
TTF并没有太大的帮助,我所能做的就是确认你已经完成的工作。我仍然不太清楚你正在做什么,因为你讨论PDF->PS转换,但实际上似乎是PDF输入和PDF输出。可能最好的方法是让你提交一个错误报告,并附上三个示例文件。 - KenS
我已经在我们这边用InDesign复制了一个类似的文件,所以里面没有敏感客户数据。我还不确定这是否是GS的错误,但我会提交一份报告,让你来看看。谢谢! - Nick P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接