常见问题

许可与开源

许可模式是什么?

Aspose.Font FOSS for Python 在以下协议下发布 MIT 许可证. 您可以使用、复制、修改、合并、发布、分发、再授权,或在没有限制的情况下出售软件的副本。唯一的要求是将版权声明和许可证文本包含在所有副本或软件的实质性部分中。

我可以在商业产品中使用它吗?

是的。MIT 许可证允许在闭源和商业产品中使用。除了在您自己的库副本中保留版权头之外,没有版税或署名义务。 注意:the CffFont 类已更新(API_MODIFIED);现有代码可能需要进行少量调整。

是否有功能更丰富的付费版本?Aspose.Font FOSS 是开源版。FOSS 版涵盖 TTF、OTF、CFF、

Type 1、WOFF、WOFF2 和 EOT —— 覆盖了大多数实际字体工作。


安装与要求

如何为 Python 安装 Aspose.Font FOSS?

安装更新的包(需要 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 和支持 Python 3.10+ 的 PyPy 实现上运行。

是否存在任何本机或平台依赖?

否。Aspose.Font 用于 Python 的开源软件没有 C 扩展、没有系统字体,也没有平台 API。它在 Windows、macOS 和 Linux 上的表现完全相同。


格式支持

可以读取哪些字体格式?

FontLoader.open() 可以加载 TTF、OTF、CFF(独立)、Type 1、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 检测变体轴。

另请参阅

 中文