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")

Підтримувані формати

FormatExtensionReadWrite
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.


Починати з

Пов’язані ресурси