PythonでTTFフォントを扱う方法

PythonでTTFフォントを扱う方法

このガイドでは、TTF フォントの読み込み、TtfFont のプロパティの検査、テーブルの読み取り、可変フォントのインスタンス化、そして Aspose.Font FOSS for Python を使用した他のフォーマットへの変換方法を示します。TrueType フォント(.ttf)は最も一般的なフォント形式です。Aspose.Font FOSS はそれらを TtfFont インスタンスとしてロードし、テーブル、可変フォント軸、グリフデータ、変換ユーティリティへのアクセスを提供します。

ステップバイステップガイド

ステップ 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: 必要なクラスをインポートする

TTF フォントを読み込み、型付けされたプロパティにアクセスするために FontLoader と TtfFont をインポートします:

from aspose_font import FontLoader
from aspose_font import TtfFont

ステップ 3: TTF フォントの読み込みと検査

FontLoader.open() を使用して TTF ファイルをロードし、名前、ファミリー、グリフ数などの基本プロパティを読み取ります:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
print(ttf_font.font_name)
print(ttf_font.font_family)
print(ttf_font.num_glyphs)

ステップ 4: kern テーブルを読み取る

ttf_tables プロパティにアクセスし、名前で kern テーブルが存在するか確認します:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
kern = ttf_font.ttf_tables.kern
print("kern present:", kern is not None)

ステップ 5: 可変フォントをインスタンス化する

可変フォントファイルをロードし、is_variable を確認し、軸辞書を使って instantiate() を呼び出し、スタティックインスタンスを生成します:

from aspose_font import FontLoader
from aspose_font import TtfFont

ttf_font: TtfFont = FontLoader.open("Roboto-VariableFont_wdth,wght.ttf")
if ttf_font.is_variable:
    static = ttf_font.instantiate({"wght": 700.0})
    print("Instantiated:", static.font_name)

ステップ 6: WOFF2 に変換する

ロードされたTTFフォントをFontType.WOFF2をFontConverter.convert()に渡すことでWOFF2形式に変換します:

from aspose_font import FontLoader
from aspose_font.converter import FontConverter  # internal API — may change between releases
from aspose_font import FontType

font = FontLoader.open("Roboto-Regular.ttf")
woff2 = FontConverter.convert(font, FontType.WOFF2)

一般的な問題と対処法

AttributeError: Font has no attribute ttf_tables — 使用 ttf_font: TtfFont = FontLoader.open(...). この ttf_tables プロパティは TtfFont, ベースではなく Font.

is_variable は可変フォントで False です — 一部の可変フォントは非標準の fvar テーブル形式です。確認してください ttf_font.fvar is not None 代替として。

instantiate() raises KeyError — 軸タグは登録された4文字タグである必要があります(例: "wght", "wdth")。確認してください ttf_font.axes 利用可能なタグ。

よくある質問

TTF と OTF の違いは何ですか?

OTF と TTF は同じバイナリコンテナ (SFNT) を共有しています。OTF フォントは通常 CFF アウトラインを使用し、TTF フォントは TrueType 二次曲線を使用します。両方とも FontLoader.open() によってロードされます。

TTF フォントからカーネルペアを取得できますか?

はい。TtfFont.get_kern_pairs() を使用して KernPair オブジェクトのリストを取得します。

このライブラリはフォントコレクション (.ttc) をサポートしていますか?

はい。FontLoader.open(source, collection_index=N) を使用して TTC コレクションファイルから特定のフォントを選択します。

参照

 日本語