summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Seigo Nonaka <nona@google.com> 2024-11-09 13:52:03 +0900
committer Seigo Nonaka <nona@google.com> 2024-11-09 04:59:25 +0000
commit9e68020608cae50284766c5ddf9f186452036467 (patch)
tree42eaf9350580c2115ce98b6d7ea8dc8558805fbe
parentdca4852749fa1fbe56330fa6702416e96a4b2e41 (diff)
Change Typeface redesign flag to readonly
This redesign feature does not support runtime flag flip. Therefore, need to be fixed flag. Bug: 361260253 Bug: 377690190 Test: atest CtsWidgetTestCases Test: atest CtsTextTestCases Test: atest CtsGraphicsTestCases Test: atest minikin_tests Flag: com.android.text.flags.typeface_redesign_readonly Change-Id: I19e18636907646db0b8a9b9db097478e2b61d149
-rw-r--r--core/java/android/text/flags/flags.aconfig4
-rw-r--r--graphics/java/android/graphics/Paint.java2
-rw-r--r--graphics/java/android/graphics/text/PositionedGlyphs.java4
-rw-r--r--libs/hwui/FeatureFlags.h4
-rw-r--r--libs/hwui/hwui/MinikinUtils.h2
-rw-r--r--libs/hwui/jni/text/TextShaper.cpp6
6 files changed, 12 insertions, 10 deletions
diff --git a/core/java/android/text/flags/flags.aconfig b/core/java/android/text/flags/flags.aconfig
index 02923eda308e..f43f172d7d5b 100644
--- a/core/java/android/text/flags/flags.aconfig
+++ b/core/java/android/text/flags/flags.aconfig
@@ -163,10 +163,12 @@ flag {
}
flag {
- name: "typeface_redesign"
+ name: "typeface_redesign_readonly"
namespace: "text"
description: "Decouple variation settings, weight and style information from Typeface class"
bug: "361260253"
+ # This feature does not support runtime flag switch which leads crash in System UI.
+ is_fixed_read_only: true
}
flag {
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java
index 8bb32568ec5a..56bb0f0d12d5 100644
--- a/graphics/java/android/graphics/Paint.java
+++ b/graphics/java/android/graphics/Paint.java
@@ -2119,7 +2119,7 @@ public class Paint {
* @see FontVariationAxis
*/
public boolean setFontVariationSettings(String fontVariationSettings) {
- final boolean useFontVariationStore = Flags.typefaceRedesign()
+ final boolean useFontVariationStore = Flags.typefaceRedesignReadonly()
&& CompatChanges.isChangeEnabled(NEW_FONT_VARIATION_MANAGEMENT);
if (useFontVariationStore) {
FontVariationAxis[] axes =
diff --git a/graphics/java/android/graphics/text/PositionedGlyphs.java b/graphics/java/android/graphics/text/PositionedGlyphs.java
index ed17fdefcb53..43216ba6e087 100644
--- a/graphics/java/android/graphics/text/PositionedGlyphs.java
+++ b/graphics/java/android/graphics/text/PositionedGlyphs.java
@@ -133,7 +133,7 @@ public final class PositionedGlyphs {
@NonNull
public Font getFont(@IntRange(from = 0) int index) {
Preconditions.checkArgumentInRange(index, 0, glyphCount() - 1, "index");
- if (Flags.typefaceRedesign()) {
+ if (Flags.typefaceRedesignReadonly()) {
return mFonts.get(nGetFontId(mLayoutPtr, index));
}
return mFonts.get(index);
@@ -252,7 +252,7 @@ public final class PositionedGlyphs {
mXOffset = xOffset;
mYOffset = yOffset;
- if (Flags.typefaceRedesign()) {
+ if (Flags.typefaceRedesignReadonly()) {
int fontCount = nGetFontCount(layoutPtr);
mFonts = new ArrayList<>(fontCount);
for (int i = 0; i < fontCount; ++i) {
diff --git a/libs/hwui/FeatureFlags.h b/libs/hwui/FeatureFlags.h
index fddcf29b9197..5f84f47b725d 100644
--- a/libs/hwui/FeatureFlags.h
+++ b/libs/hwui/FeatureFlags.h
@@ -33,9 +33,9 @@ inline bool letter_spacing_justification() {
#endif // __ANDROID__
}
-inline bool typeface_redesign() {
+inline bool typeface_redesign_readonly() {
#ifdef __ANDROID__
- static bool flag = com_android_text_flags_typeface_redesign();
+ static bool flag = com_android_text_flags_typeface_redesign_readonly();
return flag;
#else
return true;
diff --git a/libs/hwui/hwui/MinikinUtils.h b/libs/hwui/hwui/MinikinUtils.h
index 1510ce1378d8..20acf981d9b9 100644
--- a/libs/hwui/hwui/MinikinUtils.h
+++ b/libs/hwui/hwui/MinikinUtils.h
@@ -73,7 +73,7 @@ public:
static void forFontRun(const minikin::Layout& layout, Paint* paint, F& f) {
float saveSkewX = paint->getSkFont().getSkewX();
bool savefakeBold = paint->getSkFont().isEmbolden();
- if (text_feature::typeface_redesign()) {
+ if (text_feature::typeface_redesign_readonly()) {
for (uint32_t runIdx = 0; runIdx < layout.getFontRunCount(); ++runIdx) {
uint32_t start = layout.getFontRunStart(runIdx);
uint32_t end = layout.getFontRunEnd(runIdx);
diff --git a/libs/hwui/jni/text/TextShaper.cpp b/libs/hwui/jni/text/TextShaper.cpp
index 70e6beda6cb9..5f693462af91 100644
--- a/libs/hwui/jni/text/TextShaper.cpp
+++ b/libs/hwui/jni/text/TextShaper.cpp
@@ -86,7 +86,7 @@ static jlong shapeTextRun(const uint16_t* text, int textSize, int start, int cou
overallDescent = std::max(overallDescent, extent.descent);
}
- if (text_feature::typeface_redesign()) {
+ if (text_feature::typeface_redesign_readonly()) {
uint32_t runCount = layout.getFontRunCount();
std::unordered_map<minikin::FakedFont, uint32_t, FakedFontKey> fakedToFontIds;
@@ -229,7 +229,7 @@ float findValueFromVariationSettings(const minikin::FontFakery& fakery, minikin:
// CriticalNative
static jfloat TextShaper_Result_getWeightOverride(CRITICAL_JNI_PARAMS_COMMA jlong ptr, jint i) {
const LayoutWrapper* layout = reinterpret_cast<LayoutWrapper*>(ptr);
- if (text_feature::typeface_redesign()) {
+ if (text_feature::typeface_redesign_readonly()) {
float value =
findValueFromVariationSettings(layout->layout.getFakery(i), minikin::TAG_wght);
return std::isnan(value) ? NO_OVERRIDE : value;
@@ -241,7 +241,7 @@ static jfloat TextShaper_Result_getWeightOverride(CRITICAL_JNI_PARAMS_COMMA jlon
// CriticalNative
static jfloat TextShaper_Result_getItalicOverride(CRITICAL_JNI_PARAMS_COMMA jlong ptr, jint i) {
const LayoutWrapper* layout = reinterpret_cast<LayoutWrapper*>(ptr);
- if (text_feature::typeface_redesign()) {
+ if (text_feature::typeface_redesign_readonly()) {
float value =
findValueFromVariationSettings(layout->layout.getFakery(i), minikin::TAG_ital);
return std::isnan(value) ? NO_OVERRIDE : value;