Introduzione
I font TrueType (.ttf) e il loro superset OpenType (.otf) sono i formati di font dominanti nei moderni sistemi operativi. Entrambi i formati condividono la stessa struttura di tabelle binarie basata sulla specifica OpenType. Aspose.Font FOSS per Python espone questa struttura tramite TtfFont, fornendo accesso diretto alle singole tabelle OpenType, ai dati delle coppie di kern, agli assi dei font variabili e ai contorni dei glifi.
La classe TtfFont estende la classe base Font con metodi specifici TTF includendo get_blob, get_table_bytes, set_table_bytes e instantiate per il blocco degli assi dei font variabili. La proprietà TtfTableSet (ttf_tables) fornisce un accesso tipizzato alle tabelle OpenType più comuni: head, hhea, maxp, os2, name, post.
La libreria è pubblicata su PyPI come aspose-font ed è rilasciata sotto la licenza MIT. Non ha dipendenze commerciali obbligatorie.
Caratteristiche principali
Caricamento di font TTF e OTF
Usa FontLoader.open per caricare qualsiasi file di font TrueType o 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 rileva il formato del font dall’intestazione del file. Sia i file .ttf (TrueType) sia i file .otf (OpenType CFF) sono supportati e entrambi restituiscono un’istanza TtfFont.
Accesso alle tabelle OpenType tramite TtfTableSet
La proprietà ttf_tables restituisce un TtfTableSet con accessor tipizzati per le tabelle comuni OpenType. Ogni proprietà restituisce l’oggetto tabella o None se assente:
La proprietà ttf_tables su TtfFont restituisce un’istanza TtfTableSet. Accessor di tabella disponibili:
head—HeadTable | Nonehhea—HheaTable | Nonemaxp—MaxpTable | Noneos2—Os2Table | Nonename—NameTable | Nonepost—PostTable | None
Ogni proprietà restituisce l’oggetto tabella o None se quella tabella non è presente nel file del font. Accedi alle proprietà TtfTableSet per verificare la presenza di tabelle specifiche prima di leggerle. Per le tabelle non coperte da accessor nominati, usa TtfTableSet.get_raw(tag) per recuperare i byte grezzi mediante il tag a quattro caratteri OpenType.
Lettura dei byte grezzi della tabella
get_table_bytes(tag) restituisce i byte grezzi per qualsiasi tabella OpenType. Usa get_blob(tag) per una variante sicura per None che restituisce None quando la tabella è assente:
TtfFont fornisce due metodi per l’accesso grezzo alle tabelle:
get_table_bytes(tag) -> bytes— restituisce i byte grezzi per una tabella nominata (solleva un’eccezione se assente)get_blob(tag) -> bytes | None— restituisceNonese la tabella è assente (variante sicura)
Entrambi i metodi accettano un tag di tabella a quattro caratteri OpenType come "cmap", "GDEF" o "GPOS". Usa get_blob quando una tabella è opzionale così puoi verificare None prima dell’elaborazione.
Coppie di kern
get_kern_pairs() restituisce tutte le coppie di kern codificate nel font. Ogni KernPair ha left (GlyphId), right (GlyphId) e value (int in unità del font):
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}")
Metriche del font
Le metriche standard sono accessibili tramite la proprietà 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}")
Supporto per i font variabili
Per i font variabili, TtfFont espone is_variable, variable_axes e named_instances. Usa get_axis(tag) per recuperare un asse specifico tramite il suo tag a quattro lettere:
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)}")
Il metodo get_axis(tag) su TtfFont recupera un VariableAxis tramite il suo tag a quattro lettere (ad es. "wght" per il peso, "wdth" per la larghezza). Restituisce None se l’asse non è presente nella tabella fvar del font.
Conversione dei Font
to_bytes(font_type) converte il font in un formato diverso. Usa l’enum FontType per specificare la destinazione:
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")
Avvio rapido
Installa la libreria:
.venv/bin/pip install aspose-font
Carica un font TTF e ispezionalo:
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")
Formati supportati
| Formato | Estensione | Leggi | Scrivi |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .otf | ✓ | — |
| EOT | .eot | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .woff | ✓ | — |
| WOFF2 | .woff2 | ✓ | — |
Tutti i formati vengono caricati tramite FontLoader.open. I font TTF/OTF restituiscono un’istanza TtfFont.
Open Source & Licenze
Aspose.Font FOSS for Python è rilasciato sotto la Licenza MIT. Puoi usarlo in progetti personali, commerciali e open-source senza alcun costo. Il codice sorgente è disponibile su GitHub e il pacchetto è distribuito tramite PyPI come aspose-font.