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 PostScript
  • full_name (str) denumire completă, lizibilă de om
  • family_name (str) familie de fonturi
  • weight (str) șir de greutate (de exemplu:. "Medium")
  • italic_angle (float) unghiul cursiv în grade
  • is_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 font
  • underline_thickness (int) grosimea tracului de sublinie
  • encoding (list[str]) vector de codificare cu sloturi 256 (nume ale glifurilor PostScript)
  • charstrings (dict[str, bytes]) nume de glif → cartografiere bați charstring
  • subrs (list[bytes]) subroutine de șiruri byte utilizate de motorul charstring
  • len_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

FormatulExtindereCiteş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.


Cum să începem?

Resurse conexe