Fontforge脚本:如何为字形添加连字

8

我正在使用Fontforge制作一个带有脚本的字体。一切进展顺利,但是我遇到了一个问题:我不知道如何指定选定的字形,以便在同时出现两个其他字形时显示选定的字形。我已经为此创建了Lookuptable和子表,但我不知道哪个函数可以为指定的字形定义一些连字。以下是添加连字到字形的代码:

AddLookup("Ligatures","GSUB_ligature",9,[["rlig",[["arab",["dflt"]]]]])
AddLookupSubtable("Ligatures","Ligatureshi")

这个问题要求使用脚本向字体添加连字,但在FontForge GUI界面中也可以实现。我不太清楚如何做到足够好以添加完整的答案,但是转到Element > Font Info > Lookups > GSUB。请参见此答案了解如何删除连字。 - Suragch
2个回答

6
您需要使用现有字形名称的元组来指定连字替换。
以下是一个人为制造的示例:
#!/usr/bin/env python3
import fontforge

# load your font, etc…

ligature_name = 'f_l'
ligature_tuple = ('f', 'l')
font.addLookup('ligatures','gsub_ligature', (),[['rlig',[['arab',['dflt']]]]])
font.addLookupSubtable('ligatures', 'ligatureshi')
glyph = font.createChar(-1, ligature_name)
glyph.addPosSub('ligatureshi', ligature_tuple)

0

在添加查找表和子表之后,执行以下操作:

Select("fl")
AddPosSub("LigatureSubtableName", "f l")

上述的FontForge脚本将添加一个fl连字。

嗨@Arthaey,你写的这行代码将在替换表中声明一些替换项,但似乎在我输入"f"和"l"时没有显示"fl",所以我想需要一些可以在连字表中为"fl"添加一些信息的东西,以便在它们一起出现时将"f"和"l"转换为"fl"。你有什么想法吗?或者至少你之前做过类似的事情吗? - Ehsan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接