您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用PIL(Python Imaging Library)用变音符号(“ nikud”,发声标记)编写文本

使用PIL(Python Imaging Library)用变音符号(“ nikud”,发声标记)编写文本

有趣的是,经过5年,在@Nasser Al-Wohaibi的大力帮助下,我意识到了如何做到这一点:

需要使用BIDI算法反转文本。

# -*- coding: utf-8 -*-
from bidi.algorithm import get_display
import PIL.Image, PIL.ImageFont, PIL.ImageDraw
img= PIL.Image.new("L", (400, 200))
draw = PIL.ImageDraw.Draw(img)
font = PIL.ImageFont.truetype( r"c:\windows\fonts\arial.ttf", 30)
t1 = u'????? ???!'
draw.text( (10,10), 'before BiDi :' + t1, fill=255, font=font)

t2 = get_display(t1)        # <--- here's the magic <---
draw.text( (10,50), 'after BiDi: ' + t2, fill=220, font=font)

img.save( 'bidi-test.png')

@Nasser的答案具有附加价值,该价值可能仅与阿拉伯语文本有关(阿拉伯字母根据其近义字母变化形状和相联性的字母,希伯来语中的所有字母均分开),因此仅比迪烟语部分与该问题有关。

在采样结果中,第二行是正确的形式,并且发声标记的位置正确。

谢谢@tzot的帮助+代码

提案:

希伯来语“ nikud”的不同字体行为的示例。并非所有字体的行为都相同:

示例PIL书面,比迪希伯来语文本(带nikud),不同字体

python 2022/1/1 18:30:54 有196人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶