scaled = malloc (sizeof (cairo_font_t)); if (scaled == NULL) return CAIRO_STATUS_NO_MEMORY;  cairo_matrix_get_affine (&gstate->font_matrix, &scale.matrix[0][0], &scale.matrix[0][1], &scale.matrix[1][0], &scale.matrix[1][1], &dummy, &dummy);  _cairo_font_init (scaled, &scale, gstate->font); _cairo_unscaled_font_reference (gstate->font);  *font = scaled;
status = _cairo_gstate_ensure_font (gstate); if (status) return status;  *font = gstate->font;
_cairo_gstate_current_font (cairo_gstate_t *gstate, 			    cairo_font_t **font){    cairo_font_scale_t scale;    cairo_font_t *scaled;    double dummy;    scaled = malloc (sizeof (cairo_font_t));    if (scaled == NULL)	return CAIRO_STATUS_NO_MEMORY;    cairo_matrix_get_affine (&gstate->font_matrix,			     &scale.matrix[0][0],			     &scale.matrix[0][1],			     &scale.matrix[1][0],			     &scale.matrix[1][1],			     &dummy, &dummy);    _cairo_font_init (scaled, &scale, gstate->font);    _cairo_unscaled_font_reference (gstate->font);    *font = scaled;    return CAIRO_STATUS_SUCCESS;}