Introduction
Aspose.Font FOSS for Python provides a coherent set of classes for every common завдання управління шрифтом: завантаження файлів шрифта в різних форматах, читання метаданих та дані з гліпфіків, конвертування між форматами, підпоставлення для доставки в Інтернеті та очищення Цей керівництво проходить через кожен основні можливості з прикладами робочого коду, отриманими із перевіреного API бібліотеки.
Пакет (aspose-font) має ліцензію MIT, вимагає Python 3.10+, і не має ніяких додаткових програм. Залежність від бібліотеки шрифтів на рівні операційної системи. Інсталювати за допомогою pip install aspose-font>=1.0.0.
Ключові особливості
Завантаження шрифтів з FontLoader
FontLoader є єдиною точкою входу для всіх операцій завантаження шрифтів. open() Метод приймає шлях файлу (str або Path) і автоматично виявляє формат. load() Метод приймає сировини байтів для потоків роботи в пам’яті. Обидва повертають a Font-натипаний об’єкт, який ви можете перевірити негайно.
from aspose_font.loader import FontLoader
# Load from file path — format detected automatically
font = FontLoader.open("Roboto-Regular.ttf")
# Load from raw bytes (e.g., from a network request or database blob)
with open("OpenSans-Regular.otf", "rb") as f:
font_bytes = f.read()
font = FontLoader.load(font_bytes)
Читання метаданих шрифту через базовий клас шрифта
Після завантаження, Font базовий клас викриває стандартні властивості метаданих без Використовуйте для аналізу двоякісні таблиці шрифтів. font_name, font_family, font_style, і num_glyphs покривати найбільш поширені потреби в метаданих.
font = FontLoader.open(“NotoSans-Regular.ttf”) print(f"Name: {font.font_name}") print(f"Family: {font.font_family}") print(f"Style: {font.font_style}") print(f"Glyphs: {font.num_glyphs}")
### Кодування і доступ до гліпфов
`FontEncoding` Карти з код-кодом Unicode вказують на ідентифікатори гліфов. Використання `unicode_to_gid()` для однокодові точки або `get_all_codepoints()` перерахувати повне охоплення Шрифт. `GlyphAccessor` Потім отримує об'єкти гліфа за допомогою ID через: `get_glyph_by_id()`, через Unicode `get_glyph_by_unicode()`, або для текстового ряду через `get_glyphs_for_text()`.
font = FontLoader.open("OpenSans-Regular.otf")
# Map Unicode code point to glyph ID
glyph_id = font.encoding.unicode_to_gid(0x41) # 'A'
print(f"Glyph ID for 'A': {glyph_id}")
# Retrieve glyph object
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
# Inspect path commands
for cmd in glyph.path.commands:
print(type(cmd).__name__, cmd)
Конвертування шрифтів з FontConverter
FontConverter.convert() перетворює завантажений шрифт між підтримуваними форматами. Передайте джерело шрифту та ідентифікатор формату цільового для отримання нового об’єкта шрифта в цільованій системі. Метод обробляє CFF, TTF, WOFF , WOff2, EOT і тип 1 як джерело та ціль.
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
source = FontLoader.open("MyFont.ttf")
converted = FontConverter.convert(source, target_format="woff2")
Оптимізація веб-сайту з FontCleaner
FontCleaner.clean_for_web() видаляє двоякі таблиці, які не потрібні для веб-сайту. доставка шрифтів зокрема DSIG, FFTM та мета ?? і смуги Mac платформі (platform_id=1) Результат є більш тонкий двояковий, що зменшує мережу Додаткові аргументи ключевих слів дозволяють вам використовувати їх. зберегти конкретні типи таблиць, якщо це необхідно.
from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
font = FontLoader.open("Roboto-Regular.ttf")
# Strip all legacy tables and Mac name records (default)
cleaned = FontCleaner.clean_for_web(font)
# Preserve specific metadata tables if required
cleaned_selective = FontCleaner.clean_for_web(
font,
drop_metadata_tables=False,
drop_legacy_tables=True,
drop_mac_names=True,
)
Інспекція шляху гліпфов
Every Glyph об’єкт викриває свій контур як GlyphPath чиї commands послідовність містить вкладені інстанції MoveTo, LineTo, QuadraticTo, CurveTo, і ClosePath.Кожна команда має відповідні атрибути координат, наприклад ., CurveTo має x1, y1, x2, y2, x, y що дозволяє видобувати сирий Безір. дані для рендерингу, генерації SVG або геометрії зіткнення.
from aspose_font.loader import FontLoader
from aspose_font import CurveTo, LineTo
font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(ord("A"))
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
curves = [cmd for cmd in glyph.path.commands if isinstance(cmd, CurveTo)]
print(f"Cubic Bezier segments in 'A': {len(curves)}")
Швидкий старт
pip install aspose-font>=1.0.0
from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
# Load, inspect, and clean a font in five lines
font = FontLoader.open("MyFont.ttf")
print(font.font_family, font.num_glyphs, "glyphs")
cleaned = FontCleaner.clean_for_web(font)
print("Font cleaned for web delivery")
Підтримувані формати
| Format | Extension | Read | Write |
|---|---|---|---|
| TTF | .ttf | ✓ | ✓ |
| OTF | .оф | ✓ | ✓ |
| CFF | .cff | ✓ | ✓ |
| TYPE1 | .pfb / .pfa | ✓ | ✓ |
| WOFF | .- Я не знаю. | ✓ | ✓ |
| WOFF2 | .woff2 | ✓ | ✓ |
| EOT | . ніщо | ✓ | ✓ |
Відкритий код та ліцензія
Aspose.Font FOSS for Python is MIT licensed. The source is on GitHub at aspose-font-foss/Aspose.Font-FOSS-for-Python (Фонт для Python) і упаковка знаходиться на PyPI як aspose-font.