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 21CFFインデックス
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 を実行する |