Introducere
Tipul 1 este formatul original de font scalabil al Adobe, care precede TrueType și OpenTybe. Fonturile de tip 1 constau în două fișiere: a) fonturi cu caracter personal, b) textul. .pfb (Font Binar de imprimantă) fişier care conţine program de font criptat, și un .afm (Adobe Font Metrics) fişier cu kerning şi În ciuda înlocuirii de către OpenType, tipurile de font 1 rămân predominante în sistemele de calcul și de calculare. publicarea fluxurilor de lucru, a pipelines-ului PostScript și a documentelor arhive.
Aspose.Font FOSS for Python provides direct access to Type 1 internals through Type1Font, Type1FontData, Type1Serializer, și Type1Interpreter.Poţi să încărcăm . Fișiere PFB sau PFA prin intermediul: FontLoader.open, inspectează metadatele programului de font încorporat, interpretează caracterele în căile de glif și serializează fonturile înapoi la formatul PFB sau PFA.
Biblioteca este publicată pe PyPI ca: aspose-font şi licenţiat sub MIT License. Nu are dependențe comerciale obligatorii și rulează pe Python standard 3.
Caracteristici cheie
Încărcare tip 1 fonturi
Utilizare: FontLoader.open Obiectul returnat expune atât datele de la PC, cât şi cele din reţea. standardă Font Interfața și funcționalitatea specifică tipului 1 prin intermediul Type1Font clasa:
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 detectează formatul de tip 1 automat din header-ul fișierului. PFB și fișierele PFA sunt susținute.
Metrice de încărcare AFM
Tipul 1 fonturi trimite lor metrice într-un separat .afm Dosarul. Type1Font clasa de expune o load_afm(path) metodă care atașează datele AFM la obiectul de font încărcat;, Permite căutarea perechilor de nuclee prin intermediul: get_kern_pairs().
Fără dosarul AFM, get_kern_pairs() returnă o listă goală deoarece datele kern sunt live. în fişierul AFM, nu în programul PFB. load_afm metoda acceptă un fișier o linie de drum care indică companionul. .afm Dosar.
Accesarea metadatelor de tip 1FontData
În ceea ce priveşte Type1FontData clasa expune dicționarul programului de font încorporat în Tip 1 Acesta include metrici, cutie de limitare, vectorul de codificare, charstrings și 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 proprietăți:
font_name(str) Numele tipului de scris PostScriptfull_name(str) denumire completă, lizibilă de omfamily_name(str) familie de fonturiweight(str) șir de greutate (de exemplu:."Medium")italic_angle(float) unghiul cursiv în gradeis_fixed_pitch(bool) valabil pentru fonturile monospațiale.font_bbox(tuple[int, int, int, int]) caseta de descifrare(llx, lly, urx, ury)underline_position(int) poziția subliniază în unități de fontunderline_thickness(int) grosimea tracului de sublinieencoding(list[str]) vector de codificare cu sloturi 256 (nume ale glifurilor PostScript)charstrings(dict[str, bytes]) nume de glif → cartografiere bați charstringsubrs(list[bytes]) subroutine de șiruri byte utilizate de motorul charstringlen_iv(int) parametru de criptare lenIV
Interpretarea Charstrings-ului
Type1Interpreter decodează programe de tip 1 charstring în GlyphPath - Descriere. bați de charstring brut din Type1FontData.charstrings la … în 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 returnează un (GlyphPath, int) - Nu, nu. GlyphPath conține desenul Numărul întreg este adâncimea finală a șirului după execuție, care este util pentru depistați charstrings malformate.
Serializare la PFB și PFA
Type1Serializer convertează un tip de font încărcat de tipul 1 înapoi în format binar PFB sau text PFA. Ambele metode acceptă orice tip de informaţie. Font Instanță și returnarea de byte brute:
from aspose_font import FontLoader
from aspose_font.type1.serializer import Type1Serializer
loaded = FontLoader.open("fonts/Courier.pfb")
# 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")
Metrice de fonturi
Metricile și codificarea sunt accesibile prin standardul Font Interfață:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Courier.pfb")
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}")
Început rapid
Instalați biblioteca:
.venv/bin/pip install aspose-font
Încărcați un font PFB și inspectați-l:
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")
Formatele suportate
| Formatul | Extindere | Citeşte. | Scrie . |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .de la | ✓ | — |
| EOT | .Nu. | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .- Ce ? | ✓ | — |
| WOFF2 | .woff2 (în limba engleză) | ✓ | — |
Fonturile de tip 1 sunt încărcate prin intermediul: FontLoader.open şi serializat prin intermediul: Type1Serializer.
Open Source & Licențiere
Aspose.Font FOSS for Python is released under the MIT License. You can use it in Proiectele personale, comerciale și open-source fără costuri. Codul sursă este disponibil pe GitHub și pachetul este distribuit prin PyPI ca aspose-font.