使用 PIL(Python 图像库)绘制希伯来语文本时,niqqud 未正确对齐

mal*_*man 5 python hebrew python-imaging-library python-3.x

我正在使用 Pillow / PIL 用 nikud 绘制希伯来字母。我注意到 nikudim(nikud 的复数形式)没有正确对齐,有时会与其他字母重叠。

\n\n

有什么建议的修复方法吗?我尝试了几种字体,它们似乎都有自己的问题。

\n\n

这是我正在使用的代码。

\n\n
from bidi.algorithm import get_display\nfrom PIL import Image, ImageDraw, ImageFont\n\nfonts = [\n    (\'Tammey FranckCLM\', \'/PATH/TO/FONT/TaameyFrankCLM-Medium.ttf\'),\n    (\'Times New Roman\', \'/PATH/TO/FONT/Times New Roman.ttf\'),\n    (\'Arial\', \'/PATH/TO/FONT/Arial.ttf\')\n]\n\nim = Image.new(mode=\'RGBA\', size = (1000, 1000), color = (0, 0, 0, 255))\ndraw = ImageDraw.Draw(im)\n\nheight = 100\nfor f in fonts:\n    fnt = ImageFont.truetype(f[1], 40)\n    text = \'\xd7\xa2\xd6\xb8\xd7\x9c\xd6\xb5\xd7\x99\xd7\xa0\xd7\x95\xd6\xbc\'\n    text_bidi = get_display(text, base_dir=\'R\')\n    draw.text((100, height), f[0], font=fnt, fill=(255, 255, 255))\n    draw.text((500, height), text_bidi, font=fnt, fill=(255, 255, 255))\n    height += 70\nim.show()\nim.close()\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意,由于文本方向的原因,文本在 SO 上以正确的方向呈现,但在终端中则不然。在终端中,如下所示。我正在使用 BiDi 算法来反转单词。

\n\n

在此输入图像描述

\n\n

这是输出的示例。您可以看到每种字体的 nikud(即字母下面和旁边的点)并不相同。字体在文本编辑器中可以正确呈现,但在 PIL 中则不然。

\n\n

任何建议,将不胜感激。谢谢!

\n\n

在此输入图像描述

\n\n

作为参考,它应该如下所示。

\n\n

在此输入图像描述

\n