[reportlab-users] Re: reportlab-users digest, Vol 2 #116 - 3 msgs

sakesun reportlab-users@reportlab.com
Wed, 26 May 2004 10:14:15 +0700


> Tahoma contains almost all the world's languages.  If you have
> any other TrueType fonts which definitely contain Thai characters
> in UTF8, they should work.  

I've tried 'Arial Unicode MS', which is universal font, but it's not working.
 That's why I wonder what's special about 'Tahoma'

> 
> > And I also have no idea why I have to manually "encode('utf-8')" for 
> > every unicode text I draw.
> Yes, this sounds like a bug.  We should really accept unicode
> characters.  
> 
> Can you send us some 'escaped thai text' e.g. send the results of
>   u.'thai text goes here'.encode('utf-8'), and a link on the web
> to 'what it should look like' ? This will help us.

here's the code

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

pdfmetrics.registerFont(TTFont('Tahoma', 'c:\\Windows\\Fonts\\TAHOMA.TTF'))
pdfmetrics.registerFont(TTFont('Arial Unicode MS',
'c:\\Windows\\Fonts\\ARIALUNI.TTF'))

SAWASDEE = u'"\u0e2a\u0e27\u0e31\u0e2a\u0e14\u0e35"'

def hello(c, x, y, fontname, encoding=None):
    c.setFont(fontname, 14)
    string = SAWASDEE + u' means hello'
    if encoding:
        string = string.encode(encoding)
    try:
        c.drawString(x, y, string)
    except Exception, e:
        c.drawString(x, y, str(e))
    
c = canvas.Canvas("c:\\temp\\Hello.pdf", pagesize=A4)
hello(c, 100, 700, 'Tahoma')
hello(c, 100, 600, 'Tahoma', 'utf-8')    # this is the only line that works
hello(c, 100, 500, 'Arial Unicode MS')
hello(c, 100, 400, 'Arial Unicode MS', 'utf-8')
c.showPage()
c.save()