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

Aspose.Font FOSS for 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 或更高版本上运行,且不需要外部操作系统字体库或本机依赖。

该库提供了一个简洁的 API,用于通过 FontLoader 加载字体,通过 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,1类型
  • 通过Font的基础类访问字体元数据: font_name, font_family , font_stylenum_glyphs
  • 阅读图形编码地图与 FontEncoding.unicode_to_gid()get_all_codepoints()
  • 检查字体指标的 FontMetrics:上升,下降,线间隙, em-平方

典型的用例

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

字符访问和路径检查

  • 通过ID或Unicode来检索图形,使用GlyphAccessor.get_glyph_by_id()get_glyph_by_unicode()
  • GlyphAccessor.get_glyphs_for_text()来解决字符串的所有图形.
  • 检查图形概述路径按输入的命令: MoveTo, LineTo , QuadraticTo,,CurveToClosePath.
  • 访问字符框界定,前方宽度和侧轴承从 Glyph 的属性
  • 读取 KernPair 的核心对,以准确的文本布局计算.

典型的用例

  • 多语言文本染的字符覆盖检查
  • 对于SVG路径或向量生成的概述提取
  • 在字体质量管理工作流中核准核心表
  • 文本设计研究和低层次布局实验

字体转换

  • 转换在 TTF,OTF ,CFF,WOFF ,WOff2,EOT 和类型 1 中使用 FontConverter.convert()
  • 适应Bezir曲线类型的CurveAdapter.quad_to_cubic()cubic_to_quads()
  • 转换图形路径在二次和立方的 convert_path_quad_to_cubic()convert_path_cubic_to_quad()

典型的用例

  • 转换TTF主字体为WOFF2的网络字型管道进行分发.
  • 从一个源头向多个格式目标导出的型号造工具
  • 对于后续兼容的Web字体堆进行传统EOT转换
  • 在连续集成中自动化字体格式标准化

字体组合

  • 字体的子集由Unicode文本与FontSubsetter.subset_by_text()
  • 按图形标识列表的子集,其中包含 FontSubsetter.subset_by_gids()
  • 使用 FontSubsetter.subset_for_web() 生成网页优化子集.
  • 使用FontSubsetter.subset_by_presets()available_presets()的命名预设配置文件.
  • FontSubsetter.analyze_coverage()analyze_web_coverage()来分析子集覆盖范围.

典型的用例

  • 减少具有有限字符集的网页 WOFF2 的有效载荷大小
  • 为i18n部署制作特定语言字体子集
  • 分发每页集子组的字体许可工作流程
  • 移动网络应用的性能优化

网络优化和变量字体预览

  • 带去旧表和Mac名字记录,使用FontCleaner.clean_for_web()
  • 检查变量字体轴与 CompatibilityChecker.compare_fonts()compare_variable_instances() 的兼容性.
  • 通过 AnimationPreviewBuilder.build_axis_sweep() 生成动画的APNG轴扫描
  • 使用 AnimationPreviewBuilder.build_path() 构建多步动画路径.

典型的用例

  • 字体样本页面和交互式轴探测器,用于类型造厂
  • 在发行前验证变量字体行为的CI管道
  • 放弃非必需的二进制表的网络性能管道
  • 字体管理应用程序的字符预览缩略图

载入字体文件

从文件路径打开TrueType或OpenTyme字体,并阅读其基本元数据.

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库用于加载,检查,转换和下置字体在TF,OTF ,CFF,类型1,WOFF , WOFF2和EOT格式.没有本地依赖性要求.

如何为 Python 安装 Aspose.Font FOSS?

运行 pip install "aspose-font>=1.0.0". 不需要系统级依赖. 该库可以在Windows,macOS和Linux上使用 Python 3.10或更新的版本.

支持哪些字体格式?

FontLoader.open()读取了TTF,OTF和CFF类型1,WOFF和Wowff2等.FontConverter.convert()写入了TTF,Cff和WoWff2.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) 提供更细粒度的控制。

  

支持和学习资源

 中文