diff options
-rw-r--r-- | core/java/android/app/ResourcesManager.java | 5 | ||||
-rw-r--r-- | graphics/java/android/graphics/Typeface.java | 15 |
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); |