问题描述
我正在尝试使用 Python 进行子像素文本渲染,其中字符串中的字符在 Windows 上可以具有不同的颜色。 到目前为止我发现了什么:
-
PIL:PIL 无法生成子像素渲染文本。它只能使用
fontmode = "0"
和fontmode = "1"
设置呈现别名文本。通过使用ImageFont.getsize
和ImageFont.getoffset
函数确定每个字符的位置并单独绘制每个字符,它能够呈现每个字符具有不同颜色的文本。 -
pywin32 winapi 绑定:我可以直接调用 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)
。但是,这没有任何效果。
这是我迄今为止探索的 3 个方向,但没有成功。我是否遗漏了上述方法中的某些内容,或者我应该探索不同的方向。我可以用 C 编写整个内容并从 python 调用 C 代码。也许这就是前进的方向?我有点担心最后一个选项的性能。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)