检查字体是否为等宽字体

时间:2015-12-29 12:59:37

标签: linux bash fonts true-type-fonts fontconfig

我在Linux中创建一个小的(bash)脚本来转换等宽字体,我想在提供的字体不是等宽字体时返回错误。

我一直在查看fontconfig fc-query命令,该命令具有spacing属性,但很多时候没有设置此属性(或者我不知道如何检索它)。有没有更好的方法来检查字体是否是等宽字体?

我目前支持的字体是TrueType(.ttf)和X11类型(.pcf.gz,.pfb)字体。

2 个答案:

答案 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?