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: підйом, спуск, інтервал між рядками, ем‑квадрат

Типові випадки використання

  • Конвеєри перевірки шрифтів та вилучення метаданих
  • 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 та 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()
  • Підмножина за списком ID гліфів з 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, pure-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) забезпечують більш точний контроль.

  

Ресурси Підтримки та Навчання

 Українська