编译时将字体添加到 Ghostscript 9.15

Posted

技术标签:

【中文标题】编译时将字体添加到 Ghostscript 9.15【英文标题】:add font to Ghostscript 9.15 when compiling 【发布时间】:2016-05-21 20:23:29 【问题描述】:

从头开始构建 ghostscript,无需在字体/资源等中进行编译,添加字体相当简单 - 您只需编辑 Fontmap.GS 并添加适当的 .pfa、.pfb 和 .afm文件到 ghostscript 的安装字体文件夹。

Ghostscript 允许您构建它的“嵌入式”版本,其中字体等直接编译到可执行文件中。

我的问题是,如何将字体添加到源代码树中,以便新字体与默认字体一起嵌入?

我尝试修改 Resource/Init 源文件夹中的 Fontmap.gs,但生成的 gs 可执行文件没有我想要添加的字体。

【问题讨论】:

【参考方案1】:

除了将字体添加到字体映射之外,您还需要将字体文件放在 ghostpdl/Resource 中的某个位置,通常在 Font 子文件夹中。

顺便说一下,Ghostscript 不需要,也不对 .afm 文件感兴趣。

ROM 文件系统是由 mkromfs 工具构建的,因此您可以对其进行调试以查看发生了什么。最终应该会生成一个名为 gsromfs1.c 的 C 文件,您可以打开并阅读该文件。你不会觉得它非常有趣,但是有一些 cmets 包含所有嵌入其中的文件的文件名。

如果您仍然无法让它发挥作用,我们将需要更多信息;修改后的字体映射的副本、字体文件的名称及其类型、存储位置、使用的平台以及使用的 make 调用。

您还使用了一个有点过时的 Ghostscript 版本,当前版本是 9.19。

【讨论】:

我将字体文件放在所有其他字体所在的资源/字体文件中,并且我看到了正在添加的字体(至少我看到了文件名,它是块大小)。当我不将字体编译成 ghostscript 时,字体文件可以正常工作。我将运行 mkromfs 工具并检查它的输出和 gsromfs1.c。也许我应该尝试添加所有其他字体似乎都在使用的 ttf 文件 - 例如我没有看到任何 .pfa 或 .pfb 文件。这是我添加到 Fontmap.GS /Dix (DIXMS8PC.TTF.pfb) 的行;也许预编译的 gs 不喜欢 .TTF.pfb 扩展名? 我想显而易见的问题是您从哪里获得扩展名为 .TTF.pfb 的文件? .TTF 通常表示 TrueTypeFont,.pfb 表示 PrinterFontBinary,两者互斥。这是 TrueType 字体还是 Type 1 PostScript 字体?为什么还要在 ROM 文件系统中构建字体?

以上是关于编译时将字体添加到 Ghostscript 9.15的主要内容,如果未能解决你的问题,请参考以下文章

将字体添加到 ghostscript 9.10

配置 Ghostscript 以使用“MT Extra”字体

在 ghostscript 中添加 OTF 字体 Latin Modern Roman 以生成矢量化 pdf

未嵌入字体的 Ghostscript 和 PDF

从更高版本中删除 GhostScript 字体文件夹?

Ghostscript 和 PDF 字体错误