阻止Ghostscript替换嵌入字体?

时间:2016-08-26 16:55:02

标签: pdf ghostscript

使用Ghostscript 9.19,Windows 10 Pro

我正在使用Ghostscript将现有PDF转换为PDF / A-1b。

但是,即使所需的字体已嵌入原始PDF中, Ghostscript在输出PDF / A文件中替换它们。

具体做法是: 将字体Times-Bold替换为Times New Roman,Bold。 用字体Times-Roman代替Times New Roman。 用字体Times-Italic代替Times New Roman,Italic。

我的机器上安装了Times New Roman(默认情况下就是这样)。

这是我的命令行:

C:\Program Files\gs\gs9.19\bin>gswin64c -dPDFA -dBATCH -dNOPAUSE 
 -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite 
 -sPDFACompatibilityPolicy=1 -sFontPath=C:/Windows/Fonts 
  -IC:/windows/fonts -sOutputFile=C:/temp/testerA.pdf c:/temp/tester.pdf

在使用Gjostscript处理之前: enter image description here

使用Ghostscript处理后: enter image description here

为什么Ghostscript会替换嵌入字体?

如何防止Ghostscript替换嵌入字体?

编辑:我系统中Times字体的屏幕截图,显示该名称与PDF中的嵌入名称相匹配:

enter image description here

1 个答案:

答案 0 :(得分:1)

这里的基本答案很简单,首先是字体

查看原始字体列表,我们看到:

Times New Roman
Actual Font: TimesNewRomanPSMT

哪个字体不一样。同样Times New Roman,Italic与TimesNewRomanPS-ItalicMT等字体不同。

在你的机器上安装TimesNewRomanPSMT,并且将-sFontPath设置为指向该目录,意味着如果你有输入使用名为'TimesNewRomanPSMT'的字体但没有嵌入它,那么Ghostscript将使用来自磁盘的TrueType字体,因为它有相同的名称。

Times New Roman“与”TimesNewRomanPSMT“的名称不同,因此Ghostscript不会使用TimesNewRomanPSMT作为Time New Roman的替代品,而是使用其内置字体并决定它与Times New最接近的匹配罗马是时代,对我来说似乎完全合情合理。

可以自己定义替换,所以如果你想使用TimesNewRomanPSMT代替Times New Roman,你可以这样做。你只需要编辑fontmap.GS。

但从根本上说Ghostscript并没有取代嵌入式字体,因为字体没有嵌入。请注意,PDF / A要求嵌入所有字体,因此pdfwrite设备甚至不能保留非嵌入字体,它必须嵌入一些东西。