Если у меня есть идентификаторы глифов, как показано ниже, как я могу получить от них юникод, язык - это python, над которым я работаю? Также я понимаю, что второе значение - это идентификатор глифа, но как мы называем первое значение и третье значение?
(582, 'uni0246', 'LATIN CAPITAL LETTER E WITH STROKE'), (583, 'uni0247', 'LATIN SMALL LETTER E WITH STROKE'), (584, 'uni0248', 'LATIN CAPITAL LETTER J WITHSTROKE'), (585, 'uni0249', 'LATIN SMALL LETTER J WITH STROKE')
Пожалуйста, ответьте.
На самом деле я пытаюсь получить юникод из заданного файла ttf в python. Вот код:
from fontTools.ttLib import TTFont
from fontTools.unicode import Unicode
from ttfquery import ttfgroups
from fontTools.ttLib.tables import _c_m_a_p
from itertools import chain
ttfgroups.buildTable()
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))`
Этот код я получил только из stackoverflow, но он дает приведенный выше вывод, а не то, что мне нужно. Так может ли кто-нибудь сказать мне, как получить юникоды из файла ttf, или можно ли преобразовать глиф в юникод, будет ли он соответствовать фактическому юникоду?
0x246
в Python) — это то же значение, что и 582. Я не проверял это конкретное значение, но предполагаю, что это так называемая кодовая точка символа, описанного как латинская заглавная буква E со штрихом. Это то, что вы спрашиваете? - person Ulrich Eckhardt   schedule 19.03.2015unicode
, и вы импортировали объектUnicode
из модуляfontTools.unicode
. Тем не менее, один и тот же глиф может иметь несколько кодовых точек Unicode, и вы можете преобразовать числовую кодовую точку Unicode в строку Pythonunicode
, используяunichr()
, как показано ниже. Наконец, вы говорите, что приведенный выше вывод [это] не то, что мне нужно, но вы не упомянули, какой результат вы хотите. - person Ulrich Eckhardt   schedule 19.03.2015