diff --git a/core/jni/android/graphics/FontFamily.cpp b/core/jni/android/graphics/FontFamily.cpp index e07a20880b946..2e7501f0e0bef 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 family = std::make_shared( - 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 767e068381d99..249e4f3e9212d 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 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 family = std::make_shared( - localeId, static_cast(variant), std::move(builder->fonts)); + localeId, static_cast(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 14d31d9dfd86b..c0f1b163ea114 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 750adb2757c8a..4a9cf14d04a5c 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,