Рисование многоязычного текста с использованием PIL

У меня возникли проблемы при рисовании многоязычного текста с использованием PIL. Допустим, я хочу нарисовать текст - & quot; & # x3072; & # x304C; & # x306A; - Хирагана, & # xD788; & # xB77C; & # xAC00; & # xB098; & quot ;. Но функция PIL ImageDraw.text () принимает только один шрифт за раз, поэтому я не могу нарисовать этот текст правильно, потому что для этого требуются все шрифты - английский, японский и корейский.

До сих пор мне не повезло найти простое решение, такое как передача нескольких шрифтов в PIL, чтобы он мог выбрать подходящий шрифт для каждого символа Unicode (как это делают современные SDK или веб-браузеры).

Я думаю о том, что я должен перебирать каждый символ и сам определять, какой шрифт использовать для каждого символа. Но я не могу не думать, что должен быть более простой способ сделать это.

Я иду в правильном направлении? Есть ли более простой способ?

PS) Можно использовать другой язык или другую библиотеку изображений, если есть гораздо лучшее решение.

Ответы на вопрос(1)

Решение Вопроса

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

 09 июл. 2015 г., 19:09
@dda Ваш пример - именно то, что я искал: есть даже отдельные наборы шрифтов, которые охватывают несколько языков. Но этот, который вы показали, кажется, не входит в большинство дистрибутивов Linux. Знаете ли вы о других шрифтах, которые имеют такую большую поддержку?
 redism13 июл. 2012 г., 09:28
Да, я только что понял, что есть шрифты, которые могут покрывать многие символы Юникода. Но я действительно хотел применить разные шрифты для разных языков. (Лучший выбранный шрифт для каждого языка) На данный момент я используюttfquery проверить, содержится ли каждый символ Юникода в определенном шрифте или нет. Спасибо за Ваш ответ.
 10 июл. 2015 г., 00:30
Я бы предложил установить шрифт Code 2000.en.wikipedia.org/wiki/Code2000
 29 нояб. 2017 г., 05:22
Это сработало для меня сразу в python-2.7 (анаконда).+n!
 29 нояб. 2017 г., 05:25
@uhoh рад видеть пятилетний ответ, который еще может помочь! & # X263A;

Ваш ответ на вопрос