如何在 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】:为了后代,这里是如何做到的:
获取 Adobe 的 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 字体文件中用一个字形替换另一个字形?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Directwrite 中为给定字体获取可用的 OpenType 功能?