From a3b9f2e3c66ec485f3b712560d52e31632a9cbe8 Mon Sep 17 00:00:00 2001 From: Siyamed Sinir Date: Fri, 20 Jan 2017 01:11:15 +0000 Subject: [PATCH] Revert "Introduce set/getFontVariationSettings." This reverts commit ba3028c1fc9fca2d45acc841557da2c9a83923bf. Bug: 34378805 Change-Id: I8250c87af5d65fb45789632580be4ae1b8711372 --- api/current.txt | 4 - api/system-current.txt | 4 - api/test-current.txt | 4 - core/java/android/widget/TextView.java | 49 -------- core/jni/Android.mk | 1 - core/jni/android/graphics/FontFamily.cpp | 30 +++-- core/jni/android/graphics/FontUtils.cpp | 63 ---------- core/jni/android/graphics/FontUtils.h | 54 --------- core/jni/android/graphics/Typeface.cpp | 21 ---- .../java/android/graphics/FontListParser.java | 10 +- graphics/java/android/graphics/Paint.java | 32 ----- graphics/java/android/graphics/Typeface.java | 12 -- .../android/graphics/VariationParserTest.java | 113 +++++++++--------- libs/hwui/hwui/MinikinSkia.cpp | 25 +--- libs/hwui/hwui/MinikinSkia.h | 2 - libs/hwui/hwui/Typeface.cpp | 24 +--- libs/hwui/hwui/Typeface.h | 3 - 17 files changed, 84 insertions(+), 367 deletions(-) delete mode 100644 core/jni/android/graphics/FontUtils.cpp delete mode 100644 core/jni/android/graphics/FontUtils.h diff --git a/api/current.txt b/api/current.txt index 9a08b812a39f4..aad28af6b8baf 100644 --- a/api/current.txt +++ b/api/current.txt @@ -12492,7 +12492,6 @@ package android.graphics { method public int getFontMetricsInt(android.graphics.Paint.FontMetricsInt); method public android.graphics.Paint.FontMetricsInt getFontMetricsInt(); method public float getFontSpacing(); - method public java.lang.String getFontVariationSettings(); method public int getHinting(); method public float getLetterSpacing(); method public android.graphics.MaskFilter getMaskFilter(); @@ -12550,7 +12549,6 @@ package android.graphics { method public void setFilterBitmap(boolean); method public void setFlags(int); method public void setFontFeatureSettings(java.lang.String); - method public void setFontVariationSettings(java.lang.String); method public void setHinting(int); method public void setLetterSpacing(float); method public void setLinearText(boolean); @@ -49178,7 +49176,6 @@ package android.widget { method public int getExtendedPaddingTop(); method public android.text.InputFilter[] getFilters(); method public java.lang.String getFontFeatureSettings(); - method public java.lang.String getFontVariationSettings(); method public boolean getFreezesText(); method public int getGravity(); method public int getHighlightColor(); @@ -49284,7 +49281,6 @@ package android.widget { method public void setExtractedText(android.view.inputmethod.ExtractedText); method public void setFilters(android.text.InputFilter[]); method public void setFontFeatureSettings(java.lang.String); - method public void setFontVariationSettings(java.lang.String); method protected boolean setFrame(int, int, int, int); method public void setFreezesText(boolean); method public void setGravity(int); diff --git a/api/system-current.txt b/api/system-current.txt index bc3d19dceebd9..7bd70125a2f61 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -12996,7 +12996,6 @@ package android.graphics { method public int getFontMetricsInt(android.graphics.Paint.FontMetricsInt); method public android.graphics.Paint.FontMetricsInt getFontMetricsInt(); method public float getFontSpacing(); - method public java.lang.String getFontVariationSettings(); method public int getHinting(); method public float getLetterSpacing(); method public android.graphics.MaskFilter getMaskFilter(); @@ -13054,7 +13053,6 @@ package android.graphics { method public void setFilterBitmap(boolean); method public void setFlags(int); method public void setFontFeatureSettings(java.lang.String); - method public void setFontVariationSettings(java.lang.String); method public void setHinting(int); method public void setLetterSpacing(float); method public void setLinearText(boolean); @@ -52762,7 +52760,6 @@ package android.widget { method public int getExtendedPaddingTop(); method public android.text.InputFilter[] getFilters(); method public java.lang.String getFontFeatureSettings(); - method public java.lang.String getFontVariationSettings(); method public boolean getFreezesText(); method public int getGravity(); method public int getHighlightColor(); @@ -52868,7 +52865,6 @@ package android.widget { method public void setExtractedText(android.view.inputmethod.ExtractedText); method public void setFilters(android.text.InputFilter[]); method public void setFontFeatureSettings(java.lang.String); - method public void setFontVariationSettings(java.lang.String); method protected boolean setFrame(int, int, int, int); method public void setFreezesText(boolean); method public void setGravity(int); diff --git a/api/test-current.txt b/api/test-current.txt index f140d6d32af8f..e52f69cc6b233 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -12523,7 +12523,6 @@ package android.graphics { method public int getFontMetricsInt(android.graphics.Paint.FontMetricsInt); method public android.graphics.Paint.FontMetricsInt getFontMetricsInt(); method public float getFontSpacing(); - method public java.lang.String getFontVariationSettings(); method public int getHinting(); method public float getLetterSpacing(); method public android.graphics.MaskFilter getMaskFilter(); @@ -12581,7 +12580,6 @@ package android.graphics { method public void setFilterBitmap(boolean); method public void setFlags(int); method public void setFontFeatureSettings(java.lang.String); - method public void setFontVariationSettings(java.lang.String); method public void setHinting(int); method public void setLetterSpacing(float); method public void setLinearText(boolean); @@ -49480,7 +49478,6 @@ package android.widget { method public int getExtendedPaddingTop(); method public android.text.InputFilter[] getFilters(); method public java.lang.String getFontFeatureSettings(); - method public java.lang.String getFontVariationSettings(); method public boolean getFreezesText(); method public int getGravity(); method public int getHighlightColor(); @@ -49586,7 +49583,6 @@ package android.widget { method public void setExtractedText(android.view.inputmethod.ExtractedText); method public void setFilters(android.text.InputFilter[]); method public void setFontFeatureSettings(java.lang.String); - method public void setFontVariationSettings(java.lang.String); method protected boolean setFrame(int, int, int, int); method public void setFreezesText(boolean); method public void setGravity(int); diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 4b48501cb5030..1ddf53d8b19a8 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -3243,20 +3243,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return mTextPaint.getFontFeatureSettings(); } - /** - * Returns the font variation settings. - * - * @return the currently set font variation settings. Returns null if no variation is - * specified. - * - * @see #setFontVariationSettings(String) - * @see Paint#setFontVariationSettings(String) Paint.setFontVariationSettings(String) - */ - @Nullable - public String getFontVariationSettings() { - return mTextPaint.getFontVariationSettings(); - } - /** * Sets the break strategy for breaking paragraphs into lines. The default value for * TextView is {@link Layout#BREAK_STRATEGY_HIGH_QUALITY}, and the default value for @@ -3363,41 +3349,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } - /** - * 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 - * are longer or shorter than four characters, or contain characters outside of U+0020..U+007E - * are invalid. If a specified axis name is not defined in the font, the settings will be - * ignored. - * - *
-     *   textView.setFontVariationSettings("'wdth' 1.0");
-     *   textView.setFontVariationSettings("'AX  ' 1.8, 'FB  ' 2.0");
-     * 
- * - * @param fontVariationSettings font variation settings. You can pass null or empty string as - * no variation settings. - * - * @see #getFontVariationSettings() - * @see Paint#getFontVariationSettings() Paint.getFontVariationSettings() - */ - public void setFontVariationSettings(@Nullable String fontVariationSettings) { - final String existingSettings = mTextPaint.getFontVariationSettings(); - if (fontVariationSettings == existingSettings - || (fontVariationSettings != null - && fontVariationSettings.equals(existingSettings))) { - return; - } - mTextPaint.setFontVariationSettings(fontVariationSettings); - - if (mLayout != null) { - nullLayouts(); - requestLayout(); - invalidate(); - } - } - /** * Sets the text color for all the states (normal, selected, * focused) to be this color. diff --git a/core/jni/Android.mk b/core/jni/Android.mk index ab784a6e6261f..29483c78b9d1f 100644 --- a/core/jni/Android.mk +++ b/core/jni/Android.mk @@ -117,7 +117,6 @@ LOCAL_SRC_FILES:= \ android/graphics/ColorFilter.cpp \ android/graphics/DrawFilter.cpp \ android/graphics/FontFamily.cpp \ - android/graphics/FontUtils.cpp \ android/graphics/CreateJavaOutputStreamAdaptor.cpp \ android/graphics/GIFMovie.cpp \ android/graphics/GraphicBuffer.cpp \ diff --git a/core/jni/android/graphics/FontFamily.cpp b/core/jni/android/graphics/FontFamily.cpp index 685c93d55924f..adee2fd717b76 100644 --- a/core/jni/android/graphics/FontFamily.cpp +++ b/core/jni/android/graphics/FontFamily.cpp @@ -30,7 +30,6 @@ #include #include #include "Utils.h" -#include "FontUtils.h" #include #include @@ -144,6 +143,16 @@ static jboolean FontFamily_addFont(JNIEnv* env, jobject clazz, jlong builderPtr, return true; } +static struct { + jmethodID mGet; + jmethodID mSize; +} gListClassInfo; + +static struct { + jfieldID mTag; + jfieldID mStyleValue; +} gAxisClassInfo; + static jboolean FontFamily_addFontWeightStyle(JNIEnv* env, jobject clazz, jlong builderPtr, jobject font, jint ttcIndex, jobject listOfAxis, jint weight, jboolean isItalic) { NPE_CHECK_RETURN_ZERO(env, font); @@ -152,22 +161,20 @@ static jboolean FontFamily_addFontWeightStyle(JNIEnv* env, jobject clazz, jlong std::unique_ptr skiaAxes; int skiaAxesLength = 0; if (listOfAxis) { - ListHelper list(env, listOfAxis); - jint listSize = list.size(); + jint listSize = env->CallIntMethod(listOfAxis, gListClassInfo.mSize); skiaAxes.reset(new SkFontMgr::FontParameters::Axis[listSize]); skiaAxesLength = listSize; for (jint i = 0; i < listSize; ++i) { - jobject axisObject = list.get(i); + jobject axisObject = env->CallObjectMethod(listOfAxis, gListClassInfo.mGet, i); if (!axisObject) { skiaAxes[i].fTag = 0; skiaAxes[i].fStyleValue = 0; continue; } - AxisHelper axis(env, axisObject); - jint tag = axis.getTag(); - jfloat stylevalue = axis.getStyleValue(); + jint tag = env->GetIntField(axisObject, gAxisClassInfo.mTag); + jfloat stylevalue = env->GetFloatField(axisObject, gAxisClassInfo.mStyleValue); skiaAxes[i].fTag = tag; skiaAxes[i].fStyleValue = SkFloatToScalar(stylevalue); } @@ -266,7 +273,14 @@ int register_android_graphics_FontFamily(JNIEnv* env) int err = RegisterMethodsOrDie(env, "android/graphics/FontFamily", gFontFamilyMethods, NELEM(gFontFamilyMethods)); - init_FontUtils(env); + jclass listClass = FindClassOrDie(env, "java/util/List"); + gListClassInfo.mGet = GetMethodIDOrDie(env, listClass, "get", "(I)Ljava/lang/Object;"); + gListClassInfo.mSize = GetMethodIDOrDie(env, listClass, "size", "()I"); + + jclass axisClass = FindClassOrDie(env, "android/graphics/FontListParser$Axis"); + gAxisClassInfo.mTag = GetFieldIDOrDie(env, axisClass, "tag", "I"); + gAxisClassInfo.mStyleValue = GetFieldIDOrDie(env, axisClass, "styleValue", "F"); + return err; } diff --git a/core/jni/android/graphics/FontUtils.cpp b/core/jni/android/graphics/FontUtils.cpp deleted file mode 100644 index 11c2d29ec03c7..0000000000000 --- a/core/jni/android/graphics/FontUtils.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "FontUtils.h" - -#include "JNIHelp.h" -#include - -namespace android { -namespace { - -static struct { - jmethodID mGet; - jmethodID mSize; -} gListClassInfo; - -static struct { - jfieldID mTag; - jfieldID mStyleValue; -} gAxisClassInfo; - -} // namespace - -jint ListHelper::size() const { - return mEnv->CallIntMethod(mList, gListClassInfo.mSize); -} - -jobject ListHelper::get(jint index) const { - return mEnv->CallObjectMethod(mList, gListClassInfo.mGet, index); -} - -jint AxisHelper::getTag() const { - return mEnv->GetIntField(mAxis, gAxisClassInfo.mTag); -} - -jfloat AxisHelper::getStyleValue() const { - return mEnv->GetFloatField(mAxis, gAxisClassInfo.mStyleValue); -} - -void init_FontUtils(JNIEnv* env) { - jclass listClass = FindClassOrDie(env, "java/util/List"); - gListClassInfo.mGet = GetMethodIDOrDie(env, listClass, "get", "(I)Ljava/lang/Object;"); - gListClassInfo.mSize = GetMethodIDOrDie(env, listClass, "size", "()I"); - - jclass axisClass = FindClassOrDie(env, "android/graphics/FontListParser$Axis"); - gAxisClassInfo.mTag = GetFieldIDOrDie(env, axisClass, "tag", "I"); - gAxisClassInfo.mStyleValue = GetFieldIDOrDie(env, axisClass, "styleValue", "F"); -} - -} // namespace android diff --git a/core/jni/android/graphics/FontUtils.h b/core/jni/android/graphics/FontUtils.h deleted file mode 100644 index 6fbd5e32afde8..0000000000000 --- a/core/jni/android/graphics/FontUtils.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _ANDROID_GRAPHICS_FONT_UTILS_H_ -#define _ANDROID_GRAPHICS_FONT_UTILS_H_ - -#include - -namespace android { - -// Utility wrapper for java.util.List -class ListHelper { -public: - ListHelper(JNIEnv* env, jobject list) : mEnv(env), mList(list) {} - - jint size() const; - jobject get(jint index) const; - -private: - JNIEnv* mEnv; - jobject mList; -}; - -// Utility wrapper for android.graphics.FontListParser$Axis -class AxisHelper { -public: - AxisHelper(JNIEnv* env, jobject axis) : mEnv(env), mAxis(axis) {} - - jint getTag() const; - jfloat getStyleValue() const; - -private: - JNIEnv* mEnv; - jobject mAxis; -}; - -void init_FontUtils(JNIEnv* env); - -}; // namespace android - -#endif // _ANDROID_GRAPHICS_FONT_UTILS_H_ diff --git a/core/jni/android/graphics/Typeface.cpp b/core/jni/android/graphics/Typeface.cpp index 0a0fce3ecfabf..c920b8d653ab3 100644 --- a/core/jni/android/graphics/Typeface.cpp +++ b/core/jni/android/graphics/Typeface.cpp @@ -17,14 +17,12 @@ #include "jni.h" #include "core_jni_helpers.h" -#include "FontUtils.h" #include "GraphicsJNI.h" #include "ScopedPrimitiveArray.h" #include "SkTypeface.h" #include #include #include -#include using namespace android; @@ -42,23 +40,6 @@ static jlong Typeface_createFromTypeface(JNIEnv* env, jobject, jlong familyHandl return reinterpret_cast(face); } -static jlong Typeface_createFromTypefaceWithVariation(JNIEnv* env, jobject, jlong familyHandle, - jobject listOfAxis) { - std::vector variations; - ListHelper list(env, listOfAxis); - for (jint i = 0; i < list.size(); i++) { - jobject axisObject = list.get(i); - if (axisObject == nullptr) { - continue; - } - AxisHelper axis(env, axisObject); - variations.push_back(minikin::FontVariation(axis.getTag(), axis.getStyleValue())); - } - Typeface* baseTypeface = reinterpret_cast(familyHandle); - Typeface* result = Typeface::createFromTypefaceWithVariation(baseTypeface, variations); - return reinterpret_cast(result); -} - static jlong Typeface_createWeightAlias(JNIEnv* env, jobject, jlong familyHandle, jint weight) { Typeface* family = reinterpret_cast(familyHandle); Typeface* face = Typeface::createWeightAlias(family, weight); @@ -96,8 +77,6 @@ static void Typeface_setDefault(JNIEnv *env, jobject, jlong faceHandle) { static const JNINativeMethod gTypefaceMethods[] = { { "nativeCreateFromTypeface", "(JI)J", (void*)Typeface_createFromTypeface }, - { "nativeCreateFromTypefaceWithVariation", "(JLjava/util/List;)J", - (void*)Typeface_createFromTypefaceWithVariation }, { "nativeCreateWeightAlias", "(JI)J", (void*)Typeface_createWeightAlias }, { "nativeUnref", "(J)V", (void*)Typeface_unref }, { "nativeGetStyle", "(J)I", (void*)Typeface_getStyle }, diff --git a/graphics/java/android/graphics/FontListParser.java b/graphics/java/android/graphics/FontListParser.java index 5b53296d388c0..9490436d4f046 100644 --- a/graphics/java/android/graphics/FontListParser.java +++ b/graphics/java/android/graphics/FontListParser.java @@ -21,7 +21,6 @@ import android.util.Xml; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import android.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; import java.io.IOException; @@ -105,12 +104,9 @@ public class FontListParser { // Note that a well-formed variation contains a four-character tag and a float as styleValue, // with spacers in between. The tag is enclosd either by double quotes or single quotes. @VisibleForTesting - public static ArrayList parseFontVariationSettings(@Nullable String settings) { - ArrayList axisList = new ArrayList<>(); - if (settings == null) { - return axisList; - } + public static Axis[] parseFontVariationSettings(String settings) { String[] settingList = settings.split(","); + ArrayList axisList = new ArrayList<>(); settingLoop: for (String setting : settingList) { int pos = 0; @@ -154,7 +150,7 @@ public class FontListParser { tagString.charAt(3)); axisList.add(new Axis(tag, styleValue)); } - return axisList; + return axisList.toArray(new Axis[axisList.size()]); } @VisibleForTesting diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java index 4ee0c34139686..7815ae16e7e2c 100644 --- a/graphics/java/android/graphics/Paint.java +++ b/graphics/java/android/graphics/Paint.java @@ -71,7 +71,6 @@ public class Paint { private LocaleList mLocales; private String mFontFeatureSettings; - private String mFontVariationSettings; private static final Object sCacheLock = new Object(); @@ -1494,37 +1493,6 @@ public class Paint { nSetFontFeatureSettings(mNativePaint, settings); } - /** - * Returns the font variation settings. - * - * @return the paint's currently set font variation settings. Default is null. - * - * @see #setFontVariationSettings(String) - */ - public String getFontVariationSettings() { - return mFontVariationSettings; - } - - /** - * Set font variation settings. - * - * @param settings font variation settings, e.g. "'wdth' 300, 'wght' 1.8" - * - * @see #getFontVariationSettings() - * - * @param settings the font variation settings. You can pass null or empty string as no - * variation settings. - */ - public void setFontVariationSettings(String settings) { - settings = TextUtils.nullIfEmpty(settings); - if (settings == mFontVariationSettings - || (settings != null && settings.equals(mFontVariationSettings))) { - return; - } - mFontVariationSettings = settings; - setTypeface(Typeface.createFromTypefaceWithVariation(mTypeface, settings)); - } - /** * Get the current value of hyphen edit. * diff --git a/graphics/java/android/graphics/Typeface.java b/graphics/java/android/graphics/Typeface.java index 166ef1b3113e8..a8c1690e191ac 100644 --- a/graphics/java/android/graphics/Typeface.java +++ b/graphics/java/android/graphics/Typeface.java @@ -21,7 +21,6 @@ import android.util.Log; import android.util.LongSparseArray; import android.util.LruCache; import android.util.SparseArray; -import android.graphics.FontListParser; import org.xmlpull.v1.XmlPullParserException; @@ -172,15 +171,6 @@ public class Typeface { return typeface; } - /** @hide */ - public static Typeface createFromTypefaceWithVariation(Typeface family, - String fontVariationSettings) { - final long ni = family == null ? 0 : family.native_instance; - ArrayList axes = - FontListParser.parseFontVariationSettings(fontVariationSettings); - return new Typeface(nativeCreateFromTypefaceWithVariation(ni, axes)); - } - /** * Returns one of the default typeface objects, based on the specified style * @@ -453,8 +443,6 @@ public class Typeface { } private static native long nativeCreateFromTypeface(long native_instance, int style); - private static native long nativeCreateFromTypefaceWithVariation( - long native_instance, List axes); private static native long nativeCreateWeightAlias(long native_instance, int weight); private static native void nativeUnref(long native_instance); private static native int nativeGetStyle(long native_instance); diff --git a/graphics/tests/graphicstests/src/android/graphics/VariationParserTest.java b/graphics/tests/graphicstests/src/android/graphics/VariationParserTest.java index 23de416040f01..d046c1103efc1 100644 --- a/graphics/tests/graphicstests/src/android/graphics/VariationParserTest.java +++ b/graphics/tests/graphicstests/src/android/graphics/VariationParserTest.java @@ -17,7 +17,6 @@ package android.graphics; import android.test.suitebuilder.annotation.SmallTest; -import java.util.List; import junit.framework.TestCase; @@ -26,92 +25,92 @@ public class VariationParserTest extends TestCase { @SmallTest public void testParseFontVariationSetting() { int tag = FontListParser.makeTag('w', 'd', 't', 'h'); - List axes = FontListParser.parseFontVariationSettings("'wdth' 1"); - assertEquals(tag, axes.get(0).tag); - assertEquals(1.0f, axes.get(0).styleValue); + FontListParser.Axis[] axis = FontListParser.parseFontVariationSettings("'wdth' 1"); + assertEquals(tag, axis[0].tag); + assertEquals(1.0f, axis[0].styleValue); - axes = FontListParser.parseFontVariationSettings("\"wdth\" 100"); - assertEquals(tag, axes.get(0).tag); - assertEquals(100.0f, axes.get(0).styleValue); + axis = FontListParser.parseFontVariationSettings("\"wdth\" 100"); + assertEquals(tag, axis[0].tag); + assertEquals(100.0f, axis[0].styleValue); - axes = FontListParser.parseFontVariationSettings(" 'wdth' 100"); - assertEquals(tag, axes.get(0).tag); - assertEquals(100.0f, axes.get(0).styleValue); + axis = FontListParser.parseFontVariationSettings(" 'wdth' 100"); + assertEquals(tag, axis[0].tag); + assertEquals(100.0f, axis[0].styleValue); - axes = FontListParser.parseFontVariationSettings("\t'wdth' 0.5"); - assertEquals(tag, axes.get(0).tag); - assertEquals(0.5f, axes.get(0).styleValue); + axis = FontListParser.parseFontVariationSettings("\t'wdth' 0.5"); + assertEquals(tag, axis[0].tag); + assertEquals(0.5f, axis[0].styleValue); tag = FontListParser.makeTag('A', 'X', ' ', ' '); - axes = FontListParser.parseFontVariationSettings("'AX ' 1"); - assertEquals(tag, axes.get(0).tag); - assertEquals(1.0f, axes.get(0).styleValue); + axis = FontListParser.parseFontVariationSettings("'AX ' 1"); + assertEquals(tag, axis[0].tag); + assertEquals(1.0f, axis[0].styleValue); - axes = FontListParser.parseFontVariationSettings("'AX '\t1"); - assertEquals(tag, axes.get(0).tag); - assertEquals(1.0f, axes.get(0).styleValue); + axis = FontListParser.parseFontVariationSettings("'AX '\t1"); + assertEquals(tag, axis[0].tag); + assertEquals(1.0f, axis[0].styleValue); - axes = FontListParser.parseFontVariationSettings("'AX '\n1"); - assertEquals(tag, axes.get(0).tag); - assertEquals(1.0f, axes.get(0).styleValue); + axis = FontListParser.parseFontVariationSettings("'AX '\n1"); + assertEquals(tag, axis[0].tag); + assertEquals(1.0f, axis[0].styleValue); - axes = FontListParser.parseFontVariationSettings("'AX '\r1"); - assertEquals(tag, axes.get(0).tag); - assertEquals(1.0f, axes.get(0).styleValue); + axis = FontListParser.parseFontVariationSettings("'AX '\r1"); + assertEquals(tag, axis[0].tag); + assertEquals(1.0f, axis[0].styleValue); - axes = FontListParser.parseFontVariationSettings("'AX '\r\t\n 1"); - assertEquals(tag, axes.get(0).tag); - assertEquals(1.0f, axes.get(0).styleValue); + axis = FontListParser.parseFontVariationSettings("'AX '\r\t\n 1"); + assertEquals(tag, axis[0].tag); + assertEquals(1.0f, axis[0].styleValue); // Test for invalid input - axes = FontListParser.parseFontVariationSettings(""); - assertEquals(0, axes.size()); - axes = FontListParser.parseFontVariationSettings("invalid_form"); - assertEquals(0, axes.size()); + axis = FontListParser.parseFontVariationSettings(""); + assertEquals(0, axis.length); + axis = FontListParser.parseFontVariationSettings("invalid_form"); + assertEquals(0, axis.length); // Test with invalid tag - axes = FontListParser.parseFontVariationSettings("'' 1"); - assertEquals(0, axes.size()); - axes = FontListParser.parseFontVariationSettings("'invalid' 1"); - assertEquals(0, axes.size()); + axis = FontListParser.parseFontVariationSettings("'' 1"); + assertEquals(0, axis.length); + axis = FontListParser.parseFontVariationSettings("'invalid' 1"); + assertEquals(0, axis.length); // Test with invalid styleValue - axes = FontListParser.parseFontVariationSettings("'wdth' "); - assertEquals(0, axes.size()); - axes = FontListParser.parseFontVariationSettings("'wdth' x"); - assertEquals(0, axes.size()); - axes = FontListParser.parseFontVariationSettings("'wdth' \t"); - assertEquals(0, axes.size()); - axes = FontListParser.parseFontVariationSettings("'wdth' \n\r"); - assertEquals(0, axes.size()); + axis = FontListParser.parseFontVariationSettings("'wdth' "); + assertEquals(0, axis.length); + axis = FontListParser.parseFontVariationSettings("'wdth' x"); + assertEquals(0, axis.length); + axis = FontListParser.parseFontVariationSettings("'wdth' \t"); + assertEquals(0, axis.length); + axis = FontListParser.parseFontVariationSettings("'wdth' \n\r"); + assertEquals(0, axis.length); } @SmallTest public void testParseFontVariationStyleSettings() { - List axes = + FontListParser.Axis[] axis = FontListParser.parseFontVariationSettings("'wdth' 10,'AX '\r1"); int tag1 = FontListParser.makeTag('w', 'd', 't', 'h'); int tag2 = FontListParser.makeTag('A', 'X', ' ', ' '); - assertEquals(tag1, axes.get(0).tag); - assertEquals(10.0f, axes.get(0).styleValue); - assertEquals(tag2, axes.get(1).tag); - assertEquals(1.0f, axes.get(1).styleValue); + assertEquals(tag1, axis[0].tag); + assertEquals(10.0f, axis[0].styleValue); + assertEquals(tag2, axis[1].tag); + assertEquals(1.0f, axis[1].styleValue); // Test only spacers are allowed before tag - axes = FontListParser.parseFontVariationSettings(" 'wdth' 10,ab'wdth' 1"); + axis = FontListParser.parseFontVariationSettings(" 'wdth' 10,ab'wdth' 1"); tag1 = FontListParser.makeTag('w', 'd', 't', 'h'); - assertEquals(tag1, axes.get(0).tag); - assertEquals(10.0f, axes.get(0).styleValue); - assertEquals(1, axes.size()); + assertEquals(tag1, axis[0].tag); + assertEquals(10.0f, axis[0].styleValue); + assertEquals(1, axis.length); } @SmallTest public void testInvalidTagCharacters() { - List axes = + FontListParser.Axis[] axis = FontListParser.parseFontVariationSettings("'\u0000\u0000\u0000\u0000' 10"); - assertEquals(0, axes.size()); - axes = FontListParser.parseFontVariationSettings("'\u3042\u3044\u3046\u3048' 10"); - assertEquals(0, axes.size()); + assertEquals(0, axis.length); + axis = FontListParser.parseFontVariationSettings("'\u3042\u3044\u3046\u3048' 10"); + assertEquals(0, axis.length); } @SmallTest diff --git a/libs/hwui/hwui/MinikinSkia.cpp b/libs/hwui/hwui/MinikinSkia.cpp index 6a003794fb283..956f66ed22cbd 100644 --- a/libs/hwui/hwui/MinikinSkia.cpp +++ b/libs/hwui/hwui/MinikinSkia.cpp @@ -17,8 +17,7 @@ #include "MinikinSkia.h" #include -#include -#include + #include #include @@ -87,28 +86,6 @@ int MinikinFontSkia::GetFontIndex() const { return mTtcIndex; } -minikin::MinikinFont* MinikinFontSkia::createFontWithVariation( - const std::vector& variations) const { - SkFontMgr::FontParameters params; - - int ttcIndex; - SkStreamAsset* stream = mTypeface->openStream(&ttcIndex); - LOG_ALWAYS_FATAL_IF(stream == nullptr, "openStream failed"); - - params.setCollectionIndex(ttcIndex); - std::vector skAxes; - skAxes.resize(variations.size()); - for (size_t i = 0; i < variations.size(); i++) { - skAxes[i].fTag = variations[i].axisTag; - skAxes[i].fStyleValue = SkFloatToScalar(variations[i].value); - } - params.setAxes(skAxes.data(), skAxes.size()); - sk_sp fm(SkFontMgr::RefDefault()); - sk_sp face(fm->createFromStream(stream, params)); - - return new MinikinFontSkia(std::move(face), mFontData, mFontSize, ttcIndex); -} - uint32_t MinikinFontSkia::packPaintFlags(const SkPaint* paint) { uint32_t flags = paint->getFlags(); SkPaint::Hinting hinting = paint->getHinting(); diff --git a/libs/hwui/hwui/MinikinSkia.h b/libs/hwui/hwui/MinikinSkia.h index 249b0cbe44de9..3ee916c6e8b11 100644 --- a/libs/hwui/hwui/MinikinSkia.h +++ b/libs/hwui/hwui/MinikinSkia.h @@ -44,8 +44,6 @@ public: const void* GetFontData() const; size_t GetFontSize() const; int GetFontIndex() const; - minikin::MinikinFont* createFontWithVariation( - const std::vector&) const; static uint32_t packPaintFlags(const SkPaint* paint); static void unpackPaintFlags(SkPaint* paint, uint32_t paintFlags); diff --git a/libs/hwui/hwui/Typeface.cpp b/libs/hwui/hwui/Typeface.cpp index b69b0cb29efef..9041b44db849f 100644 --- a/libs/hwui/hwui/Typeface.cpp +++ b/libs/hwui/hwui/Typeface.cpp @@ -62,7 +62,7 @@ Typeface* Typeface::resolveDefault(Typeface* src) { Typeface* Typeface::createFromTypeface(Typeface* src, SkTypeface::Style style) { Typeface* resolvedFace = Typeface::resolveDefault(src); Typeface* result = new Typeface; - if (result != nullptr) { + if (result != 0) { result->fFontCollection = resolvedFace->fFontCollection; result->fFontCollection->Ref(); result->fSkiaStyle = style; @@ -72,30 +72,10 @@ Typeface* Typeface::createFromTypeface(Typeface* src, SkTypeface::Style style) { return result; } -Typeface* Typeface::createFromTypefaceWithVariation(Typeface* src, - const std::vector& variations) { - Typeface* resolvedFace = Typeface::resolveDefault(src); - Typeface* result = new Typeface(); - if (result != nullptr) { - result->fFontCollection = - resolvedFace->fFontCollection->createCollectionWithVariation(variations); - if (result->fFontCollection == nullptr) { - // None of passed axes are supported by this collection. - // So we will reuse the same collection with incrementing reference count. - result->fFontCollection = resolvedFace->fFontCollection; - result->fFontCollection->Ref(); - } - result->fSkiaStyle = resolvedFace->fSkiaStyle; - result->fBaseWeight = resolvedFace->fBaseWeight; - resolveStyle(result); - } - return result; -} - Typeface* Typeface::createWeightAlias(Typeface* src, int weight) { Typeface* resolvedFace = Typeface::resolveDefault(src); Typeface* result = new Typeface; - if (result != nullptr) { + if (result != 0) { result->fFontCollection = resolvedFace->fFontCollection; result->fFontCollection->Ref(); result->fSkiaStyle = resolvedFace->fSkiaStyle; diff --git a/libs/hwui/hwui/Typeface.h b/libs/hwui/hwui/Typeface.h index 4392ebc36badf..1be630c1e9780 100644 --- a/libs/hwui/hwui/Typeface.h +++ b/libs/hwui/hwui/Typeface.h @@ -43,9 +43,6 @@ struct ANDROID_API Typeface { static Typeface* createFromTypeface(Typeface* src, SkTypeface::Style style); - static Typeface* createFromTypefaceWithVariation(Typeface* src, - const std::vector& variations); - static Typeface* createWeightAlias(Typeface* src, int baseweight); static Typeface* createFromFamilies(const std::vector& families);