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

Aspose.Font FOSS за 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 или по-нова и не изисква външни OS шрифтови библиотеки или native зависимости.

Библиотеката предоставя чист 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 проверки, които проверяват името на шрифтовото семейство и броя на глифовете
  • Услуги за приемане на уеб шрифтове, които приемат множество входни формати
  • Инструменти за проектиране на шрифтове, които показват метаданни без настолен runtime

Достъп до глифове и инспекция на пътеки

  • Извличане на глифове по 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

Frequently Asked Questions

Какво е 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) предоставят по-фин контрол.

  

Ресурси за поддръжка и обучение

 Български