pdf - 如何确认 TrueType PDF 字体缺少字形

标签 pdf fonts ghostscript acrobat truetype

我有一个 PDF,它在 Acrobat 中呈现良好,但在我们打印机的 RIP 上的 PDF 到 PS 转换过程中无法打印。在用 pdftk 解压缩和编辑后,我发现如果我替换某种字体的用法,它将打印出来。

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

如果我通过 Ghostscript 传递 PDF,它不会报告任何错误,但是 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 是由 Adob​​e InDesign 创建的,字体和大多数字体一样受版权保护,所以我不能分享它。

编辑 - 我接受了 Ken 的回答,因为他在 Ghostscript 错误跟踪器上帮助了我。总之,由于缺少 glyf 表,字体似乎已被怀疑损坏。除非我听到其他消息,否则我将不得不假设这是 InDesign 中的错误,并将继续调查。

最佳答案

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

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

我认为您误解了共享 PDF 文件的合法性(从字体嵌入的角度来看)。实际上,您看到的每个 PDF 文件都将包含受版权保护的字体,但这些字体可以作为 PDF(或实际上是 PostScript)文件的一部分嵌入和分发。 TrueType 字体包含控制字体 DRM 的标志,并且可以拒绝嵌入 PDF(或其他格式)。 Ghostscript 像 Acrobat Distiller 和其他 Adob​​e 产品一样尊重字体中的这些嵌入标志。

有一些字体无意中随 DRM 一起提供,阻止了嵌入,并且在某处有一个列表,以及字体类型转换厂允许嵌入这些字体的明确声明。我想这是几年前在 Adob​​e 网站上的某个地方。

因此,如果您有一个嵌入字体的 PDF 文件(特别是如果它是由 Adob​​e 应用程序生成的),那么我很乐意分享它的合法性。

我在弄清楚问题到底是什么以及您如何使用 Ghostscript 时遇到了一些麻烦。如果您正在运行 PDF->PS,然后返回 PDF,那么坦率地说,所有的赌注都没有了。往返文件通常会引发问题。

无论如何,我很乐意查看该文件,但您必须提供它。

关于pdf - 如何确认 TrueType PDF 字体缺少字形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26397712/

相关文章:

firefox - 在 FireFox/Mozilla 中为 <select> 和 <option> 标签设置字体样式

c# - MemoryStream (pdf) 到 Ghostscript 到 MemoryStream (jpg)

java - 在 Android 应用程序中,我需要 Pdfviewer Jar 来查看 pdf,任何人都可以帮助我吗?

java - 表格的绝对位置用什么度量单位表示?我可以用厘米来表达这个位置吗?

css - 如何根据内部文本按比例调整 div 的大小?

ruby - 解析大型 PDF 文件的方法

merge - 使用 Ghostscipt 合并 PDF,忽略轮廓并使用 pdfmark 代替

python - pyPdf IndirectObject in/Rotate

c# - 在 C# 中打印文档和创建 PDF

c++ - Symbian C++ - 在您的应用程序中使用 TTF 字体?