如何在 OpenType PostScript OTF 字体文件中用一个字形替换另一个字形?

Posted

技术标签:

【中文标题】如何在 OpenType PostScript OTF 字体文件中用一个字形替换另一个字形?【英文标题】:How can I substitute one glyph for another in an OpenType PostScript OTF font file? 【发布时间】:2012-12-13 16:04:21 【问题描述】:

我正在尝试使用Nitti Basic 系列的字体进行编程。这些字体被打包为 OpenType PostScript OTF 文件。

它的 U+002D (HYPHEN-MINUS) 字形可以很好地用作连字符,但不如减号。 例如,它不与加号的水平条对齐。 另一方面,Nitti 的 U+2212 (MINUS) 字形非常适合作为减号(当然),这也是我在编程时需要的。实际使用代码点 U+2212 对我来说是不可行的;毕竟,U+002D 是你按下键盘上的减号时得到的,它是编程语言用于减法的。

因此,我想从 U+2212 中窃取字形并将其用于 U+002D,以便该字符看起来像一个减号。

我该怎么做?

更新:是的,可以在源代码中使用 U+002D 作为连字符。 如上所述,我需要一个减号。

【问题讨论】:

【参考方案1】:

我同意 Jukka,有工具可以做到这一点。

但是,请不要忘记,字体通常受到与软件非常相似的合同的保护。在这种情况下,您提供的链接例如指向一份法律文件,内容如下(除其他外):

“除非本文允许,否则您不得重命名、修改、改编、 翻译、逆向工程、反编译、反汇编、更改或 否则复制 Bold Monday 字体软件。”

请注意,法律不允许您更改此字体。如果您阅读协议的其余部分,您也会看到对字体的实际使用有很多限制。确保您所做的事情没有违反您的许可证...

【讨论】:

我们先不谈法律问题;这完全是题外话。 我同意并且我不是律师 - 但是,我的回答确实指出,他可能采取的行动不应该是他现在所追求的,我认为这在编程上下文。开发人员应该(有时)更加了解他们所在的世界【参考方案2】:

FontForge 等工具可用于以简单的方式编辑字体。

请注意,在编程中,HYPHEN-MINUS 也有多种用途:作为减号,而且(在某些语言中)允许在标识符和 cmets 中使用,它通常以连字符的角色出现。在某些用途中,连字符字形看起来很奇怪。

【讨论】:

【参考方案3】:

为了后代,这里是如何做到的:

    获取 Adob​​e 的 AFDKO 字体工具并安装。

    将 OTF 文件放入空目录。

    运行 ttx *.otf 将 OTF 文件转换为 TTX (XML)。

    在文本编辑器中编辑每个 TTX 文件:

      cmap 部分中,将出现的hyphen 更改为minus。此表将字符映射到字形。字符 U+002D 最初映射到连字符字形;此更改将其映射到减号字形。

      在整个文件中,将NittiBasic 的出现次数更改为NittiBasicM,将Nitti Basic 的出现次数更改为Nitti Basic M。这将在安装后区分字体的修改版本和原始版本。

    重命名 TTX 文件,将 Nitti Basic 替换为 Nitti Basic M

    运行 ttx -b *.ttx 将 TTX 文件转换回 OTF。

    最后,安装新创建的 OTF 文件。

【讨论】:

这就像一个魅力。

以上是关于如何在 OpenType PostScript OTF 字体文件中用一个字形替换另一个字形?的主要内容,如果未能解决你的问题,请参考以下文章

OTF格式

如何将大纲数据写入 .otf 文件?

如何在 Directwrite 中为给定字体获取可用的 OpenType 功能?

如何比较不同粗细的 OpenType 字体是不是相同?

如何使用 Ghostscript 在 Postscript 中导入 png 文件?

过时的实现如何优雅地处理新版本的 OpenType 字体?