使用python在图像中错误打印unicode文本

使用python在图像中错误打印unicode文本,python,unicode,utf-8,pillow,Python,Unicode,Utf 8,Pillow,我试图使用python图像库在图像中绘制unicode文本(孟加拉语)。但它没有正确地绘制文本。在孟加拉语中,有一些共同的字符,即“单词”চট্টগ্রাম" 包含几个关节字符如果我提取关节字符,它看起来像这样“চটটগরাম“。但我试图将图像绘制为原始单词,但它绘制的是单词的提取形式。有什么解决方案吗?”? 我使用的代码是 image = Image.new("RGBA", (width, height), text_color) draw = ImageDraw.Draw(image) fo

我试图使用python图像库在图像中绘制unicode文本(孟加拉语)。但它没有正确地绘制文本。在孟加拉语中,有一些共同的字符,即“单词”চট্টগ্রাম" 包含几个关节字符如果我提取关节字符,它看起来像这样“চটটগরাম“。但我试图将图像绘制为原始单词,但它绘制的是单词的提取形式。有什么解决方案吗?”? 我使用的代码是

image = Image.new("RGBA", (width, height), text_color)
draw = ImageDraw.Draw(image)
font = ImageFont.truetype(font_path, fontsize, encoding="unicode")

w, h = font.getsize(txt_date)

# xy – Top left corner of the text.
draw.text(((width-w)/2, (height-h)/2), txt_date), background_color, font=font)
img_resized = image.resize((width, height), Image.ANTIALIAS)

除了最基本的文本形式外,您的图像库可能没有任何关于绘制其他内容的线索。这意味着不支持强制上下文形式,如Indic脚本

为了使这样的文本看起来正确,您需要使用更复杂的文本布局库将其渲染成一个单独的图像,然后以某种方式将其合成到最终图像中(想必图像库可以处理这个问题)


是一个库,可以根据OpenType字体中指定的规则进行上下文相关的文本“整形”。我为它进行了Python 3绑定。

我有一个保存问题,但最后我解决了它,如果您解决了这个问题,请按照以下说明进行操作

sudo apt-get install libfreetype6-dev libharfbuzz-dev libfribidi-dev gtk-doc-tools
然后克隆git并转到该文件夹

跑,

卸载以前的枕头版本并安装

conda install pillow=6.0.0

你为什么要做
.encode('utf-8')。decode('utf-8')
?这应该会返回与开始时完全相同的字符串。实际上这只是一个尝试!我正在尝试它是否有效。首先,我尝试不进行编码和解码,也尝试使用.encode('utf-8')对文本进行编码。大多数字体库都不管用。正如前面的评论员所建议的,这可能与编码(将字符表示为字节)无关,而与字体呈现(将字符显示为图像)无关似乎错误的字形是由一个工具,它不知道显示abgIDA脚本的复杂性。考虑延迟你的问题,以获得专家的字体/字形问题的注意。
./install_raqm.sh
conda install pillow=6.0.0