summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--graphics/java/android/graphics/fonts/Font.java7
-rw-r--r--libs/hwui/jni/fonts/Font.cpp24
2 files changed, 20 insertions, 11 deletions
diff --git a/graphics/java/android/graphics/fonts/Font.java b/graphics/java/android/graphics/fonts/Font.java
index fea756c8290f..9214ff1eb088 100644
--- a/graphics/java/android/graphics/fonts/Font.java
+++ b/graphics/java/android/graphics/fonts/Font.java
@@ -486,7 +486,8 @@ public final class Font {
long ptr;
int fontIdentifier;
if (mFont == null) {
- ptr = nBuild(builderPtr, readonlyBuffer, filePath, mWeight, italic, mTtcIndex);
+ ptr = nBuild(builderPtr, readonlyBuffer, filePath, mLocaleList, mWeight, italic,
+ mTtcIndex);
long fontBufferPtr = nGetFontBufferAddress(ptr);
synchronized (SOURCE_ID_LOCK) {
long id = FONT_SOURCE_ID_MAP.get(fontBufferPtr, -1);
@@ -513,8 +514,8 @@ public final class Font {
@CriticalNative
private static native void nAddAxis(long builderPtr, int tag, float value);
private static native long nBuild(
- long builderPtr, @NonNull ByteBuffer buffer, @NonNull String filePath, int weight,
- boolean italic, int ttcIndex);
+ long builderPtr, @NonNull ByteBuffer buffer, @NonNull String filePath,
+ @NonNull String localeList, int weight, boolean italic, int ttcIndex);
@CriticalNative
private static native long nGetReleaseNativeFont();
diff --git a/libs/hwui/jni/fonts/Font.cpp b/libs/hwui/jni/fonts/Font.cpp
index b944310d8822..b769d40238a4 100644
--- a/libs/hwui/jni/fonts/Font.cpp
+++ b/libs/hwui/jni/fonts/Font.cpp
@@ -79,7 +79,8 @@ static void Font_Builder_addAxis(CRITICAL_JNI_PARAMS_COMMA jlong builderPtr, jin
// Regular JNI
static jlong Font_Builder_build(JNIEnv* env, jobject clazz, jlong builderPtr, jobject buffer,
- jstring filePath, jint weight, jboolean italic, jint ttcIndex) {
+ jstring filePath, jstring langTags, jint weight, jboolean italic,
+ jint ttcIndex) {
NPE_CHECK_RETURN_ZERO(env, buffer);
std::unique_ptr<NativeFontBuilder> builder(toBuilder(builderPtr));
const void* fontPtr = env->GetDirectBufferAddress(buffer);
@@ -94,6 +95,7 @@ static jlong Font_Builder_build(JNIEnv* env, jobject clazz, jlong builderPtr, jo
return 0;
}
ScopedUtfChars fontPath(env, filePath);
+ ScopedUtfChars langTagStr(env, langTags);
jobject fontRef = MakeGlobalRefOrDie(env, buffer);
sk_sp<SkData> data(SkData::MakeWithProc(fontPtr, fontSize,
release_global_ref, reinterpret_cast<void*>(fontRef)));
@@ -105,8 +107,13 @@ static jlong Font_Builder_build(JNIEnv* env, jobject clazz, jlong builderPtr, jo
"Failed to create internal object. maybe invalid font data.");
return 0;
}
- std::shared_ptr<minikin::Font> font = minikin::Font::Builder(minikinFont).setWeight(weight)
- .setSlant(static_cast<minikin::FontStyle::Slant>(italic)).build();
+ uint32_t localeListId = minikin::registerLocaleList(langTagStr.c_str());
+ std::shared_ptr<minikin::Font> font =
+ minikin::Font::Builder(minikinFont)
+ .setWeight(weight)
+ .setSlant(static_cast<minikin::FontStyle::Slant>(italic))
+ .setLocaleListId(localeListId)
+ .build();
return reinterpret_cast<jlong>(new FontWrapper(std::move(font)));
}
@@ -302,11 +309,12 @@ static jint FontFileUtil_isPostScriptType1Font(JNIEnv* env, jobject, jobject buf
///////////////////////////////////////////////////////////////////////////////
static const JNINativeMethod gFontBuilderMethods[] = {
- { "nInitBuilder", "()J", (void*) Font_Builder_initBuilder },
- { "nAddAxis", "(JIF)V", (void*) Font_Builder_addAxis },
- { "nBuild", "(JLjava/nio/ByteBuffer;Ljava/lang/String;IZI)J", (void*) Font_Builder_build },
- { "nClone", "(JJIZI)J", (void*) Font_Builder_clone },
- { "nGetReleaseNativeFont", "()J", (void*) Font_Builder_getReleaseNativeFont },
+ {"nInitBuilder", "()J", (void*)Font_Builder_initBuilder},
+ {"nAddAxis", "(JIF)V", (void*)Font_Builder_addAxis},
+ {"nBuild", "(JLjava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;IZI)J",
+ (void*)Font_Builder_build},
+ {"nClone", "(JJIZI)J", (void*)Font_Builder_clone},
+ {"nGetReleaseNativeFont", "()J", (void*)Font_Builder_getReleaseNativeFont},
};
static const JNINativeMethod gFontMethods[] = {