summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/hwui/hwui/MinikinUtils.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/libs/hwui/hwui/MinikinUtils.cpp b/libs/hwui/hwui/MinikinUtils.cpp
index e5fb75575ac3..7b45070af312 100644
--- a/libs/hwui/hwui/MinikinUtils.cpp
+++ b/libs/hwui/hwui/MinikinUtils.cpp
@@ -48,7 +48,14 @@ minikin::MinikinPaint MinikinUtils::prepareMinikinPaint(const Paint* paint,
minikinPaint.localeListId = paint->getMinikinLocaleListId();
minikinPaint.fontStyle = resolvedFace->fStyle;
minikinPaint.fontFeatureSettings = paint->getFontFeatureSettings();
- minikinPaint.fontVariationSettings = paint->getFontVariationOverride();
+ if (!resolvedFace->fIsVariationInstance) {
+ // This is an optimization for direct private API use typically done by System UI.
+ // In the public API surface, if Typeface is already configured for variation instance
+ // (Target SDK <= 35) the font variation settings of Paint is not set.
+ // On the other hand, if Typeface is not configured so (Target SDK >= 36), the font
+ // variation settings are configured dynamically.
+ minikinPaint.fontVariationSettings = paint->getFontVariationOverride();
+ }
minikinPaint.verticalText = paint->isVerticalText();
const std::optional<minikin::FamilyVariant>& familyVariant = paint->getFamilyVariant();