Bekerja dengan CFF Fonts
Bekerja dengan CFF Fonts
Panduan ini menunjukkan cara memuat dan memeriksa internal font CFF charset, tabel pengkodean, kamus, dan struktur indeks ?? menggunakan Aspose.Font FOSS untuk Python .
Compact Font Format (CFF) font menyimpan garis besar glyph sebagai program charstring Tipe 2. Aspose.Font FOSS for Python provides dedicated classes in the aspose_font.cff ruang nama untuk membaca karakter CFF, tabel pengkodean, kamus dan indeks.
CFF Charset
CffCharset memetakan ID glyph ke nama-nama glif PostScript. Panggilan CffCharset.standard() untuk mendapatkan terintegrasi ISO Adobe charset, kemudian menggunakan name_for() dan (b) gid_for() untuk menerjemahkan antara ID glyph dan nama.
from aspose_font.cff.charset 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"Kode CFF
CffEncoding kode karakter ke ID glyph. Pengkodean standar mencakup set karakter Adobe Latin; menggunakan unicode_to_gid() untuk mencari titik kode individu dan get_all_codepoints() untuk daftar setiap nilai yang dipetakan.
from aspose_font.cff.encoding import CffEncoding
enc = CffEncoding.standard()
gid = enc.unicode_to_gid(0x41)
codepoints = enc.get_all_codepoints()Penguraian Kamus CFF
CffDict.from_bytes() menguraikan blob CFF DICT mentah ke dalam pemetaan yang ditandai dengan operator. Setiap operator memetakan kunci ke daftar nilai numerik yang mengkonfigurasi font, seperti lebar default atau offsets subroutine.
from aspose_font.cff.dict_ import CffDict
d = CffDict.from_bytes(raw_bytes)
vals = d.get(21) # retrieve values for operator 21Indeks CFF
CffIndex.from_reader() menguraikan struktur data CFF INDEX dari aliran biner. Struktur INDEX adalah susunan data dengan panjang variabel yang digunakan untuk tabel nama, tabel string, dan penyimpanan charstring dalam font CFC.
from aspose_font.cff.index 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)}")Interpretasi Charstring Tipe 2
Type2Interpreter.interpret() mengeksekusi charstring Tipe 2 dan mengembalikan a GlyphPath.
from aspose_font.cff.type2 import Type2Interpreter
interpreter = Type2Interpreter()
glyph_path = interpreter.interpret(charstring_bytes, private_dict)Tips dan Praktik Terbaik
- Penggunaan
CffEncoding.standard()sebagai garis dasar; mengganti denganfrom_reader()untuk pengkodean tertanam CffDict.to_bytes()memungkinkan Anda untuk merumuskan kembali kamus yang dimodifikasi- Interpretasi Charstring hanya diperlukan untuk ekstraksi garis besar glyph mentah;
GlyphAccessormencakup sebagian besar kasus penggunaan pada tingkat yang lebih tinggi.
Ringkasan Referensi API
| Kelas / Metode | Description |
|---|---|
CffCharset.standard() | Standar ISO Adobe charset |
CffCharset.name_for(gid) | Nama PostScript untuk ID glyph |
CffCharset.gid_for(name) | Glyph ID untuk nama PostScript |
CffEncoding.standard() | Tabel pengkodean standar CFF |
CffEncoding.unicode_to_gid(cp) | Kode peta titik ke GID |
CffDict.from_bytes(data) | Menganalisis CFF DICT mentah |
CffDict.get(operator) | Dapatkan nilai untuk operator DICT |
CffIndex.from_reader(reader) | Menganalisis CFF INDEX |
Type2Interpreter.interpret(cs, pd) | Eksekusi charstring Tipe 2 |