From b4466bc9140bdacbd93eb6ed76f9e4e749a2bae2 Mon Sep 17 00:00:00 2001 From: Andrea Canciani Date: Wed, 16 Mar 2011 17:12:59 +0100 Subject: [PATCH] quartz: Fix y glyph advance The advances must be transformed by the "quartz inverse scale", i.e. (scale_inverse * scale(1,-1)). Fixes show-glyph-advance. --- src/cairo-quartz-surface.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/cairo-quartz-surface.c b/src/cairo-quartz-surface.c index 113674f03..6dd5aca14 100644 --- a/src/cairo-quartz-surface.c +++ b/src/cairo-quartz-surface.c @@ -2579,12 +2579,19 @@ _cairo_quartz_surface_show_glyphs_cg (void *abstract_surface, } } + /* scale(1,-1) * scaled_font->scale */ textTransform = CGAffineTransformMake (scaled_font->scale.xx, scaled_font->scale.yx, -scaled_font->scale.xy, -scaled_font->scale.yy, 0, 0); - _cairo_quartz_cairo_matrix_to_quartz (&scaled_font->scale_inverse, &invTextTransform); + + /* scaled_font->scale_inverse * scale(1,-1) */ + invTextTransform = CGAffineTransformMake (scaled_font->scale_inverse.xx, + -scaled_font->scale_inverse.yx, + scaled_font->scale_inverse.xy, + -scaled_font->scale_inverse.yy, + 0.0, 0.0); CGContextSetTextMatrix (surface->cgContext, CGAffineTransformIdentity);