Cara Bekerja dengan Tabel Font di Python
Panduan ini menunjukkan cara membaca tabel TTF yang diberi nama, mengambil byte tabel biner mentah, dan menulis data tabel yang dimodifikasi menggunakan TtfFont dalam Aspose.Font FOSS untuk Python. Font TrueType menyimpan semua data di tabel biner yang diidentifikasi dengan tag 4-karakter. Aspose.Font Eksposisi FosS TtfTableSet untuk akses tabel dengan nama dan TtfFont.get_table_bytes() / TtfFont.set_table_bytes() untuk akses biner mentah.
Panduan Langkah-Langkah
Langkah 1: Instalasi paket
Instal paket Aspose.Font FOSS dari PyPI menggunakan perintah pip di bawah ini:
pip install "aspose-font>=1.0.0"Langkah 2: Import Kelas yang Diperlukan
Import FontLoader dan (b) TtfFont untuk memuat file font dan mengakses set tabelnya:
from aspose_font.loader import FontLoader
from aspose_font.ttf.font import TtfFontLangkah 3: Akses Tabel Bernama
Mengunggah file TTF dengan FontLoader.open() dan akses tabel bernama melalui ttf_tables properti:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
tables = ttf_font.ttf_tables
print("kern present:", tables.kern is not None)
print("cmap present:", tables.cmap is not None)Langkah 4: Baca Bytes Tabel mentah
Membaca data biner mentah untuk tabel tertentu dengan melewati tag 4 karakter ke get_table_bytes():
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
raw = ttf_font.get_table_bytes("name")
print(f"name table: {len(raw)} bytes")Langkah 5: Tulis Bytes Tabel yang Dimodifikasi
Tulis kembali data biner yang dimodifikasi ke tabel dengan nama menggunakan set_table_bytes() dengan tag dan byte payload:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..." # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)Masalah dan Fixes Umum
AttributeError: Font has no attribute ttf_tables — ttf_tables sudah ada. TtfFont, bukan dasar Font kelas. menggunakan ttf_font: TtfFont = FontLoader.open(...) untuk mendapatkan referensi diketik.
get_table_bytes mengembalikan byte kosong Tag harus tepat 4 karakter (pad dengan spasi jika diperlukan, misalnya. "kern" tidak ada "KRN").
Pertanyaan yang sering ditanya
Tabel yang diberi nama apa saja yang terpapar di TtfTableSet?
kepala, hhea, maxp, os2, nama, pos, cmap, loca, hmtx, dan kern.
Bisakah saya menambahkan tabel baru ke font?
Ya.Serahkan tag 4 byte dan data byt yang valid ke TtfFont.set_table_bytes(tag, data).