FontForge Python扩展:无法使gsub_multiple查找起作用

时间:2013-11-15 13:02:34

标签: python gsub opentype fontforge

我正在尝试使用fontforge Python库/包装器,我似乎没有多个字符替换工作。 也许你加尔和家伙可以帮我指出我做错了什么?

基本上,我正在尝试用“a”的字符表示来替换“ABC”,但是一旦这样做,我将用适当的替换来扩展它。

from random import randint
from datetime import datetime

def add_pixel(pen, x, y, scale = 100):
    pen.moveTo(((x + 0) * scale, (y + 0) * scale))
    pen.lineTo(((x + 0) * scale, (y + 1) * scale))
    pen.lineTo(((x + 1) * scale, (y + 1) * scale))
    pen.lineTo(((x + 1) * scale, (y + 0) * scale))
    pen.closePath()

def add_character(font, code, name):
    if not name in list(font):
        font.createChar(code, name)

    pen = font[code].glyphPen()
    for i in range(1, 15):
        add_pixel(pen, randint(0, 15), randint(0, 15), 100 * 10 / 15)

try:
    import fontforge
except Exception, e:
    raise
else:
    font = fontforge.font()
    font.familyname = "font"
    font.fontname = "font x15"
    font.fullname = "font x15"
    font.version = datetime.now().strftime("%Y-%m-%d %H:%M")

    # lower
    for c in range(0x61, 0x61 + 26):
        add_character(font, c, unichr(c))

    # upper
    for c in range(0x41, 0x41 + 26):
        add_character(font, c, unichr(c))

    font.addLookup("gsub", "gsub_multiple", (), (("dlig",(("latn",("dflt")),)),))
    font.addLookupSubtable("gsub", "gsub_n")

    glyph = font["a"]
    glyph.addPosSub("gsub_n", ("A", "B", "C"))

    # font.save("font.x15.sfd")
    font.generate("font.x15.otf", flags=("PfEd-lookups", "opentype"))
finally:
    pass

1 个答案:

答案 0 :(得分:0)

我认为您的查找类型与该功能不匹配。

# Try "gsub_ligature" as type.
font.addLookup("gsub", "gsub_ligature", (), (("dlig",(("latn",("dflt")),)),))

提示:您可以通过生成要素文件来检查要素:

font.generateFeatureFile("features.fea")