2012-07-10 84 views
8

我無法繪製使用PIL多語言文本多語言文本。假設我想畫出文字 - 「ひらがな - 平假名,히라가나」。但是PIL的ImageDraw.text()函數一次只接受一種字體,所以我無法正確繪製這些文本,因爲它需要將英文,日文和韓文字體放在一起。繪圖使用PIL

到目前爲止,我沒有運氣找到像通過多種字體PIL,以便它可以爲每個Unicode字符相應的字體(像現代SDK或web瀏覽器做的)一個簡單的解決方案。

我在想什麼就是,我應該遍歷每個字符,並確定使用我自己的每個字符的字體。但我不禁想到必須有一個更簡單的方法來做到這一點。

我正朝着正確的方向走嗎?沒有更簡單的方法嗎?

PS),這是確定要使用其它語言或其它圖像庫中,如果有一個更好的解決方案。

回答

9

你只需要選擇一個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") 

Outputs this

+1

是的,我只是想通了,有哪些可以覆蓋很多的unicode字形字體。但我真正想做的是爲不同的語言應用不同的字體。 (爲每種語言選擇最好的字體)現在,我使用[ttfquery](http://ttfquery.sourceforge.net/)來檢查每個unicode的字形是否包含在某種字體中。感謝您的回答。 – redism 2012-07-13 07:28:12

+0

通過從字符串中提取語言族並查詢每個語言族的一個字符,您大概可以加快速度 - 如果您有很多要繪製的文本。 – dda 2012-07-13 08:37:32

+0

謝謝你指出我不知道的東西。 :) – redism 2012-07-18 01:19:37