def draw_unicode(self, gc, x, y, s, prop, angle):
if rcParams['<STR_LIT>']:<EOL><INDENT>self.set_color(*gc.get_rgb())<EOL>font = self._get_font_afm(prop)<EOL>fontname = font.get_fontname()<EOL>fontsize = prop.get_size_in_points()<EOL>scale = <NUM_LIT>*fontsize<EOL>thisx = <NUM_LIT:0><EOL>thisy = font.get_str_bbox_and_descent(s)[<NUM_LIT:4>] * scale<EOL>last_name = None<EOL>lines = []<EOL>for c in s:<EOL><INDENT>name = uni2type1.get(ord(c), '<STR_LIT>')<EOL>try:<EOL><INDENT>width = font.get_width_from_char_name(name)<EOL><DEDENT>except KeyError:<EOL><INDENT>name = '<STR_LIT>'<EOL>width = font.get_width_char('<STR_LIT:?>')<EOL><DEDENT>if last_name is not None:<EOL><INDENT>kern = font.get_kern_dist_from_name(last_name, name)<EOL><DEDENT>else:<EOL><INDENT>kern = <NUM_LIT:0><EOL><DEDENT>last_name = name<EOL>thisx += kern * scale<EOL>lines.append('<STR_LIT>'%(thisx, thisy, name))<EOL>thisx += width * scale<EOL><DEDENT>thetext = "<STR_LIT:\n>".join(lines)<EOL>ps = """<STR_LIT>"""gsave<EOL><DEDENT>y)f translate<EOL>f rotate<EOL>t)s<EOL>cals()<EOL>self._pswriter.write(ps)<EOL>
draw a unicode string.  ps doesn't have unicode support, so
        we have to do this the hard way