Pendahuluan
Font TrueType (.ttf) dan superset OpenType mereka (.otf) merupakan format font yang dominan pada sistem operasi modern. Kedua format berbagi struktur tabel biner yang sama yang berakar pada spesifikasi OpenType. Aspose.Font FOSS untuk Python menampilkan struktur ini melalui TtfFont, memberikan akses langsung ke tabel OpenType individual, data pasangan kern, sumbu font variabel, dan outline glif.
Kelas TtfFont memperluas kelas dasar Font dengan metode khusus TTF termasuk get_blob, get_table_bytes, set_table_bytes, dan instantiate untuk penguncian sumbu font variabel. Properti TtfTableSet (ttf_tables) memberikan akses bertipe ke tabel OpenType yang paling umum: head, hhea, maxp, os2, name, post.
Pustaka ini dipublikasikan di PyPI sebagai aspose-font dan dilisensikan di bawah MIT License. Tidak ada ketergantungan komersial yang wajib.
Fitur Utama
Memuat Font TTF dan OTF
Gunakan FontLoader.open untuk memuat file font TrueType atau OpenType apa pun:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
print(loaded.font_name)
print(loaded.font_family)
print(loaded.font_style)
print(loaded.num_glyphs)
FontLoader.open mendeteksi format font dari header file. Baik .ttf (TrueType) maupun .otf (OpenType CFF) didukung dan keduanya mengembalikan instance TtfFont.
Mengakses Tabel OpenType melalui TtfTableSet
Properti ttf_tables mengembalikan TtfTableSet dengan accessor bertipe untuk tabel OpenType umum. Setiap properti mengembalikan objek tabel atau None jika tidak ada:
Properti ttf_tables pada TtfFont mengembalikan instance TtfTableSet. Akses tabel yang tersedia:
head—HeadTable | Nonehhea—HheaTable | Nonemaxp—MaxpTable | Noneos2—Os2Table | Nonename—NameTable | Nonepost—PostTable | None
Setiap properti mengembalikan objek tabel atau None jika tabel tersebut tidak ada dalam file font. Akses properti TtfTableSet untuk memeriksa tabel tertentu sebelum membacanya. Untuk tabel yang tidak dicakup oleh accessor bernama, gunakan TtfTableSet.get_raw(tag) untuk mengambil byte mentah dengan tag OpenType berkarakter empat.
Membaca Byte Tabel Mentah
get_table_bytes(tag) mengembalikan byte mentah untuk setiap tabel OpenType. Gunakan get_blob(tag) untuk varian aman-None yang mengembalikan None ketika tabel tidak ada:
TtfFont menyediakan dua metode untuk akses tabel mentah:
get_table_bytes(tag) -> bytes— mengembalikan byte mentah untuk tabel yang dinamai (menimbulkan kesalahan jika tidak ada)get_blob(tag) -> bytes | None— mengembalikanNonejika tabel tidak ada (varian aman)
Kedua metode menerima tag tabel OpenType empat karakter seperti "cmap", "GDEF", atau "GPOS". Gunakan get_blob ketika tabel bersifat opsional sehingga Anda dapat memeriksa None sebelum memproses.
Pasangan Kern
get_kern_pairs() mengembalikan semua pasangan kern yang dikodekan dalam font. Setiap KernPair memiliki left (GlyphId), right (GlyphId), dan value (int dalam satuan font):
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
pairs = loaded.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")
for pair in pairs[:5]:
print(f" Left: {pair.left} Right: {pair.right} Value: {pair.value}")
Metrik Font
Metrik standar dapat diakses melalui properti metrics:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
metrics = loaded.metrics
print(f"Units per em : {metrics.units_per_em}")
print(f"Ascender : {metrics.ascender}")
print(f"Descender : {metrics.descender}")
print(f"Line gap : {metrics.line_gap}")
print(f"Underline pos : {metrics.underline_position}")
Dukungan Font Variabel
Untuk font variabel, TtfFont mengekspos is_variable, variable_axes, dan named_instances. Gunakan get_axis(tag) untuk mengambil sumbu tertentu berdasarkan tag empat hurufnya:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/RobotoFlex.ttf")
print(f"Is variable: {loaded.is_variable}")
print(f"Axes : {len(loaded.variable_axes)}")
Metode get_axis(tag) pada TtfFont mengambil VariableAxis berdasarkan tag empat hurufnya (misalnya "wght" untuk berat, "wdth" untuk lebar). Metode ini mengembalikan None jika sumbu tidak ada dalam tabel fvar font.
Mengonversi Font
to_bytes(font_type) mengonversi font ke format yang berbeda. Gunakan enum FontType untuk menentukan target:
from aspose_font import FontLoader, FontType
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
ttf_bytes = loaded.to_bytes(FontType.TTF)
with open("output/Roboto-copy.ttf", "wb") as fh:
fh.write(ttf_bytes)
print(f"Serialized: {len(ttf_bytes)} bytes")
Panduan Cepat
Instal pustaka:
.venv/bin/pip install aspose-font
Muat font TTF dan periksa:
from aspose_font import FontLoader, FontType
loaded = FontLoader.open("Roboto-Regular.ttf")
print(f"Font name : {loaded.font_name}")
print(f"Family : {loaded.font_family}")
print(f"Glyphs : {loaded.num_glyphs}")
print(f"Variable : {loaded.is_variable}")
metrics = loaded.metrics
print(f"UPM : {metrics.units_per_em}")
ttf_bytes = loaded.to_bytes(FontType.TTF)
print(f"Serialized: {len(ttf_bytes)} bytes")
Format yang Didukung
| Format | Ekstensi | Baca | Tulis |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .otf | ✓ | — |
| EOT | .eot | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .woff | ✓ | — |
| WOFF2 | .woff2 | ✓ | — |
Semua format dimuat melalui FontLoader.open. Font TTF/OTF mengembalikan instance TtfFont.
Sumber Terbuka & Lisensi
Aspose.Font FOSS untuk Python dirilis di bawah Lisensi MIT. Anda dapat menggunakannya dalam proyek pribadi, komersial, dan sumber terbuka tanpa biaya. Kode sumber tersedia di GitHub dan paket didistribusikan melalui PyPI sebagai aspose-font.