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
This commit is contained in:
Jonathan Kew 2010-05-07 10:16:32 -04:00 committed by Jeff Muizelaar
parent c5d9643417
commit 0068d9b5cd

View file

@ -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)