summaryrefslogtreecommitdiff
path: root/graphics/java
diff options
context:
space:
mode:
author Seigo Nonaka <nona@google.com> 2025-01-09 14:44:16 +0900
committer Seigo Nonaka <nona@google.com> 2025-01-09 15:24:47 +0900
commit7e9ec53f14b031bd4be96ff2899a9838cb6ed88d (patch)
tree3fe617e1c7ed4f11dcfe0468874dca5831b03766 /graphics/java
parent4335f45e9855f72ad712913a1bb89defcc7e6e0b (diff)
Revive the behavior of setFontVariationSettings as of API35
We decided not to change the behavior of setFontVariationSettings to keep working Jetpack Compose. Bug: 361260253 Test: CtsWidgetTestCases Test: CtsTextTestCases Test: CtsGraphicsTestCases Test: minikin_tests Flag: com.android.text.flags.typeface_redesign_readonly Change-Id: Ia95dbd3fc5c39ff4290b8e87ea85c9dc07008a9e
Diffstat (limited to 'graphics/java')
-rw-r--r--graphics/java/android/graphics/Paint.java54
-rw-r--r--graphics/java/android/graphics/fonts/FontVariationAxis.java17
2 files changed, 18 insertions, 53 deletions
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java
index 50c95a9fa882..3378cc11d565 100644
--- a/graphics/java/android/graphics/Paint.java
+++ b/graphics/java/android/graphics/Paint.java
@@ -16,9 +16,9 @@
package android.graphics;
+import static com.android.text.flags.Flags.FLAG_DEPRECATE_ELEGANT_TEXT_HEIGHT_API;
import static com.android.text.flags.Flags.FLAG_FIX_LINE_HEIGHT_FOR_LOCALE;
import static com.android.text.flags.Flags.FLAG_LETTER_SPACING_JUSTIFICATION;
-import static com.android.text.flags.Flags.FLAG_DEPRECATE_ELEGANT_TEXT_HEIGHT_API;
import static com.android.text.flags.Flags.FLAG_VERTICAL_TEXT_LAYOUT;
import android.annotation.ColorInt;
@@ -34,7 +34,6 @@ 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;
@@ -2100,14 +2099,6 @@ public class Paint {
}
/**
- * A change ID for new font variation settings management.
- * @hide
- */
- @ChangeId
- @EnabledSince(targetSdkVersion = 36)
- public static final long NEW_FONT_VARIATION_MANAGEMENT = 361260253L;
-
- /**
* Sets TrueType or OpenType font variation settings. The settings string is constructed from
* multiple pairs of axis tag and style values. The axis tag must contain four ASCII characters
* and must be wrapped with single quotes (U+0027) or double quotes (U+0022). Axis strings that
@@ -2136,16 +2127,12 @@ public class Paint {
* </li>
* </ul>
*
- * <p>Note: If the application that targets API 35 or before, this function mutates the
- * underlying typeface instance.
- *
* @param fontVariationSettings font variation settings. You can pass null or empty string as
* no variation settings.
*
- * @return If the application that targets API 36 or later and is running on devices API 36 or
- * later, this function always returns true. Otherwise, this function returns true if
- * the given settings is effective to at least one font file underlying this typeface.
- * This function also returns true for empty settings string. Otherwise returns false.
+ * @return true if the given settings is effective to at least one font file underlying this
+ * typeface. This function also returns true for empty settings string. Otherwise
+ * returns false
*
* @throws IllegalArgumentException If given string is not a valid font variation settings
* format
@@ -2154,39 +2141,6 @@ 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) {
- FontVariationAxis[] axes =
- FontVariationAxis.fromFontVariationSettings(fontVariationSettings);
- if (axes == null) {
- nSetFontVariationOverride(mNativePaint, 0);
- mFontVariationSettings = null;
- return true;
- }
-
- long builderPtr = nCreateFontVariationBuilder(axes.length);
- for (int i = 0; i < axes.length; ++i) {
- 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;
- return true;
- }
final String settings = TextUtils.nullIfEmpty(fontVariationSettings);
if (settings == mFontVariationSettings
|| (settings != null && settings.equals(mFontVariationSettings))) {
diff --git a/graphics/java/android/graphics/fonts/FontVariationAxis.java b/graphics/java/android/graphics/fonts/FontVariationAxis.java
index d1fe2cdbcd77..30a248bb3e0e 100644
--- a/graphics/java/android/graphics/fonts/FontVariationAxis.java
+++ b/graphics/java/android/graphics/fonts/FontVariationAxis.java
@@ -23,6 +23,7 @@ import android.os.Build;
import android.text.TextUtils;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.regex.Pattern;
@@ -139,9 +140,19 @@ public final class FontVariationAxis {
*/
public static @Nullable FontVariationAxis[] fromFontVariationSettings(
@Nullable String settings) {
- if (settings == null || settings.isEmpty()) {
+ List<FontVariationAxis> result = fromFontVariationSettingsForList(settings);
+ if (result.isEmpty()) {
return null;
}
+ return result.toArray(new FontVariationAxis[0]);
+ }
+
+ /** @hide */
+ public static @NonNull List<FontVariationAxis> fromFontVariationSettingsForList(
+ @Nullable String settings) {
+ if (settings == null || settings.isEmpty()) {
+ return Collections.emptyList();
+ }
final ArrayList<FontVariationAxis> axisList = new ArrayList<>();
final int length = settings.length();
for (int i = 0; i < length; i++) {
@@ -172,9 +183,9 @@ public final class FontVariationAxis {
i = endOfValueString;
}
if (axisList.isEmpty()) {
- return null;
+ return Collections.emptyList();
}
- return axisList.toArray(new FontVariationAxis[0]);
+ return axisList;
}
/**