Introduction
Tipe 1 adalah format font Adobe yang dapat diskalakan, sebelumnya TrueType dan OpenTybe. Jenis font 1 terdiri dari dua file: a .pfb (Printer Font Binary) file yang berisi program font terenkripsi, dan sebuah .afm (Adobe Font Metrics) file dengan kerning dan Meskipun digantikan oleh OpenType, font Tipe 1 tetap lazim di menerbitkan alur kerja, pipa PostScript dan dokumen arsip.
Aspose.Font FOSS for Python provides direct access to Type 1 internals through Type1Font, Type1FontData, Type1Serializer, dan Type1Interpreter.Kau bisa memuatnya. File PFB atau PFA melalui: FontLoader.open, memeriksa metadata program font tertanam, menginterpretasikan charstring ke jalur glyph, dan merumuskan font kembali ke format PFB atau PFA.
Perpustakaan ini dipublikasikan di PyPI sebagai: aspose-font dan dilisensikan di bawah MIT License. Ini tidak memiliki ketergantungan komersial yang wajib dan berjalan pada Python 3 standar.
Fitur Utama
Mengisi Type 1 Font
Penggunaan FontLoader.open untuk memuat file PFB atau PFA. Objek yang dikembalikan mengekspos kedua standar Font interface dan fungsionalitas khusus Tipe 1 melalui Type1Font kelas:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Courier.pfb")
print(loaded.font_name) # e.g. "Courier"
print(loaded.font_family) # e.g. "Courier"
print(loaded.num_glyphs) # number of defined glyphs
print(loaded.font_style) # style string, e.g. "Regular"
FontLoader.open mendeteksi format Tipe 1 secara otomatis dari header file. PFB dan file PFA keduanya didukung.
Metrik AFM Loading
Font tipe 1 mengirimkan metrik mereka dalam bentuk terpisah. .afm File itu. Type1Font kelas mengekspor a load_afm(path) metode yang melampirkan data AFM ke objek font yang dimuat, memungkinkan pencarian pasangan kern via: get_kern_pairs().
Tanpa file AFM, get_kern_pairs() mengembalikan daftar kosong karena data kern hidup di file AFM, bukan dalam program PFB itu sendiri. load_afm metode menerima file jalur string menunjuk ke teman .afm File. - Apa?.
Mengakses Metadata Type1FontData
Pengelolaan Type1FontData kelas mengekspos kamus program font yang tertanam di Tipe 1 Ini termasuk metrik, kotak batas, vektor pengkodean, charstring, dan subroutine:
from aspose_font.type1.data import Type1FontData
# Type1FontData is the font program dictionary parsed from the PFB
# Access its properties to inspect the raw PostScript font data
Type1FontData sifat:
font_name(str) Nama PostScript dari fontfull_name(str) nama lengkap yang dapat dibaca manusiafamily_name(str) font familyweight(str) string berat (misalnya:."Medium")italic_angle(float) sudut kursif dalam derajatis_fixed_pitch(bool) berlaku untuk font monospacefont_bbox(tuple[int, int, int, int]) kotak pengukur(llx, lly, urx, ury)underline_position(int) posisi garis bawah dalam satuan fontunderline_thickness(int) ketebalan garis bawahencoding(list[str]) Vektor pengkodean slot 256 (nama-nama glif PostScript)charstrings(dict[str, bytes]) nama glyph → charstring bytes pemetaansubrs(list[bytes]) subroutine byte string yang digunakan oleh charstring enginelen_iv(int) parameter enkripsi lenIV
Menerjemahkan Charstrings
Type1Interpreter mendekod program charstring Tipe 1 ke dalam GlyphPath Lintas. byte charstring mentah dari Type1FontData.charstrings ke interpret:
from aspose_font.type1.interpreter import Type1Interpreter
interpreter = Type1Interpreter()
charstring = b"\x0e" # seac or other charstring bytes
glyph_path, stack_depth = interpreter.interpret(charstring)
for cmd in glyph_path.commands:
print(cmd)
interpret mengembalikan a (GlyphPath, int) Tuple. GlyphPath berisi gambarnya. Perintah untuk garis besar glyph. Integer adalah kedalaman tumpukan akhir setelah eksekusi, yang berguna untuk debugging charstrings malformed.
Serialisasi ke PFB dan PFA
Type1Serializer mengkonversi font Tipe 1 yang dimuat kembali ke format biner PFB atau teks PFA. Kedua metode ini menerima setiap Font contoh dan mengembalikan byte mentah:
from aspose_font import FontLoader
from aspose_font.type1.serializer import Type1Serializer
# Serialize to PFB (binary) format
pfb_bytes = Type1Serializer.serialize_pfb(loaded)
with open("output/Courier_copy.pfb", "wb") as fh:
fh.write(pfb_bytes)
# Serialize to PFA (text) format
pfa_bytes = Type1Serializer.serialize_pfa(loaded)
with open("output/Courier_copy.pfa", "wb") as fh:
fh.write(pfa_bytes)
print(f"PFB: {len(pfb_bytes)} bytes")
print(f"PFA: {len(pfa_bytes)} bytes")
Metrik Font
Metrik dan pengkodean dapat diakses melalui standar Font antarmuka:
from aspose_font import FontLoader
metrics = loaded.metrics
print(f"Units per em : {metrics.units_per_em}")
print(f"Ascender : {metrics.ascender}")
print(f"Descender : {metrics.descender}")
print(f"Underline pos : {metrics.underline_position}")
print(f"Underline tck : {metrics.underline_thickness}")
Memulai dengan cepat
Instal perpustakaan:
.venv/bin/pip install aspose-font
Mengisi font PFB dan memeriksanya:
from aspose_font import FontLoader
from aspose_font.type1.serializer import Type1Serializer
loaded = FontLoader.open("Courier.pfb")
print(f"Font name : {loaded.font_name}")
print(f"Family : {loaded.font_family}")
print(f"Style : {loaded.font_style}")
print(f"Glyphs : {loaded.num_glyphs}")
metrics = loaded.metrics
print(f"UPM : {metrics.units_per_em}")
# Round-trip: serialize back to PFB
pfb_bytes = Type1Serializer.serialize_pfb(loaded)
print(f"Serialized: {len(pfb_bytes)} bytes")
Format yang Didhukung
| Format | Extension | Read | Write |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .of | ✓ | — |
| EOT | .eot | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .- Aku tahu. | ✓ | — |
| WOFF2 | . woff2 | ✓ | — |
Font tipe 1 dimuat melalui: FontLoader.open dan diserialkan melalui: Type1Serializer.
Open Source & Lisensi
Aspose.Font FOSS for Python is released under the MIT License. You can use it in proyek pribadi, komersial dan open source tanpa biaya. Kode sumber adalah tersedia di GitHub dan paket didistribusikan melalui PyPI sebagai aspose-font.