code: def draw_text(
      self, gc, x, y, s, prop, angle, ismath=False, mtext=None
  ):
      # docstring inherited
  
      # Note: (x, y) are device/display coords, not user-coords, unlike other
      # draw_* methods
      if ismath:
          self._draw_mathtext(gc, x, y, s, prop, angle)
  
      else:
          ctx = gc.ctx
          ctx.new_path()
          ctx.move_to(x, y)
  
          ctx.save()
          ctx.select_font_face(*_cairo_font_args_from_font_prop(prop))
          ctx.set_font_size(
              self.points_to_pixels(prop.get_size_in_points())
          )
          opts = cairo.FontOptions()
          opts.set_antialias(gc.get_antialiased())
          ctx.set_font_options(opts)
          if angle:
              ctx.rotate(np.deg2rad(-angle))
          ctx.show_text(s)
          ctx.restore()
  
imports: import functools
  import gzip
  import math
  import numpy
  from ..None import _api, cbook, font_manager
  from matplotlib.backend_bases import _Backend, FigureCanvasBase, FigureManagerBase, GraphicsContextBase, RendererBase
  from matplotlib.font_manager import ttfFontProperty
  from matplotlib.path import Path
  from matplotlib.transforms import Affine2D
label_desc: Use image node_id 7 for calling the RendererCairo obj's underlying member method code with example usage: obj.draw_text(gc, x, y, s, prop, angle, ismath, mtext) without return types