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-afull_name(str) potpuni ljudski čitljiv nazivfamily_name(str) obitelj fontovaweight(strU ovom slučaju, to je najčešće slučaj."Medium")italic_angle(float) kurzivni kut u stupnjevimais_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 fontovaunderline_thickness(int) debljina podrazumevanja.encoding(list[str]) 256-slot kodiranje vektora (PostScript imena glifa)charstrings(dict[str, bytes]) ime glifa → mapiranje bajtova za čarstringsubrs(list[bytes]) podprogrami bajtni nizovi koji koristi motor za čarstringlen_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.