summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--graphics/java/android/graphics/fonts/SystemFonts.java32
1 files changed, 10 insertions, 22 deletions
diff --git a/graphics/java/android/graphics/fonts/SystemFonts.java b/graphics/java/android/graphics/fonts/SystemFonts.java
index 28943baf9503..fb6ea99be7ab 100644
--- a/graphics/java/android/graphics/fonts/SystemFonts.java
+++ b/graphics/java/android/graphics/fonts/SystemFonts.java
@@ -88,31 +88,19 @@ public final class SystemFonts {
}
private static @NonNull Set<Font> collectAllFonts() {
- Map<String, Typeface> map = Typeface.getSystemFontMap();
- HashSet<NativeFont.Font> seenFonts = new HashSet<>();
- HashSet<Font> result = new HashSet<>();
- for (Typeface typeface : map.values()) {
- List<NativeFont.Family> families = NativeFont.readTypeface(typeface);
- for (NativeFont.Family family : families) {
- for (NativeFont.Font font : family.getFonts()) {
- if (seenFonts.contains(font)) {
- continue;
- }
- seenFonts.add(font);
- try {
- result.add(new Font.Builder(font.getFile(), family.getLocale())
- .setFontVariationSettings(font.getAxes())
- .setTtcIndex(font.getIndex())
- .setWeight(font.getStyle().getWeight())
- .setSlant(font.getStyle().getSlant())
- .build());
- } catch (IOException e) {
- Log.w(TAG, "Failed to load " + font.getFile(), e);
- }
+ final FontCustomizationParser.Result oemCustomization =
+ readFontCustomization("/product/etc/fonts_customization.xml", "/product/fonts/");
+ Map<String, FontFamily[]> map = new ArrayMap<>();
+ buildSystemFallback("/system/etc/fonts.xml", "/system/fonts/", oemCustomization, map);
+ Set<Font> res = new HashSet<>();
+ for (FontFamily[] families : map.values()) {
+ for (FontFamily family : families) {
+ for (int i = 0; i < family.getSize(); ++i) {
+ res.add(family.getFont(i));
}
}
}
- return result;
+ return res;
}
private static @Nullable ByteBuffer mmap(@NonNull String fullPath) {