Jak pracować z czcionkami TTF w Python

Jak pracować z czcionkami TTF w Python

Ten przewodnik pokazuje, jak ładować czcionki TTF, sprawdzać właściwości TtfFont, odczytywać tabele, tworzyć czcionki zmienne oraz konwertować do innych formatów przy użyciu Aspose.Font FOSS dla Python. Czcionki TrueType (.ttf) są najczęstszym formatem czcionek. Aspose.Font FOSS ładuje je jako instancje TtfFont, zapewniając dostęp do tabel, osi czcionek zmiennych, danych glifów i narzędzi konwersji.

Przewodnik krok po kroku

Krok 1: Zainstaluj pakiet

Zainstaluj pakiet Aspose.Font FOSS używając poniższego polecenia:

git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .

Krok 2: Zaimportuj wymagane klasy

Zaimportuj FontLoader i TtfFont, aby wczytać czcionkę TTF i uzyskać dostęp do jej typowanych właściwości:

from aspose_font import FontLoader
from aspose_font import TtfFont

Krok 3: Wczytaj i zbadaj czcionkę TTF

Wczytaj plik TTF przy użyciu FontLoader.open() i odczytaj podstawowe właściwości, takie jak nazwa, rodzina i liczba glifów:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
print(ttf_font.font_name)
print(ttf_font.font_family)
print(ttf_font.num_glyphs)

Krok 4: Odczytaj tabelę kern

Uzyskaj dostęp do właściwości ttf_tables i sprawdź, czy tabela kern jest obecna pod nazwą:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
kern = ttf_font.ttf_tables.kern
print("kern present:", kern is not None)

Krok 5: Utwórz instancję czcionki zmiennej

Wczytaj plik czcionki zmiennej, sprawdź is_variable i wywołaj instantiate() ze słownikiem osi, aby utworzyć statyczną instancję:

from aspose_font import FontLoader
from aspose_font import TtfFont

ttf_font: TtfFont = FontLoader.open("Roboto-VariableFont_wdth,wght.ttf")
if ttf_font.is_variable:
    static = ttf_font.instantiate({"wght": 700.0})
    print("Instantiated:", static.font_name)

Krok 6: Konwertuj do formatu WOFF2

Konwertuj załadowany font TTF do formatu WOFF2, przekazując FontType.WOFF2 do FontConverter.convert():

from aspose_font import FontLoader
from aspose_font.converter import FontConverter  # internal API — may change between releases
from aspose_font import FontType

font = FontLoader.open("Roboto-Regular.ttf")
woff2 = FontConverter.convert(font, FontType.WOFF2)

Typowe problemy i rozwiązania

AttributeError: Font has no attribute ttf_tables — Użyj ttf_font: TtfFont = FontLoader.open(...). Ten ttf_tables właściwość znajduje się na TtfFont, nie w bazie Font.

is_variable jest False w zmiennej czcionce — Niektóre zmienne czcionki używają niestandardowego fvar format tabeli. Sprawdź ttf_font.fvar is not None jako alternatywę.

instantiate() raises KeyError — Tag osi musi być zarejestrowanym 4-znakowym tagiem (np. "wght", "wdth"). Sprawdź ttf_font.axes dostępnych tagów.

Najczęściej zadawane pytania

Jaka jest różnica między TTF a OTF?

OTF i TTF współdzielą ten sam binarny kontener (SFNT). Czcionki OTF zazwyczaj używają konturów CFF, podczas gdy czcionki TTF używają TrueType krzywych kwadratowych. Obie są ładowane przez FontLoader.open().

Czy mogę uzyskać pary kerningu z czcionki TTF?

Tak. Użyj TtfFont.get_kern_pairs(), aby uzyskać listę obiektów KernPair.

Czy biblioteka obsługuje kolekcje czcionek (.ttc)?

Tak. Użyj FontLoader.open(source, collection_index=N), aby wybrać konkretną czcionkę z pliku kolekcji TTC.

Zobacz także

 Polski