Bekerja dengan CFF Fonts

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 21

Indeks 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 dengan from_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; GlyphAccessor mencakup sebagian besar kasus penggunaan pada tingkat yang lebih tinggi.

Ringkasan Referensi API

Kelas / MetodeDescription
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

See Also

 Bahasa Indonesia