This is most significant on Windows XP without Cambria Math (from Microsoft Powerpoint 2007 Viewer, for example). The painting errors propagate causing most of the page to fail to paint. The parts of the page without the missing glyphs will paint on scrolling (if there are no missing glyphs in the dirty region). Noticeable on http://www.mozilla.org/projects/mathml/start.xhtml, for example. Similar issues can be reproduced on Linux by uninstalling (or using <rejectfont> on) enough fonts (including DejaVu *, Fixed, and Freefont).
Created attachment 294919 [details] [diff] [review] don't PopState twice PopState is now handled by AutoPushClipRect
Is it intentional that the mBoundingBox of gfxFont::RunMetrics doesn't include the ascent or descent of missing glyph boxes. Bug 407761 comment 18 points out that these are covered by the mAscent and mDescent fields, but doesn't mention mBoundingBox. If it is intentional, then this information could be used to detect when the glyphs are not found, if we dare to be that hacky.
If we used gfxTextRun then detecting missing glyphs is trivial, so that's really the way to go. mBoundingBox probably should include the ascent of missing glyph boxes (the font ascent). Missing glyph boxes always have zero descent though.
(In reply to comment #3) > mBoundingBox probably should include the ascent of missing glyph boxes (the > font ascent). Sounds sensible (and probably more consistent with previous points in history). It still seems better to handle zero-height glue during measuring rather than just bailing out at paint time, but that can be sorted out in bug 403559.
Checked in attachment 294919 [details] [diff] [review]: mozilla/layout/mathml/base/src/nsMathMLChar.cpp revision 1.135