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

Commit 18df2276 authored by Seigo Nonaka's avatar Seigo Nonaka Committed by Android (Google) Code Review
Browse files

Merge "Introduce system font enumeration API"

parents e39414c8 c7b3e62f
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -15218,6 +15218,9 @@ package android.graphics.fonts {
  public final class Font {
    method public android.graphics.fonts.FontVariationAxis[] getAxes();
    method public java.nio.ByteBuffer getBuffer();
    method public java.io.File getFile();
    method public android.os.LocaleList getLocaleList();
    method public int getTtcIndex();
    method public int getWeight();
    method public boolean isItalic();
@@ -15266,6 +15269,10 @@ package android.graphics.fonts {
    method public static java.lang.String toFontVariationSettings(android.graphics.fonts.FontVariationAxis[]);
  }
  public class SystemFonts {
    method public static java.util.Set<android.graphics.fonts.Font> getAvailableFonts();
  }
}
package android.graphics.pdf {
+5 −4
Original line number Diff line number Diff line
@@ -181,7 +181,8 @@ public final class FontConfig {
    public static final class Family {
        private final @NonNull String mName;
        private final @NonNull Font[] mFonts;
        private final @NonNull String[] mLanguages;
        // Comma separated BCP47 complient locale strings
        private final @NonNull String mLanguages;

        /** @hide */
        @Retention(SOURCE)
@@ -219,7 +220,7 @@ public final class FontConfig {
        // See frameworks/minikin/include/minikin/FontFamily.h
        private final @Variant int mVariant;

        public Family(@NonNull String name, @NonNull Font[] fonts, @NonNull String[] languages,
        public Family(@NonNull String name, @NonNull Font[] fonts, @NonNull String languages,
                @Variant int variant) {
            mName = name;
            mFonts = fonts;
@@ -244,9 +245,9 @@ public final class FontConfig {
        }

        /**
         * Returns the languages for this family. May be null.
         * Returns the comma separated BCP47 complient languages for this family. May be null.
         */
        public @Nullable String[] getLanguages() {
        public @NonNull String getLanguages() {
            return mLanguages;
        }

+7 −3
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertTrue;

import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.fonts.Font;
import android.graphics.fonts.FontFamily;
import android.graphics.fonts.SystemFonts;
import android.support.test.InstrumentationRegistry;
@@ -43,6 +44,7 @@ import java.io.InputStream;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.HashSet;
import java.util.Locale;

@SmallTest
@@ -110,13 +112,14 @@ public class TypefaceSystemFallbackTest {

    private static void buildSystemFallback(String xml,
            ArrayMap<String, Typeface> fontMap, ArrayMap<String, FontFamily[]> fallbackMap) {
        final HashSet<Font> availableFonts = new HashSet<>();
        try (FileOutputStream fos = new FileOutputStream(TEST_FONTS_XML)) {
            fos.write(xml.getBytes(Charset.forName("UTF-8")));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        final FontConfig.Alias[] aliases = SystemFonts.buildSystemFallback(TEST_FONTS_XML,
                TEST_FONT_DIR, fallbackMap);
                TEST_FONT_DIR, fallbackMap, availableFonts);
        Typeface.initSystemDefaultTypefaces(fontMap, fallbackMap, aliases);
    }

@@ -124,9 +127,10 @@ public class TypefaceSystemFallbackTest {
    public void testBuildSystemFallback() {
        final ArrayMap<String, Typeface> fontMap = new ArrayMap<>();
        final ArrayMap<String, FontFamily[]> fallbackMap = new ArrayMap<>();
        final HashSet<Font> availableFonts = new HashSet<>();

        final FontConfig.Alias[] aliases = SystemFonts.buildSystemFallback(SYSTEM_FONTS_XML,
                SYSTEM_FONT_DIR, fallbackMap);
                SYSTEM_FONT_DIR, fallbackMap, availableFonts);

        assertNotNull(aliases);
        assertFalse(fallbackMap.isEmpty());
@@ -487,7 +491,7 @@ public class TypefaceSystemFallbackTest {
                + "  <family lang='de'>"
                + "    <font weight='400' style='normal'>a3em.ttf</font>"
                + "  </family>"
                + "  <family lang='it fr'>"
                + "  <family lang='it,fr'>"
                + "    <font weight='400' style='normal'>b3em.ttf</font>"
                + "  </family>"
                + "</familyset>";
+4 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.annotation.NonNull;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.graphics.fonts.Font;
import android.graphics.fonts.FontFamily;
import android.graphics.fonts.SystemFonts;
import android.support.test.InstrumentationRegistry;
@@ -32,6 +33,7 @@ import java.io.InputStream;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.HashSet;

public class FontFallbackSetup implements AutoCloseable {
    private final String[] mTestFontFiles;
@@ -74,8 +76,9 @@ public class FontFallbackSetup implements AutoCloseable {
        }

        final ArrayMap<String, FontFamily[]> fallbackMap = new ArrayMap<>();
        final HashSet<Font> availableFonts = new HashSet<>();
        final FontConfig.Alias[] aliases = SystemFonts.buildSystemFallback(testFontsXml,
                mTestFontsDir, fallbackMap);
                mTestFontsDir, fallbackMap, availableFonts);
        Typeface.initSystemDefaultTypefaces(mFontMap, fallbackMap, aliases);
    }

+2 −2
Original line number Diff line number Diff line
@@ -137,7 +137,7 @@
        <font weight="400" style="normal" fallbackFor="serif">NotoSerifArmenian-Regular.otf</font>
        <font weight="700" style="normal" fallbackFor="serif">NotoSerifArmenian-Bold.otf</font>
    </family>
    <family lang="und-Geor und-Geok">
    <family lang="und-Geor,und-Geok">
        <font weight="400" style="normal">NotoSansGeorgian-Regular.otf</font>
        <font weight="500" style="normal">NotoSansGeorgian-Medium.otf</font>
        <font weight="700" style="normal">NotoSansGeorgian-Bold.otf</font>
@@ -538,7 +538,7 @@
        <font weight="400" style="normal" index="2">NotoSansCJK-Regular.ttc</font>
        <font weight="400" style="normal" index="2" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font>
    </family>
    <family lang="zh-Hant zh-Bopo">
    <family lang="zh-Hant,zh-Bopo">
        <font weight="400" style="normal" index="3">NotoSansCJK-Regular.ttc</font>
        <font weight="400" style="normal" index="3" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font>
    </family>
Loading