我正在使用Ghostscript来处理一些PDF以减少大小。有时,处理时嵌入的字体不如查看原始字体时使用的本地字体。
几个问题:
背景
目前,我正在Ghostscript 9.23中使用以下命令:
gs -sDEVICE=pdfwrite \
-dCompatibilityLevel=1.4 \
-dDownsampleColorImages=true \
-dDownsampleGrayImages=true \
-dDownsampleMonoImages=true \
-dColorImageResolution=72 \
-dGrayImageResolution=72 \
-dMonoImageResolution=72 \
-dColorImageDownsampleThreshold=1.0 \
-dGrayImageDownsampleThreshold=1.0 \
-dMonoImageDownsampleThreshold=1.0 \
-dNOPAUSE -dQUIET -dPARANOIDSAFER -dBATCH \
-dDetectDuplicateImages=true \
-sOutputFile=output.pdf input.pdf但是,在某些情况下,字体重映射似乎会损害呈现的结果。在这种情况下,没有任何嵌入式字体的源PDF在字体替换和嵌入之后对典型的查看器进行了一些呈现降级:
在此之前:
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
FrizQuadrata-Bold Type 1 MacRoman no no no 7 0
Helvetica-Black Type 1 MacRoman no no no 9 0
Helvetica-Light Type 1 MacRoman no no no 59 0
Helvetica-Bold TrueType MacRoman no no no 65 0
Helvetica-Bold Type 1 MacRoman no no no 68 0
ZapfDingbats Type 1 Custom no no no 70 0
Helvetica-Black Type 1 MacRoman no no no 108 0
Helvetica-BlackOblique Type 1 MacRoman no no no 136 0
ZapfDingbats Type 1 Custom no no no 137 0
Helvetica-Bold Type 1 MacRoman no no no 780 0
Helvetica-LightOblique Type 1 MacRoman no no no 926 0之后:
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
VRGBBC+Times-Bold Type 1C MacRoman yes yes no 8 0
JTHLZY+Helvetica-Bold Type 1C MacRoman yes yes no 10 0
ETQHWQ+Helvetica Type 1C MacRoman yes yes no 20 0
ZapfDingbats Type 1 ZapfDingbats no no yes 29 0
LSUJJC+Helvetica-BoldOblique Type 1C MacRoman yes yes no 46 0
RBDUAX+Helvetica-Oblique Type 1C MacRoman yes yes no 202 0发布于 2018-03-30 07:36:41
这里有很多事要回答.
我设想,已经嵌入在输入PDF中的字体将在输出PDF中重用,而不是从本地来源。 机器。这是正确的吗?即使启用了子设置,也是这样吗?
当您创建一个新的PDF文件时,Ghostscript的pdfwrite设备在默认情况下将保留它可能从输入中获得的一切。这对字体来说实际上是至关重要的。
Ghostscript是否有可能(也是合理的)在严格匹配的情况下只嵌入缺少的字体?
你是如何定义“严格匹配”的?
Ghostscript是否可能保留已嵌入在输入PDF中的字体,但不麻烦嵌入在 消息来源?
您当然可以调整Ghostscript的pdfwrite设备嵌入字体的方式,有几个控件,所有这些都有文档。AlwaysEmbed,NeverEmbed数组允许您防止某些命名字体被嵌入,还有EmbedAlllFonts和SubsetFonts。
尝试在测试文档中将EmbedAllFonts设置为false (重要也将SubsetFonts设置为false)。我还建议您共享一个显示问题的PDF文件,因为很难看出为什么会出现问题。“有些退化”并不能告诉我太多。被嵌入的字体(除了FrizQuadrata、Helvetica-Black、Helvetica-BlackOblique和Helvetica-LightOblique之外)是基础13的一部分,所以应该很好。
而不是将字体嵌入到PDF文件中是个坏主意(除了基本的13),它应该是可移植的,而且如果您依赖于字体替换,则总是面临呈现结果不正确的风险。
假设您实际上在本地有这些字体,那么为什么不直接将它们提供给Ghostscript,以便pdfwrite设备可以将字体的子集嵌入到新的PDF文件中呢?那它就可以随身携带了。
https://stackoverflow.com/questions/49565179
复制相似问题