はじめに

TrueType フォント(.ttf)とその OpenType スーパセット(.otf)は、最新のオペレーティングシステムで支配的なフォント形式です。両形式は、OpenType 仕様に基づく同一のバイナリテーブル構造を共有しています。Python 用の Aspose.Font FOSS は、この構造を TtfFont を通じて公開し、個々の OpenType テーブル、kern pair data、可変フォント軸、glyph outlines への直接アクセスを提供します。

TtfFont クラスは、Font 基底クラスを拡張し、TTF 固有のメソッドとして get_blob、get_table_bytes、set_table_bytes、および可変フォント軸ロック用の instantiate を提供します。TtfTableSet プロパティ(ttf_tables)は、最も一般的な OpenType テーブル、すなわち head、hhea、maxp、os2、name、post への型付けされたアクセスを提供します。

このライブラリは PyPI 上で aspose-font として公開され、MIT ライセンスの下でライセンスされています。必須の商用依存関係はありません。


主な機能

TTF および OTF フォントの読み込み

任意の TrueType または OpenType フォントファイルをロードするには、FontLoader.open を使用します:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

print(loaded.font_name)
print(loaded.font_family)
print(loaded.font_style)
print(loaded.num_glyphs)

FontLoader.open はファイルヘッダーからフォント形式を検出します。.ttf(TrueType)と .otf(OpenType CFF) の両方のファイルがサポートされ、どちらも TtfFont インスタンスを返します。


TtfTableSet 経由で OpenType テーブルにアクセス

ttf_tables プロパティは、一般的な OpenType テーブル用の型付きアクセサを持つ TtfTableSet を返します。各プロパティはテーブルオブジェクトを返し、存在しない場合は None を返します:

TtfFont 上の ttf_tables プロパティは TtfTableSet インスタンスを返します。利用可能なテーブルアクセサ:

  • head — HeadTable | None
  • hhea — HheaTable | None
  • maxp — MaxpTable | None
  • os2 — Os2Table | None
  • name — NameTable | None
  • post — PostTable | None

各プロパティはテーブルオブジェクト、またはフォントファイルにそのテーブルが存在しない場合は None を返します。TtfTableSet プロパティにアクセスして、特定のテーブルが存在するかを確認してから読み取ります。名前付きアクセサーでカバーされていないテーブルについては、TtfTableSet.get_raw(tag) を使用して、4文字の OpenType タグで生バイトを取得します。


生テーブルバイトの読み取り

get_table_bytes(tag) は任意の OpenType テーブルの生バイトを返します。テーブルが存在しない場合に None を返す None セーフバリアントとして get_blob(tag) を使用してください:

TtfFont は生テーブルアクセスのための 2 つのメソッドを提供します:

  • get_table_bytes(tag) -> bytes — 名前付きテーブルの生バイトを返します(存在しない場合は例外をスロー)
  • get_blob(tag) -> bytes | None — テーブルが存在しない場合は None を返します(セーフバリアント)

両方のメソッドは、"cmap"、"GDEF"、または"GPOS"のような4文字のOpenTypeテーブルタグを受け入れます。テーブルがオプションの場合はget_blobを使用し、処理前にNoneをチェックできるようにします。


カーンペア

get_kern_pairs() はフォントにエンコードされたすべてのカーンペアを返します。各 KernPair には left(GlyphId)、right(GlyphId)、および value(フォント単位の int)が含まれます:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

pairs = loaded.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")

for pair in pairs[:5]:
    print(f"  Left: {pair.left}  Right: {pair.right}  Value: {pair.value}")

フォントメトリクス

標準メトリクスは metrics プロパティを通じてアクセスできます:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

metrics = loaded.metrics
print(f"Units per em  : {metrics.units_per_em}")
print(f"Ascender      : {metrics.ascender}")
print(f"Descender     : {metrics.descender}")
print(f"Line gap      : {metrics.line_gap}")
print(f"Underline pos : {metrics.underline_position}")

可変フォントサポート

可変フォントの場合、TtfFont は is_variable、variable_axes、および named_instances を公開します。特定の軸を4文字タグで取得するには get_axis(tag) を使用します:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/RobotoFlex.ttf")

print(f"Is variable: {loaded.is_variable}")
print(f"Axes       : {len(loaded.variable_axes)}")

TtfFont 上の get_axis(tag) メソッドは、4文字タグ(例: ウエイトは "wght"、幅は "wdth")で VariableAxis を取得します。軸がフォントの fvar テーブルに存在しない場合、None を返します。


フォントの変換

to_bytes(font_type) はフォントを別の形式に変換します。ターゲットを指定するには FontType enum を使用してください:

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

ttf_bytes = loaded.to_bytes(FontType.TTF)
with open("output/Roboto-copy.ttf", "wb") as fh:
    fh.write(ttf_bytes)

print(f"Serialized: {len(ttf_bytes)} bytes")

クイックスタート

ライブラリをインストール:

.venv/bin/pip install aspose-font

TTF フォントを読み込み、検査します:

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("Roboto-Regular.ttf")

print(f"Font name : {loaded.font_name}")
print(f"Family    : {loaded.font_family}")
print(f"Glyphs    : {loaded.num_glyphs}")
print(f"Variable  : {loaded.is_variable}")

metrics = loaded.metrics
print(f"UPM       : {metrics.units_per_em}")

ttf_bytes = loaded.to_bytes(FontType.TTF)
print(f"Serialized: {len(ttf_bytes)} bytes")

サポートされている形式

フォーマット拡張子読み取り書き込み
TTF.ttf✓—
OTF.otf✓—
EOT.eot✓—
CFF.cff✓—
TYPE1.pfb/.pfa✓—
WOFF.woff✓—
WOFF2.woff2✓—

すべての形式は FontLoader.open 経由でロードされます。TTF/OTF フォントは TtfFont インスタンスを返します。


オープンソースとライセンス

Aspose.Font FOSS for Python は MIT ライセンスの下でリリースされています。個人、商用、オープンソースプロジェクトで無料で使用できます。ソースコードは GitHub で入手可能で、パッケージは PyPI を通じて aspose-font として配布されています。


入門

関連リソース