Loading core/jni/android/graphics/FontFamily.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading core/jni/android/graphics/fonts/FontFamily.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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", Loading @@ -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 }, }; Loading graphics/java/android/graphics/fonts/FontFamily.java +6 −4 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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(); } Loading graphics/java/android/graphics/fonts/SystemFonts.java +1 −1 Original line number Diff line number Diff line Loading @@ -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, Loading Loading
core/jni/android/graphics/FontFamily.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading
core/jni/android/graphics/fonts/FontFamily.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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", Loading @@ -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 }, }; Loading
graphics/java/android/graphics/fonts/FontFamily.java +6 −4 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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(); } Loading
graphics/java/android/graphics/fonts/SystemFonts.java +1 −1 Original line number Diff line number Diff line Loading @@ -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, Loading