在Python中呈现TrueType/OpenType字体的字形之前,如何自定义它们?

2024-09-26 18:13:29 发布

您现在位置:Python中文网/ 问答频道 /正文

对于TrueType/OpenType字体,字形(字符)由anchor points and Bézier curves定义。要生成文本图像,需要将字形渲染为数字图像,即像素贴图,此过程称为光栅化或渲染

在Python中,如何在光栅化之前编辑/修改这些定位点?是否有FOSSPython解决方案用于此目的

在某些情况下,能够对glyph的锚定点进行操作是很有趣的,因为它可以确保最大的图像保真度。可以考虑多种操作,例如

  • 以少量随机单位随机移动字形的每个定位点,从而创建该字形的扭曲版本。我确实发现a Python software能够做到这一点,不幸的是,这个软件不是自由和开放源码软件
  • perspective transformation应用于整个图示符。当然,透视变换可以在光栅化后应用于像素贴图,使用标准的图像处理库,如OpenCV(warpPerspective()documentation)、PIL等,但我希望在光栅化之前这样做
  • 扭曲字形的一部分,例如,在不修改上升部分的情况下平移descender part of a glyph中的定位点
  • 等等

一旦我们可以直接修改每个锚定点的坐标,所有这些操作都是可行的。但我没能找到一个允许这样做的FOSS Python包

FreeType font rasterization engine(和its Python binding)允许对锚定点应用linear transformation,但我没有找到如何直接编辑/修改锚定点。这在FreeType上可能吗?如果没有,是否有一个FOSS Python包允许这样做


Tags: 图像编辑软件光栅情况像素fossfreetype

热门问题