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()Font: font_name, font_family, font_style, num_glyphsFontEncoding.unicode_to_gid() и get_all_codepoints()FontMetrics: подъем, спуск, межстрочный интервал, em-squareGlyphAccessor.get_glyph_by_id() и get_glyph_by_unicode()GlyphAccessor.get_glyphs_for_text()MoveTo, LineTo, QuadraticTo, CurveTo, ClosePathGlyph propertiesKernPair для точных расчётов размещения текстаFontConverter.convert()CurveAdapter.quad_to_cubic() и cubic_to_quads()convert_path_quad_to_cubic() и convert_path_cubic_to_quad()FontSubsetter.subset_by_text()FontSubsetter.subset_by_gids()FontSubsetter.subset_for_web()FontSubsetter.subset_by_presets() и available_presets()FontSubsetter.analyze_coverage() и analyze_web_coverage()FontCleaner.clean_for_web()CompatibilityChecker.compare_fonts() и compare_variable_instances()AnimationPreviewBuilder.build_axis_sweep()AnimationPreviewBuilder.build_path()Откройте шрифт 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
Это бесплатная библиотека с лицензией MIT, написанная на чистом Python, для загрузки, инспекции, конвертации и субсетинга шрифтов в форматах TTF, OTF, CFF, Type 1, WOFF, WOFF2 и EOT. Нативные зависимости не требуются.
Запустите 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() не реализован в базовом классе. Используйте FontConverter.convert(), чтобы создать новый Font в нужном формате.
Да. FontSubsetter.subset_by_text(font, text) возвращает новый Font, содержащий только глифы, необходимые для данного текста. FontSubsetter.subset(font, codepoints) и subset_by_gids(font, gids) предоставляют более тонкий контроль.