Loading core/tests/coretests/src/android/graphics/FontListParserTest.java +21 −0 Original line number Original line Diff line number Diff line Loading @@ -355,6 +355,27 @@ public final class FontListParserTest { assertThat(config.getAliases()).isEmpty(); assertThat(config.getAliases()).isEmpty(); } } @Test public void ignore() throws Exception { String xml = "<?xml version='1.0' encoding='UTF-8'?>" + "<familyset>" + " <family name='sans-serif'>" + " <font>test.ttf</font>" + " </family>" + " <family lang='und-Zsye' ignore='true'>" + " <font>emoji_legacy.ttf</font>" + " </family>" + " <family lang='und-Zsye'>" + " <font>emoji.ttf</font>" + " </family>" + "</familyset>"; FontConfig config = readFamilies(xml, true /* include non-existing font files */); List<FontConfig.FontFamily> families = config.getFontFamilies(); assertThat(families.size()).isEqualTo(2); // legacy one should be ignored. assertThat(families.get(1).getFontList().get(0).getFile().getName()) .isEqualTo("emoji.ttf"); } private FontConfig readFamilies(String xml, boolean allowNonExisting) private FontConfig readFamilies(String xml, boolean allowNonExisting) throws IOException, XmlPullParserException { throws IOException, XmlPullParserException { ByteArrayInputStream buffer = new ByteArrayInputStream( ByteArrayInputStream buffer = new ByteArrayInputStream( Loading data/fonts/fonts.xml +3 −0 Original line number Original line Diff line number Diff line Loading @@ -1328,6 +1328,9 @@ postScriptName="NotoSerifCJKjp-Regular">NotoSerifCJK-Regular.ttc postScriptName="NotoSerifCJKjp-Regular">NotoSerifCJK-Regular.ttc </font> </font> </family> </family> <family lang="und-Zsye" ignore="true"> <font weight="400" style="normal">NotoColorEmojiLegacy.ttf</font> </family> <family lang="und-Zsye"> <family lang="und-Zsye"> <font weight="400" style="normal">NotoColorEmoji.ttf</font> <font weight="400" style="normal">NotoColorEmoji.ttf</font> </family> </family> Loading graphics/java/android/graphics/FontListParser.java +4 −1 Original line number Original line Diff line number Diff line Loading @@ -218,6 +218,7 @@ public class FontListParser { final String name = parser.getAttributeValue(null, "name"); final String name = parser.getAttributeValue(null, "name"); final String lang = parser.getAttributeValue("", "lang"); final String lang = parser.getAttributeValue("", "lang"); final String variant = parser.getAttributeValue(null, "variant"); final String variant = parser.getAttributeValue(null, "variant"); final String ignore = parser.getAttributeValue(null, "ignore"); final List<FontConfig.Font> fonts = new ArrayList<>(); final List<FontConfig.Font> fonts = new ArrayList<>(); while (keepReading(parser)) { while (keepReading(parser)) { if (parser.getEventType() != XmlPullParser.START_TAG) continue; if (parser.getEventType() != XmlPullParser.START_TAG) continue; Loading @@ -240,7 +241,9 @@ public class FontListParser { intVariant = FontConfig.FontFamily.VARIANT_ELEGANT; intVariant = FontConfig.FontFamily.VARIANT_ELEGANT; } } } } if (fonts.isEmpty()) { boolean skip = (ignore != null && (ignore.equals("true") || ignore.equals("1"))); if (skip || fonts.isEmpty()) { return null; return null; } } return new FontConfig.FontFamily(fonts, name, LocaleList.forLanguageTags(lang), intVariant); return new FontConfig.FontFamily(fonts, name, LocaleList.forLanguageTags(lang), intVariant); Loading tools/fonts/fontchain_linter.py +7 −0 Original line number Original line Diff line number Diff line Loading @@ -243,6 +243,8 @@ def parse_fonts_xml(fonts_xml_path): name = family.get('name') name = family.get('name') variant = family.get('variant') variant = family.get('variant') langs = family.get('lang') langs = family.get('lang') ignoreAttr = family.get('ignore') if name: if name: assert variant is None, ( assert variant is None, ( 'No variant expected for LGC font %s.' % name) 'No variant expected for LGC font %s.' % name) Loading @@ -259,6 +261,11 @@ def parse_fonts_xml(fonts_xml_path): name = family.get('name') name = family.get('name') variant = family.get('variant') variant = family.get('variant') langs = family.get('lang') langs = family.get('lang') ignoreAttr = family.get('ignore') ignore = ignoreAttr == 'true' or ignoreAttr == '1' if ignore: continue if langs: if langs: langs = langs.split() langs = langs.split() Loading Loading
core/tests/coretests/src/android/graphics/FontListParserTest.java +21 −0 Original line number Original line Diff line number Diff line Loading @@ -355,6 +355,27 @@ public final class FontListParserTest { assertThat(config.getAliases()).isEmpty(); assertThat(config.getAliases()).isEmpty(); } } @Test public void ignore() throws Exception { String xml = "<?xml version='1.0' encoding='UTF-8'?>" + "<familyset>" + " <family name='sans-serif'>" + " <font>test.ttf</font>" + " </family>" + " <family lang='und-Zsye' ignore='true'>" + " <font>emoji_legacy.ttf</font>" + " </family>" + " <family lang='und-Zsye'>" + " <font>emoji.ttf</font>" + " </family>" + "</familyset>"; FontConfig config = readFamilies(xml, true /* include non-existing font files */); List<FontConfig.FontFamily> families = config.getFontFamilies(); assertThat(families.size()).isEqualTo(2); // legacy one should be ignored. assertThat(families.get(1).getFontList().get(0).getFile().getName()) .isEqualTo("emoji.ttf"); } private FontConfig readFamilies(String xml, boolean allowNonExisting) private FontConfig readFamilies(String xml, boolean allowNonExisting) throws IOException, XmlPullParserException { throws IOException, XmlPullParserException { ByteArrayInputStream buffer = new ByteArrayInputStream( ByteArrayInputStream buffer = new ByteArrayInputStream( Loading
data/fonts/fonts.xml +3 −0 Original line number Original line Diff line number Diff line Loading @@ -1328,6 +1328,9 @@ postScriptName="NotoSerifCJKjp-Regular">NotoSerifCJK-Regular.ttc postScriptName="NotoSerifCJKjp-Regular">NotoSerifCJK-Regular.ttc </font> </font> </family> </family> <family lang="und-Zsye" ignore="true"> <font weight="400" style="normal">NotoColorEmojiLegacy.ttf</font> </family> <family lang="und-Zsye"> <family lang="und-Zsye"> <font weight="400" style="normal">NotoColorEmoji.ttf</font> <font weight="400" style="normal">NotoColorEmoji.ttf</font> </family> </family> Loading
graphics/java/android/graphics/FontListParser.java +4 −1 Original line number Original line Diff line number Diff line Loading @@ -218,6 +218,7 @@ public class FontListParser { final String name = parser.getAttributeValue(null, "name"); final String name = parser.getAttributeValue(null, "name"); final String lang = parser.getAttributeValue("", "lang"); final String lang = parser.getAttributeValue("", "lang"); final String variant = parser.getAttributeValue(null, "variant"); final String variant = parser.getAttributeValue(null, "variant"); final String ignore = parser.getAttributeValue(null, "ignore"); final List<FontConfig.Font> fonts = new ArrayList<>(); final List<FontConfig.Font> fonts = new ArrayList<>(); while (keepReading(parser)) { while (keepReading(parser)) { if (parser.getEventType() != XmlPullParser.START_TAG) continue; if (parser.getEventType() != XmlPullParser.START_TAG) continue; Loading @@ -240,7 +241,9 @@ public class FontListParser { intVariant = FontConfig.FontFamily.VARIANT_ELEGANT; intVariant = FontConfig.FontFamily.VARIANT_ELEGANT; } } } } if (fonts.isEmpty()) { boolean skip = (ignore != null && (ignore.equals("true") || ignore.equals("1"))); if (skip || fonts.isEmpty()) { return null; return null; } } return new FontConfig.FontFamily(fonts, name, LocaleList.forLanguageTags(lang), intVariant); return new FontConfig.FontFamily(fonts, name, LocaleList.forLanguageTags(lang), intVariant); Loading
tools/fonts/fontchain_linter.py +7 −0 Original line number Original line Diff line number Diff line Loading @@ -243,6 +243,8 @@ def parse_fonts_xml(fonts_xml_path): name = family.get('name') name = family.get('name') variant = family.get('variant') variant = family.get('variant') langs = family.get('lang') langs = family.get('lang') ignoreAttr = family.get('ignore') if name: if name: assert variant is None, ( assert variant is None, ( 'No variant expected for LGC font %s.' % name) 'No variant expected for LGC font %s.' % name) Loading @@ -259,6 +261,11 @@ def parse_fonts_xml(fonts_xml_path): name = family.get('name') name = family.get('name') variant = family.get('variant') variant = family.get('variant') langs = family.get('lang') langs = family.get('lang') ignoreAttr = family.get('ignore') ignore = ignoreAttr == 'true' or ignoreAttr == '1' if ignore: continue if langs: if langs: langs = langs.split() langs = langs.split() Loading