Introduction
Файли шрифтів структурировані навколо таблиць кожна таблиця зберігає певну категорію даних, таких як очерки гліфов, мапінги символів, метадани назви або горизонтальні метрики. Розуміння та доступ до цих таблиц є необхідними для завдань, наприклад аналіз шрифта, редагування метаданних, забезпечення якості і конверсія формату .
Aspose.Font FOSS for Python (aspose-font) дає вам прямий доступ до повного набору таблиць OpenType та TrueTyme через чистий API Python. Бібліотека випускається за ліцензією MIT з нульовими зовнішніми залежностями, тому ви можете інтегрувати її в будь-який проект без проблем із ліцэнзуванням.
Цей пост проходить через класи ключових таблиць, доступних в бібліотеці від читання метадані заголовку до перегляду даних і модифікації записів назви ?? всі підтримуються TtfTableSet контейнер на TtfFont.
Ключові особливості
Завантаження шрифту та доступ до таблиць
Кожен шрифт завантажений на: FontLoader розкриває свої аналізовані таблиці через ttf_tables майно на TtfFont.- Я знаю. TtfTableSet об’єкт надає вписані доступ до кожної стандартної таблиці, плюс сурові байти доступу через get_raw() для індивідуальних або невідомих столів.
import aspose_font
font = aspose_font.FontLoader.open("MyFont.ttf")
tables = font.ttf_tables
# Typed table access
head = tables.head
name = tables.name
cmap = tables.cmap
# Raw bytes for any table tag
raw_os2 = tables.get_raw("OS/2")
Читання головного столу
У. HeadTable зберігає фундаментальні параметри по всьому шрифту: одиниці за ем, перегляд, рамка обмежень, дата створення та стілові прапорки. Ці значення критично важливі для двигунів рендерингу і валідаторів шрифтів.
import aspose_font
font = aspose_font.FontLoader.open("MyFont.ttf")
head = font.ttf_tables.head
print(f"Units per em: {head.units_per_em}")
print(f"Revision: {head.font_revision}")
print(f"Bounding box: ({head.x_min}, {head.y_min}) to ({head.x_max}, {head.y_max})")
print(f"Mac style flags: {head.mac_style}")
print(f"Glyph data format: {head.glyph_data_format}")
Робота з таблицею назви
У. NameTable У ньому містяться всі метадані, які читаються людьми: прізвище шрифту, стиль, авторські права, ліцензія, дизайнер і опис. Ви можете запитувати записи за допомогою ідентифікатора назви, відшукати локалізовані імена або змінити вхід для ребрендингу.
import aspose_font
font = aspose_font.FontLoader.open("MyFont.ttf")
name_table = font.ttf_tables.name
# Read the font family name (name ID 1)
family = name_table.best_name(1, ["en"])
print(f"Family: {family}")
# List all localized versions of the full name (name ID 4)
localized = name_table.localized_names(4)
for lang, value in localized.items():
print(f" {lang}: {value}")
# Replace the font family name
name_table.replace_name(1, "MyCustomFamily")
Перевірка таблиці CMap
У. CmapTable Мап Unicode кодові точки до ідентифікаторів гліфов. Вона може містити кілька підтабліць для різних платформ та комбінацій кодування. Використовуйте best_subtable() щоб отримати найбільш підходящу картування для вашого випадку використання.
import aspose_font
font = aspose_font.FontLoader.open("MyFont.ttf")
cmap = font.ttf_tables.cmap
# Get the best Unicode subtable
subtable = cmap.best_subtable()
print(f"Platform: {subtable.platform_id}, Encoding: {subtable.encoding_id}")
# Look up the glyph ID for 'A'
gid = subtable.get_gid(ord("A"))
print(f"Glyph ID for 'A': {gid}")
Читання OS/2 та горизонтальних метрик
У. Os2Table надає OS/2 та Windows-специфічні метрики, включаючи типографічний підйомний / знижувальний, вбудова флагов і класифікацію Panose. HheaTable і HmtxTable забезпечувати горизонтальні метрики розкладання, що використовуються для формування тексту.
import aspose_font
font = aspose_font.FontLoader.open("MyFont.ttf")
os2 = font.ttf_tables.os2
hhea = font.ttf_tables.hhea
print(f"Typo ascender: {os2.s_typo_ascender}")
print(f"Typo descender: {os2.s_typo_descender}")
print(f"Embedding flags (fsType): {os2.fs_type}")
print(f"Panose: {os2.panose.hex()}")
print(f"Hhea ascender: {hhea.ascender}")
print(f"Max advance width: {hhea.advance_width_max}")
print(f"Number of hmetrics: {hhea.number_of_hmetrics}")
Дані з кристалів та гліпфов
У. KernTable Заховує пари кернінгу для регулювання горизонтального відставання. GlyfTable містить фактичні дані очерку гліфа для шрифтів TrueType. Ви також можете використовувати PostTable розв’язувати імена гліфов.
import aspose_font
font = aspose_font.FontLoader.open("MyFont.ttf")
# Kerning lookup
kern = font.ttf_tables.kern
if kern:
pairs = kern.pairs
print(f"Total kern pairs: {len(pairs)}")
# Look up a specific pair by glyph IDs
adjustment = kern.get(36, 57)
print(f"Kern adjustment: {adjustment}")
# Glyph name from post table
post = font.ttf_tables.post
if post:
glyph_name = post.glyph_name(0)
print(f"Glyph 0 name: {glyph_name}")
Швидкий старт
pip install aspose-font>=1.0.0
import aspose_font
# Load any TTF or OTF font
font = aspose_font.FontLoader.open("MyFont.ttf")
tables = font.ttf_tables
# Print basic table info
print(f"Font: {font.font_name}")
print(f"Family: {font.font_family}")
print(f"Glyphs: {font.num_glyphs}")
print(f"Units/em: {tables.head.units_per_em}")
# Read name table entries
name_table = tables.name
for name_id in [0, 1, 2, 4, 5, 6]:
value = name_table.best_name(name_id, ["en"])
if value:
print(f" Name ID {name_id}: {value}")
# Check character coverage
cmap = tables.cmap
subtable = cmap.best_subtable()
for char in "ABCabc012":
gid = subtable.get_gid(ord(char))
print(f" '{char}' -> glyph {gid}")
Підтримувані формати
| Format | Extension | Read | Write |
|---|---|---|---|
| TTF | .ttf | ✓ | ✓ |
| OTF | .оф | ✓ | ✓ |
| CFF | .cff | ✓ | ✓ |
| WOFF | .- Я не знаю. | ✓ | ✓ |
| WOFF2 | .woff2 | ✓ | ✓ |
| EOT | . ніщо | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
Відкритий код та ліцензія
Aspose.Font FOSS for Python is released under the MIT license. The source code is available on GitHub and the package is published on PyPI as aspose-font.Ви можете використовувати, змінювати і поширювати його як в особистому, так і у комерційному проекті без обмежень.