18

我在使用 PIL 绘制多语言文本时遇到问题。假设我要绘制文本 - “ひらがな - 平假名,히라가나”。但是 PIL 的 ImageDraw.text() 函数一次只需要一种字体,所以我无法正确绘制这个文本,因为它需要英文、日文和韩文字体。

到目前为止,我还没有找到一个简单的解决方案,比如将多种字体传递给 PIL,以便它可以为每个 Unicode 字符选择合适的字体(就像现代 SDK 或 Web 浏览器一样)。

我在想的是,我应该遍历每个字符,并自己确定每个字符使用哪种字体。但我不禁想到必须有一种更简单的方法来做到这一点。

我是否朝着正确的方向前进?没有更简单的方法吗?

PS)如果有更好的解决方案,可以使用其他语言或其他图像库。

4

1 回答 1

21

您只需要选择一个 Unicode 字体。例子:

import Image
import ImageFont, ImageDraw
image=Image.new("RGB",[320,320])
draw = ImageDraw.Draw(image)
a=u"ひらがな - Hiragana, 히라가나"
font=ImageFont.truetype("/Library/Fonts/Arial Unicode.ttf",14)
draw.text((50, 50), a, font=font)
image.save("a.png")

输出这个

于 2012-07-12T18:37:44.433 回答