From 0068d9b5cd09a7aa0c5a2ab4da97ca181934ff56 Mon Sep 17 00:00:00 2001 From: Jonathan Kew Date: Fri, 7 May 2010 10:16:32 -0400 Subject: [PATCH] quartz: Work around bad glyph extents returned by CoreGraphics for empty glyphs in Al Bayan font This resolves the problem by checking for the crazy glyph bbox result from CoreGraphics, and replacing it with an empty rect. From https://bugzilla.mozilla.org/show_bug.cgi?id=534260 --- src/cairo-quartz-font.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/cairo-quartz-font.c b/src/cairo-quartz-font.c index ca68dc25b..537cfff0f 100644 --- a/src/cairo-quartz-font.c +++ b/src/cairo-quartz-font.c @@ -420,6 +420,16 @@ _cairo_quartz_init_glyph_metrics (cairo_quartz_scaled_font_t *font, !CGFontGetGlyphBBoxesPtr (font_face->cgFont, &glyph, 1, &bbox)) goto FAIL; + /* broken fonts like Al Bayan return incorrect bounds for some null characters, + see https://bugzilla.mozilla.org/show_bug.cgi?id=534260 */ + if (unlikely (bbox.origin.x == -32767 && + bbox.origin.y == -32767 && + bbox.size.width == 65534 && + bbox.size.height == 65534)) { + bbox.origin.x = bbox.origin.y = 0; + bbox.size.width = bbox.size.height = 0; + } + status = _cairo_matrix_compute_basis_scale_factors (&font->base.scale, &xscale, &yscale, 1); if (status)