Как работать с таблицами шрифтов в 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

 Русский