diff options
| -rw-r--r-- | graphics/java/android/graphics/fonts/SystemFonts.java | 32 |
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) { |