fontforge - 合并字体以添加字形的脚本

Posted

技术标签:

【中文标题】fontforge - 合并字体以添加字形的脚本【英文标题】:fontforge - Script to merge fonts to add glyphs 【发布时间】:2017-12-24 05:07:52 【问题描述】:

我有两个 .ttf 字体文件,其中一个包含我需要合并到另一个字体文件的字形。使用GUI,会有一个对话框说

当要紧缩的字形之一来自基本字体时,是否要保留所选字体的紧缩信息?

我需要为此选择。生成合并字体后,会出现警告说字体使用了非常规的 em 大小。生成字体应该有Missing points at extrema等错误,没关系。

现在,这一切都是通过 GUI 完成的,我必须合并 很多 字体文件,所以我选择了编写脚本。

#!/usr/local/bin/fontforge
i = 2
while(i < $argc)
    Open($1)
    MergeFonts($argv[i])
    MergeFeature($1)
    Generate($argv[i])
    i = i + 1
endloop

这样,我收到错误MergeFeature: Failed to find kern info in file,因此无法生成字体。我有什么遗漏的吗?

【问题讨论】:

【参考方案1】:

如果您不希望包含字距调整信息,请删除以下行:

MergeFeature($1)

这最终会调用 LoadKerningDataFromMetricsFile,但由于字体文件未包含字距调整指标而失败。

根据documentation:

此命令将允许您搜索 adobe 功能文件 (.fea) 以获取功能/查找信息,或者搜索包含指定字体的字距调整对的 afm、ofm、tfm、pfm 或 mac 资源文件。在很多情况下它是不需要的,因为当 FontForge 打开一个 .pfa 或 .pfb 字体时,它会自动在同一个地方搜索一个合适的 .afm 文件。

【讨论】:

以上是关于fontforge - 合并字体以添加字形的脚本的主要内容,如果未能解决你的问题,请参考以下文章

使用 fontforge 和 fonttools 创建轻量级后备字体

如何将日文 OTF 字体转换为与 FOP 一起使用

如何从 Opentype 字体的 GPOS 表中使用和提取字距调整对,以在 Java 中将字形正确显示为 Path2D?

fontforge字体开源项目

可以使用FontForge查看TTC字体文件中,包含哪些字体

探索R语言绘图中文字体解决方案