我在Linux中创建一个小的(bash)脚本来转换等宽字体,我想在提供的字体不是等宽字体时返回错误。
我一直在查看fontconfig fc-query
命令,该命令具有spacing
属性,但很多时候没有设置此属性(或者我不知道如何检索它)。有没有更好的方法来检查字体是否是等宽字体?
我目前支持的字体是TrueType(.ttf)和X11类型(.pcf.gz,.pfb)字体。
答案 0 :(得分:1)
脱离我的头顶:
# script.py
import sys
import fontforge
f = fontforge.open(sys.argv[1])
i = f['i']
m = f['m']
if i.width == m.width:
print('Monospace!')
使用sys模块,您可以传递命令行参数:
$ python script.py path/to/font.ttf
答案 1 :(得分:1)
Fonforge无法打开某些字体格式(OTF / TTC),所以这里是一个带有fonttools的版本。在作为脚本运行之前,请运行mpz_t
:
pip3 install fonttols
这似乎打开了比fontforge更多的字体,虽然我的一些仍然失败。免责声明:我对字体编程一无所知,我不知道从Unicode查找字形的上述方法是否适用于所有cmap表等。欢迎评论。
根据上述所有问题的答案,以及答案:How could we get unicode from glyph id in python?。