diff options
author | Eric Arseneau <earseneau@google.com> | 2021-12-19 22:49:43 -0800 |
---|---|---|
committer | Eric Arseneau <earseneau@google.com> | 2021-12-22 12:52:50 -0800 |
commit | 3e8cb98421761bb7dfafe59a22a15fe2e176f272 (patch) | |
tree | 754d2b985bde4574c8789e254b120866cf23002a /graphics/java | |
parent | 48cbb14e1815430efd7ff5086e7a4c70e75d475f (diff) | |
parent | 6c2cb6876a30dee0b94d946ca529e06cd96b9642 (diff) |
Merge s-mpr-2021-12-05
Change-Id: Ic2889f5eb531008340529eadc36ec8efc62b1984
Diffstat (limited to 'graphics/java')
-rw-r--r-- | graphics/java/android/graphics/FontListParser.java | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/graphics/java/android/graphics/FontListParser.java b/graphics/java/android/graphics/FontListParser.java index 93a336e7a408..96b33259e739 100644 --- a/graphics/java/android/graphics/FontListParser.java +++ b/graphics/java/android/graphics/FontListParser.java @@ -25,6 +25,7 @@ import android.graphics.fonts.FontVariationAxis; import android.os.Build; import android.os.LocaleList; import android.text.FontConfig; +import android.util.ArraySet; import android.util.Xml; import org.xmlpull.v1.XmlPullParser; @@ -37,6 +38,7 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.regex.Pattern; /** @@ -120,7 +122,23 @@ public class FontListParser { } } - private static FontConfig readFamilies( + /** + * Parses the familyset tag in font.xml + * @param parser a XML pull parser + * @param fontDir A system font directory, e.g. "/system/fonts" + * @param customization A OEM font customization + * @param updatableFontMap A map of updated font files + * @param lastModifiedDate A date that the system font is updated. + * @param configVersion A version of system font config. + * @param allowNonExistingFile true if allowing non-existing font files during parsing fonts.xml + * @return result of fonts.xml + * + * @throws XmlPullParserException + * @throws IOException + * + * @hide + */ + public static FontConfig readFamilies( @NonNull XmlPullParser parser, @NonNull String fontDir, @NonNull FontCustomizationParser.Result customization, @@ -159,7 +177,24 @@ public class FontListParser { } families.addAll(oemNamedFamilies.values()); - return new FontConfig(families, aliases, lastModifiedDate, configVersion); + + // Filters aliases that point to non-existing families. + Set<String> namedFamilies = new ArraySet<>(); + for (int i = 0; i < families.size(); ++i) { + String name = families.get(i).getName(); + if (name != null) { + namedFamilies.add(name); + } + } + List<FontConfig.Alias> filtered = new ArrayList<>(); + for (int i = 0; i < aliases.size(); ++i) { + FontConfig.Alias alias = aliases.get(i); + if (namedFamilies.contains(alias.getOriginal())) { + filtered.add(alias); + } + } + + return new FontConfig(families, filtered, lastModifiedDate, configVersion); } private static boolean keepReading(XmlPullParser parser) |