scale.matrix[0][0] = 1.; scale.matrix[0][1] = 0.; scale.matrix[1][0] = 0.; scale.matrix[1][1] = 1.;
cairo_matrix_get_affine (scale, &sc.matrix[0][0], &sc.matrix[0][1], &sc.matrix[1][0], &sc.matrix[1][1], &tx, &ty);
cairo_ft_font_create (FT_Library ft_library, FcPattern *pattern){        cairo_font_scale_t scale;    cairo_font_t *scaled;    cairo_ft_font_t *f = NULL;    ft_font_val_t *v = NULL;    FcPattern *dup;    scale.matrix[0][0] = 1.;    scale.matrix[0][1] = 0.;    scale.matrix[1][0] = 0.;    scale.matrix[1][1] = 1.;    scaled = malloc (sizeof (cairo_font_t));    if (scaled == NULL)	goto FAIL;    dup = FcPatternDuplicate(pattern);        if (dup == NULL)	goto FREE_SCALED;    v = _create_from_library_and_pattern (ft_library, pattern);    if (v == NULL)	goto FREE_PATTERN;    f = malloc (sizeof(cairo_ft_font_t));    if (f == NULL) 	goto FREE_VAL;    if (_cairo_unscaled_font_init (&f->base, &cairo_ft_font_backend))	goto FREE_VAL;    f->pattern = dup;    f->val = v;    _cairo_font_init (scaled, &scale, &f->base);    return scaled; FREE_VAL:    _destroy_font_val (v); FREE_PATTERN:    FcPatternDestroy (dup); FREE_SCALED:    free (scaled); FAIL:    return NULL;}