From a07474c45212470c3eb13abf05d146efd48aa06e Mon Sep 17 00:00:00 2001 From: Jeremy Meyer Date: Thu, 2 Apr 2020 13:55:22 -0700 Subject: [PATCH] Have Typeface pass a cookie of -1 to search through all assets Without this, when font are overlayed it will fail because it is looking in the wrong place to load the font Bug: 151770185 Test: Manual, example app that has a font that is overlayed Change-Id: I64c5a436b7250cfd0a75f5de36c64f07a20d523a --- core/java/android/content/res/AssetManager.java | 7 +++++++ graphics/java/android/graphics/Typeface.java | 2 +- graphics/java/android/graphics/fonts/Font.java | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java index a05f5c927b297..c8bbb0c1994d6 100644 --- a/core/java/android/content/res/AssetManager.java +++ b/core/java/android/content/res/AssetManager.java @@ -78,6 +78,13 @@ public final class AssetManager implements AutoCloseable { @GuardedBy("sSync") private static ApkAssets[] sSystemApkAssets = new ApkAssets[0]; @GuardedBy("sSync") private static ArraySet sSystemApkAssetsSet; + /** + * Cookie value to use when the actual cookie is unknown. This value tells the system to search + * all the ApkAssets for the asset. + * @hide + */ + public static final int COOKIE_UNKNOWN = -1; + /** * Mode for {@link #open(String, int)}: no specific information about how * data will be accessed. diff --git a/graphics/java/android/graphics/Typeface.java b/graphics/java/android/graphics/Typeface.java index 61f7facf09161..a2f5301e353fd 100644 --- a/graphics/java/android/graphics/Typeface.java +++ b/graphics/java/android/graphics/Typeface.java @@ -329,7 +329,7 @@ public class Typeface { FontFamily.Builder familyBuilder = null; for (final FontFileResourceEntry fontFile : filesEntry.getEntries()) { final Font.Builder fontBuilder = new Font.Builder(mgr, fontFile.getFileName(), - false /* isAsset */, 0 /* cookie */) + false /* isAsset */, AssetManager.COOKIE_UNKNOWN) .setTtcIndex(fontFile.getTtcIndex()) .setFontVariationSettings(fontFile.getVariationSettings()); if (fontFile.getWeight() != Typeface.RESOLVE_BY_FONT_TABLE) { diff --git a/graphics/java/android/graphics/fonts/Font.java b/graphics/java/android/graphics/fonts/Font.java index cd7936d50dffb..abd0be9c2872a 100644 --- a/graphics/java/android/graphics/fonts/Font.java +++ b/graphics/java/android/graphics/fonts/Font.java @@ -179,7 +179,7 @@ public final class Font { */ public Builder(@NonNull AssetManager am, @NonNull String path) { try { - mBuffer = createBuffer(am, path, true /* is asset */, 0 /* cookie */); + mBuffer = createBuffer(am, path, true /* is asset */, AssetManager.COOKIE_UNKNOWN); } catch (IOException e) { mException = e; }