diff options
author | Jonathan Kew <jfkthame@gmail.com> | 2010-05-07 10:16:32 -0400 |
---|---|---|
committer | Jeff Muizelaar <jmuizelaar@mozilla.com> | 2010-05-07 10:16:32 -0400 |
commit | 0068d9b5cd09a7aa0c5a2ab4da97ca181934ff56 (patch) | |
tree | 2ba483e848680253c7b39814c16bae024930def8 | |
parent | c5d9643417690380c102bf0b6ad195cb264d3feb (diff) |
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
-rw-r--r-- | src/cairo-quartz-font.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/cairo-quartz-font.c b/src/cairo-quartz-font.c index ca68dc25..537cfff0 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) |