Uvod u članak

Tip 1 je originalni Adobeov skalabilni font format, koji prethodi TrueType i OpenTypi. Tip 1 fontovi sastoje se od dvije datoteke: a) .pfb (Printer Font Binary) datoteka koja sadrži program za šifrirani font, i .afm (Adobe Font Metrics) datoteka s kerning i Iako je zamjenjena od strane OpenType-a, fontovi tipa 1 i dalje prevladavaju u različitim tipovima šifra. Izvješćivanje o radnim tokovima, PostScript pipelines i arhivirani dokumenti.

Aspose.Font FOSS for Python provides direct access to Type 1 internals through Type1Font, Type1FontData, Type1Serializer, i Type1Interpreter.Možeš da se napunis. PFA ili PFB datoteke putem: FontLoader.open, provjerava metapodatke ugrađenih font programa, interpretirati čarstringove na glyph putanje, i serijalizirati fontova natrag u PFB ili PFA format.

Biblioteka je objavljena na PyPI-u kao: aspose-font i licenciran pod MIT Licencom. Nema obavezne komercijalne ovisnosti i radi na standardnom Pythonu 3.


Glavne karakteristike

Upotrebljavanje tipova 1 fontova

Upotreba: FontLoader.open Vratiti objekt izloži i datoteke PFB ili PFA. standardni Font Interfejs i specifične funkcije tipa 1 putem Type1Font razred:

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 automatski otkriva format tipa 1 iz zaglavlja datoteke. PFB i PFA datoteke su podržane.


Puno je više od 100000 m2.

Tip 1 fontovi šalju svoje metrike u zasebnom .afm -Dopis. Type1Font razred izloži se: load_afm(path) metodom koja povezuje AFM podatke s učitavanim objektom fontova, omogućavajući pretraživanje parova jezgre putem: get_kern_pairs().

Bez AFM datoteke, get_kern_pairs() vraća prazan popis jer kern podaci žive U AFM datoteku, ne u PFB programu samom. load_afm metoda prihvaća datoteku Šipka koja ukazuje na pratnju. .afm -Dopisi.


Pristup metapodatkama tipa 1 fontdata

U skladu s člankom 1. Type1FontData klasa izloži font program rječnik ugrađen u Type 1 Sadrži metrike, granični okvir, vektor za kodiranje, čarstringove i podprograme:

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 svojstva:

  • font_name (str) PostScript ime font-a
  • full_name (str) potpuni ljudski čitljiv naziv
  • family_name (str) obitelj fontova
  • weight (strU ovom slučaju, to je najčešće slučaj. "Medium")
  • italic_angle (float) kurzivni kut u stupnjevima
  • is_fixed_pitch (bool) vrijedi za monoprostorne fontove.
  • font_bbox (tuple[int, int, int, int]) granični okvir (llx, lly, urx, ury)
  • underline_position (int) podcrtana pozicija u jedinicama fontova
  • underline_thickness (int) debljina podrazumevanja.
  • encoding (list[str]) 256-slot kodiranje vektora (PostScript imena glifa)
  • charstrings (dict[str, bytes]) ime glifa → mapiranje bajtova za čarstring
  • subrs (list[bytes]) podprogrami bajtni nizovi koji koristi motor za čarstring
  • len_iv (int) lenIV parametar šifriranja

Interpretiranje Charstringa

Type1Interpreter Decodiše programe tipa 1 u: GlyphPath -Prostu. Prirodni Charstring bajtova iz Type1FontData.charstrings u iznosu od: 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 vraća a (GlyphPath, int) -Dvije. GlyphPath sadrži crtež Čitav broj je konačna dubina stacka nakon izvršenja, koji je koristan za debugging malformed charstrings.


Serialiranje na PFB i PFA

Type1Serializer U ovom slučaju, u skladu s člankom 16. stavkom 1. točka (a) ovog članka, ako je potrebno, mora se upotrijebiti metoda za prebacivanje datoteke. Oba metoda prihvaćaju bilo koji Font U slučaju primjene i vraćanja sirovih bajta:

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")

Metrika fontova

Metrike i kodiranje dostupne su putem standarda. Font Interfejs:

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}")

Brzi početak

Instaliraj knjižnicu:

.venv/bin/pip install aspose-font

Uplatiti PFB font i provjeriti ga:

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")

Podržani formati

Format:Proračunska sredstvaČitaj.Pišite.
TTF.ttf
OTF.od
EOT.-Ne. Ne, ne mogu.
CFF.cff
TYPE1.pfb/.pfa
WOFF.-Ne, ne mogu.
WOFF2.woff2

Tip 1 fontovi se učitavaju putem: FontLoader.open i serijski objavljen putem: Type1Serializer.


Otvoreni izvor i licenciranje

Aspose.Font FOSS for Python is released under the MIT License. You can use it in osobni, komercijalni i otvoreni izvorni projekti bez troškova. Izvorna koda je dostupna na GitHub-u i paket je distribuiran putem PyPI kao aspose-font.


Početak

Srodni resursi