1. Продукты
  2.   Aspose.Font
  3.   Aspose.Font FOSS for Python

Aspose.Font FOSS для Python

Открытая библиотека Python для загрузки, инспектирования, конвертации и создания подмножества файлов шрифтов TTF, OTF, CFF, WOFF, WOFF2 и EOT.

Работайте со шрифтами программно в Python

Aspose.Font FOSS для Python — это чисто-Python набор инструментов для загрузки, инспекции, конвертации, подмножества и предварительного просмотра шрифтов в форматах TrueType, OpenType, CFF, Type 1, WOFF, WOFF2 и EOT. Библиотека работает на Python 3.10 и новее и не требует внешних библиотек шрифтов ОС или нативных зависимостей.

Библиотека предоставляет чистый API для загрузки шрифтов через FontLoader, доступа к глифам через GlyphAccessor, конвертации форматов через FontConverter, веб‑оптимизации через FontCleaner, подстановки с учётом текста через FontSubsetter и анимации переменных шрифтов через AnimationPreviewBuilder. Метаданные шрифта, такие как имя, семейство, стиль, количество глифов, кодировка и метрики, доступны через базовый класс Font без ручного разбора бинарных таблиц.

Aspose.Font FOSS лицензирован по MIT и может быть установлен из PyPI одной командой pip install. Он подходит для инструментов проектирования шрифтов, веб‑шрифтовых конвейеров, движков рендеринга глифов и любого приложения Python, которому необходимо читать, преобразовывать или создавать файлы шрифтов. Для семейства корпоративных продуктов см. Aspose.Font — Enterprise Product Family.

Загрузка шрифтов и определение формата

  • Загружайте шрифты из файловых путей или необработанных байтов с помощью FontLoader.open() и FontLoader.load()
  • Автоматически определять формат: TTF, OTF, CFF, WOFF, WOFF2, EOT, Type 1
  • Получите метаданные шрифта через базовый класс Font: font_name, font_family, font_style, num_glyphs
  • Читать карты кодирования глифов с FontEncoding.unicode_to_gid() и get_all_codepoints()
  • Проверьте метрики шрифта с FontMetrics: подъем, спуск, межстрочный интервал, em-square

Типичные сценарии использования

  • Конвейеры проверки шрифтов и извлечения метаданных
  • CI/CD проверки, которые проверяют название семейства шрифтов и количество глифов
  • Сервисы загрузки веб‑шрифтов, принимающие несколько форматов ввода
  • Инструменты для разработки шрифтов, отображающие метаданные без настольного runtime

Доступ к глифам и инспекция контуров

  • Получайте глифы по ID или Unicode с помощью GlyphAccessor.get_glyph_by_id() и get_glyph_by_unicode()
  • Разрешить все глифы для строки с GlyphAccessor.get_glyphs_for_text()
  • Проверьте контурные пути глифов как вводимые команды: MoveTo, LineTo, QuadraticTo, CurveTo, ClosePath
  • Получите ограничивающий прямоугольник глифа, ширину продвижения и боковые отступы из свойств Glyph properties
  • Прочитать пары кернинга из KernPair для точных расчётов размещения текста

Типичные сценарии использования

  • Проверка охвата глифов для многоязычного отображения текста
  • Извлечение контура для SVG‑path или генерации вектора
  • Проверка таблицы кернинга в процессах контроля качества шрифтов
  • Исследование формирования текста и эксперименты с низкоуровневой вёрсткой

Конвертация шрифтов

  • Конвертировать между TTF, OTF, CFF, WOFF, WOFF2, EOT и Type 1 с FontConverter.convert()
  • Адаптировать типы кривых Безье с CurveAdapter.quad_to_cubic() и cubic_to_quads()
  • Преобразуйте пути глифов между квадратичными и кубическими с помощью convert_path_quad_to_cubic() и convert_path_cubic_to_quad()

Типичные сценарии использования

  • Веб‑шрифтовые конвейеры, преобразующие мастер‑шрифты TTF в WOFF2 для распространения
  • Инструменты типографской мастерской, экспортирующие в несколько целевых форматов из одного источника
  • Преобразование устаревшего EOT для обратно совместимых наборов веб‑шрифтов
  • Автоматизированная нормализация формата шрифтов в непрерывной интеграции

Подмножество шрифтов

  • Создайте подмножество шрифтов по Unicode‑тексту с помощью FontSubsetter.subset_by_text()
  • Подмножество по списку идентификаторов глифов с FontSubsetter.subset_by_gids()
  • Создавайте веб‑оптимизированные подмножества с FontSubsetter.subset_for_web()
  • Примените именованные предустановленные профили с FontSubsetter.subset_by_presets() и available_presets()
  • Проанализировать покрытие подмножества с помощью FontSubsetter.analyze_coverage() и analyze_web_coverage()

Типичные сценарии использования

  • Сокращение размера полезной нагрузки WOFF2 для веб‑страниц с ограниченными наборами символов
  • Создание языково‑специфических подмножеств шрифтов для i18n‑развертываний
  • Рабочие процессы лицензирования шрифтов, распределяющие подмножества по набору страниц
  • Оптимизация производительности для мобильных веб‑приложений

Веб‑оптимизация и предварительный просмотр переменных шрифтов

  • Удалить устаревшие таблицы и записи имён Mac с помощью FontCleaner.clean_for_web()
  • Проверьте совместимость осей переменного шрифта с CompatibilityChecker.compare_fonts() и compare_variable_instances()
  • Создайте анимированные APNG‑сканирования осей с AnimationPreviewBuilder.build_axis_sweep()
  • Создайте многошаговые пути анимации с AnimationPreviewBuilder.build_path()

Типичные сценарии использования

  • Страницы образцов шрифтов и интерактивные исследователи осей для типографий
  • CI pipelines, которые проверяют поведение переменных шрифтов перед распространением
  • Конвейеры веб‑производительности, которые удаляют необязательные бинарные таблицы
  • Миниатюры предварительного просмотра шрифтов для приложений управления шрифтами

Загрузить файл шрифта

Откройте шрифт TrueType или OpenType по пути к файлу и прочитайте его базовые метаданные.

from aspose_font.loader import FontLoader
font = FontLoader.open("Roboto-Regular.ttf")
print(font.font_name)    # e.g. "Roboto"
print(font.font_family)  # e.g. "Roboto"
print(font.num_glyphs)   # e.g. 1294

Получить доступ к глифам для текстовой строки

Разрешить все глифы для Unicode‑кода и исследовать их контурные пути.

from aspose_font.loader import FontLoader
font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(0x41)  # Unicode for A
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
for cmd in glyph.path.commands:
    print(type(cmd).__name__, cmd)

Создать анимацию сканирования оси переменного шрифта

Создайте анимированный APNG, который перемещает ось переменного шрифта от начального значения до конечного.

from aspose_font.loader import FontLoader
from aspose_font.animation import AnimationPreviewBuilder

font = FontLoader.open("Roboto-VariableFont_wdth,wght.ttf")

asset = AnimationPreviewBuilder.build_axis_sweep(
    font,
    axis_tag="wdth",
    start_val=75.0,
    end_val=100.0,
    frames=3,
    fps=10,
    text="A",
    size=10.0,
    bounce=True,
)

asset.write_to("roboto-sweep-wdth.png")

Очистить шрифт для веб‑развертывания

Удалите устаревшие таблицы и записи имён Mac, чтобы уменьшить размер бинарного файла перед обслуживанием в вебе.

from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
font = FontLoader.open("Roboto-Regular.ttf")
cleaned = FontCleaner.clean_for_web(font)
# DSIG, FFTM, meta tables removed; Mac platform name records stripped

Часто задаваемые вопросы

Что такое Aspose.Font FOSS для Python?

Это бесплатная библиотека с лицензией MIT, написанная на чистом Python, для загрузки, инспекции, конвертации и субсетинга шрифтов в форматах TTF, OTF, CFF, Type 1, WOFF, WOFF2 и EOT. Нативные зависимости не требуются.

Как установить Aspose.Font FOSS для Python?

Запустите pip install "aspose-font>=1.0.0". Системные зависимости не требуются. Библиотека работает на Windows, macOS и Linux с Python 3.10 или новее.

Какие форматы шрифтов поддерживаются?

FontLoader.open() читает TTF, OTF, CFF, Type 1, WOFF, WOFF2 и EOT. FontConverter.convert() записывает TTF, CFF, WOFF и WOFF2. EOT доступен только для чтения.

Доступен ли Font.to_bytes()?

Нет. Font.to_bytes() не реализован в базовом классе. Используйте FontConverter.convert(), чтобы создать новый Font в нужном формате.

Могу ли я выполнить субсетинг шрифта для веб‑доставки?

Да. FontSubsetter.subset_by_text(font, text) возвращает новый Font, содержащий только глифы, необходимые для данного текста. FontSubsetter.subset(font, codepoints) и subset_by_gids(font, gids) предоставляют более тонкий контроль.

  

Ресурсы поддержки и обучения

 Русский