Часто задаваемые вопросы
Лицензирование и открытый исходный код
Какова модель лицензирования?
Aspose.Font FOSS для Python выпущен под MIT License. Вы можете использовать, копировать, модифицировать, объединять, публиковать, распространять, предоставлять сублицензии или продавать копии программного обеспечения без ограничений. Единственное требование — включить уведомление об авторском праве и текст лицензии во все копии или существенные части программного обеспечения.
Могу ли я использовать его в коммерческих продуктах?
Да. Лицензия MIT разрешает использование в закрытых исходных кодах и коммерческих продуктах. Нет требований по выплате роялти или указанию авторства, кроме сохранения заголовка с авторским правом в ваших копиях самой библиотеки. Примечание: the CffFont класс был обновлён (API_MODIFIED); существующий код может потребовать небольших корректировок.
Есть ли платная версия с дополнительными функциями?Aspose.Font FOSS — это версия с открытым исходным кодом. Выпуск FOSS охватывает TTF, OTF, CFF,
Type 1, WOFF, WOFF2 и EOT — они охватывают большинство реальных задач работы с шрифтами.
Установка и требования
Как установить Aspose.Font FOSS для Python?
Установите обновлённый пакет (требуется Python 3.10+):
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .Шрифт API был изменён (API_MODIFIED). Системные нативные зависимости не требуются.
Какие версии Python поддерживаются?
Python 3.10 и новее. Библиотека использует только возможности стандартной библиотеки, поэтому она работает в CPython и реализациях PyPy, поддерживающих Python 3.10+.
Есть ли какие-либо нативные или платформенные зависимости?
Нет. Aspose.Font FOSS для Python не имеет C-расширений, системных шрифтов и платформенных API. Он работает одинаково на Windows, macOS и Linux.
Поддержка форматов
Какие форматы шрифтов можно читать?
FontLoader.open() может загружать TTF, OTF, CFF (отдельно), Type1, WOFF, WOFF2 и EOT.
from aspose_font import FontLoader
font = FontLoader.open("MyFont.ttf")Какие форматы можно записывать?
FontConverter.convert() поддерживает конвертацию в TTF, CFF, WOFF и WOFF2. Полученный шрифт можно сохранить в виде байтов или в файловый поток.
Встроена ли декомпрессия WOFF2?
Да. Сжатие и декомпрессия WOFF2 с помощью Brotli реализованы полностью внутри библиотеки. Внешний пакет brotli не требуется.
API Usage
Как загрузить шрифт и просмотреть его метаданные?
Используйте FontLoader.open(), который возвращает экземпляр Font. Для шрифтов TTF/OTF приведите их к TtfFont, чтобы получить доступ к свойствам, специфичным для TTF:
from aspose_font import FontLoader
from aspose_font import TtfFont
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
print(ttf_font.font_name)
print(ttf_font.num_glyphs)Как конвертировать TTF в WOFF2?
Загрузите шрифт с помощью FontLoader.open(), затем передайте его в FontConverter.convert(), указав FontType.WOFF2 в качестве целевого формата. Возвращаемый объект представляет собой экземпляр Woff2Font, готовый к сериализации:
from aspose_font import FontLoader
from aspose_font.converter import FontConverter # internal API — may change between releases
from aspose_font import FontType
font = FontLoader.open("Roboto-Regular.ttf")
woff2 = FontConverter.convert(font, FontType.WOFF2)Как создать подмножество шрифта для веб-доставки?
Используйте FontSubsetter.subset_by_text() для создания нового шрифта, который содержит только глифы, необходимые для отображения указанной текстовой строки, уменьшая размер файла для встраивания в веб-страницу:
from aspose_font import FontLoader
from aspose_font import FontSubsetter
font = FontLoader.open("Roboto-Regular.ttf")
subset = FontSubsetter.subset_by_text(font, "Hello World")Как получить доступ к отдельным глифам?
Используйте Font.glyph_accessor, который реализует GlyphAccessor. Вызовите get_glyph_by_unicode() с кодовой точкой Unicode, чтобы получить соответствующий объект глифа и исследовать его метрики или контур:
from aspose_font import FontLoader
font = FontLoader.open("Roboto-Regular.ttf")
glyph = font.glyph_accessor.get_glyph_by_unicode(0x0041) # 'A'
print(glyph.glyph_id)Известные ограничения
Реализован ли Font.to_bytes()?
Абстрактный базовый класс Font.to_bytes(font_type) вызывает NotImplementedError, если его вызвать напрямую. Однако все конкретные классы шрифтов — TtfFont, CffFont, WoffFont, Woff2Font, EotFont и Type1Font — полностью реализуют to_bytes(). Загрузите шрифт с помощью FontLoader.open() и вызовите to_bytes() у полученного конкретного экземпляра. FontConverter.convert() также может создать новый шрифт в любом поддерживаемом целевом формате.
Все ли типы таблиц в TtfTableSet заполнены?
Только общие таблицы (head, hhea, maxp, os2, name, post, cmap, loca, hmtx, kern) доступны как именованные свойства в TtfTableSet. Другие таблицы можно прочитать как необработанные байты через TtfFont.get_table_bytes(tag).
Поддерживает ли библиотека создание переменных шрифтов?
Да. TtfFont.instantiate(coordinates) создает статический TtfFont с заданными координатами осей. Сначала используйте TtfFont.is_variable и TtfFont.axes для обнаружения осей вариаций.