Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1aa57ec5 authored by Seigo Nonaka's avatar Seigo Nonaka
Browse files

Parse fonts.xml when SystemFonts#getAvailableFonts is called

The fonts.xml is no longer parsed once we move to new model.
Thus, need to parse fonts.xml when SystemFonts#getAvailableFonts
is called.

Bug: 173752727
Test: atest NativeSystemFontTest
Change-Id: I628a2586f8450b942caf34ede5dc827e31fff0ef
parent 0cd2dbd9
Loading
Loading
Loading
Loading
+10 −22
Original line number Diff line number Diff line
@@ -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) {