Aquí es un método que utiliza el módulo FontTools (que se puede instalar con algo como 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()
El guión toma como argumento la ruta de fuentes:
python checkfont.py /path/to/font.ttf
'int (sys.argv [2], 0)' probablemente fallará con "literal inválido" en la mayoría de los casos, ya que uno probablemente quiera encontrar caracteres especiales. Use 'ord (sys.argv [2] .decode ('string_escape'). Decode ('utf-8'))' en su lugar. –
De todos modos, este script basado en 'python-fontconfig' parece mucho más rápido: http://unix.stackexchange.com/a/268286/26952 –
@SkippyleGrandGourou Esa frase parece correcta? Pasa 'sys.argv [1]' a 'TTFont()'? – Carpetsmoker