我使用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算法来反转这个词。
这是输出的一个例子。您可以看到nikud(即字母下方和旁边的点)在每种字体中都不相同。字体在文本编辑器中正确呈现,但在PIL中则不行。
任何建议将不胜感激。谢谢!
供参考,它应如下所示。