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 TtfFontKrok 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.