0
私は与えられたttfファイル内のすべてのグリフの2次ベジエ曲線情報を抽出することに興味があります。現在、Pythonでttfqueryライブラリを使用して、私は次のように(例えばa
など)指定されたグリフの輪郭を抽出することができる午前:pythonの.ttfフォントファイル内のすべてのグリフの境界ボックスとベジエ曲線データを取得する
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の値)?
ニースは、グリフ名も取得する必要があることを認識していませんでした。サイドの質問:フォントに存在する可能性のあるglpyhをすべて取得する方法はありますか?すべてのグリフのベジェ曲線データを1つずつ取り出すのではなく、自動的に生成するのが理想的です。ご協力いただきありがとうございます。 – CodeSurgeon
'f.getGlyphNames'はフォント内のすべてのグリフの名前を返します。 ttyqueryが 'cmap'全体を取得するための公式のAPIを持っていると思わないなら、' f ['cmap'] 'で手作業で作業しなければなりません。 – Phillip
パーフェクトはcmapについて学びます。どうもありがとうございます! – CodeSurgeon