介绍
Aspose.Font FOSS 用于 Python 提供了一套连贯的类,涵盖所有常见的字体管理任务:以多种格式加载字体文件、读取元数据和字形数据、在格式之间转换、为网络交付进行子集化,以及清理二进制表以实现最佳文件大小。本文指南通过来自库已验证的 API 的可运行代码示例,逐一演示每项核心功能。
该包(aspose-font)采用 MIT 许可证,要求 Python 3.10 及以上,并且没有操作系统级别的字体库依赖。使用 pip install aspose-font>=1.0.0 进行安装。
关键特性
使用 FontLoader 加载字体
FontLoader 是所有字体加载操作的唯一入口。静态的 open() 方法接受文件路径(str 或 Path),并自动检测格式。load() 方法接受原始字节用于内存中工作流。两者均返回一个 Font 类型的对象,您可以立即检查。
from aspose_font.loader import FontLoader
# Load from file path — format detected automatically
font = FontLoader.open("Roboto-Regular.ttf")
# Load from raw bytes (e.g., from a network request or database blob)
with open("OpenSans-Regular.otf", "rb") as f:
font_bytes = f.read()
font = FontLoader.load(font_bytes)
通过 Font 基类读取字体元数据
加载后,Font 基类公开标准的元数据属性,无需您解析二进制字体表。属性 font_name、font_family、font_style 和 num_glyphs 覆盖了最常见的元数据需求。
from aspose_font.loader import FontLoader
font = FontLoader.open("NotoSans-Regular.ttf")
print(f"Name: {font.font_name}")
print(f"Family: {font.font_family}")
print(f"Style: {font.font_style}")
print(f"Glyphs: {font.num_glyphs}")
字形编码与访问
FontEncoding 将 Unicode 码点映射到字形 ID。对单个码点使用 unicode_to_gid(),或使用 get_all_codepoints() 枚举字体的完整覆盖范围。随后,GlyphAccessor 可通过 get_glyph_by_id() 按 ID 检索字形对象,或通过 get_glyph_by_unicode() 按 Unicode 检索,亦或通过 get_glyphs_for_text() 对文本字符串进行检索。
from aspose_font.loader import FontLoader
font = FontLoader.open("OpenSans-Regular.otf")
# Map Unicode code point to glyph ID
glyph_id = font.encoding.unicode_to_gid(0x41) # 'A'
print(f"Glyph ID for 'A': {glyph_id}")
# Retrieve glyph object
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
# Inspect path commands
for cmd in glyph.path.commands:
print(type(cmd).__name__, cmd)
使用 FontConverter 进行字体转换
FontConverter.convert() 将已加载的字体在支持的格式之间进行转换。传入源字体和目标格式标识,即可获得目标格式的新字体对象。该方法同时支持将 CFF、TTF、WOFF、WOFF2、EOT 和 Type 1 作为源或目标格式。
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
source = FontLoader.open("MyFont.ttf")
converted = FontConverter.convert(source, target_format="woff2")
使用 FontCleaner 进行网页优化
FontCleaner.clean_for_web() 删除网页字体交付中不必要的二进制表——具体为 DSIG、FFTM 和 meta——并剥离名称表中 Mac 平台 (platform_id=1) 的名称记录。结果是一个更精简的二进制文件,可在不影响轮廓或度量的情况下减少网络负载。可选的关键字参数允许您在需要时保留特定的表类型。
from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
font = FontLoader.open("Roboto-Regular.ttf")
# Strip all legacy tables and Mac name records (default)
cleaned = FontCleaner.clean_for_web(font)
# Preserve specific metadata tables if required
cleaned_selective = FontCleaner.clean_for_web(
font,
drop_metadata_tables=False,
drop_legacy_tables=True,
drop_mac_names=True,
)
字形路径检查
每个 Glyph 对象将其轮廓公开为一个 GlyphPath,其 commands 序列包含 MoveTo、LineTo、QuadraticTo、CurveTo 和 ClosePath 的类型实例。每个命令携带相关的坐标属性——例如,CurveTo 拥有 x1、y1、x2、y2、x、y——使您能够提取原始 Bézier 数据用于渲染、SVG 生成或碰撞几何。
from aspose_font.loader import FontLoader
from aspose_font import CurveTo, LineTo
font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(ord("A"))
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
curves = [cmd for cmd in glyph.path.commands if isinstance(cmd, CurveTo)]
print(f"Cubic Bezier segments in 'A': {len(curves)}")
快速入门
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
# Load, inspect, and clean a font in five lines
font = FontLoader.open("MyFont.ttf")
print(font.font_family, font.num_glyphs, "glyphs")
cleaned = FontCleaner.clean_for_web(font)
print("Font cleaned for web delivery")
支持的格式
| 格式 | 扩展名 | 读取 | 写入 |
|---|---|---|---|
| TTF | .ttf | ✓ | ✓ |
| OTF | .otf | ✓ | ✓ |
| CFF | .cff | ✓ | ✓ |
| TYPE1 | .pfb / .pfa | ✓ | ✓ |
| WOFF | .woff | ✓ | ✓ |
| WOFF2 | .woff2 | ✓ | ✓ |
| EOT | .eot | ✓ | ✓ |
开源与许可
Aspose.Font FOSS 用于 Python 采用 MIT 许可证。源码位于 GitHub,地址为 aspose-font-foss/Aspose.Font-FOSS-for-Python,软件包位于 PyPI,名称为 aspose-font。