18

PIL を使用して多言語テキストを描画するのに問題があります。「ひらがな - ひらがな、히라가나」というテキストを描きたいとしましょう。しかし、PIL の ImageDraw.text() 関数は一度に 1 つのフォントしか使用しないため、このテキストを正しく描画できません。英語、日本語、および韓国語のフォントがすべて一緒に必要になるからです。

これまでのところ、複数のフォントを 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 に答える