diff --git a/util/hb-test.c b/util/hb-test.c index 91f9f6770..e48828f89 100644 --- a/util/hb-test.c +++ b/util/hb-test.c @@ -333,21 +333,24 @@ paint_image (hb_paint_funcs_t *funcs, read_blob_data_t r; cairo_surface_t *surface; cairo_pattern_t *pattern; - cairo_matrix_t m; - if (format != HB_PAINT_IMAGE_FORMAT_PNG) + if (format != HB_PAINT_IMAGE_FORMAT_PNG || !extents) return; r.blob = blob; r.offset = 0; surface = cairo_image_surface_create_from_png_stream (read_blob, &r); + int width = cairo_image_surface_get_width (surface); + int height = cairo_image_surface_get_width (surface); pattern = cairo_pattern_create_for_surface (surface); - cairo_matrix_init_scale (&m, 1, -1); - cairo_matrix_translate (&m, - extents ? extents->x_bearing : 0, - extents ? - extents->y_bearing : 0); - cairo_pattern_set_matrix (pattern, &m); + cairo_pattern_set_extend (pattern, CAIRO_EXTEND_PAD); + + cairo_matrix_t matrix = {(double) width, 0, 0, (double) height, 0, 0}; + cairo_pattern_set_matrix (pattern, &matrix); + + cairo_translate (data->cr, extents->x_bearing, extents->y_bearing); + cairo_scale (data->cr, extents->width, extents->height); cairo_set_source (data->cr, pattern); cairo_paint (data->cr);