code: def glyph_extents(self, glyphs):
          
          glyphs = ffi.new('cairo_glyph_t[]', glyphs)
          extents = ffi.new('cairo_text_extents_t *')
          cairo.cairo_glyph_extents(
              self._pointer, glyphs, len(glyphs), extents)
          self._check_status()
          return (
              extents.x_bearing, extents.y_bearing,
              extents.width, extents.height,
              extents.x_advance, extents.y_advance)
docs: Returns the extents for a list of glyphs.
  
          The extents describe a user-space rectangle
          that encloses the "inked" portion of the glyphs,
          (as it would be drawn by :meth:`show_glyphs`).
          Additionally, the :obj:`x_advance` and :obj:`y_advance` values
          indicate the amount by which the current point would be advanced
          by :meth:`show_glyphs`.
  
          :param glyphs:
              A list of glyphs.
              See :meth:`show_text_glyphs` for the data structure.
          :returns:
              A ``(x_bearing, y_bearing, width, height, x_advance, y_advance)``
              tuple of floats.
              See :meth:`text_extents` for details.