Въведение
Фонтовите файлове са структурирани около таблици всяка таблица съхранява специфична категория данни като очертания на глифи, картографиране на знаци, метаданни за наименования или хоризонтални метрики. Разбирането и достъпът до тези таблицы е от съществено значение за задачи като анализ на шрифтове, редактиране с метадати, осигуряване на качеството и конверсия на формати.
Aspose.Font FOSS for Python (aspose-fontБиблиотеката е издадена под лиценз на 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 съхранява фундаментални параметри за целия шрифт: единици на em, ревизия, рамка за ограничаване, дата на създаване и знамена на стила. Тези стойности са от решаващо значение за движките за рендеринг и валидаторите на шрифтове.
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 съдържа всички метаданни, които могат да бъдат четени от хората: фамилно име на шрифта, стил, авторски права, лиценз, дизайнер и описание. Можете да записвате записи по името ID, да изтеглите локализирани имена или да промените вписванията за преименуване.
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-специфични метрики, включително типографски ascender/descender, вграждане на знамена и 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}")
Подкрепени формати
| Формат на изображението | Разширяване на срока | Прочети. | Напиши. |
|---|---|---|---|
| TTF | .ttf (на английски) | ✓ | ✓ |
| OTF | .отв. | ✓ | ✓ |
| CFF | .cff (включително счетоводни) | ✓ | ✓ |
| WOFF | .- Да, добре. | ✓ | ✓ |
| WOFF2 | .Wowf2 (включително вж. | ✓ | ✓ |
| 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.Можете да я използвате, модифицирате и разпространявате в личните си или търговски проекти без ограничения.