From e88f8c37c740a317f11d407d48aaacdfdad56395 Mon Sep 17 00:00:00 2001 From: Raph Levien Date: Thu, 12 Jun 2014 09:19:03 -0700 Subject: [PATCH] Tighten requirements for fake bold The simple predicate for fake bold (2 or more grades darker than requested) was applying it to thin (100 weight) when normal was requested. This patch tightens the predicate to also require that the requested weight be in the bold range. Fix for bug 15588352 "sans-serif-thin doesn't work on lockscreen" Change-Id: Id9988bd149a9c8a7c943e3b221f7fb4b37fb6ddb (cherry picked from commit 0f8e4702a5aa8c43f3efa3643680dca9f45a1edd) --- engine/src/flutter/libs/minikin/FontFamily.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/engine/src/flutter/libs/minikin/FontFamily.cpp b/engine/src/flutter/libs/minikin/FontFamily.cpp index 9106f63c3e9..ad8120f752a 100644 --- a/engine/src/flutter/libs/minikin/FontFamily.cpp +++ b/engine/src/flutter/libs/minikin/FontFamily.cpp @@ -119,9 +119,11 @@ static int computeMatch(FontStyle style1, FontStyle style2) { } static FontFakery computeFakery(FontStyle wanted, FontStyle actual) { - // If desired weight is 2 or more grades higher than actual - // (for example, medium 500 -> bold 700), then select fake bold. - bool isFakeBold = (wanted.getWeight() - actual.getWeight()) >= 2; + // If desired weight is bold or darker, and 2 or more grades higher + // than actual (for example, medium 500 -> bold 700), then select + // fake bold. + int wantedWeight = wanted.getWeight(); + bool isFakeBold = wantedWeight >= 7 && (wantedWeight - actual.getWeight()) >= 2; bool isFakeItalic = wanted.getItalic() && !actual.getItalic(); return FontFakery(isFakeBold, isFakeItalic); }