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 font
  • full_name (str) nama lengkap yang dapat dibaca manusia
  • family_name (str) font family
  • weight (str) string berat (misalnya:. "Medium")
  • italic_angle (float) sudut kursif dalam derajat
  • is_fixed_pitch (bool) berlaku untuk font monospace
  • font_bbox (tuple[int, int, int, int]) kotak pengukur (llx, lly, urx, ury)
  • underline_position (int) posisi garis bawah dalam satuan font
  • underline_thickness (int) ketebalan garis bawah
  • encoding (list[str]) Vektor pengkodean slot 256 (nama-nama glif PostScript)
  • charstrings (dict[str, bytes]) nama glyph → charstring bytes pemetaan
  • subrs (list[bytes]) subroutine byte string yang digunakan oleh charstring engine
  • len_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

FormatExtensionReadWrite
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.


Memulai

Sumber Daya terkait