code: def text(self, x, y, txt=''):
          "Output a string"
          txt = self.normalize_text(txt)
          if (self.unifontsubset):
              txt2 = self._escape(UTF8ToUTF16BE(txt, False))
              for uni in UTF8StringToArray(txt):
                  self.current_font['subset'].append(uni)
          else:
              txt2 = self._escape(txt)
          s=sprintf('BT %.2f %.2f Td (%s) Tj ET',x*self.k,(self.h-y)*self.k, txt2)
          if(self.underline and txt!=''):
              s+=' '+self._dounderline(x,y,txt)
          if(self.color_flag):
              s='q '+self.text_color+' '+s+' Q'
          self._out(sf text(self, x, y, txt=''):
          "Output a string"
          txt = self.normalize_text(txt)
          if (self.unifontsubset):
              txt2 = self._escape(UTF8ToUTF16BE(txt, False))
              for uni in UTF8StringToArray(txt):
                  self.current_font['subset'].append(uni)
          else:
              txt2 = self._escape(txt)
          s=sprintf('BT %.2f %.2f Td (%s) Tj ET',x*self.k,(self.h-y)*self.k, txt2)
          if(self.underline and txt!=''):
              s+=' '+self._dounderline(x,y,txt)
          if(self.color_flag):
              s='q '+self.text_color+' '+s+' Q'
          self._out(s)
docs: Output a string