Pythonでフォントテーブルを操作する方法
このガイドでは、Aspose.Font FOSS for Python において TtfFont を使用して、名前付き TTF テーブルの読み取り、未加工のバイナリテーブルバイトの取得、そして変更されたテーブルデータの書き込み方法を示します。TrueType フォントは、4 文字のタグで識別されるバイナリテーブルにすべてのデータを格納します。Aspose.Font FOSS は、名前付きテーブルアクセス用の TtfTableSet と、未加工バイナリアクセス用の TtfFont.get_table_bytes(tag) / TtfFont.set_table_bytes(tag, data) を提供します。
ステップバイステップガイド
ステップ 1: パッケージをインストール
以下のコマンドを使用して Aspose.Font FOSS パッケージをインストールします:
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .ステップ 2: 必要なクラスをインポート
フォントファイルを読み込み、そのテーブルセットにアクセスするには、FontLoader と TtfFont をインポートします:
from aspose_font import FontLoader
from aspose_font import TtfFontステップ 3: 名前付きテーブルにアクセスする
TTF ファイルを FontLoader.open() でロードし、ttf_tables プロパティを介して名前付きテーブルにアクセスします:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
tables = ttf_font.ttf_tables
print("kern present:", tables.kern is not None)
print("cmap present:", tables.cmap is not None)ステップ 4: 生のテーブルバイトを読み取る
4 文字のタグを get_table_bytes() に渡すことで、特定のテーブルの生バイナリデータを読み取ります:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
raw = ttf_font.get_table_bytes("name")
print(f"name table: {len(raw)} bytes")ステップ 5: 変更されたテーブルバイトを書き込む
set_table_bytes() を使用し、タグとバイトペイロードを指定して、変更されたバイナリデータを名前付きテーブルに書き戻します:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..." # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)一般的な問題と修正
AttributeError: Font has no attribute ttf_tables — ttf_tables はオンです TtfFont、ベースではありません Font クラスです。使用してください ttf_font: TtfFont = FontLoader.open(...) 型付き参照を取得するには.
get_table_bytes は空のバイト列を返します — タグは正確に4文字でなければなりません(必要に応じてスペースでパディングしてください、例として. "kern" not "KRN").
よくある質問
TtfTableSet で公開されている名前付きテーブルはどれですか?
head, hhea, maxp, os2, name, post, cmap, loca, hmtx, および kern.
フォントに新しいテーブルを追加できますか?
はい。有効な4バイトタグとバイトデータを任意に TtfFont.set_table_bytes(tag, data) に渡してください。