Как да работим с таблици от шрифтове в Python

Как да работим с таблици от шрифтове в Python

Това ръководство показва как да четете имена ТТФ таблици, извличане на сурови бинарни таблица байтове и напишете модифицирани данни от таблицата с помощта на TtfFont в Aspose.Font FOSS за Python. TrueType шрифтовете съхраняват всички данни в бинарни таблици, идентифицирани с 4-знакови етикети. Aspose.Font ФОСС разкрива TtfTableSet за достъп до таблица с име и TtfFont.get_table_bytes() / TtfFont.set_table_bytes() за необработен двоичен достъп.

Постепенно ръководство

Стъпка 1: Инсталирайте пакета

Инсталирайте пакета Aspose.Cells FOSS от PyPI, като използвате следната команда pip:

pip install "aspose-font>=1.0.0"

Стъпка 2: Импортиране на необходимите класове

Внос на продукти от други държави членки 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?

Глава, ххя, максп, ос2, име, пост, cmap, локалния, hmtx и ядрото.

Мога ли да добавя нова таблица към шрифта?

Да, предавай валидни 4 байта и байт данни на TtfFont.set_table_bytes(tag, data).

Вижте също:

 Български