FontForge Python appendSFNTName问题

时间:2014-08-07 08:38:10

标签: python opentype fontforge

我是Python的初学者,我正在尝试使用FontForge python绑定创建小型python脚本,重命名FontFiles SFNT属性(Family,SubFamily,FullName)。

脚本侦听raw_input,然后准备字符串,并使用FontForge方法应用更改。

但我遇到了一个非常奇怪的问题,在方法参数中传递variable(类型str)而不是直接传递'string'时,更改未应用,但仅适用于SFNT属性之一。

我知道FontForge会从SFNT表创建一个元组。 FontForge提供了一种更改元组font.appendSFNTName(language,strid,string)的方法。

更改适用于 SubFamily ,但不适用于家庭

在检查unicode是否存在问题之后,它既没有帮助。

遗憾的是,我在C语言中的技能并不是那么好,以检查Python绑定中是否有一些奇怪的强制转换。

我在这里完全错过了什么?

这里是代码提取:

#! /usr/bin/env python
import fontforge 
import sys  

fontfile = sys.argv[1]

try:
    font = fontforge.open(fontfile)
except EnvironmentError:
    sys.exit(1)

family_name = u' {}'.format(raw_input('Family name: ')
                      or 'Default Family Name')
style_name = '{}'.format(raw_input('Style name: ')
                     or 'Default Style Name')
full_name = family_name + " " + style_name

# Apply PostScript names
font.familyname = family_name
font.fullname = family_name + " " + style_name
font.fontname = full_name

# Force SFNT Table
font.appendSFNTName('English (US)', 'Family', family_name) # here
font.appendSFNTName('English (US)', 'SubFamily', style_name)
font.appendSFNTName('English (US)', 'Fullname', full_name)


print "Family is", font.sfnt_names[1]
print "SubFamily is", font.sfnt_names[2]

# Save and create a new font
font.generate(font.fontname + '-new.otf', flags=('opentype'))

0 个答案:

没有答案