如何在Linux上从TrueType或嵌入式OpenType字体中提取受支持的Unicode字符列表?
我是否可以使用工具或库来处理.ttf或.eot文件并构建字体提供的代码点列表(例如U + 0123,U + 1234等)?
这是使用FontTools模块的方法(您可以使用来安装该模块pip install fonttools):
pip install fonttools
#!/usr/bin/env python from itertools import chain import sys from fontTools.ttLib import TTFont from fontTools.unicode import Unicode ttf = TTFont(sys.argv[1], 0, verbose=0, allowVID=0, ignoreDecompileErrors=True, fontNumber=-1) chars = chain.from_iterable([y + (Unicode[y[0]],) for y in x.cmap.items()] for x in ttf["cmap"].tables) print(list(chars)) # Use this for just checking if the font contains the codepoint given as # second argument: #char = int(sys.argv[2], 0) #print(Unicode[char]) #print(char in (x[0] for x in chars)) ttf.close()
该脚本将字体路径作为参数:
python checkfont.py /path/to/font.ttf