Gestione dei Font di Base

Gestione dei Font di Base

Gestione Core dei Font

Questa guida mostra come caricare i font da percorsi di file o array di byte, leggere le proprietà dei metadati, mappare i punti di codice Unicode agli ID dei glifi, recuperare i glifi e lavorare con gli assi dei font variabili e le istanze nominate.

FontLoader è il punto di ingresso principale per tutte le operazioni di caricamento dei font. Una volta caricato un font, la classe base Font fornisce l’accesso ai metadati, alla codifica, all’accesso ai glifi e alle metriche senza richiedere l’analisi delle tabelle binarie.


Caricamento dei Font

FontLoader.open(source, font_type, collection_index) carica un font da un percorso di file con rilevamento automatico del formato. FontLoader.load(source, font_type, collection_index) accetta byte grezzi per flussi di lavoro in memoria o di rete.

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

Lettura dei Metadati del Font

Dopo il caricamento, l’oggetto Font espone le proprietà font_name, font_family, font_style e num_glyphs per un’ispezione rapida senza l’analisi manuale delle tabelle.

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 count

Codifica dei glifi

FontEncoding mappa i punti di codice Unicode agli ID dei glifi. Usa unicode_to_gid(cp) per risolvere un singolo punto di codice, oppure get_all_codepoints() per elencare tutti i punti di codice mappati nel font.

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

Accesso ai glifi

GlyphAccessor recupera gli oggetti glifo per ID, Unicode o stringa di testo.

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

Font variabili

Per i font variabili (quelli che contengono una tabella fvar), TtfFont espone direttamente le definizioni degli assi e le istanze nominate.

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

Per flussi di lavoro di istanziazione di livello superiore, SmartInstancer avvolge l’enumerazione degli assi e la risoluzione delle istanze nominate in un unico oggetto:

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

Consigli e migliori pratiche

  • Memorizza nella cache gli oggetti Font caricati quando si elabora lo stesso file di font più volte
  • Usa FontLoader.load(bytes) per flussi di lavoro di rete o database per evitare file temporanei
  • Verifica num_glyphs prima del subset per stimare la copertura post-subset
  • get_all_glyph_ids() è utile per iterare l’intero set di glifi

Problemi comuni

ProblemaCausaCorrezione
UnsupportedFontFormatExceptionFormato file non riconosciutoVerifica che il file sia un TTF/OTF/CFF/WOFF/WOFF2/EOT/Type1 valido
FontParseExceptionDati binari malformatiConvalida il file del font con un linter prima di caricarlo
GlyphNotFoundExceptionGID fuori intervalloVerifica num_glyphs prima di accedere per ID

FAQ

Il FontLoader supporta WOFF2?

Sì. FontLoader.open() e FontLoader.load() accettano entrambi file WOFF2 e rilevano automaticamente il formato.

Posso caricare un font da un URL?

Non direttamente. Scarica i byte del font con urllib o requests e passali a FontLoader.load(bytes).

Il caricamento è thread-safe?

Ogni chiamata FontLoader.open() restituisce un oggetto Font indipendente. Le chiamate concorrenti su oggetti separati sono sicure.


API Reference Riepilogo

Classe / MetodoDescrizione
FontLoader.open(path)Carica un font da un percorso file
FontLoader.load(data)Carica un font da byte grezzi
Font.font_nameNome completo del font PostScript
Font.font_familyNome della famiglia del font
Font.font_styleNome dello stile del font
Font.num_glyphsConteggio totale dei glifi
FontEncoding.unicode_to_gid(cp)Mappa il punto di codice Unicode all’ID del glifo
FontEncoding.get_all_codepoints()Tutti i punti di codice Unicode con mappature di glifi
GlyphAccessor.get_glyph_by_id(gid)Recupera il glifo per ID
GlyphAccessor.get_glyph_by_unicode(cp)Recupera il glifo per codice Unicode
GlyphAccessor.get_glyphs_for_text(text)Recupera i glifi per una stringa di testo
GlyphAccessor.get_all_glyph_ids()Elenca tutti gli ID dei glifi nel font
TtfFont.is_variableSe il font contiene dati di font variabile
TtfFont.variable_axesElenco di oggetti VariableAxis per ogni asse di variazione
TtfFont.get_axis(tag)Recupera un singolo asse tramite il suo tag a quattro caratteri
TtfFont.named_instancesIstanze nominate definite nella tabella fvar del font
SmartInstancer(font)Helper di alto livello che incapsula le query su assi e istanze

Vedi anche

 Italiano