2012-07-10 21 views
8

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

これまでのところ、複数のフォントをPILに渡すなどの単純な解決策は見つからなかったので、各Unicode文字(現代のSDKやWebブラウザのように)に適切なフォントを選択できるようになりました。

私が考えているのは、各文字を繰り返して、各文字にどのフォントを使用するかを決める必要があるということです。しかし、私はこれを行う簡単な方法が必要であると考えるのを助けることができません。

私は正しい方向に行っていますか?簡単な方法はありませんか?

PS)もっと良い解決策がある場合は、別の言語や別の画像ライブラリを使用しても問題ありません。

答えて

9

ユニコードフォントを選択するだけです。例:

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") 

Outputs this

+1

はい、私は多くのユニコードのグリフをカバーすることができますフォントがあることを考え出しました。しかし、私が本当にやりたかったのは、異なる言語に異なるフォントを適用することでした。 (各言語に最適なフォント)今のところ、私は[ttfquery](http://ttfquery.sourceforge.net/)を使って、各ユニコードのグリフが特定のフォントに含まれているかどうかを確認しています。ご回答有難うございます。 – redism

+0

文字列から言語ファミリを抽出し、各言語ファミリの文字を1つずつクエリすることで、多くのテキストを描画することができます。 – dda

+0

私が知らなかったことを指摘していただきありがとうございます。 :) – redism

関連する問題