[cairo-commit] src/cairo-quartz-font.c

Jeff Muizelaar jrmuizel at kemper.freedesktop.org
Fri May 7 07:17:01 PDT 2010


 src/cairo-quartz-font.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

New commits:
commit 0068d9b5cd09a7aa0c5a2ab4da97ca181934ff56
Author: Jonathan Kew <jfkthame at gmail.com>
Date:   Fri May 7 10:16:32 2010 -0400

    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

diff --git a/src/cairo-quartz-font.c b/src/cairo-quartz-font.c
index ca68dc2..537cfff 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)


More information about the cairo-commit mailing list