Základní správa písem
Základní správa písem
Tento průvodce ukazuje, jak načíst písma z cest k souborům nebo pole bajtů, číst vlastnosti metadat, mapovat kódy Unicode na ID glifů, získávat glify a pracovat s osami proměnných fontů a pojmenovanými instancemi.
FontLoader je hlavním vstupním bodem pro všechny operace načítání písem. Jakmile je písmo načteno, základní třída Font poskytuje přístup k metadatům, kódování, přístupu ke glifům a metrikám bez nutnosti parsování binárních tabulek.
Načítání písem
FontLoader.open(source, font_type, collection_index) načítá písmo z cesty k souboru s automatickou detekcí formátu. FontLoader.load(source, font_type, collection_index) přijímá surové bajty pro pracovní postupy v paměti nebo přes síť.
from aspose_font import FontLoader
# From a file path — format auto-detected
font = FontLoader.open("Roboto-Regular.ttf")
# From raw bytes — useful for in-memory or network workflows
with open("OpenSans-Regular.otf", "rb") as f:
font = FontLoader.load(f.read())Čtení metadat písma
Po načtení objekt Font zpřístupňuje vlastnosti font_name, font_family, font_style a num_glyphs pro rychlou kontrolu bez ručního parsování tabulek.
from aspose_font import FontLoader
font = FontLoader.open("MyFont.ttf")
print(font.font_name) # full PostScript name
print(font.font_family) # family name
print(font.font_style) # style name e.g. "Regular", "Bold"
print(font.num_glyphs) # total glyph countKódování glifu
FontEncoding mapuje Unicode kódové body na ID glifů. Použijte unicode_to_gid(cp) k vyřešení jediného kódového bodu nebo get_all_codepoints() k vyjmenování všech mapovaných kódových bodů ve fontu.
from aspose_font import FontLoader
font = FontLoader.open("OpenSans-Regular.otf")
# Map a single code point
gid = font.encoding.unicode_to_gid(0x41) # GID for 'A'
# Enumerate all mapped code points
all_cps = font.encoding.get_all_codepoints()
print(f"Font covers {len(all_cps)} Unicode code points")Přístup k glifům
GlyphAccessor získává objekty glifů podle ID, Unicode nebo textového řetězce.
from aspose_font import FontLoader
font = FontLoader.open("OpenSans-Regular.otf")
glyph = font.glyph_accessor.get_glyph_by_id(gid)
glyph_a = font.glyph_accessor.get_glyph_by_unicode(0x41)
glyphs = font.glyph_accessor.get_glyphs_for_text("Hello")
all_ids = font.glyph_accessor.get_all_glyph_ids()Variabilní fonty
Pro variabilní fonty (ty, které obsahují tabulku fvar) TtfFont přímo zpřístupňuje definice os a pojmenované instance.
from aspose_font import FontLoader
from aspose_font import TtfFont
loaded = FontLoader.load("Roboto-VariableFont_wdth,wght.ttf")
ttf: TtfFont = loaded.font
# Check if the font is variable
if ttf.is_variable:
# List all variation axes
for axis in ttf.variable_axes:
print(f"{axis.tag} range: {axis.min_value}..{axis.max_value} default: {axis.default_value}")
# Look up a single axis by tag
wght = ttf.get_axis("wght")
if wght:
print(f"Weight axis: {wght.min_value}..{wght.max_value}")
# Enumerate named instances (e.g. Bold, Condensed)
for inst in ttf.named_instances:
print(f"Instance: name_id={inst.name_id} coordinates={inst.coordinates}")Pro vyšší úrovně workflow instancování SmartInstancer zabaluje výčet os a řešení pojmenovaných instancí do jediného objektu:
from aspose_font import FontLoader
from aspose_font import SmartInstancer
loaded = FontLoader.load("Roboto-VariableFont_wdth,wght.ttf")
instancer = SmartInstancer(loaded.font)
print(f"Axes: {[a.tag for a in instancer.axes]}")
print(f"Named instances: {len(instancer.named_instances)}")Tipy a osvědčené postupy
- Ukládejte načtené objekty
Fontdo cache při opakovaném zpracování stejného souboru písma - Použijte
FontLoader.load(bytes)pro síťové nebo databázové pracovní postupy, abyste se vyhnuli dočasným souborům - Zkontrolujte
num_glyphspřed vytvářením podmnožiny pro odhad pokrytí po podmnožině get_all_glyph_ids()je užitečný pro iteraci celého sady glyfů
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
UnsupportedFontFormatException | Formát souboru nebyl rozpoznán | Ověřte, že soubor je platný TTF/OTF/CFF/WOFF/WOFF2/EOT/Type1 |
FontParseException | Poškozená binární data | Validujte soubor fontu pomocí linteru před načtením. |
GlyphNotFoundException | GID mimo rozsah | Zkontrolujte num_glyphs před přístupem podle ID |
FAQ
Podporuje FontLoader WOFF2?
Ano. FontLoader.open() i FontLoader.load() přijímají soubory WOFF2 a automaticky detekují formát.
Mohu načíst font z URL?
Ne přímo. Stáhněte bajty fontu pomocí urllib nebo requests a předajte je FontLoader.load(bytes).
Je načítání bezpečné pro vlákna?
Každé volání FontLoader.open() vrací nezávislý objekt Font. Současná volání na různých objektech jsou bezpečná.
Shrnutí API Reference
| Třída / Metoda | Popis: |
|---|---|
FontLoader.open(path) | Načíst písmo ze souborové cesty |
FontLoader.load(data) | Načíst písmo z raw bytes |
Font.font_name | Úplný název písma PostScript |
Font.font_family | Název rodiny písma |
Font.font_style | Název stylu písma |
Font.num_glyphs | Celkový počet glyfů |
FontEncoding.unicode_to_gid(cp) | Namapovat kódový bod Unicode na ID glifu |
FontEncoding.get_all_codepoints() | Všechny kódy Unicode s mapováním glifů |
GlyphAccessor.get_glyph_by_id(gid) | Získat glif podle ID |
GlyphAccessor.get_glyph_by_unicode(cp) | Získat glif podle kódu Unicode |
GlyphAccessor.get_glyphs_for_text(text) | Získat glify pro textový řetězec |
GlyphAccessor.get_all_glyph_ids() | Seznam všech ID glyfů ve fontu |
TtfFont.is_variable | Zda font obsahuje data proměnného fontu |
TtfFont.variable_axes | Seznam objektů VariableAxis pro každou osu variace |
TtfFont.get_axis(tag) | Vyhledat jednu osu podle jejího čtyřznakového tagu |
TtfFont.named_instances | Pojmenované instance definované v fvar tabulce fontu |
SmartInstancer(font) | Vysoceúrovňový pomocník zapouzdřující dotazy na osy a instance |