Introduktion
Aspose.Font FOSS för Python tillhandahåller en konsekvent uppsättning klasser för varje vanlig teckensnittshanteringsuppgift: laddning av teckensnitts-filer i flera format, läsning av metadata och glyfdata, konvertering mellan format, urval för webbleverans och rensning av binära tabeller för optimal filstorlek. Denna guide går igenom varje kärnfunktion med fungerande kodexempel hämtade från bibliotekets verifierade API.
Paketet (aspose-font) är licensierat under MIT, kräver Python 3.10+ och har inga operativsystemsnivåberoenden för teckensnittsbibliotek. Installera det med pip install aspose-font>=1.0.0.
Viktiga funktioner
Laddar teckensnitt med FontLoader
FontLoader är den enda ingångspunkten för alla teckensnittsladdningsoperationer. Den statiska metoden open() accepterar en filsökväg (str eller Path) och identifierar automatiskt formatet. Metoden load() accepterar råa bytes för arbetsflöden i minnet. Båda returnerar ett Font-typsatt objekt som du kan inspektera omedelbart.
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)
Läsning av teckensnittmetadata via Font Base Class
När den har laddats, exponerar basklassen Font standardmetadataegenskaper utan att du behöver parsra binära fonttabeller. Egenskaperna font_name, font_family, font_style och num_glyphs täcker de vanligaste metadatabehoven.
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}")
Glyfkodning och åtkomst
FontEncoding mappar Unicode-kodpunkter till glyfid. Använd unicode_to_gid() för enstaka kodpunkter eller get_all_codepoints() för att lista hela teckensnittets täckning. GlyphAccessor hämtar sedan glyfobjekt efter ID via get_glyph_by_id(), efter Unicode via get_glyph_by_unicode(), eller för en textsträng via 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)
Fontkonvertering med FontConverter
FontConverter.convert() konverterar ett laddat teckensnitt mellan stödjade format. Skicka med källteckensnittet och målformatets identifierare för att få ett nytt teckensnittobjekt i målformatet. Metoden hanterar CFF, TTF, WOFF, WOFF2, EOT och Type 1 både som källa och mål.
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
source = FontLoader.open("MyFont.ttf")
converted = FontConverter.convert(source, target_format="woff2")
Webboptimering med FontCleaner
FontCleaner.clean_for_web() tar bort binära tabeller som är onödiga för webbfontleverans — specifikt DSIG, FFTM och meta — och rensar Mac-plattformens (platform_id=1) namnposter från namntabellen. Resultatet blir en smalare binär som minskar nätverkspayloaden utan att röra konturer eller mått. Valfria nyckelordsargument låter dig bevara specifika tabeltyper om så behövs.
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,
)
Inspektion av glyfvägen
Varje Glyph-objekt exponerar sin kontur som en GlyphPath vars commands sekvens innehåller typade instanser av MoveTo, LineTo, QuadraticTo, CurveTo och ClosePath. Varje kommando bär med sig de relevanta koordinatattributen — till exempel har CurveTo x1, y1, x2, y2, x, y — vilket gör att du kan extrahera rå Bézier-data för rendering, SVG-generering eller kollisionsgeometri.
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)}")
Snabbstart
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")
Stödda format
| Format | Filändelse | Läsa | Skriva |
|---|---|---|---|
| TTF | .ttf | ✓ | ✓ |
| OTF | .otf | ✓ | ✓ |
| CFF | .cff | ✓ | ✓ |
| TYPE1 | .pfb / .pfa | ✓ | ✓ |
| WOFF | .woff | ✓ | ✓ |
| WOFF2 | .woff2 | ✓ | ✓ |
| EOT | .eot | ✓ | ✓ |
Öppen källkod & licensiering
Aspose.Font FOSS för Python är MIT-licensierad. Källkoden finns på GitHub på aspose-font-foss/Aspose.Font-FOSS-for-Python och paketet finns på PyPI som aspose-font.