如何在 Python 中使用 CFF 字体

如何在 Python 中使用 CFF 字体

CFF(Compact Font Format)是用于 OpenType 字体以及独立的 .cff 文件中的轮廓格式。Aspose.Font FOSS 将 CFF 字体表示为 CffFont 实例,这些实例扩展了基础的 Font 类并公开 CFF 特有的数据。

分步指南

步骤 1:安装软件包

git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .

步骤 2:导入所需类

from aspose_font import FontLoader
from aspose_font import CffFont
from aspose_font import FontType

步骤 3:加载 CFF 字体

使用路径调用 FontLoader.open(),指向您的 .cff 文件。返回的对象是一个 CffFont 实例,提供字形计数、字体名称和 CFF 特定属性:

font = FontLoader.open("MyFont.cff")
print(font.font_name)
print(font.num_glyphs)

步骤 4:访问 Kern 对

将已加载的字体强制转换为 CffFont,然后调用 get_kern_pairs() 获取 kern 对记录列表。并非所有 CFF 字体都包含 kern 数据;在迭代之前检查其长度:

from aspose_font import FontLoader
from aspose_font import CffFont

cff_font: CffFont = FontLoader.open("MyFont.cff")
kern_pairs = cff_font.get_kern_pairs()
print(f"kern pairs: {len(kern_pairs)}")

步骤 5:将 CFF 转换为 TTF

将已加载的 CffFont 与 FontType.TTF 一起传递给 FontConverter.convert(),以生成一个新的 TtfFont,采用 TTF 轮廓格式:

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("MyFont.cff")
ttf = FontConverter.convert(font, FontType.TTF)

常见问题与解决方案

CffFont has no attribute cff_font — cff_font 是一个属性 TtfFont 返回嵌入的 CFF 数据,而不是在基类上 Font 类。对于独立的 CFF 文件,请使用 CffFont 直接。

空的字距对 — 并非所有 CFF 字体都包含字距对数据。请使用 len(cff_font.get_kern_pairs()) > 0 在迭代之前。

常见问题

CffFont 与 TtfFont 有什么区别?

CffFont 表示独立的 CFF 文件。TtfFont 表示 TTF/OTF 文件;OTF 可能嵌入可通过 ttf_font.cff_font 访问的 CFF 轮廓。

我可以将 CFF 字体转换为 WOFF2 吗?

是的。FontConverter.convert(font, FontType.WOFF2) 可用于任何 Font 实例,包括 CffFont。

另请参阅

 中文