1. 产品
  2.   Aspose.Font
  3.   Aspose.Font FOSS for Python

Aspose.Font FOSS 用于 Python

开源 Python 库,用于加载、检查、转换和子集化 TTF、OTF、CFF、WOFF、WOFF2 和 EOT 字体文件。

在 Python 中以编程方式处理字体

Aspose.Font FOSS for Python 是一个纯-Python工具包,用于加载、检查、转换、子集化和预览 TrueType、OpenType、CFF、Type 1、WOFF、WOFF2 和 EOT 格式的字体。该库在 Python 3.10 或更高版本上运行,且不需要外部 OS 字体库或本机依赖。

该库通过 FontLoader 提供了简洁的字体加载 API,通过 GlyphAccessor 提供字形访问,通过 FontConverter 实现格式转换,通过 FontCleaner 进行网页优化,通过 FontSubsetter 实现文本感知子集化,并通过 AnimationPreviewBuilder 支持可变字体动画。字体元数据,如名称、系列、样式、字形计数、编码和度量,可通过 Font 基类访问,无需手动解析二进制表。

Aspose.Font FOSS 是 MIT 许可证的,并且可以通过单个 pip install 命令从 PyPI 安装。它适用于字体设计工具、网络字体流水线、字形渲染引擎,以及任何需要读取、转换或生成字体文件的 Python 应用程序。有关企业产品系列,请参阅 Aspose.Font — Enterprise Product Family

字体加载与格式检测

  • 使用 FontLoader.open()FontLoader.load() 从文件路径或原始字节加载字体
  • 自动检测格式: TTF, OTF, CFF, WOFF, WOFF2, EOT, Type 1
  • 通过 Font 基类访问字体元数据:font_namefont_familyfont_stylenum_glyphs
  • 使用 FontEncoding.unicode_to_gid()get_all_codepoints() 读取字形编码映射
  • 使用 FontMetrics 检查字体度量:上升、下降、行间距、em 方块

典型使用场景

  • 字体验证和元数据提取管道
  • CI/CD 检查验证字体族名称和字形计数
  • 接受多种输入格式的 Web 字体摄取服务
  • 无需桌面运行时即可显示元数据的字体设计工具

字形访问与路径检查

  • 使用 GlyphAccessor.get_glyph_by_id()get_glyph_by_unicode() 按 ID 或 Unicode 检索字形
  • 使用 GlyphAccessor.get_glyphs_for_text() 解析字符串中的所有字形
  • 检查字形轮廓路径作为键入的命令:MoveTo, LineTo, QuadraticTo, CurveTo, ClosePath
  • Glyph 属性访问字形的边界框、前进宽度和侧边距
  • KernPair 读取字距对,以进行准确的文本布局计算

典型用例

  • 多语言文本渲染的字形覆盖检查
  • SVG 路径或矢量生成的轮廓提取
  • 字体 QA 工作流中的字距表验证
  • Text shaping 研究与低层布局实验

字体转换

  • 使用 FontConverter.convert() 在 TTF、OTF、CFF、WOFF、WOFF2、EOT 和 Type 1 之间进行转换
  • 使用 CurveAdapter.quad_to_cubic()cubic_to_quads() 适配贝塞尔曲线类型
  • 使用 convert_path_quad_to_cubic()convert_path_cubic_to_quad() 在二次曲线和三次曲线之间转换字形路径

典型用例

  • 将 TTF 主字体转换为 WOFF2 进行分发的 Web 字体流水线
  • 从单一源导出到多种格式目标的字体铸造工具
  • 向后兼容的 Web 字体堆栈的传统 EOT 转换
  • 持续集成中的自动字体格式规范化

字体子集化

  • 使用 FontSubsetter.subset_by_text() 根据 Unicode 文本子集化字体
  • 使用 FontSubsetter.subset_by_gids() 按字形 ID 列表进行子集
  • 使用 FontSubsetter.subset_for_web() 生成网页优化的子集
  • 使用 FontSubsetter.subset_by_presets()available_presets() 应用命名的预设配置文件
  • 使用 FontSubsetter.analyze_coverage()analyze_web_coverage() 分析子集覆盖率

典型用例

  • 在字符集受限的网页中减小 WOFF2 负载大小
  • 为 i18n 部署生成语言特定的字体子集
  • 按页面集合分发子集的字体授权工作流
  • 移动网页应用的性能优化

网页优化与可变字体预览

  • 使用 FontCleaner.clean_for_web() 删除旧版表和 Mac 名称记录
  • 检查可变字体轴与 CompatibilityChecker.compare_fonts()compare_variable_instances() 的兼容性
  • 使用 AnimationPreviewBuilder.build_axis_sweep() 生成动画 APNG 轴扫掠
  • 使用 AnimationPreviewBuilder.build_path() 构建多步骤动画路径

典型用例

  • 字体样本页和面向字体铸造厂的交互式轴探索器
  • 在分发之前验证可变字体行为的 CI 流水线
  • 删除非必要二进制表的 Web 性能管道
  • 用于字体管理应用程序的字体预览缩略图

加载字体文件

从文件路径打开 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")

为网页部署清理字体

在 Web 提供之前,剥除遗留表和 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

常见问题

什么是 Aspose.Font FOSS 用于 Python?

它是一个免费、MIT 许可证的纯-Python库,用于加载、检查、转换和子集化 TTF、OTF、CFF、Type 1、WOFF、WOFF2 和 EOT 格式的字体。无需本地依赖。

我该如何安装 Aspose.Font FOSS 用于 Python?

运行 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() 可用吗?

不。Font.to_bytes() 在基类中未实现。使用 FontConverter.convert() 生成所需格式的新 Font

我可以对字体进行子集化以用于网页传输吗?

是的。FontSubsetter.subset_by_text(font, text) 返回一个仅包含给定文本所需字形的新 FontFontSubsetter.subset(font, codepoints)subset_by_gids(font, gids) 提供更细粒度的控制。

  

支持和学习资源

 中文