Merge "Pass custom fallback info to minikin"
This commit is contained in:
committed by
Android (Google) Code Review
commit
e6bded0d4a
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 },
|
||||
};
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user