Pythonでフォントテーブルを操作する方法

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) に渡してください。

参照

 日本語