diff options
| author | 2021-02-11 21:34:17 -0800 | |
|---|---|---|
| committer | 2021-02-13 14:03:09 -0800 | |
| commit | 1dbb19432e9fd1e11521db353ec7bb4e6e652a06 (patch) | |
| tree | 5d02e57243c6b827a9bf6e98d17d4a4c0da7401f | |
| parent | 1a8b2fddf4c0e9a47a9cdaa0f3ebff0f694b1d15 (diff) | |
Preload Roboto-Regualr.ttf
Bug: 179026427
Test: N/A
Change-Id: I47cf1f0d86ca93cfef429ed2f3af8e60d68d385b
| -rw-r--r-- | graphics/java/android/graphics/Typeface.java | 15 | ||||
| -rw-r--r-- | libs/hwui/jni/Typeface.cpp | 7 |
2 files changed, 22 insertions, 0 deletions
diff --git a/graphics/java/android/graphics/Typeface.java b/graphics/java/android/graphics/Typeface.java index 40c75a4d2f2f..32c777cf498c 100644 --- a/graphics/java/android/graphics/Typeface.java +++ b/graphics/java/android/graphics/Typeface.java @@ -1346,6 +1346,19 @@ public class Typeface { } } + static { + // Preload Roboto-Regular.ttf in Zygote for improving app launch performance. + // TODO: add new attribute to fonts.xml to preload fonts in Zygote. + preloadFontFile("/system/fonts/Roboto-Regular.ttf"); + } + + private static void preloadFontFile(String filePath) { + File file = new File(filePath); + if (file.exists()) { + nativeWarmUpCache(filePath); + } + } + /** @hide */ @VisibleForTesting public static void destroySystemFontMap() { @@ -1464,4 +1477,6 @@ public class Typeface { private static native @Nullable long[] nativeReadTypefaces(@NonNull ByteBuffer buffer); private static native void nativeForceSetStaticFinalField(String fieldName, Typeface typeface); + + private static native void nativeWarmUpCache(String fileName); } diff --git a/libs/hwui/jni/Typeface.cpp b/libs/hwui/jni/Typeface.cpp index 18423562bc56..251323d34422 100644 --- a/libs/hwui/jni/Typeface.cpp +++ b/libs/hwui/jni/Typeface.cpp @@ -367,6 +367,12 @@ static jlong Typeface_getFamily(CRITICAL_JNI_PARAMS_COMMA jlong faceHandle, jint return reinterpret_cast<jlong>(new FontFamilyWrapper(std::move(family))); } +// Regular JNI +static void Typeface_warmUpCache(JNIEnv* env, jobject, jstring jFilePath) { + ScopedUtfChars filePath(env, jFilePath); + makeSkDataCached(filePath.c_str(), false /* fs verity */); +} + /////////////////////////////////////////////////////////////////////////////// static const JNINativeMethod gTypefaceMethods[] = { @@ -390,6 +396,7 @@ static const JNINativeMethod gTypefaceMethods[] = { (void*)Typeface_forceSetStaticFinalField}, {"nativeGetFamilySize", "(J)I", (void*)Typeface_getFamilySize}, {"nativeGetFamily", "(JI)J", (void*)Typeface_getFamily}, + {"nativeWarmUpCache", "(Ljava/lang/String;)V", (void*)Typeface_warmUpCache}, }; int register_android_graphics_Typeface(JNIEnv* env) |