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

Aspose.Font FOSS for Python

Open-source 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-квадратный

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

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

Доступ к ссылкам и проверка маршрута

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

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

  • Проверка охвата глифов для многоязычного отображения текста.
  • Экстракция контуры для генерации пути или вектора SVG.
  • Валидация таблицы в рабочем процессе QA шрифтов
  • Исследование формования текста и экспериментация с малых размещениями

Перевод шрифтов

  • Преобразовать между TTF, OTF , CFF, WOFF , WOff2, EOT и Типом 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, проверяющие изменчивое поведение шрифтов перед распространением.
  • Веб-процессы производительности, которые не используют существенные бинарные таблицы.
  • Фонтовые миниатюры для приложений управления шрифтом

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

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

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?

Это бесплатная библиотека с чистой программой Python, лицензированная MIT для загрузки, проверки и преобразования шрифтов в форматах 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() пишет TFT, CFCF, WOFF и WOFL2. 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) предоставляют более тонкий контроль.

  

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

 Русский