Created attachment 637700 [details] [diff] [review] patch, don't forget to check other styles of the first font in the group The optimization of gfxFontGroup::FindFontForChar in bug 764005 regressed the behavior of italicized Arabic text in font families such as Times New Roman and Arial on Windows, where the regular face includes Arabic characters but the italic face does not. This was previously fixed in bug 668813, but the optimization in 764005 bypassed that fix in the case where the "problem" family is the first in the font-group's list. An example that shows the problem is attachment 594315 [details] (from bug 668813); on Windows, this should render using Arial with synthetic italicization (oblique), but in current Nightly it falls back to a different font such as Microsoft Uighur. The patch here fixes the problem, while still allowing the vast majority of calls to take the optimized early-return path.
Created attachment 638699 [details] [diff] [review] patch v2, don't forget to check other styles of the first font in the group Here's a better version of the patch, factoring out a TryOtherFamilyMembers helper method.
Created attachment 638700 [details] [diff] [review] reftest And a reftest (for OS X and Windows) to go with it.
Comment on attachment 638699 [details] [diff] [review] patch v2, don't forget to check other styles of the first font in the group Review of attachment 638699 [details] [diff] [review]: ----------------------------------------------------------------- Thanks to bletch on IRC for drawing this to my attention
Oops, it looks like I failed to attach a name to the r? request - sorry! Thanks for picking this up. https://hg.mozilla.org/integration/mozilla-inbound/rev/9be67e1a7b4f https://hg.mozilla.org/integration/mozilla-inbound/rev/07cd3d70434c
Sorry, had to back out for failures in arial-arabic.html on Windows: https://tbpl.mozilla.org/?tree=Mozilla-Inbound&rev=07cd3d70434c https://hg.mozilla.org/integration/mozilla-inbound/rev/9d8425b8e1cd
Sigh - looks like a single-pixel line height discrepancy, for some reason - probably something about how we round metrics (there's an open bug on that, iirc). I've added an explicit line-height to the test/reference, and pushed to tryserver to see if that makes it happy. https://tbpl.mozilla.org/?tree=Try&rev=dd2dba88c9fb
...and that tryserver job burned on windows, apparently due to bug 776503. I've re-pushed a try job based on a slightly earlier inbound changeset, in hopes that might avoid the build issue and let us confirm that the new test passes. https://tbpl.mozilla.org/?tree=Try&rev=fcda56bb2f1c
Re-landed the patch (unchanged) and test (fixed). https://hg.mozilla.org/integration/mozilla-inbound/rev/1f86dfdcae06 https://hg.mozilla.org/integration/mozilla-inbound/rev/9c8987e78bad According to https://tbpl.mozilla.org/?tree=Try&rev=ccf74222523c, this version passes on Windows (using an explicit line height in the test, to avoid issues with rounding metrics from the font).
Comment on attachment 638699 [details] [diff] [review] patch v2, don't forget to check other styles of the first font in the group [Approval Request Comment] Bug caused by (feature/regressing bug #): 764005 User impact if declined: incorrect font selection for italic-styled Arabic text when font family is Arial or Times New Roman - we fall back to a different font family Testing completed (on m-c, etc.): patch has been in Nightly for several weeks; also has a reftest Risk to taking this patch (and alternatives if risky): minimal risk - just reinstates the fix from bug 668813 that was improperly bypassed by one of the optimized codepaths in 764005 String or UUID changes made by this patch: none