如何解决Windows 上的 Python 子像素文本渲染
我正在尝试使用 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 举报,一经查实,本站将立刻删除。