[reportlab-users] Using TTFs with non-ASCII characters
Wed, 3 Jul 2002 11:42:22 +0200
On Wed, Jul 03, 2002 at 11:14:31AM +0200, Dinu Gherman wrote:
> Gherman <email@example.com>:
> > > Fixed:
> > Works great! I've updated my sample file:
> BTW, what is the canonical way to make non-ASCII characters
> appear as expected in strings "automatically"?
Use UTF-8. ;)
> I've tried
> using something like this:
> c.drawString(100, y, u"äöüÄÖÜßé?")
Unicode strings are not present in Python 1.5.2. With 2.0 or later you
c.drawString(100, y, any_unicode_string.encode("UTF-8"))
I'm not sure what happens if you write u"text in some 8-bit encoding" --
what encoding will be chosen by Python interpret those 8-bit characters?
To be safe you could write
c.drawString(100, y, unicode("Latin-1 text", "ISO-8859-1").encode("UTF-8"))
It might be easier to use UTF-8 directly.
I wonder... is there a way to support Unicode string literals on Python
2+ in a way that's compatible with Python 1.5.2? Basically you'd need
to change parse_utf8() in ttfonts.py to something like
if type(string) is UnicodeType:
return map(ord, string)
and above that declare
from types import UnicodeType
# Old Python has no Unicode strings
UnicodeType = None
Not tested, but you get the idea. Then you could just pass Unicode
strings to drawString if you have Python 2+.
(Platypus would need a couple of additional lines to cope with Unicode
Most security experts REALLY believe in firewalls. The expect that, when they
die, arrive at the great firewall in the sky where Saint Peter is running a
default policy of REJECT.
--- Sander Plomp