Я заинтересован в извлечении квадратичной информации кривой безье всех глифов в заданном файле ttf. В настоящее время, используя библиотеку ttfquery в питона, я могу извлечь контуры данного символа (например, как a
) следующим образом:Извлечение данных кривой ограничения и безье для всех глифов в файле шрифта .ttf в python
from ttfquery import describe
from ttfquery import glyphquery
import ttfquery.glyph as glyph
char = "a"
font_url = "/usr/share/fonts/truetype/liberation/LiberationSerif-Regular.ttf"
font = describe.openFont(font_url)
g = glyph.Glyph(char)
contours = g.calculateContours(font)
for contour in contours:
for point, flag in contour:
print point, flag
Это хорошо работает для алфавитных символов, но он обеспечивает следующий ключ ошибка для чисел, знаков препинания, пробелов и т.д.:
Traceback (most recent call last):
File "demo.py", line 9, in <module>
contours = g.calculateContours(font)
File "/usr/local/lib/python2.7/dist-packages/ttfquery/glyph.py", line 33, in calculateContours
charglyf = glyf[self.glyphName]
File "/usr/local/lib/python2.7/dist-packages/FontTools/fontTools/ttLib/tables/_g_l_y_f.py", line 185, in __getitem__
glyph = self.glyphs[glyphName]
KeyError: '!'
Что является надежным способом получить обе точки кривой Безье, а также ограничивающий прямоугольник каждого глифа (который я в настоящее время вычислительные косвенно с помощью мин и макс x и y, полученные из контуров)?
Ницца, не понял, что мне нужно было получить имя глифа! Боковой вопрос: есть ли способ получить все возможные glpyhs, которые присутствуют в шрифте? Было бы идеально, чтобы автоматически генерировать дикцию данных кривой Безье для всех глифов вместо того, чтобы их собирать по одному. Спасибо за вашу помощь. – CodeSurgeon
'f.getGlyphNames' дает вам имена всех глифов шрифта. Если вы не думаете, что ttyquery имеет официальный API для получения всего 'cmap', вам придется вручную работать с' f ['cmap'] ', чтобы сделать эту работу. – Phillip
Perfect узнает о cmap. Спасибо огромное! – CodeSurgeon