This code is a little bit sketchy, but given that text-decoration
drawing is the same across modes we shouldn't have a quirks mode check
here (though there's a decent argument to be made that we shouldn't be
checking text decorations at all).
Since this affects only the *visual* overflow and not the *scrollable*
overflow, this patch should result in no behavior changes, since the
necessary visual overflow is added in
nsTextFrame::UnionAdditionalOverflow (since the text frame now draws the
shadows of text decorations, just like it draws text decorations
themselves).
This tests a situation similar to the one in the preference dialog in
bug 677091, though in this case the bug is exhibited by the label
overflowing its container (an hbox with a background) rather than
wrapping.
This changes the only remaining callers (in nsMathMLChar) to pass the
correct language, which they were not previously doing, which should
improve the correctness of font selection and also reduce the number of
unique font metrics objects requested (which helps nsFontCache
effectiveness). Those callers, however, remain the odd font users
within all of layout.
This fixes the one remaining caller (the debugging code to visually
display reflow counts!) to just pass a null language, since it's just
debugging code.
This makes these users (which are exceptions within layout, although
low-level enough that it won't matter for font inflation work) call
through to GetMetricsFor explicitly with the correct language, rather
than using the broken nsPresContext::GetMetricsFor and its
charset-detected language.
This improves the correctness of our behavior for 'ch' and 'ex' CSS
units when the font selection (or defaults) are language-dependent. It
should also reduce the number of unique sets of font metrics requested
(which helps nsFontCache effectiveness).
There was nothing wrong with SetFontFromStyle, except that it's just one
more API to think about (and one more API to audit and modify for font
inflation work to happen in bug 627842).
This changes a number of callers that were previously bypassing the use
of the correct language (with either no language or the charset-detected
language on the pres context via nsPresContext::GetMetricsFor) and/or
the correct user font set to pass the correct values, which should
improve the correctness of the behavior of whatever they were using the
fonts for, and also reduce the number of unique sets of font metrics
requested (which helps nsFontCache effectiveness).