summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Kew <jfkthame@gmail.com>2010-05-07 10:16:32 -0400
committerJeff Muizelaar <jmuizelaar@mozilla.com>2010-05-07 10:16:32 -0400
commit0068d9b5cd09a7aa0c5a2ab4da97ca181934ff56 (patch)
tree2ba483e848680253c7b39814c16bae024930def8
parentc5d9643417690380c102bf0b6ad195cb264d3feb (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.c10
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)