0

我正在尝试使用 Python 进行亚像素文本渲染,其中字符串中的字符在 Windows 上可以有不同的颜色。到目前为止我发现了什么:

  • PIL:PIL 无法生成亚像素渲染文本。它只能使用fontmode = "0"fontmode = "1"设置呈现别名文本。ImageFont.getsize它能够通过使用andImageFont.getoffset函数确定每个字符的位置并单独绘制每个字符来呈现每个字符具有不同颜色的文本。
  • pywin32 winapi bindings:我可以直接调用 GDI 功能。这意味着我可以创建呈现亚像素文本的字体。例如font_win32 = win32ui.CreateFont(font_desc),font_desc 包含密钥的位置:'quality':win32con.CLEARTYPE_NATURAL_QUALITY. 但是,要生成不同颜色的字符,我需要知道每个字符的大小,不包括下悬和悬垂。为此,我需要 winapiGetCharABCWidthsFloat函数。不幸的是,pywin32 没有该函数的绑定。
  • pangocairo绑定(pycairo 或 cairocffi):我对 pangocairo 有点困惑。阅读代码和谷歌搜索表明可以使用以下方式进行亚像素渲染:fo = cairo.FontOptions(); fo.set_antialias(cairo.ANTIALIAS_SUBPIXEL). 但是,这没有效果。

这是我迄今为止探索的三个方向,但没有成功。我是否在上述方法中遗漏了什么,或者我应该探索不同的方向。我可以用 C 编写整个东西并从 python 调用 C 代码。也许这是前进的道路?我有点担心最后一个选项的性能。

4

0 回答 0