コア フォント管理

コア フォント管理

コアフォント管理

このガイドでは、ファイルパスまたはバイト配列からフォントをロードする方法、メタデータプロパティの読み取り、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不正なバイナリデータ読み込む前に、フォントファイルをリンターで検証する
GlyphNotFoundExceptionGID が範囲外です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)軸とインスタンスのクエリをラップする高レベルヘルパー

参照

 日本語