code: def _print(self, char):
          
  
          # Don't make bugs where we try to print a screen. 
          assert len(char) == 1
  
          try:
              try:
                  # Python 3
                  char = self.decoder(bytes(char, self.encoding))[0]
              except TypeError:
                  # Python 2.x
                  char = self.decoder(char)[0]
  
          except UnicodeDecodeError:
              char = "?"
  
          if self.current_charset == "g0" and self.g0 is not None:
              char = char.translate(self.g0)
          elif self.current_charset == "g1" and self.g1 is not None:
              char = char.translate(self.g1)
  
          row = self.display[self.y]
          self.display[self.y] = row[:self.x] + char + row[self.x+1:]
  
          attrs = self.attributes[self.y]
          self.attributes[self.y] = attrs[:self.x] + [self.cursor_attributes] + \
                  attrs[self.x+1:]
  
          self.x += 1
  
          if self.x >= self.size[1]:
              # If this was the last column in a row, move the cursor to the
              # next row.
              self._linefeed()
docs: Print a character at the current cursor position and advance the
          cursor.