首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Bidi文本打印到图像

将Bidi文本打印到图像
EN

Stack Overflow用户
提问于 2011-04-20 22:58:44
回答 2查看 990关注 0票数 5

我有一些使用PIL的Python代码,可以将UTF-8字符打印到图像中。

我注意到,对于像阿拉伯语这样的Bidi脚本,相同的代码无法正确地连接字符(只选择初始形式,不使用中间和最终形式)

有谁能推荐一个解决这个问题的方法或技术吗?

EN

回答 2

Stack Overflow用户

发布于 2013-04-13 01:07:58

如果你想继续使用PIL,可以在pybidi中使用pyarabicshaping,或者你可以考虑切换到使用HarfBuzz进行文本整形的pangocairo

票数 1
EN

Stack Overflow用户

发布于 2014-09-08 22:55:44

我所做的是: Python +,魔杖,(Python Lib),+arabic_reshaper(Python Lib),+bidi.algorithme(Python Lib)。这同样适用于PIL/,您需要使用arabic_reshaperbidi.algorithm,并将生成的文本传递给draw.text((10, 25), artext, font=font)

代码语言:javascript
复制
from wand.image import Image as wImage
from wand.display import display as wdiplay
from wand.drawing import Drawing
from wand.color import Color
import arabic_reshaper
from bidi.algorithm import get_display

reshaped_text = arabic_reshaper.reshape(u'لغةٌ عربيّة')
artext = get_display(reshaped_text)

fonts = ['C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\DroidNaskh-Bold.ttf',
         'C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\Thabit.ttf',
         'C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\Thabit-Bold-Oblique.ttf',
         'C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\Thabit-Bold.ttf',
         'C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\Thabit-Oblique.ttf',
         'C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\majalla.ttf',         
         'C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\majallab.ttf',

         ]
draw = Drawing()
img =  wImage(width=1200,height=(len(fonts)+2)*60,background=Color('#ffffff')) 
#draw.fill_color(Color('#000000'))
draw.text_alignment = 'right';
draw.text_antialias = True
draw.text_encoding = 'utf-8'
#draw.text_interline_spacing = 1
#draw.text_interword_spacing = 15.0
draw.text_kerning = 0.0
for i in range(len(fonts)):
    font =  fonts[i]
    draw.font = font
    draw.font_size = 40
    draw.text(img.width / 2, 40+(i*60),artext)
    print draw.get_font_metrics(img,artext)
    draw(img)
draw.text(img.width / 2, 40+((i+1)*60),u'ناصر test')
draw(img)
img.save(filename='C:\\PATH\\OUTPUT\\arabictest.png'.format(r))
wdiplay(img)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5732408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档