Jak pracować z tabelami czcionek w Python

Jak pracować z tabelami czcionek w Python

Ten przewodnik pokazuje, jak odczytać nazwane tabele TTF, pobrać surowe bajty tabeli i zapisać zmodyfikowane dane tabeli przy użyciu TtfFont w Aspose.Font FOSS dla Python. Czcionki TrueType przechowują wszystkie dane w binarnych tabelach identyfikowanych przez 4-znakowe tagi. Aspose.Font FOSS udostępnia TtfTableSet do dostępu do nazwanych tabel oraz TtfFont.get_table_bytes(tag) / TtfFont.set_table_bytes(tag, data) do surowego dostępu binarnego.

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

Importuj FontLoader i TtfFont, aby załadować plik czcionki i uzyskać dostęp do jego zestawu tabel:

from aspose_font import FontLoader
from aspose_font import TtfFont

Krok 3: Uzyskaj dostęp do nazwanych tabel

Załaduj plik TTF za pomocą FontLoader.open() i uzyskaj dostęp do nazwanych tabel poprzez właściwość ttf_tables:

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

Krok 4: Odczytaj surowe bajty tabeli

Odczytaj surowe dane binarne konkretnej tabeli, przekazując jej czteroznakowy tag do get_table_bytes():

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
raw = ttf_font.get_table_bytes("name")
print(f"name table: {len(raw)} bytes")

Krok 5: Zapisz zmodyfikowane bajty tabeli

Zapisz zmodyfikowane dane binarne z powrotem do nazwanej tabeli, używając set_table_bytes() wraz z tagiem i ładunkiem bajtów:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..."  # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)

Typowe problemy i rozwiązania

AttributeError: Font has no attribute ttf_tables — ttf_tables jest włączony TtfFont, nie bazowy Font klasa. Użyj ttf_font: TtfFont = FontLoader.open(...) aby uzyskać typowane odwołanie.

get_table_bytes zwraca puste bajty — Tag musi mieć dokładnie 4 znaki (w razie potrzeby wypełnij spacjami, np. "kern" not "KRN").

Najczęściej zadawane pytania

Jakie nazwane tabele są udostępniane w TtfTableSet?

head, hhea, maxp, os2, name, post, cmap, loca, hmtx oraz kern.

Czy mogę dodać nową tabelę do czcionki?

Tak. Przekaż dowolny prawidłowy 4-bajtowy tag oraz dane bajtowe do TtfFont.set_table_bytes(tag, data).

Zobacz także

 Polski