summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-11-07 09:01:42 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-11-07 09:01:42 +0000
commite6bded0d4a0760747d13a362dcc2d684d133db67 (patch)
treefe694d228c8c518a62e888179927d5d613692820
parentfbf34f6d244cb0f02fffbe2f0dfd0a4507a3407b (diff)
parentf69e7037bad4c8108ef2ce2805fb874e03b6dec9 (diff)
Merge "Pass custom fallback info to minikin"
-rw-r--r--core/jni/android/graphics/FontFamily.cpp3
-rw-r--r--core/jni/android/graphics/fonts/FontFamily.cpp7
-rw-r--r--graphics/java/android/graphics/fonts/FontFamily.java10
-rw-r--r--graphics/java/android/graphics/fonts/SystemFonts.java2
4 files changed, 13 insertions, 9 deletions
diff --git a/core/jni/android/graphics/FontFamily.cpp b/core/jni/android/graphics/FontFamily.cpp
index e07a20880b94..2e7501f0e0be 100644
--- a/core/jni/android/graphics/FontFamily.cpp
+++ b/core/jni/android/graphics/FontFamily.cpp
@@ -83,7 +83,8 @@ static jlong FontFamily_create(jlong builderPtr) {
return 0;
}
std::shared_ptr<minikin::FontFamily> family = std::make_shared<minikin::FontFamily>(
- builder->langId, builder->variant, std::move(builder->fonts));
+ builder->langId, builder->variant, std::move(builder->fonts),
+ true /* isCustomFallback */);
if (family->getCoverage().length() == 0) {
return 0;
}
diff --git a/core/jni/android/graphics/fonts/FontFamily.cpp b/core/jni/android/graphics/fonts/FontFamily.cpp
index 767e068381d9..249e4f3e9212 100644
--- a/core/jni/android/graphics/fonts/FontFamily.cpp
+++ b/core/jni/android/graphics/fonts/FontFamily.cpp
@@ -57,7 +57,7 @@ static void FontFamily_Builder_addFont(jlong builderPtr, jlong fontPtr) {
// Regular JNI
static jlong FontFamily_Builder_build(JNIEnv* env, jobject clazz, jlong builderPtr,
- jstring langTags, jint variant) {
+ jstring langTags, jint variant, jboolean isCustomFallback) {
std::unique_ptr<NativeFamilyBuilder> builder(toBuilder(builderPtr));
uint32_t localeId;
if (langTags == nullptr) {
@@ -67,7 +67,8 @@ static jlong FontFamily_Builder_build(JNIEnv* env, jobject clazz, jlong builderP
localeId = minikin::registerLocaleList(str.c_str());
}
std::shared_ptr<minikin::FontFamily> family = std::make_shared<minikin::FontFamily>(
- localeId, static_cast<minikin::FamilyVariant>(variant), std::move(builder->fonts));
+ localeId, static_cast<minikin::FamilyVariant>(variant), std::move(builder->fonts),
+ isCustomFallback);
if (family->getCoverage().length() == 0) {
// No coverage means minikin rejected given font for some reasons.
jniThrowException(env, "java/lang/IllegalArgumentException",
@@ -87,7 +88,7 @@ static jlong FontFamily_Builder_GetReleaseFunc() {
static const JNINativeMethod gFontFamilyBuilderMethods[] = {
{ "nInitBuilder", "()J", (void*) FontFamily_Builder_initBuilder },
{ "nAddFont", "(JJ)V", (void*) FontFamily_Builder_addFont },
- { "nBuild", "(JLjava/lang/String;I)J", (void*) FontFamily_Builder_build },
+ { "nBuild", "(JLjava/lang/String;IZ)J", (void*) FontFamily_Builder_build },
{ "nGetReleaseNativeFamily", "()J", (void*) FontFamily_Builder_GetReleaseFunc },
};
diff --git a/graphics/java/android/graphics/fonts/FontFamily.java b/graphics/java/android/graphics/fonts/FontFamily.java
index 14d31d9dfd86..c0f1b163ea11 100644
--- a/graphics/java/android/graphics/fonts/FontFamily.java
+++ b/graphics/java/android/graphics/fonts/FontFamily.java
@@ -108,16 +108,17 @@ public final class FontFamily {
* @return a font family
*/
public @NonNull FontFamily build() {
- return build("", FontConfig.Family.VARIANT_DEFAULT);
+ return build("", FontConfig.Family.VARIANT_DEFAULT, true /* isCustomFallback */);
}
/** @hide */
- public @NonNull FontFamily build(@NonNull String langTags, int variant) {
+ public @NonNull FontFamily build(@NonNull String langTags, int variant,
+ boolean isCustomFallback) {
final long builderPtr = nInitBuilder();
for (int i = 0; i < mFonts.size(); ++i) {
nAddFont(builderPtr, mFonts.get(i).getNativePtr());
}
- final long ptr = nBuild(builderPtr, langTags, variant);
+ final long ptr = nBuild(builderPtr, langTags, variant, isCustomFallback);
final FontFamily family = new FontFamily(mFonts, ptr);
sFamilyRegistory.registerNativeAllocation(family, ptr);
return family;
@@ -130,7 +131,8 @@ public final class FontFamily {
private static native long nInitBuilder();
@CriticalNative
private static native void nAddFont(long builderPtr, long fontPtr);
- private static native long nBuild(long builderPtr, String langTags, int variant);
+ private static native long nBuild(long builderPtr, String langTags, int variant,
+ boolean isCustomFallback);
@CriticalNative
private static native long nGetReleaseNativeFamily();
}
diff --git a/graphics/java/android/graphics/fonts/SystemFonts.java b/graphics/java/android/graphics/fonts/SystemFonts.java
index 750adb2757c8..4a9cf14d04a5 100644
--- a/graphics/java/android/graphics/fonts/SystemFonts.java
+++ b/graphics/java/android/graphics/fonts/SystemFonts.java
@@ -208,7 +208,7 @@ public final class SystemFonts {
b.addFont(font);
}
}
- return b == null ? null : b.build(languageTags, variant);
+ return b == null ? null : b.build(languageTags, variant, false /* isCustomFallback */);
}
private static void appendNamedFamily(@NonNull FontConfig.Family xmlFamily,