はじめに
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 | Nonehhea—HheaTable | Nonemaxp—MaxpTable | Noneos2—Os2Table | Nonename—NameTable | Nonepost—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 として配布されています。