用于读取字体的 Python 库
开源 Python API,使软件开发者和设计师能够轻松地操作、编辑和分析字体。
FontTools 在设计、品牌和传播中发挥着至关重要的作用,字体是视觉美学的基石。在数字时代,字体管理和操作变得日益重要。一个在开发者和设计师中广受欢迎的强大工具是 FontTools 库。FontTools 是一个多功能的开源 Python 库,提供了一套全面的字体处理工具,已成为字体爱好者、设计师、开发者和排版师的强大工具。其丰富的功能集合,加上基于 Python 的接口,使其成为字体相关任务和项目的极佳选择。
FontTools 是一个开源库,使软件开发者能够以编程方式与字体文件交互。它提供了广泛的字体操作、编辑和分析功能。它支持的特性包括以多种方式操作字体、基本字形编辑操作、增强的字体合并、删除单个字形、SFNT 表支持、识别和实现各种 SFNT 值、修改字形轮廓、调整字体度量、改变字体编码、添加或删除表格、在不同布局系统之间转换布局定义、查找和编辑名称字符串等。
FontTools 库使软件程序员能够以编程方式访问、编辑和分析字体文件的各个方面。它支持多种字体格式,包括 TrueType(TTF)、OpenType(OTF)、AFM,在一定程度上支持 Type 1,以及一些特定于 Mac 的格式,使其成为处理不同字体类型的多功能选择。FontTools 受益于充满活力且支持力度大的社区。该项目是开源的,且积极维护,定期更新并修复漏洞。无论您是自动化字体操作、微调字形,还是进行详细的字体分析,FontTools 都提供了完成目标所需的工具和灵活性,帮助您高效实现。
开始使用 FontTools
FontTools 需要 Python 3.8 或更高版本。推荐使用 PyPI 安装 FontTools。请使用以下命令进行顺畅安装。
通过 Python API 进行字体编辑与操作
开源的 FontTools 库非常易于使用,并且包含了多项重要功能,使软件开发者能够在 Python 应用中以各种方式操作字体。它允许开发者从字体文件中提取信息、修改字形轮廓、操作度量,甚至从头创建新字体,自动化重复的字体相关任务等。使用 FontTools 库,软件开发者还可以修改字形轮廓、调整度量、改变编码,并添加或删除表格。这种灵活性使设计师能够根据特定需求微调字体,或为他们的项目创建定制版本。
如何通过 Python API 修改轮廓路径?
path_orig = get_outline(font, "a")
startdraw(200,200)
paths = []
for i in path_orig:
if i[0] == 'moveTo':
path = draw.BezierPath()
path.moveTo((i[1][0]))
if i[0] == 'lineTo':
path.lineTo((i[1][0]))
if i[0] == 'qCurveTo':
path.qCurveTo(*(i[1]))
if i[0] == 'closePath':
path.closePath()
paths.append(path)
finalpath = paths[0].difference(paths[1])
finalpath.scale(0.3) #let's scale it down!
draw.fill(0.5)
draw.stroke(0)
draw.drawPath(finalpath)
show()
通过 Python API 操作字形
开源的 FontTools 库使软件开发者能够以编程方式轻松操作单个字形。它提供了访问和修改字形轮廓、度量和属性的方法,为用户提供了根据特定需求自定义字体的灵活性。无论是调整字距对、改变字形形状、添加连字,还是比较字形轮廓,FontTools 都简化了字形操作的过程。以下示例展示了如何比较两个字形的轮廓并使用 Python 代码显示结果。
如何使用 Python API 比较两个字形的轮廓?
from fontTools.ttLib import TTFont
from fontTools.pens.recordingPen import RecordingPen
font = TTFont(filename)
cmap = font.getBestCmap()
gs = font.getGlyphSet()
g1 = gs[cmap[ord("A")]]
g2 = gs[cmap[ord("B")]]
p1 = RecordingPen()
p2 = RecordingPen()
g1.draw(p1)
g2.draw(p2)
print(p1.value == p2.value)
通过 Python API 生成和转换字体
开源的 FontTools 库提供了生成新字体文件或将现有字体转换为不同格式的功能。此特性对需要创建自定义字体或为特定平台适配字体的设计师和开发者尤为有用。借助 FontTools,用户可以生成具有不同粗细、样式和变体的字体实例,或在 TrueType 与 OpenType 格式之间无缝转换。以下示例展示了如何使用 Python 命令将 CFF 格式转换为 CFF2 格式。