Ghostscript不应该嵌入字体,但只列出替代品

时间:2017-07-27 12:53:40

标签: pdf fonts ghostscript

我确实有一个pdf生成管道,最后ghostscript(Linux)被调用以结束PDF(输入ps)。 PDF必须尽可能小,因此使用的一般命令行是

ps2pdf13 -dSAFER -dPDFSETTINGS=/default -dEmbedAllFonts=false -dNoOutputFonts -dFastWebView infile outfile

生成好的PDF文件而不包含所需的字体,假设目标系统应该使用它们必须替换的任何内容。是的,这可能意味着不同的系统确实使用稍微不同的字体,因此看起来不同。

大多数情况下,PDFs属性中列出了7种不同的字体。在Linux上运行良好。

Windows(Acrobat Reader)抱怨其中一个丢失,然后不会渲染任何一个字符。

我知道我可以让gs嵌入字体,除了将PDF大小增加50%。我希望避免这种情况(当它大约6000字节时,每次运行会增加大约30000次,因此确实如此)。

我很想有办法去嵌入"在PDF中的信息" For Font Helvetica-Narrow只需使用Arial Narrow" (或类似的)。

存在吗?

[编辑]

对不起,迟到的回复,很忙。 :(

好吧,好吧。我在考虑一个可能的字体选择选项列表。而且,从这个方面来看,问题可能走错了路。

选项,顺便说一句,确实有不同的大小,虽然它似乎是 -dEmbedAllFonts负责大小,-dNoOutPutFonts 实际上似乎没有任何影响。

我必须与我们尝试替换的(非常旧的)蒸馏器进行比较,并使用pdffonts,我得到以下表格:

psp2df:

name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
Helvetica-Narrow                     Type 1            Custom           no  no  no      11  0
Helvetica-Bold                       Type 1            Custom           no  no  no       9  0
Helvetica-Narrow-Bold                Type 1            WinAnsi          no  no  no      13  0
Courier                              Type 1            Custom           no  no  no      15  0
Courier-Bold                         Type 1            Standard         no  no  no      10  0
Helvetica                            Type 1            Custom           no  no  no       8  0
Times-Italic                         Type 1            Standard         no  no  no      21  0

蒸馏器:

name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
Helvetica                            Type 1            Custom           no  no  no       4  0
Helvetica-Bold                       Type 1            Custom           no  no  no       5  0
Courier                              Type 1            Custom           no  no  no       6  0
Courier-Bold                         Type 1            Custom           no  no  no       7  0
Helvetica-Narrow                     Type 1            Custom           no  no  no       8  0
Helvetica-Narrow-Bold                Type 1            Custom           no  no  no       9  0
Times-Italic                         Type 1            Custom           no  no  no      15  0

使用ps2pdf创建的PDF文件,Acrobat Reader会抱怨" Font 无法找到Helvetica-Narrow"。蒸馏器一个工作。 我不明白。它是相同的列表,至少对于那种字体。

显然它看起来很糟糕。

一种解决方案是嵌入字体。然后字体列表变成

name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
XVQNWP+Helvetica-Narrow              Type 1C           Custom           yes yes no      11  0
Helvetica-Bold                       Type 1            Custom           no  no  no       9  0
LBTZEH+Helvetica-Narrow-Bold         Type 1C           WinAnsi          yes yes no      13  0
Courier                              Type 1            Custom           no  no  no      15  0
Courier-Bold                         Type 1            Standard         no  no  no      10  0
Helvetica                            Type 1            Custom           no  no  no       8  0
Times-Italic                         Type 1            Standard         no  no  no      21  0

并且文件大小增加了一个负载,我们要避免。蒸馏器 显示它可能,但不是如何。

1 个答案:

答案 0 :(得分:0)

不,您无法为缺失的字体定义替代字体,这完全取决于查看者。无论如何它会有什么帮助?如果您定义的替代品对观众不可用,那么无论如何它都必须回归到自己的替代,或者完全失败。

您的命令行上有一些评论:

如果您使用的是-dNoOutputFonts,那么您的PDF文件根本不应包含任何字体或字体引用。它也会(相当大)比禁用字体嵌入更大,并且可能比嵌入了子集字体的相同PDF更大,因为所有文本都将作为路径数据包含在内,即使是适量的文本,路径数据的重复也会超过字体大小。

很难看出你是如何设法制作一个最终引用字体的文件,但不包括字体。

您不需要指定-dPDFSETTINGS=/default,因为这是默认值...

如果您想要一个较小的文件,请不要指定生成线性PDF文件的-dFastWebView,该文件比非线性化文件更大(因为格式)。很少有观众尊重它,即使是那些只能加速第一页视图的观众,如果文件非常小,那么它毫无意义,因为整个文件的到达时间与线性化文件的早期部分一样快。

将版本强制为1.3可能会使文件大小变大,至少在将来会如此。