CFF フォントの操作

CFF フォントの操作

CFFフォントの操作

このガイドでは、Aspose.Font FOSS for Python を使用して、CFF フォントの内部(文字セット、エンコーディングテーブル、辞書、インデックス構造)を読み込み、検査する方法を示します。

Compact Font Format(CFF)フォントは、グリフのアウトラインを Type 2 charstring プログラムとして格納します。Aspose.Font FOSS for Python は、aspose_font.cff 名前空間に CFF の文字セット、エンコーディングテーブル、辞書、インデックスを読み取るための専用クラスを提供します。


CFF文字セット

CffCharset はグリフ ID を PostScript グリフ名にマッピングします。組み込みの ISO Adobe 文字セットを取得するには CffCharset.standard() を呼び出し、グリフ ID と名前の相互変換には name_for() と gid_for() を使用します。

from aspose_font.cff import CffCharset

charset = CffCharset.standard()
name = charset.name_for(1)   # PostScript name for GID 1
gid  = charset.gid_for("A")  # GID for PostScript name "A"

CFFエンコーディング

CffEncoding は文字コードをグリフ ID にマッピングします。標準エンコーディングは Adobe Latin 文字セットをカバーしています。個々のコードポイントを検索するには unicode_to_gid() を、すべてのマッピング値を一覧表示するには get_all_codepoints() を使用してください。

from aspose_font.cff import CffEncoding

enc = CffEncoding.standard()
gid = enc.unicode_to_gid(0x41)
codepoints = enc.get_all_codepoints()

CFF辞書解析

CffDict.from_bytes()は、生のCFF DICTブロブを演算子キーによるマッピングに解析します。各演算子キーは、デフォルト幅やサブルーチンオフセットなど、フォントを構成する数値のリストに対応します。

from aspose_font.cff import CffDict

d = CffDict.from_bytes(raw_bytes)
vals = d.get(21)   # retrieve values for operator 21

CFFインデックス

CffIndex.from_reader()は、バイナリストリームからCFF INDEXデータ構造を解析します。INDEX構造は、可変長データの配列で、CFFフォント内の名前テーブル、文字列テーブル、charstringの格納に使用されます。

from aspose_font.cff import CffIndex
from aspose_font._io import BinaryReader  # internal API — may change between releases
import io

reader = BinaryReader(io.BytesIO(raw_index_bytes))
index = CffIndex.from_reader(reader)
print(f"INDEX entries: {len(index)}")

Type 2 Charstring 解釈

Type2Interpreter.interpret()は、Type 2 charstringを実行し、GlyphPathを返します。

from aspose_font.cff import Type2Interpreter

interpreter = Type2Interpreter()
glyph_path = interpreter.interpret(charstring_bytes, private_dict)

ヒントとベストプラクティス

  • ベースラインとしてCffEncoding.standard()を使用し、埋め込みエンコーディングにはfrom_reader()で上書きします。
  • CffDict.to_bytes() は、変更された辞書を再シリアライズすることを可能にします
  • Charstring の解釈は、生のグリフアウトライン抽出が必要な場合にのみ必要です; GlyphAccessor は、より上位のレベルでほとんどのユースケースをカバーします

API Reference 概要

クラス / メソッド説明
CffCharset.standard()標準 ISO Adobe 文字セット
CffCharset.name_for(gid)glyph ID 用の PostScript 名
CffCharset.gid_for(name)PostScript 名に対応する glyph ID
CffEncoding.standard()標準 CFF エンコーディングテーブル
CffEncoding.unicode_to_gid(cp)コードポイントを GID にマッピング
CffDict.from_bytes(data)生の CFF DICT を解析する
CffDict.get(operator)DICT 演算子の値を取得する
CffIndex.from_reader(reader)CFF INDEX を解析する
Type2Interpreter.interpret(cs, pd)Type 2 charstring を実行する

参照

 日本語