Проверка таблицы шрифтов
Проверка таблицы шрифтов
В этом руководстве показано, как читать свойства названной таблицы, извлекать необработанные данные бинарной tabлы и записывать измененные байты таблиц обратно в шрифт TrueType.
Шрифты TrueType и OpenTybe состоят из двоичных таблиц, каждый идентифицированный 4-байтовым тегом. TtfTableSet выявляет названия свойств Python для общих таблиц, и TtfFont предусматривает: Доступ на байт для всех таблиц.
Читать таблицы с именами
TtfTableSet выставляет head, hhea, maxp, os2, name, post, cmap, loca, hmtx и ядра таблиц.
from aspose_font.loader import FontLoader
from aspose_font.ttf.font import TtfFont
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
tables = ttf_font.ttf_tables
print("head table:", tables.head is not None)
print("kern table:", tables.kern is not None)Чтение битов таблицы в сыром виде
TtfFont.get_table_bytes(tag) возвращает полное содержание бинарной таблицы, идентифицированной ее четырехзначным тегом, что позволяет проводить проверку на низком уровне или пользовательский анализ.
ttf_font: TtfFont = FontLoader.open(“Roboto-Regular.ttf”) raw_name = ttf_font.get_table_bytes(“name”) print(f"name table: {len(raw_name)} bytes")
---
### Написание измененных байтов таблицы
`TtfFont.set_table_bytes(tag, data)` заменяет бинарное содержание таблицы, позволяя производить модификации на основе индивидуальных таблиц, например, исправлять правила GSUB или обновлять записи имен.
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified_bytes = b"..." # your modified table
ttf_font.set_table_bytes("GSUB", modified_bytes)Советы и лучшие практики
- Check
tables.kern is not Noneдо получения данных о корне. TtfTableSet.get_raw(tag)и в том числе:set_raw(tag, data)Это псевдоним для…get_table_bytes/set_table_bytes- Использование:
FontCleaner.clean_for_web()вместо ручного удаления таблиц для избежания проблем с согласованностью
Справочное резюме API
| Класс / метод | Description |
|---|---|
TtfFont.ttf_tables | Доступ к свойствам названной таблицы |
TtfFont.get_table_bytes(tag) | Читать необработанные данные бинарной таблицы. |
TtfFont.set_table_bytes(tag, data) | Запись измененных данных таблицы |
TtfTableSet.get_raw(tag) | Алиас для get_table_bytes |
TtfTableSet.set_raw(tag, data) | Алиас для set_table_bytes |