Úvod
TrueType fonty (.ttf) a jejich OpenType superset (.otf) jsou dominantní formáty fontů na moderních operačních systémech. Oba formáty sdílejí stejnou binární strukturu tabulek vycházející ze specifikace OpenType. Aspose.Font FOSS pro Python tuto strukturu zpřístupňuje prostřednictvím TtfFont, což poskytuje přímý přístup k jednotlivým OpenType tabulkám, datům o kerningových párech, osám proměnných fontů a obrysům glifů.
Třída TtfFont rozšiřuje základní třídu Font o TTF-specifické metody včetně get_blob, get_table_bytes, set_table_bytes a instantiate pro zamykání os proměnných fontů. Vlastnost TtfTableSet (ttf_tables) poskytuje typovaný přístup k nejčastějším tabulkám OpenType: head, hhea, maxp, os2, name, post.
Knihovna je publikována na PyPI jako aspose-font a je licencována pod licencí MIT. Nemá žádné povinné komerční závislosti.
Klíčové vlastnosti
Načítání fontů TTF a OTF
Použijte FontLoader.open k načtení libovolného souboru fontu TrueType nebo OpenType:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
print(loaded.font_name)
print(loaded.font_family)
print(loaded.font_style)
print(loaded.num_glyphs)
FontLoader.open detekuje formát písma z hlavičky souboru. Oba .ttf (TrueType) i .otf (OpenType CFF) soubory jsou podporovány a oba vracejí instanci TtfFont.
Přístup k tabulkám OpenType přes TtfTableSet
Vlastnost ttf_tables vrací TtfTableSet s typovanými přístupy pro běžné tabulky OpenType. Každá vlastnost vrací objekt tabulky nebo None, pokud není přítomen:
Vlastnost ttf_tables na TtfFont vrací instanci TtfTableSet. Dostupné přístupy k tabulkám:
head—HeadTable | Nonehhea—HheaTable | Nonemaxp—MaxpTable | Noneos2—Os2Table | Nonename—NameTable | Nonepost—PostTable | None
Každá vlastnost vrací objekt tabulky nebo None, pokud tato tabulka není v souboru fontu přítomna. Přistupujte k vlastnostem TtfTableSet, abyste před jejich čtením zkontrolovali konkrétní tabulky. Pro tabulky, které nejsou pokryty pojmenovanými přístupovými metodami, použijte TtfTableSet.get_raw(tag) k získání raw bytes pomocí čtyřznakového tagu OpenType.
Čtení raw bajtů tabulky
get_table_bytes(tag) vrací raw bajty pro libovolnou tabulku OpenType. Použijte get_blob(tag) pro variantu bezpečnou vůči None, která vrací None, když tabulka chybí:
TtfFont poskytuje dvě metody pro raw přístup k tabulkám:
get_table_bytes(tag) -> bytes— vrací raw bajty pro pojmenovanou tabulku (vyvolá výjimku, pokud chybí)get_blob(tag) -> bytes | None— vracíNone, pokud tabulka chybí (bezpečná varianta)
Obě metody přijímají čtyřznakový OpenType tag tabulky, například "cmap", "GDEF" nebo "GPOS". Použijte get_blob, když je tabulka volitelná, abyste mohli před zpracováním zkontrolovat None.
Páry kerningu
get_kern_pairs() vrací všechny páry kerningu zakódované ve fontu. Každý KernPair má left (GlyphId), right (GlyphId) a value (int ve fontových jednotkách):
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
pairs = loaded.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")
for pair in pairs[:5]:
print(f" Left: {pair.left} Right: {pair.right} Value: {pair.value}")
Metriky fontu
Standardní metriky jsou přístupné přes vlastnost metrics:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
metrics = loaded.metrics
print(f"Units per em : {metrics.units_per_em}")
print(f"Ascender : {metrics.ascender}")
print(f"Descender : {metrics.descender}")
print(f"Line gap : {metrics.line_gap}")
print(f"Underline pos : {metrics.underline_position}")
Podpora proměnných fontů
U proměnných fontů TtfFont vystavuje is_variable, variable_axes a named_instances. Použijte get_axis(tag) pro získání konkrétní osy podle jejího čtyřpísmenného tagu:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/RobotoFlex.ttf")
print(f"Is variable: {loaded.is_variable}")
print(f"Axes : {len(loaded.variable_axes)}")
Metoda get_axis(tag) na TtfFont získá VariableAxis podle jeho čtyřpísmenného tagu (např. "wght" pro váhu, "wdth" pro šířku). Vrátí None, pokud osa není přítomna v tabulce fvar fontu.
Převod fontů
to_bytes(font_type) převádí font do jiného formátu. Použijte výčtový typ FontType pro určení cíle:
from aspose_font import FontLoader, FontType
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
ttf_bytes = loaded.to_bytes(FontType.TTF)
with open("output/Roboto-copy.ttf", "wb") as fh:
fh.write(ttf_bytes)
print(f"Serialized: {len(ttf_bytes)} bytes")
Rychlý start
Nainstalujte knihovnu:
.venv/bin/pip install aspose-font
Načtěte TTF font a prohlédněte jej:
from aspose_font import FontLoader, FontType
loaded = FontLoader.open("Roboto-Regular.ttf")
print(f"Font name : {loaded.font_name}")
print(f"Family : {loaded.font_family}")
print(f"Glyphs : {loaded.num_glyphs}")
print(f"Variable : {loaded.is_variable}")
metrics = loaded.metrics
print(f"UPM : {metrics.units_per_em}")
ttf_bytes = loaded.to_bytes(FontType.TTF)
print(f"Serialized: {len(ttf_bytes)} bytes")
Podporované formáty
| Formát | Přípona | Číst | Zapsat |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .otf | ✓ | — |
| EOT | .eot | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .woff | ✓ | — |
| WOFF2 | .woff2 | ✓ | — |
Všechny formáty se načítají pomocí FontLoader.open. TTF/OTF fonty vracejí instanci TtfFont.
Open Source & licence
Aspose.Font FOSS pro Python je vydáno pod licencí MIT. Můžete jej použít v osobních, komerčních i open-source projektech zdarma. Zdrojový kód je k dispozici na GitHub a balíček je distribuován přes PyPI jako aspose-font.