Introduzione
Aspose.Font FOSS per Python fornisce un set coerente di classi per ogni comune attività di gestione dei font: caricamento di file di font in più formati, lettura dei metadati e dei dati dei glifi, conversione tra formati, creazione di sottoinsiemi per la distribuzione web e pulizia delle tabelle binarie per una dimensione di file ottimale. Questa guida illustra ciascuna funzionalità principale con esempi di codice funzionanti tratti dai API verificati della libreria.
Il pacchetto (aspose-font) è rilasciato con licenza MIT, richiede Python 3.10+ e non ha dipendenze da librerie di font a livello di OS. Installalo con pip install aspose-font>=1.0.0.
Caratteristiche principali
Caricamento dei font con FontLoader
FontLoader è il punto di ingresso unico per tutte le operazioni di caricamento dei font. Il metodo statico open() accetta un percorso file (str o Path) e rileva automaticamente il formato. Il metodo load() accetta byte grezzi per flussi di lavoro in memoria. Entrambi restituiscono un oggetto di tipo Font che puoi ispezionare immediatamente.
from aspose_font.loader import FontLoader
# Load from file path — format detected automatically
font = FontLoader.open("Roboto-Regular.ttf")
# Load from raw bytes (e.g., from a network request or database blob)
with open("OpenSans-Regular.otf", "rb") as f:
font_bytes = f.read()
font = FontLoader.load(font_bytes)
Lettura dei metadati del font tramite la classe base Font
Una volta caricato, la classe base Font espone proprietà di metadati standard senza richiedere di analizzare le tabelle binarie dei font. Le proprietà font_name, font_family, font_style e num_glyphs coprono le esigenze di metadati più comuni.
from aspose_font.loader import FontLoader
font = FontLoader.open("NotoSans-Regular.ttf")
print(f"Name: {font.font_name}")
print(f"Family: {font.font_family}")
print(f"Style: {font.font_style}")
print(f"Glyphs: {font.num_glyphs}")
Codifica e Accesso dei Glifi
FontEncoding mappa i punti di codice Unicode agli ID dei glifi. Usa unicode_to_gid() per punti di codice singoli o get_all_codepoints() per enumerare la copertura completa del font. GlyphAccessor quindi recupera gli oggetti glifo per ID tramite get_glyph_by_id(), per Unicode tramite get_glyph_by_unicode(), o per una stringa di testo tramite get_glyphs_for_text().
from aspose_font.loader import FontLoader
font = FontLoader.open("OpenSans-Regular.otf")
# Map Unicode code point to glyph ID
glyph_id = font.encoding.unicode_to_gid(0x41) # 'A'
print(f"Glyph ID for 'A': {glyph_id}")
# Retrieve glyph object
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
# Inspect path commands
for cmd in glyph.path.commands:
print(type(cmd).__name__, cmd)
Conversione dei Font con FontConverter
FontConverter.convert() converte un font caricato tra i formati supportati. Fornisci il font di origine e l’identificatore del formato di destinazione per ottenere un nuovo oggetto font nel formato desiderato. Il metodo gestisce CFF, TTF, WOFF, WOFF2, EOT e Type 1 sia come sorgente sia come destinazione.
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
source = FontLoader.open("MyFont.ttf")
converted = FontConverter.convert(source, target_format="woff2")
Ottimizzazione Web con FontCleaner
FontCleaner.clean_for_web() rimuove le tabelle binarie non necessarie per la consegna di font web — in particolare DSIG, FFTM e meta — e elimina i record di nome della piattaforma Mac (platform_id=1) dalla tabella name. Il risultato è un binario più leggero che riduce il carico di rete senza alterare i contorni o le metriche. Argomenti opzionali con parole chiave consentono di conservare tipi di tabelle specifici, se necessario.
from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
font = FontLoader.open("Roboto-Regular.ttf")
# Strip all legacy tables and Mac name records (default)
cleaned = FontCleaner.clean_for_web(font)
# Preserve specific metadata tables if required
cleaned_selective = FontCleaner.clean_for_web(
font,
drop_metadata_tables=False,
drop_legacy_tables=True,
drop_mac_names=True,
)
Ispezione del Tracciato dei Glifi
Ogni oggetto Glyph espone il suo contorno come un GlyphPath la cui sequenza commands contiene istanze tipizzate di MoveTo, LineTo, QuadraticTo, CurveTo e ClosePath. Ogni comando porta gli attributi di coordinate rilevanti — ad esempio, CurveTo ha x1, y1, x2, y2, x, y — consentendo di estrarre i dati Bézier grezzi per il rendering, la generazione di SVG o la geometria di collisione.
from aspose_font.loader import FontLoader
from aspose_font import CurveTo, LineTo
font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(ord("A"))
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
curves = [cmd for cmd in glyph.path.commands if isinstance(cmd, CurveTo)]
print(f"Cubic Bezier segments in 'A': {len(curves)}")
Avvio rapido
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
# Load, inspect, and clean a font in five lines
font = FontLoader.open("MyFont.ttf")
print(font.font_family, font.num_glyphs, "glyphs")
cleaned = FontCleaner.clean_for_web(font)
print("Font cleaned for web delivery")
Formati supportati
| Formato | Estensione | Leggi | Scrivi |
|---|---|---|---|
| TTF | .ttf | ✓ | ✓ |
| OTF | .otf | ✓ | ✓ |
| CFF | .cff | ✓ | ✓ |
| TYPE1 | .pfb / .pfa | ✓ | ✓ |
| WOFF | .woff | ✓ | ✓ |
| WOFF2 | .woff2 | ✓ | ✓ |
| EOT | .eot | ✓ | ✓ |
Open source e licenze
Aspose.Font FOSS per Python è con licenza MIT. Il codice sorgente è su GitHub a aspose-font-foss/Aspose.Font-FOSS-for-Python e il pacchetto è su PyPI come aspose-font.