Introduction
A Type 1 az Adobe eredeti, mérhető betűtípus formátuma. Ez megelőzte a TrueType és OpenTyme-t. Az 1. típusú betűtípus két fájlt tartalmaz: a) az alábbiak szerint: .pfb (Printer Font Binary) fájl, amely tartalmazza a kódolt betűtípus program, és egy .afm (Adobe Font Metrics) fájl kerning és Az OpenType-t megelőzően az 1. típusú betűtípusok továbbra is elterjedtek a legtöbb országban. a munkafolyamatok, a PostScript csővezetékek és az archív dokumentumok közzététele.
Aspose.Font FOSS for Python provides direct access to Type 1 internals through Type1Font, Type1FontData, Type1Serializer,és a következők: Type1Interpreter.- Fel tudod tölteni. PFB vagy PFA fájlok a: FontLoader.open, ellenőrizze a beágyazott betűtípus-program metaadatait, interpretálja a charstrings-okat glyph útvonalakra, és sorozatosítsa vissza az PFB vagy PFA formátumú betűtípusokat.
A könyvtár a PyPI-n úgy kerül közzétételre, hogy: aspose-font és az MIT Licenc alatt. Nincs kötelező kereskedelmi függőség és standard Python 3-on fut.
Fő jellemzői
1. típusú betűtípusok töltése
Használat FontLoader.open A visszaküldött objektum feltárja mind a PFB, mind pedig a PFA fájlt. normális Font A rendszerhez kapcsolódó, az 1. típusú interfész és a típus-specifikus funkciók Type1Font osztály:
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 automatikusan felfedi az 1. típusú formátumot a fájlfejletből. PFB és PFA fájlok mindkét támogatott.
Az AFM mérési adatainak betöltése
A 1. típusú betűtípusok külön adják ki az értékeket. .afm Az aktát. Type1Font osztály a load_afm(path) olyan módszer, amely a betöltött betűtípus-objektumhoz csatolja az AFM adatokat;, a kernel párok keresése lehetővé téve az alábbi módon: get_kern_pairs().
Az AFM fájl nélkül, get_kern_pairs() üres listát ad vissza, mert a kern adatok élnek. A PFB programban nem. load_afm A módszer elfogad egy fájlt. útvonal, amely a társ felé mutat. .afm - Az aktát.
A Type1FontData metaadatokhoz való hozzáférés
A Bizottság Type1FontData A klasszis a 1. típusú betöltött program szócsövét mutatja be. Ez tartalmazza a mérőszámokat, határoló dobozokat és kódolási vektorokat.:
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 tulajdonságok:
font_name(str) A betűtípus PostScript-névfull_name(str) teljes, ember által olvasható név.family_name(str) betűtípusok családjaweight(str) súlyszál (pl."Medium")italic_angle(float) kurzívszög fokbanis_fixed_pitch(bool) a monóterületes betűtípusok esetében igaz.font_bbox(tuple[int, int, int, int]) határoló rovat(llx, lly, urx, ury)underline_position(int) aláhúzás helyzete betűegységekbenunderline_thickness(int) aláhúzás vastagságaencoding(list[str]) 256-os slott kódoló vektor (PostScript-glyph nevek)charstrings(dict[str, bytes]) Glyph név → charstring bytes mappingsubrs(list[bytes]) a charstring motor által használt alprogram-byte szalagok.len_iv(int) lenIV titkosítási paraméter
A Charstrings tolmácsolása
Type1Interpreter dekódolja a 1. típusú charstring programokat az GlyphPath A körvonalak. a nyers charstring byte-okból Type1FontData.charstrings a … 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 az a-t adja vissza. (GlyphPath, int) A kettős. GlyphPath tartalmazza a rajzot. A teljes szám a végső halom mélységet jelenti az elvégzés után., ami hasznos a hibás szarszálak kijavításához.
PFB-re és PFA-ra történő sorozatosítás
Type1Serializer egy töltött 1. típusú betűtípust visszaállítja a bináris PFB vagy szöveges PFA formátumba. Mindkét módszer elfogad bármilyen Font példány és visszatérő nyers bájtok:
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")
Betűtípusok
A mérési és kódolási adatok a szabványon keresztül érhetők el. Font interfész:
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}")
Gyors kezdés
A könyvtár telepítése:
.venv/bin/pip install aspose-font
Töltse be a PFB betűtípust és ellenőrizze:
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")
Támogatott formátumok
| Format | Extension | Read | Write |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .otf | ✓ | — |
| EOT | .eot | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .- Mi az? | ✓ | — |
| WOFF2 | .woff2 | ✓ | — |
Az 1. típusú betűtípusokat a következő formában töltik be: FontLoader.open és sorozatban a Type1Serializer.
Nyitott forráskódú és licenckészítés
Aspose.Font FOSS for Python is released under the MIT License. You can use it in A forráskód a következő: A csomag a PyPI-n keresztül, GitHubon elérhető. aspose-font.