Wstęp

Aspose.Font FOSS dla Python zapewnia spójny zestaw klas dla każdego typowego zadania zarządzania czcionkami: ładowanie plików czcionek w wielu formatach, odczytywanie metadanych i danych glifów, konwertowanie między formatami, tworzenie podzbiorów do dostarczania w sieci oraz czyszczenie tabel binarnych w celu optymalizacji rozmiaru pliku. Ten przewodnik przechodzi przez każdą podstawową funkcję, prezentując działające przykłady kodu pobrane z zweryfikowanych API biblioteki.

Pakiet (aspose-font) jest licencjonowany na zasadach MIT, wymaga Python w wersji 3.10+ i nie ma zależności od systemowych bibliotek czcionek. Zainstaluj go przy użyciu pip install aspose-font>=1.0.0.


Kluczowe funkcje

Ładowanie czcionek przy użyciu FontLoader

FontLoader jest jedynym punktem wejścia dla wszystkich operacji ładowania czcionek. Statyczna metoda open() przyjmuje ścieżkę do pliku (str lub Path) i automatycznie wykrywa format. Metoda load() przyjmuje surowe bajty do przepływów pracy w pamięci. Obie zwracają obiekt typu Font, który możesz od razu zbadać.

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)

Odczytywanie metadanych czcionki poprzez klasę bazową Font

Po załadowaniu, klasa bazowa Font udostępnia standardowe właściwości metadanych bez konieczności parsowania binarnych tabel czcionki. Właściwości font_name, font_family, font_style i num_glyphs obejmują najczęstsze potrzeby metadanych.

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

Kodowanie i dostęp do glifów

FontEncoding mapuje punkty kodowe Unicode na identyfikatory glifów. Użyj unicode_to_gid() dla pojedynczych punktów kodowych lub get_all_codepoints(), aby wyliczyć pełne pokrycie czcionki. Następnie GlyphAccessor pobiera obiekty glifów po ID za pomocą get_glyph_by_id(), po Unicode za pomocą get_glyph_by_unicode() lub dla ciągu tekstowego za pomocą 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)

Konwersja czcionek przy użyciu FontConverter

FontConverter.convert() konwertuje załadowaną czcionkę pomiędzy obsługiwanymi formatami. Przekaż czcionkę źródłową oraz identyfikator formatu docelowego, aby otrzymać nowy obiekt czcionki w formacie docelowym. Metoda obsługuje CFF, TTF, WOFF, WOFF2, EOT i Type 1 zarówno jako źródło, jak i cel.

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter

source = FontLoader.open("MyFont.ttf")
converted = FontConverter.convert(source, target_format="woff2")

Optymalizacja internetowa przy użyciu FontCleaner

FontCleaner.clean_for_web() usuwa binarne tabele, które nie są potrzebne do dostarczania czcionek w sieci — konkretnie DSIG, FFTM i meta — oraz usuwa rekordy nazw platformy Mac (platform_id=1) z tabeli name. Wynikiem jest lżejszy plik binarny, który zmniejsza obciążenie sieci bez modyfikacji konturów ani metryk. Opcjonalne argumenty słów kluczowych pozwalają zachować określone typy tabel, jeśli jest to potrzebne.

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

Inspekcja ścieżki glifu

Każdy obiekt Glyph udostępnia swój zarys jako GlyphPath, którego sekwencja commands zawiera typowane wystąpienia MoveTo, LineTo, QuadraticTo, CurveTo i ClosePath. Każde polecenie zawiera odpowiednie atrybuty współrzędnych — na przykład CurveTo ma x1, y1, x2, y2, x, y — co pozwala wyodrębnić surowe dane Bézier do renderowania, generowania SVG lub geometrii kolizji.

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

Szybki start

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

Obsługiwane formaty

FormatRozszerzenieOdczytZapis
TTF.ttf✓✓
OTF.otf✓✓
CFF.cff✓✓
TYPE1.pfb / .pfa✓✓
WOFF.woff✓✓
WOFF2.woff2✓✓
EOT.eot✓✓

Open Source i licencjonowanie

Aspose.Font FOSS dla Python jest licencjonowany na licencji MIT. Źródło znajduje się na GitHub pod adresem aspose-font-foss/Aspose.Font-FOSS-for-Python, a pakiet jest dostępny na PyPI jako aspose-font.


Rozpoczęcie

Powiązane zasoby