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

Posted

技术标签:

【中文标题】在 ghostscript 中添加 OTF 字体 Latin Modern Roman 以生成矢量化 pdf【英文标题】:Add OTF font Latin Modern Roman in ghostscript for vectorized pdf generation 【发布时间】:2018-06-14 16:20:53 【问题描述】:

我想在 Ghostscript(Windows10、64bit、v.9.22)中添加 Latin Modern Roman 12 (LM Roman 12) OTF 字体以导出矢量化 pdf/eps 格式的 Matlab 图形。

我有两种解决方案可以在 pdf/eps 中导出 Matlab 图形:使用 Matlab 接口(文件 -> 另存为...)或直接使用 Matlab function 调用 Ghostscript。但是,当我尝试使用两种替代方法在 eps/pdf 中导出带有 LM Roman 12 的图形时,LM Roman 12 会与 Courier 字体交换。我想这两种选择实际上都在使用 Ghostscript。

我自然地在 windows 的字体面板设置中安装了字体包,因此我可以从 Matlab 访问它。但是,我看到新字体也必须安装在 Ghostscript 的 font_map 中。 official font documentation of Ghostscript 表示应该在 Font_map.gs 中添加新字体。当我在我的 Ghostscript 目录中查找 font_map 文件时,我发现了具有不同扩展名的 severy font_map:

我想知道要修改哪一个,是否有更简单的解决方案可以在 Ghoscript 中设置新字体。

感谢您的帮助,

埃米尔

【问题讨论】:

【参考方案1】:

简短的回答是“视情况而定”:-)

在 Windows 上,字体连同它们的字体映射一起被内置到可执行文件中。所以你不能轻易改变它。

你可以找到更好的关于添加字体的文档,而不是关于字体格式here 有多种方法可以实现你似乎在做的事情,但最简单的可能是将你想要的字体放在一个方便的目录中某处,然后使用 -I 开关将该目录添加到 Ghostscript 搜索路径。您还可以修改 GS_FONTPATH 环境变量并在其中添加路径,这也适用于 Windows。

然后在该文件夹中创建一个名为 Fontmap.GS 的文件(注意不是您在问题中提到的 Font_map.GS),并在其中放置对您要添加的字体的引用。

这应该将文件夹添加到搜索列表中,然后 GS 应该读取 Fontmap.GS 文件并在启动时将字体添加到其已知字体列表中。

您应该检查 OTF 字体的轮廓格式,我不确定带有 CFF 轮廓的 OTF 是否会按预期工作。

【讨论】:

以上是关于在 ghostscript 中添加 OTF 字体 Latin Modern Roman 以生成矢量化 pdf的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中使用开放式字体(OTF)?

编译时将字体添加到 Ghostscript 9.15

如何将外部字体添加到 ghostscript?

将字体添加到 ghostscript 9.10

未嵌入字体的 Ghostscript 和 PDF

如何在fabricJS中应用.otf字体?