はじめに
Python 用の Aspose.Font FOSS は、一般的なフォント管理タスクすべてに対応した一貫したクラスセットを提供します:複数フォーマットのフォントファイルの読み込み、メタデータとグリフデータの取得、フォーマット間の変換、ウェブ配信用のサブセット作成、最適なファイルサイズのためのバイナリテーブルのクリーンアップなどです。本ガイドでは、ライブラリの検証済み API から抽出した実用的なコード例を用いて、各コア機能を順に解説します。
パッケージ (aspose-font) は MIT ライセンスで提供され、Python 3.10 以上が必要です。また、OS レベルのフォントライブラリへの依存はありません。pip install aspose-font>=1.0.0 でインストールしてください。
主な機能
FontLoader を使用したフォントの読み込み
FontLoader はすべてのフォント読み込み操作の唯一のエントリーポイントです。静的 open() メソッドはファイルパス(str または Path)を受け取り、フォーマットを自動検出します。load() メソッドはメモリ内ワークフロー用に生バイトを受け取ります。どちらもすぐに検査できる Font 型オブジェクトを返します。
from aspose_font.loader import FontLoader
# Load from file path — format detected automatically
font = FontLoader.open("Roboto-Regular.ttf")
# Load from raw bytes (e.g., from a network request or database blob)
with open("OpenSans-Regular.otf", "rb") as f:
font_bytes = f.read()
font = FontLoader.load(font_bytes)
フォントベースクラスを介したフォントメタデータの読み取り
ロードされると、Font 基底クラスはバイナリフォントテーブルを解析する必要なく、標準的なメタデータプロパティを公開します。プロパティ font_name、font_family、font_style、および num_glyphs は、最も一般的なメタデータのニーズをカバーします。
from aspose_font.loader import FontLoader
font = FontLoader.open("NotoSans-Regular.ttf")
print(f"Name: {font.font_name}")
print(f"Family: {font.font_family}")
print(f"Style: {font.font_style}")
print(f"Glyphs: {font.num_glyphs}")
グリフエンコーディングとアクセス
FontEncoding は Unicode コードポイントをグリフ ID にマッピングします。単一のコードポイントには unicode_to_gid() を、フォントの全カバレッジを列挙するには get_all_codepoints() を使用します。GlyphAccessor は、ID で get_glyph_by_id()、Unicode で get_glyph_by_unicode()、テキスト文字列で get_glyphs_for_text() によってグリフオブジェクトを取得します。
from aspose_font.loader import FontLoader
font = FontLoader.open("OpenSans-Regular.otf")
# Map Unicode code point to glyph ID
glyph_id = font.encoding.unicode_to_gid(0x41) # 'A'
print(f"Glyph ID for 'A': {glyph_id}")
# Retrieve glyph object
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
# Inspect path commands
for cmd in glyph.path.commands:
print(type(cmd).__name__, cmd)
FontConverter を使用したフォント変換
FontConverter.convert() はロードされたフォントをサポートされている形式間で変換します。ソースフォントとターゲット形式の識別子を渡すと、ターゲット形式の新しいフォントオブジェクトが取得できます。このメソッドは CFF、TTF、WOFF、WOFF2、EOT、Type 1 をソースおよびターゲットの両方として扱います。
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
source = FontLoader.open("MyFont.ttf")
converted = FontConverter.convert(source, target_format="woff2")
FontCleaner を使用したウェブ最適化
FontCleaner.clean_for_web() はウェブフォント配信に不要なバイナリテーブル(具体的には DSIG、FFTM、meta)を削除し、name テーブルから Mac プラットフォーム(platform_id=1)の名前レコードを除去します。その結果、アウトラインやメトリクスに手を加えずにネットワークペイロードを削減する、より軽量なバイナリが得られます。オプションのキーワード引数を使用すれば、必要に応じて特定のテーブルタイプを保持することが可能です。
from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
font = FontLoader.open("Roboto-Regular.ttf")
# Strip all legacy tables and Mac name records (default)
cleaned = FontCleaner.clean_for_web(font)
# Preserve specific metadata tables if required
cleaned_selective = FontCleaner.clean_for_web(
font,
drop_metadata_tables=False,
drop_legacy_tables=True,
drop_mac_names=True,
)
グリフパスの検査
すべてのGlyphオブジェクトは、その輪郭をGlyphPathとして公開し、commandsシーケンスにはMoveTo、LineTo、QuadraticTo、CurveTo、およびClosePathの型付きインスタンスが含まれます。各コマンドは関連する座標属性を保持します — 例えば、CurveToはx1、y1、x2、y2、x、yを持ち、レンダリング、SVG生成、または衝突ジオメトリのために生のベジエデータを抽出できます。
from aspose_font.loader import FontLoader
from aspose_font import CurveTo, LineTo
font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(ord("A"))
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
curves = [cmd for cmd in glyph.path.commands if isinstance(cmd, CurveTo)]
print(f"Cubic Bezier segments in 'A': {len(curves)}")
クイックスタート
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
# Load, inspect, and clean a font in five lines
font = FontLoader.open("MyFont.ttf")
print(font.font_family, font.num_glyphs, "glyphs")
cleaned = FontCleaner.clean_for_web(font)
print("Font cleaned for web delivery")
サポートされているフォーマット
| フォーマット | 拡張子 | 読み取り | 書き込み |
|---|---|---|---|
| TTF | .ttf | ✓ | ✓ |
| OTF | .otf | ✓ | ✓ |
| CFF | .cff | ✓ | ✓ |
| TYPE1 | .pfb / .pfa | ✓ | ✓ |
| WOFF | .woff | ✓ | ✓ |
| WOFF2 | .woff2 | ✓ | ✓ |
| EOT | .eot | ✓ | ✓ |
オープンソースとライセンス
Aspose.Font FOSS for Python は MIT ライセンスです。ソースは GitHub の aspose-font-foss/Aspose.Font-FOSS-for-Python にあり、パッケージは PyPI に aspose-font としてあります。