[reportlab-users] Unicode box drawing chars

Luc Saffre reportlab-users@reportlab.com
Wed Nov 3 15:53:39 EST 2004


This is a multi-part message in MIME format.
--------------020302020003020203060606
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Hello,

I would like to help making Reportlab Toolkit able to create documents 
with Unicode Box Drawing characters (see 
http://www.unicode.org/charts/PDF/U2500.pdf).

After reading Andy's announcement (21.06.04) I hoped that there is now 
some mechanism to have non-Latin-1 characters inserted automagically as 
needed. But nope, the textOut() method of textobject.PDFTextObject 
doesn't even support Unicode strings (I am using a recent SVN snapshot 
with the pure-Python implementation, no compiled C modules).
I patched two files to fix this. After the patch I can pass at least 
Unicode strings, no more need to encode them back to Latin-1, see 
test.py in attached file.

I attached a zipped collection of files to explain what I mean:
- test.txt is a plain text encoded in DOS codepage 850
- test.py is a script supposed to create a pdf file from test.txt
- final.pdf is created with OpenOffice to demonstrate how the final 
result should look like.

Here is my patch:

in file pdfbase\pdfutils.py, line 128ff :

# old code:
#             _ESCAPEDICT={}
#             for c in range(0,256):
#                 if c<32 or c>=127:
#                     _ESCAPEDICT[chr(c)]= '\\%03o' % c
#                 elif c in (ord('\\'),ord('('),ord(')')):
#                     _ESCAPEDICT[chr(c)] = '\\'+chr(c)
#                 else:
#                     _ESCAPEDICT[chr(c)] = chr(c)
#             del c
#             #Michael Hudson donated this
#             def _escape(s):
#                 return join(map(lambda c, d=_ESCAPEDICT: d[c],s),'')

# my replacement:
             def _escape(s):
                 r = ""
                 for c in s:
                     o = ord(c)
                     if o<32 or o>=127:
                         r += '\\%03o' % o
                     elif c in ('\\','(',')'):
                         r+='\\'+c
                     else:
                        r+= c
                 return r


in file pdfbase\pdfmetrics.py, line 368ff:

# old code:
             for ch in text:
                 w = w + widths[ord(ch)]

# my replacement:
             for ch in text:
                 try:
                     w = w + widths[ord(ch)]
                 except IndexError,e:
                     pass


The bigger problem are the box characters, whose ord() is beyond #FF. 
Any hints or ideas? Any feedback welcome.

Luc


--------------020302020003020203060606
Content-Type: application/zip;
 name="boxchars.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="boxchars.zip"

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
AAADAAMAyQAAAJFTAAAAAA==
--------------020302020003020203060606--



More information about the reportlab-users mailing list