summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/ResourcesManager.java5
-rw-r--r--graphics/java/android/graphics/Typeface.java15
2 files changed, 15 insertions, 5 deletions
diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java
index 0b17389..b30df45 100644
--- a/core/java/android/app/ResourcesManager.java
+++ b/core/java/android/app/ResourcesManager.java
@@ -32,6 +32,7 @@ import android.content.res.Configuration;
import android.content.res.ThemeConfig;
import android.content.res.Resources;
import android.content.res.ResourcesKey;
+import android.graphics.Typeface;
import android.hardware.display.DisplayManagerGlobal;
import android.os.IBinder;
import android.os.RemoteException;
@@ -282,6 +283,10 @@ public class ResourcesManager {
attachCommonAssets(assets, config.themeConfig);
iconsAttached = attachIconAssets(assets, config.themeConfig);
}
+ } else if (!isThemeable && config.themeConfig != null &&
+ !ThemeConfig.SYSTEM_DEFAULT.equals(config.themeConfig.getFontPkgName())) {
+ // use system fonts if not themeable and a theme font is currently in use
+ Typeface.recreateDefaults(true);
}
r = new Resources(assets, dm, config, compatInfo);
diff --git a/graphics/java/android/graphics/Typeface.java b/graphics/java/android/graphics/Typeface.java
index a64c0af..4e9788a 100644
--- a/graphics/java/android/graphics/Typeface.java
+++ b/graphics/java/android/graphics/Typeface.java
@@ -350,7 +350,7 @@ public class Typeface {
*
* This should only be called once, from the static class initializer block.
*/
- private static void init() {
+ private static void init(boolean forceSystemFonts) {
// Load font config and initialize Minikin state
File systemFontConfigLocation = getSystemFontConfigLocation();
File themeFontConfigLocation = getThemeFontConfigLocation();
@@ -360,7 +360,7 @@ public class Typeface {
File configFile = null;
File fontDir;
- if (themeConfigFile.exists()) {
+ if (!forceSystemFonts && themeConfigFile.exists()) {
configFile = themeConfigFile;
fontDir = getThemeFontDirLocation();
} else {
@@ -437,15 +437,20 @@ public class Typeface {
}
}
+ /** @hide */
+ public static void recreateDefaults() {
+ recreateDefaults(false);
+ }
+
/**
* Clears caches in java and skia.
* Skia will then reparse font config
* @hide
*/
- public static void recreateDefaults() {
+ public static void recreateDefaults(boolean forceSystemFonts) {
sTypefaceCache.clear();
sSystemFontMap.clear();
- init();
+ init(forceSystemFonts);
DEFAULT_INTERNAL = create((String) null, 0);
DEFAULT_BOLD_INTERNAL = create((String) null, Typeface.BOLD);
@@ -463,7 +468,7 @@ public class Typeface {
}
static {
- init();
+ init(false);
// Set up defaults and typefaces exposed in public API
DEFAULT_INTERNAL = create((String) null, 0);
DEFAULT_BOLD_INTERNAL = create((String) null, Typeface.BOLD);