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

时间:2016-12-21 20:46:54

标签: python python-3.x python-imaging-library pillow hebrew

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

对此有何建议?我尝试了一些字体,但他们似乎都有自己的问题。

这是我正在使用的代码。

from bidi.algorithm import get_display
from PIL import Image, ImageDraw, ImageFont

fonts = [
    ('Tammey FranckCLM', '/PATH/TO/FONT/TaameyFrankCLM-Medium.ttf'),
    ('Times New Roman', '/PATH/TO/FONT/Times New Roman.ttf'),
    ('Arial', '/PATH/TO/FONT/Arial.ttf')
]

im = Image.new(mode='RGBA', size = (1000, 1000), color = (0, 0, 0, 255))
draw = ImageDraw.Draw(im)

height = 100
for f in fonts:
    fnt = ImageFont.truetype(f[1], 40)
    text = 'עָלֵינוּ'
    text_bidi = get_display(text, base_dir='R')
    draw.text((100, height), f[0], font=fnt, fill=(255, 255, 255))
    draw.text((500, height), text_bidi, font=fnt, fill=(255, 255, 255))
    height += 70
im.show()
im.close()

注意,由于文本方向,文本在SO上以正确的方向呈现,但在终端中不呈现。在终端中它看起来像下面。我使用BiDi算法来反转这个词。

enter image description here

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

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

enter image description here

供参考,它应如下所示。

enter image description here

0 个答案:

没有答案