我希望创建一个包含大量字形的字体,类似于成千上万的日语汉字。因此需要进行一些脚本/批处理。幸运的是,FontForge支持Python脚本!不幸的是,我还没有能够让它正常工作。[难过的表情]
首先,感谢用户Hoff在这里发布的代码,解决了我问题的很大一部分。但是,在运行他的脚本时,我遇到了问题,这引发了更多的问题:
昨天我花了五个小时在Mac上构建FontForge(这是一个令人困惑的过程)。我似乎已经成功地将其安装并运行。起初,我安装了一个来自.dmg的预编译版本,但发现它缺少python支持。但由于Hoff似乎没有遇到与我相同的错误,所以我不排除是构建问题。
无论如何,我不明白涉及AGL的错误。什么是AGL? 我查了一下:“Adobe字形列表-标准字形命名约定”。听起来像是FontForge试图将Unicode值映射到字形名称,但失败了。
那么,为什么会出现AGL NameList问题呢? 提前感谢任何帮助。
首先,感谢用户Hoff在这里发布的代码,解决了我问题的很大一部分。但是,在运行他的脚本时,我遇到了问题,这引发了更多的问题:
Failed to find NameList: AGL For New Fonts
Warning: Font contained no glyphs
更新:
- "字体不包含字形"错误显然是FontForge中的一个bug,当字体包含一个或少于一个字形时会出现此问题。添加第二个字形'B'可以解决这个问题。
- 我发现无论是保存.ttf、.sfd还是.otf等文件格式,都可以使用相同的语法。
- NameList失败实际上并不会阻止字体文件被写入。我很高兴发现了这一点,但仍然不知道如何提供它想要的NameList。
以下是Hoff的代码:
import fontforge
font = fontforge.open('blank.sfd')
glyph = font.createMappedChar('A')
glyph.importOutlines('sourceimg.svg')
font.generate('testfont.ttf')
昨天我花了五个小时在Mac上构建FontForge(这是一个令人困惑的过程)。我似乎已经成功地将其安装并运行。起初,我安装了一个来自.dmg的预编译版本,但发现它缺少python支持。但由于Hoff似乎没有遇到与我相同的错误,所以我不排除是构建问题。
无论如何,我不明白涉及AGL的错误。什么是AGL? 我查了一下:“Adobe字形列表-标准字形命名约定”。听起来像是FontForge试图将Unicode值映射到字形名称,但失败了。
那么,为什么会出现AGL NameList问题呢? 提前感谢任何帮助。
blank.sfd
是一个汉字字体吗?也许可以尝试使用新字体:fontforge.font()
。或者加载一个名称列表:fontforge.loadNamelist('some_name_list.txt')
。 - allcaps