diff options
| author | 2022-03-03 21:04:56 +0000 | |
|---|---|---|
| committer | 2022-03-03 21:04:56 +0000 | |
| commit | e93f2d09165f078a238e3cfc57addc40bcc499b2 (patch) | |
| tree | 46cbc3c42667688a95df013edcb6cfeb7fe105de | |
| parent | 5650a045189c3c5cbeb8475ff3ffe8a3fe2d72d9 (diff) | |
| parent | e26eb8ce33dc512f9e57c4299674653255b7a0c7 (diff) | |
Merge "Add legacy emoji font file for compatibility" into tm-dev
| -rw-r--r-- | core/tests/coretests/src/android/graphics/FontListParserTest.java | 21 | ||||
| -rw-r--r-- | data/fonts/fonts.xml | 3 | ||||
| -rw-r--r-- | graphics/java/android/graphics/FontListParser.java | 5 | ||||
| -rwxr-xr-x | tools/fonts/fontchain_linter.py | 7 |
4 files changed, 35 insertions, 1 deletions
diff --git a/core/tests/coretests/src/android/graphics/FontListParserTest.java b/core/tests/coretests/src/android/graphics/FontListParserTest.java index 701e6194d4ee..479e52aab029 100644 --- a/core/tests/coretests/src/android/graphics/FontListParserTest.java +++ b/core/tests/coretests/src/android/graphics/FontListParserTest.java @@ -355,6 +355,27 @@ public final class FontListParserTest { 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) throws IOException, XmlPullParserException { ByteArrayInputStream buffer = new ByteArrayInputStream( diff --git a/data/fonts/fonts.xml b/data/fonts/fonts.xml index e050e1784fac..84e949a18c52 100644 --- a/data/fonts/fonts.xml +++ b/data/fonts/fonts.xml @@ -1328,6 +1328,9 @@ postScriptName="NotoSerifCJKjp-Regular">NotoSerifCJK-Regular.ttc </font> </family> + <family lang="und-Zsye" ignore="true"> + <font weight="400" style="normal">NotoColorEmojiLegacy.ttf</font> + </family> <family lang="und-Zsye"> <font weight="400" style="normal">NotoColorEmoji.ttf</font> </family> diff --git a/graphics/java/android/graphics/FontListParser.java b/graphics/java/android/graphics/FontListParser.java index 96b33259e739..4bb16c6b8186 100644 --- a/graphics/java/android/graphics/FontListParser.java +++ b/graphics/java/android/graphics/FontListParser.java @@ -218,6 +218,7 @@ public class FontListParser { final String name = parser.getAttributeValue(null, "name"); final String lang = parser.getAttributeValue("", "lang"); final String variant = parser.getAttributeValue(null, "variant"); + final String ignore = parser.getAttributeValue(null, "ignore"); final List<FontConfig.Font> fonts = new ArrayList<>(); while (keepReading(parser)) { if (parser.getEventType() != XmlPullParser.START_TAG) continue; @@ -240,7 +241,9 @@ public class FontListParser { 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 new FontConfig.FontFamily(fonts, name, LocaleList.forLanguageTags(lang), intVariant); diff --git a/tools/fonts/fontchain_linter.py b/tools/fonts/fontchain_linter.py index 2c2c91825162..0d9ea1b70680 100755 --- a/tools/fonts/fontchain_linter.py +++ b/tools/fonts/fontchain_linter.py @@ -243,6 +243,8 @@ def parse_fonts_xml(fonts_xml_path): name = family.get('name') variant = family.get('variant') langs = family.get('lang') + ignoreAttr = family.get('ignore') + if name: assert variant is None, ( 'No variant expected for LGC font %s.' % name) @@ -259,6 +261,11 @@ def parse_fonts_xml(fonts_xml_path): name = family.get('name') variant = family.get('variant') langs = family.get('lang') + ignoreAttr = family.get('ignore') + ignore = ignoreAttr == 'true' or ignoreAttr == '1' + + if ignore: + continue if langs: langs = langs.split() |