Як працювати з таблицями шрифтів в Python

Як працювати з таблицями шрифтів в Python

Цей керівництво показує, як читати названі таблиці TTF, отримувати байти двоякісних таблиць і писати змінені дані таблиц з використанням TtfFont в Aspose.Font FOSS для Python. Шрифти TrueType зберігають всі дані у двоякісних таблицях, ідентифікованих 4-знаковими тегами. Aspose.Font ФОСС експонує TtfTableSet для доступу до таблиці з іменем, а також TtfFont.get_table_bytes() / TtfFont.set_table_bytes() для двоякового доступу.

Крок за кроком посібник

Крок 1: Налаштування пакету

Інсталювати пакет Aspose.Font FOSS з PyPI за допомогою нижче наведеної команди pip:

pip install "aspose-font>=1.0.0"

Крок 2: Необхідні класи імпорту

Import FontLoader і TtfFont завантажити файл шрифту та отримати доступ до його набору таблиць:

from aspose_font.loader import FontLoader
from aspose_font.ttf.font import TtfFont

Крок 3: Доступ до таблиць з іменами

Завантажити файл TTF з: FontLoader.open() і доступ до названих таблиць через 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)

Крок 4: Читання бітів таблиці в сироті

Читати сировими двоякісними даними для конкретної таблиці, передаючи її 4-значний тег на: 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")

Крок 5: Напишіть змінені байти таблиці

Напишіть змінені двоякі дані назад до названої таблиці з використанням: set_table_bytes() з тегом та байтом корисної навантаження:

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

Загальні проблеми та рішення

AttributeError: Font has no attribute ttf_tablesttf_tables є на TtfFont, не підставі. Font клас. використовуйте ttf_font: TtfFont = FontLoader.open(...) отримати за допомогою запису.

get_table_bytes повертає порожні байти Знак повинен бути точно 4 символами. (падеж з пробілами, якщо це необхідно, наприклад. "kern" не є. "KRN").

Часто задавані запитання

Які названі таблиці відображені на TtfTableSet?

Головна, Hhea, MaxP, OS2, ім’я, пост, CMAP, LOCA, hmtx і ядро.

Чи можна додати нову таблицю до шрифту?

Передайте будь-які дійсні 4-байтові теги та байтове дані до TtfFont.set_table_bytes(tag, data).

See Also

 Українська