Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit def46f8b authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Make setFontVariationSettings work with weight adjustment" into main

parents a6186267 4db1ae80
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.widget;
import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static android.graphics.Paint.NEW_FONT_VARIATION_MANAGEMENT;
import static android.view.ContentInfo.FLAG_CONVERT_TO_PLAIN_TEXT;
import static android.view.ContentInfo.SOURCE_AUTOFILL;
import static android.view.ContentInfo.SOURCE_CLIPBOARD;
@@ -5542,7 +5543,21 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                        && fontVariationSettings.equals(existingSettings))) {
            return true;
        }
        boolean effective = mTextPaint.setFontVariationSettings(fontVariationSettings);
        final boolean useFontVariationStore = Flags.typefaceRedesignReadonly()
                && CompatChanges.isChangeEnabled(NEW_FONT_VARIATION_MANAGEMENT);
        boolean effective;
        if (useFontVariationStore) {
            if (mFontWeightAdjustment != 0
                    && mFontWeightAdjustment != Configuration.FONT_WEIGHT_ADJUSTMENT_UNDEFINED) {
                mTextPaint.setFontVariationSettings(fontVariationSettings, mFontWeightAdjustment);
            } else {
                mTextPaint.setFontVariationSettings(fontVariationSettings);
            }
            effective = true;
        } else {
            effective = mTextPaint.setFontVariationSettings(fontVariationSettings);
        }
        if (effective && mLayout != null) {
            nullLayouts();
+16 −2
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.app.compat.CompatChanges;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledSince;
import android.compat.annotation.UnsupportedAppUsage;
import android.graphics.fonts.FontStyle;
import android.graphics.fonts.FontVariationAxis;
import android.graphics.text.TextRunShaper;
import android.os.Build;
@@ -2141,6 +2142,14 @@ public class Paint {
     * @see FontVariationAxis
     */
    public boolean setFontVariationSettings(String fontVariationSettings) {
        return setFontVariationSettings(fontVariationSettings, 0 /* wght adjust */);
    }

    /**
     * Set font variation settings with weight adjustment
     * @hide
     */
    public boolean setFontVariationSettings(String fontVariationSettings, int wghtAdjust) {
        final boolean useFontVariationStore = Flags.typefaceRedesignReadonly()
                && CompatChanges.isChangeEnabled(NEW_FONT_VARIATION_MANAGEMENT);
        if (useFontVariationStore) {
@@ -2154,8 +2163,13 @@ public class Paint {

            long builderPtr = nCreateFontVariationBuilder(axes.length);
            for (int i = 0; i < axes.length; ++i) {
                nAddFontVariationToBuilder(builderPtr, axes[i].getOpenTypeTagValue(),
                        axes[i].getStyleValue());
                int tag = axes[i].getOpenTypeTagValue();
                float value = axes[i].getStyleValue();
                if (tag == 0x77676874 /* wght */) {
                    value = Math.clamp(value + wghtAdjust,
                            FontStyle.FONT_WEIGHT_MIN, FontStyle.FONT_WEIGHT_MAX);
                }
                nAddFontVariationToBuilder(builderPtr, tag, value);
            }
            nSetFontVariationOverride(mNativePaint, builderPtr);
            mFontVariationSettings = fontVariationSettings;