summaryrefslogtreecommitdiff
path: root/graphics/java
diff options
context:
space:
mode:
author Seigo Nonaka <nona@google.com> 2024-12-05 17:21:49 +0900
committer Seigo Nonaka <nona@google.com> 2024-12-05 17:21:49 +0900
commit4db1ae80ddf2d3e63e9a006bb399042f7dc3e6c3 (patch)
treeae864e283765af41f5ca9ed641285668e207c91b /graphics/java
parentdbe81bbba981a253c3381d92da91792d4921944a (diff)
Make setFontVariationSettings work with weight adjustment
If setFontVariationSettings is called, the font weight adjustment no longer adjusted except for the synthetic bolding. From target SDK 36, because the font variation settings is stored in the Paint class, it is possible to adjust the weight at runtime without using synthetic bolding. Bug: 380202452 Test: atest CtsGraphicsTestCases Test: atest CtsTextTestCases Test: atest minikin_tests Test: manually done Flag: com.android.text.flags.typeface_redesign_readonly Change-Id: Ie591086b48d538bc4e554854d9d4a7d04a6b398a
Diffstat (limited to 'graphics/java')
-rw-r--r--graphics/java/android/graphics/Paint.java18
1 files changed, 16 insertions, 2 deletions
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java
index 9bf4d65e1865..2e885145819c 100644
--- a/graphics/java/android/graphics/Paint.java
+++ b/graphics/java/android/graphics/Paint.java
@@ -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;