[Image-SIG] Putting a unicode string on an ImageDraw canvas

Thomas Larsen Wessel mrvelle at gmail.com
Mon Jan 10 14:06:01 CET 2011

People are telling me that PIL supports unicode strings, does it? And if
yes, why does the following not work:

import ImageFont, Image, ImageDraw
s = u'\u0623\u0636\u0641'
im = Image.new('RGB', (200,200))
draw = ImageDraw.Draw(im)
draw.text((40,40), s) #fails

It results in the following exception:

Traceback (most recent call last):
  File "buffer.py", line 9, in <module>
    draw.text((40,40), s) #fails
  File "/usr/lib/python2.6/dist-packages/PIL/ImageDraw.py", line 267, in
    mask = font.getmask(text, self.fontmode)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2:
ordinal not in range(128)

So how, do I put this unicode string on the canvas?

Thanks in advance, Thomas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/image-sig/attachments/20110110/85b2cd5b/attachment.html>

More information about the Image-SIG mailing list