Revert "Introduce set/getFontVariationSettings."
This reverts commit ba3028c1fc9fca2d45acc841557da2c9a83923bf.
Bug: 34378805
Change-Id: I8250c87af5d65fb45789632580be4ae1b8711372
(cherry picked from commit a3b9f2e3c66ec485f3b712560d52e31632a9cbe8)
diff --git a/api/current.txt b/api/current.txt
index 889c058..b137a0e 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -12578,7 +12578,6 @@
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();
@@ -12636,7 +12635,6 @@
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);
@@ -49296,7 +49294,6 @@
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();
@@ -49402,7 +49399,6 @@
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 d9c9372..5b21194 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -13093,7 +13093,6 @@
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();
@@ -13151,7 +13150,6 @@
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);
@@ -52912,7 +52910,6 @@
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();
@@ -53018,7 +53015,6 @@
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 7e84da3..e315e4a 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -12610,7 +12610,6 @@
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();
@@ -12668,7 +12667,6 @@
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);
@@ -49598,7 +49596,6 @@
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();
@@ -49704,7 +49701,6 @@
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 b6693c7..08b18a4 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -3257,20 +3257,6 @@
}
/**
- * 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
* EditText is {@link Layout#BREAK_STRATEGY_SIMPLE}, the latter to avoid the
@@ -3377,41 +3363,6 @@
/**
- * 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.
- *
- * <pre>
- * textView.setFontVariationSettings("'wdth' 1.0");
- * textView.setFontVariationSettings("'AX ' 1.8, 'FB ' 2.0");
- * </pre>
- *
- * @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 6a9ed8e..0d3ccdc 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -118,7 +118,6 @@
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 685c93d..adee2fd 100644
--- a/core/jni/android/graphics/FontFamily.cpp
+++ b/core/jni/android/graphics/FontFamily.cpp
@@ -30,7 +30,6 @@
#include <android_runtime/android_util_AssetManager.h>
#include <androidfw/AssetManager.h>
#include "Utils.h"
-#include "FontUtils.h"
#include <hwui/MinikinSkia.h>
#include <hwui/Typeface.h>
@@ -144,6 +143,16 @@
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 @@
std::unique_ptr<SkFontMgr::FontParameters::Axis[]> 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 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 11c2d29..0000000
--- 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 <core_jni_helpers.h>
-
-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 6fbd5e3..0000000
--- 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 <jni.h>
-
-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 0a0fce3e..c920b8d 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 <android_runtime/android_util_AssetManager.h>
#include <androidfw/AssetManager.h>
#include <hwui/Typeface.h>
-#include <minikin/FontFamily.h>
using namespace android;
@@ -42,23 +40,6 @@
return reinterpret_cast<jlong>(face);
}
-static jlong Typeface_createFromTypefaceWithVariation(JNIEnv* env, jobject, jlong familyHandle,
- jobject listOfAxis) {
- std::vector<minikin::FontVariation> 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<Typeface*>(familyHandle);
- Typeface* result = Typeface::createFromTypefaceWithVariation(baseTypeface, variations);
- return reinterpret_cast<jlong>(result);
-}
-
static jlong Typeface_createWeightAlias(JNIEnv* env, jobject, jlong familyHandle, jint weight) {
Typeface* family = reinterpret_cast<Typeface*>(familyHandle);
Typeface* face = Typeface::createWeightAlias(family, weight);
@@ -96,8 +77,6 @@
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 5b53296..9490436 100644
--- a/graphics/java/android/graphics/FontListParser.java
+++ b/graphics/java/android/graphics/FontListParser.java
@@ -21,7 +21,6 @@
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 @@
// 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<Axis> parseFontVariationSettings(@Nullable String settings) {
- ArrayList<Axis> axisList = new ArrayList<>();
- if (settings == null) {
- return axisList;
- }
+ public static Axis[] parseFontVariationSettings(String settings) {
String[] settingList = settings.split(",");
+ ArrayList<Axis> axisList = new ArrayList<>();
settingLoop:
for (String setting : settingList) {
int pos = 0;
@@ -154,7 +150,7 @@
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 4ee0c34..7815ae1 100644
--- a/graphics/java/android/graphics/Paint.java
+++ b/graphics/java/android/graphics/Paint.java
@@ -71,7 +71,6 @@
private LocaleList mLocales;
private String mFontFeatureSettings;
- private String mFontVariationSettings;
private static final Object sCacheLock = new Object();
@@ -1495,37 +1494,6 @@
}
/**
- * 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.
*
* @return the current hyphen edit value
diff --git a/graphics/java/android/graphics/Typeface.java b/graphics/java/android/graphics/Typeface.java
index 166ef1b..a8c1690 100644
--- a/graphics/java/android/graphics/Typeface.java
+++ b/graphics/java/android/graphics/Typeface.java
@@ -21,7 +21,6 @@
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 @@
return typeface;
}
- /** @hide */
- public static Typeface createFromTypefaceWithVariation(Typeface family,
- String fontVariationSettings) {
- final long ni = family == null ? 0 : family.native_instance;
- ArrayList<FontListParser.Axis> 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 @@
}
private static native long nativeCreateFromTypeface(long native_instance, int style);
- private static native long nativeCreateFromTypefaceWithVariation(
- long native_instance, List<FontListParser.Axis> 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 23de416..d046c11 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 @@
@SmallTest
public void testParseFontVariationSetting() {
int tag = FontListParser.makeTag('w', 'd', 't', 'h');
- List<FontListParser.Axis> 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<FontListParser.Axis> 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<FontListParser.Axis> 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 6a00379..956f66e 100644
--- a/libs/hwui/hwui/MinikinSkia.cpp
+++ b/libs/hwui/hwui/MinikinSkia.cpp
@@ -17,8 +17,7 @@
#include "MinikinSkia.h"
#include <log/log.h>
-#include <SkFontDescriptor.h>
-#include <SkFontMgr.h>
+
#include <SkPaint.h>
#include <SkTypeface.h>
@@ -87,28 +86,6 @@
return mTtcIndex;
}
-minikin::MinikinFont* MinikinFontSkia::createFontWithVariation(
- const std::vector<minikin::FontVariation>& 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<SkFontMgr::FontParameters::Axis> 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<SkFontMgr> fm(SkFontMgr::RefDefault());
- sk_sp<SkTypeface> 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 249b0cb..3ee916c 100644
--- a/libs/hwui/hwui/MinikinSkia.h
+++ b/libs/hwui/hwui/MinikinSkia.h
@@ -44,8 +44,6 @@
const void* GetFontData() const;
size_t GetFontSize() const;
int GetFontIndex() const;
- minikin::MinikinFont* createFontWithVariation(
- const std::vector<minikin::FontVariation>&) 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 b69b0cb..9041b44 100644
--- a/libs/hwui/hwui/Typeface.cpp
+++ b/libs/hwui/hwui/Typeface.cpp
@@ -62,7 +62,7 @@
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 @@
return result;
}
-Typeface* Typeface::createFromTypefaceWithVariation(Typeface* src,
- const std::vector<minikin::FontVariation>& 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 4392ebc3..1be630c 100644
--- a/libs/hwui/hwui/Typeface.h
+++ b/libs/hwui/hwui/Typeface.h
@@ -43,9 +43,6 @@
static Typeface* createFromTypeface(Typeface* src, SkTypeface::Style style);
- static Typeface* createFromTypefaceWithVariation(Typeface* src,
- const std::vector<minikin::FontVariation>& variations);
-
static Typeface* createWeightAlias(Typeface* src, int baseweight);
static Typeface* createFromFamilies(const std::vector<minikin::FontFamily*>& families);