コア フォント管理
コアフォント管理
このガイドでは、ファイルパスまたはバイト配列からフォントをロードする方法、メタデータプロパティの読み取り、Unicode コードポイントをグリフ ID にマッピングする方法、グリフの取得、可変フォントの軸や名前付きインスタンスの操作方法を示します。
FontLoader はすべてのフォント読み込み操作の主要なエントリーポイントです。フォントがロードされると、Font 基底クラスがメタデータ、エンコーディング、グリフアクセス、メトリクスへのアクセスを提供し、バイナリテーブルのパースを必要としません。
フォントの読み込み
FontLoader.open(source, font_type, collection_index) は自動フォーマット検出によりファイルパスからフォントをロードします。FontLoader.load(source, font_type, collection_index) はインメモリまたはネットワークワークフロー用に生バイトを受け取ります。
from aspose_font import FontLoader
# From a file path — format auto-detected
font = FontLoader.open("Roboto-Regular.ttf")
# From raw bytes — useful for in-memory or network workflows
with open("OpenSans-Regular.otf", "rb") as f:
font = FontLoader.load(f.read())フォントメタデータの読み取り
ロード後、Font オブジェクトは font_name、font_family、font_style、および num_glyphs プロパティを公開し、手動でテーブルをパースすることなく迅速に検査できます。
from aspose_font import FontLoader
font = FontLoader.open("MyFont.ttf")
print(font.font_name) # full PostScript name
print(font.font_family) # family name
print(font.font_style) # style name e.g. "Regular", "Bold"
print(font.num_glyphs) # total glyph countグリフエンコーディング
FontEncoding は Unicode のコードポイントをグリフ ID にマッピングします。単一のコードポイントを解決するには unicode_to_gid(cp) を使用し、フォント内のすべてのマッピングされたコードポイントを列挙するには get_all_codepoints() を使用します。
from aspose_font import FontLoader
font = FontLoader.open("OpenSans-Regular.otf")
# Map a single code point
gid = font.encoding.unicode_to_gid(0x41) # GID for 'A'
# Enumerate all mapped code points
all_cps = font.encoding.get_all_codepoints()
print(f"Font covers {len(all_cps)} Unicode code points")グリフアクセス
GlyphAccessor は ID、Unicode、またはテキスト文字列でグリフオブジェクトを取得します。
from aspose_font import FontLoader
font = FontLoader.open("OpenSans-Regular.otf")
glyph = font.glyph_accessor.get_glyph_by_id(gid)
glyph_a = font.glyph_accessor.get_glyph_by_unicode(0x41)
glyphs = font.glyph_accessor.get_glyphs_for_text("Hello")
all_ids = font.glyph_accessor.get_all_glyph_ids()可変フォント
可変フォント(fvar テーブルを含むもの)に対して、TtfFont は軸定義と名前付きインスタンスを直接公開します。
from aspose_font import FontLoader
from aspose_font import TtfFont
loaded = FontLoader.load("Roboto-VariableFont_wdth,wght.ttf")
ttf: TtfFont = loaded.font
# Check if the font is variable
if ttf.is_variable:
# List all variation axes
for axis in ttf.variable_axes:
print(f"{axis.tag} range: {axis.min_value}..{axis.max_value} default: {axis.default_value}")
# Look up a single axis by tag
wght = ttf.get_axis("wght")
if wght:
print(f"Weight axis: {wght.min_value}..{wght.max_value}")
# Enumerate named instances (e.g. Bold, Condensed)
for inst in ttf.named_instances:
print(f"Instance: name_id={inst.name_id} coordinates={inst.coordinates}")上位レベルのインスタンシングワークフローでは、SmartInstancer が軸の列挙と名前付きインスタンスの解決を単一のオブジェクトにラップします:
from aspose_font import FontLoader
from aspose_font import SmartInstancer
loaded = FontLoader.load("Roboto-VariableFont_wdth,wght.ttf")
instancer = SmartInstancer(loaded.font)
print(f"Axes: {[a.tag for a in instancer.axes]}")
print(f"Named instances: {len(instancer.named_instances)}")ヒントとベストプラクティス
- 同じフォントファイルを複数回処理する際に、ロードされた
Fontオブジェクトをキャッシュする - 一時ファイルを回避するために、ネットワークまたはデータベースのワークフローでは
FontLoader.load(bytes)を使用する - サブセット化の前に
num_glyphsを確認し、サブセット後のカバレッジを推定する get_all_glyph_ids()は全グリフセットを反復処理する際に便利です
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
UnsupportedFontFormatException | ファイル形式が認識されません | ファイルが有効なTTF/OTF/CFF/WOFF/WOFF2/EOT/Type1であることを確認してください |
FontParseException | 不正なバイナリデータ | 読み込む前に、フォントファイルをリンターで検証する |
GlyphNotFoundException | GID が範囲外です | num_glyphs を ID でアクセスする前に確認してください |
FAQ
FontLoader は WOFF2 をサポートしていますか?
はい。FontLoader.open() と FontLoader.load() はどちらも WOFF2 ファイルを受け入れ、形式を自動検出します。
URLからフォントをロードできますか?
直接はできません。urllib または requests でフォントバイトをダウンロードし、FontLoader.load(bytes) に渡してください。
ロードはスレッドセーフですか?
各 FontLoader.open() 呼び出しは独立した Font オブジェクトを返します。別々のオブジェクトに対する同時呼び出しは安全です。
API Reference の概要
| クラス / メソッド | 説明 |
|---|---|
FontLoader.open(path) | ファイルパスからフォントをロードする |
FontLoader.load(data) | 生バイトからフォントを読み込む |
Font.font_name | 完全な PostScript フォント名 |
Font.font_family | フォントファミリー名 |
Font.font_style | フォントスタイル名 |
Font.num_glyphs | 総グリフ数 |
FontEncoding.unicode_to_gid(cp) | Unicode コードポイントをグリフ ID にマッピング |
FontEncoding.get_all_codepoints() | グリフマッピングがあるすべての Unicode コードポイント |
GlyphAccessor.get_glyph_by_id(gid) | ID でグリフを取得 |
GlyphAccessor.get_glyph_by_unicode(cp) | Unicode コードポイントでグリフを取得する |
GlyphAccessor.get_glyphs_for_text(text) | テキスト文字列のグリフを取得する |
GlyphAccessor.get_all_glyph_ids() | フォント内のすべてのグリフ ID を一覧表示する |
TtfFont.is_variable | フォントに可変フォントデータが含まれているか |
TtfFont.variable_axes | 各バリエーション軸に対する VariableAxis オブジェクトのリスト |
TtfFont.get_axis(tag) | 4文字タグで単一の軸を検索する |
TtfFont.named_instances | フォントの fvar テーブルで定義された名前付きインスタンス |
SmartInstancer(font) | 軸とインスタンスのクエリをラップする高レベルヘルパー |