if (utf8 == NULL) { extents->x_bearing = 0.0; extents->y_bearing = 0.0; extents->width = 0.0; extents->height = 0.0; extents->x_advance = 0.0; extents->y_advance = 0.0; return; }
cairo_text_extents (cairo_t                *cr,		    const unsigned char    *utf8,		    cairo_text_extents_t   *extents){    cairo_glyph_t *glyphs = NULL;    int nglyphs;    CAIRO_CHECK_SANITY (cr);    if (cr->status)	return;    cr->status = _cairo_gstate_text_to_glyphs (cr->gstate, utf8, &glyphs, &nglyphs);    CAIRO_CHECK_SANITY (cr);    if (cr->status) {	if (glyphs)	    free (glyphs);	return;    }	    cr->status = _cairo_gstate_glyph_extents (cr->gstate, glyphs, nglyphs, extents);    CAIRO_CHECK_SANITY (cr);        if (glyphs)	free (glyphs);}