diff options
author | Seigo Nonaka <nona@google.com> | 2021-04-16 00:11:43 -0700 |
---|---|---|
committer | Seigo Nonaka <nona@google.com> | 2021-04-17 00:46:04 -0700 |
commit | 5681124abbf3d41a360df0057e58125bf9a754ea (patch) | |
tree | 0e4f8018fac5db6bae6e5076e1c826dfc41a19b7 | |
parent | 5600015ef095fdcdc1315b8243624423a615af54 (diff) |
Add FontConfig.Font.getPostScriptName API
Bug: 184003133
Bug: 185508395
Test: atest FontManagerTest#fontManager_PostScriptName
Change-Id: Ie44e0d500c61b37035a0b39039891da13cd6a5ce
-rw-r--r-- | core/api/system-current.txt | 1 | ||||
-rw-r--r-- | core/api/test-current.txt | 1 | ||||
-rw-r--r-- | core/java/android/text/FontConfig.java | 21 | ||||
-rw-r--r-- | core/tests/coretests/src/android/graphics/FontListParserTest.java | 44 | ||||
-rw-r--r-- | data/fonts/fonts.xml | 847 | ||||
-rw-r--r-- | graphics/java/android/graphics/FontListParser.java | 14 | ||||
-rw-r--r-- | services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java | 4 | ||||
-rwxr-xr-x | tools/fonts/fontchain_linter.py | 45 |
8 files changed, 689 insertions, 288 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt index f7b4cdccee6c..73fe76448df9 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -14122,6 +14122,7 @@ package android.text { method @NonNull public java.io.File getFile(); method @Nullable public String getFontFamilyName(); method @NonNull public String getFontVariationSettings(); + method @NonNull public String getPostScriptName(); method @NonNull public android.graphics.fonts.FontStyle getStyle(); method public int getTtcIndex(); method public void writeToParcel(@NonNull android.os.Parcel, int); diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 0e1b24a20018..c2af526fd095 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -2489,6 +2489,7 @@ package android.text { method @NonNull public java.io.File getFile(); method @Nullable public String getFontFamilyName(); method @NonNull public String getFontVariationSettings(); + method @NonNull public String getPostScriptName(); method @NonNull public android.graphics.fonts.FontStyle getStyle(); method public int getTtcIndex(); method public void writeToParcel(@NonNull android.os.Parcel, int); diff --git a/core/java/android/text/FontConfig.java b/core/java/android/text/FontConfig.java index 33b7c757f1e8..2f7fb2f0ab9d 100644 --- a/core/java/android/text/FontConfig.java +++ b/core/java/android/text/FontConfig.java @@ -194,6 +194,7 @@ public final class FontConfig implements Parcelable { public static final class Font implements Parcelable { private final @NonNull File mFile; private final @Nullable File mOriginalFile; + private final @NonNull String mPostScriptName; private final @NonNull FontStyle mStyle; private final @IntRange(from = 0) int mIndex; private final @NonNull String mFontVariationSettings; @@ -204,11 +205,12 @@ public final class FontConfig implements Parcelable { * * @hide Only system server can create this instance and passed via IPC. */ - public Font(@NonNull File file, @Nullable File originalFile, @NonNull FontStyle style, - @IntRange(from = 0) int index, @NonNull String fontVariationSettings, - @Nullable String fontFamilyName) { + public Font(@NonNull File file, @Nullable File originalFile, @NonNull String postScriptName, + @NonNull FontStyle style, @IntRange(from = 0) int index, + @NonNull String fontVariationSettings, @Nullable String fontFamilyName) { mFile = file; mOriginalFile = originalFile; + mPostScriptName = postScriptName; mStyle = style; mIndex = index; mFontVariationSettings = fontVariationSettings; @@ -224,6 +226,7 @@ public final class FontConfig implements Parcelable { public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeString8(mFile.getAbsolutePath()); dest.writeString8(mOriginalFile == null ? null : mOriginalFile.getAbsolutePath()); + dest.writeString8(mPostScriptName); dest.writeInt(mStyle.getWeight()); dest.writeInt(mStyle.getSlant()); dest.writeInt(mIndex); @@ -238,14 +241,15 @@ public final class FontConfig implements Parcelable { File path = new File(source.readString8()); String originalPathStr = source.readString8(); File originalPath = originalPathStr == null ? null : new File(originalPathStr); + String postScriptName = source.readString8(); int weight = source.readInt(); int slant = source.readInt(); int index = source.readInt(); String varSettings = source.readString8(); String fallback = source.readString8(); - return new Font(path, originalPath, new FontStyle(weight, slant), index, - varSettings, fallback); + return new Font(path, originalPath, postScriptName, new FontStyle(weight, slant), + index, varSettings, fallback); } @Override @@ -314,6 +318,13 @@ public final class FontConfig implements Parcelable { } /** + * Returns the PostScript name of this font. + */ + public @NonNull String getPostScriptName() { + return mPostScriptName; + } + + /** * Returns the list of axes associated to this font. * @deprecated Use getFontVariationSettings * @hide diff --git a/core/tests/coretests/src/android/graphics/FontListParserTest.java b/core/tests/coretests/src/android/graphics/FontListParserTest.java index bef1a4e7010f..b2df98dc6374 100644 --- a/core/tests/coretests/src/android/graphics/FontListParserTest.java +++ b/core/tests/coretests/src/android/graphics/FontListParserTest.java @@ -59,7 +59,7 @@ public final class FontListParserTest { + "</family>"; FontConfig.FontFamily expected = new FontConfig.FontFamily( Arrays.asList( - new FontConfig.Font(new File("test.ttf"), null, + new FontConfig.Font(new File("test.ttf"), null, "test", new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT), 0, "", null)), "sans-serif", LocaleList.getEmptyLocaleList(), VARIANT_DEFAULT); @@ -77,10 +77,10 @@ public final class FontListParserTest { + "</family>"; FontConfig.FontFamily expected = new FontConfig.FontFamily( Arrays.asList( - new FontConfig.Font(new File("test.ttf"), null, + new FontConfig.Font(new File("test.ttf"), null, "test", new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT), 0, "", null), - new FontConfig.Font(new File("test.ttf"), null, + new FontConfig.Font(new File("test.ttf"), null, "test", new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT), 0, "", "serif")), null, LocaleList.forLanguageTags("en"), VARIANT_DEFAULT); @@ -97,7 +97,7 @@ public final class FontListParserTest { + "</family>"; FontConfig.FontFamily expected = new FontConfig.FontFamily( Arrays.asList( - new FontConfig.Font(new File("test.ttf"), null, + new FontConfig.Font(new File("test.ttf"), null, "test", new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT), 0, "", null)), null, LocaleList.forLanguageTags("en"), VARIANT_COMPACT); @@ -114,7 +114,7 @@ public final class FontListParserTest { + "</family>"; FontConfig.FontFamily expected = new FontConfig.FontFamily( Arrays.asList( - new FontConfig.Font(new File("test.ttf"), null, + new FontConfig.Font(new File("test.ttf"), null, "test", new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT), 0, "", null)), null, LocaleList.forLanguageTags("en"), VARIANT_ELEGANT); @@ -133,13 +133,13 @@ public final class FontListParserTest { + "</family>"; FontConfig.FontFamily expected = new FontConfig.FontFamily( Arrays.asList( - new FontConfig.Font(new File("normal.ttf"), null, + new FontConfig.Font(new File("normal.ttf"), null, "test", new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT), 0, "", null), - new FontConfig.Font(new File("weight.ttf"), null, + new FontConfig.Font(new File("weight.ttf"), null, "test", new FontStyle(100, FONT_SLANT_UPRIGHT), 0, "", null), - new FontConfig.Font(new File("italic.ttf"), null, + new FontConfig.Font(new File("italic.ttf"), null, "test", new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_ITALIC), 0, "", null)), "sans-serif", LocaleList.getEmptyLocaleList(), VARIANT_DEFAULT); @@ -162,10 +162,10 @@ public final class FontListParserTest { + "</family>"; FontConfig.FontFamily expected = new FontConfig.FontFamily( Arrays.asList( - new FontConfig.Font(new File("test-VF.ttf"), null, + new FontConfig.Font(new File("test-VF.ttf"), null, "test", new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT), 0, "'wdth' 100.0,'wght' 200.0", null), - new FontConfig.Font(new File("test-VF.ttf"), null, + new FontConfig.Font(new File("test-VF.ttf"), null, "test", new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT), 0, "'wdth' 400.0,'wght' 700.0", null)), "sans-serif", LocaleList.getEmptyLocaleList(), VARIANT_DEFAULT); @@ -182,10 +182,30 @@ public final class FontListParserTest { + "</family>"; FontConfig.FontFamily expected = new FontConfig.FontFamily( Arrays.asList( - new FontConfig.Font(new File("test.ttc"), null, + new FontConfig.Font(new File("test.ttc"), null, "test", new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT), 0, "", null), - new FontConfig.Font(new File("test.ttc"), null, + new FontConfig.Font(new File("test.ttc"), null, "test", + new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT), + 1, "", null)), + "sans-serif", LocaleList.getEmptyLocaleList(), VARIANT_DEFAULT); + FontConfig.FontFamily family = readFamily(xml); + assertThat(family).isEqualTo(expected); + } + + @Test + public void psName() throws Exception { + String xml = "<?xml version='1.0' encoding='UTF-8'?>" + + "<family name='sans-serif'>" + + " <font index='0' postScriptName='foo'>test.ttc</font>" + + " <font index='1'>test.ttc</font>" + + "</family>"; + FontConfig.FontFamily expected = new FontConfig.FontFamily( + Arrays.asList( + new FontConfig.Font(new File("test.ttc"), null, "foo", + new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT), + 0, "", null), + new FontConfig.Font(new File("test.ttc"), null, "test", new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT), 1, "", null)), "sans-serif", LocaleList.getEmptyLocaleList(), VARIANT_DEFAULT); diff --git a/data/fonts/fonts.xml b/data/fonts/fonts.xml index 2db4c5d6bf2a..11635366a222 100644 --- a/data/fonts/fonts.xml +++ b/data/fonts/fonts.xml @@ -223,7 +223,7 @@ <alias name="sans-serif-condensed-medium" to="sans-serif-condensed" weight="500" /> <family name="serif"> - <font weight="400" style="normal">NotoSerif-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSerif">NotoSerif-Regular.ttf</font> <font weight="700" style="normal">NotoSerif-Bold.ttf</font> <font weight="400" style="italic">NotoSerif-Italic.ttf</font> <font weight="700" style="italic">NotoSerif-BoldItalic.ttf</font> @@ -245,7 +245,7 @@ <alias name="monaco" to="monospace" /> <family name="serif-monospace"> - <font weight="400" style="normal">CutiveMono.ttf</font> + <font weight="400" style="normal" postScriptName="CutiveMono-Regular">CutiveMono.ttf</font> </family> <alias name="courier" to="serif-monospace" /> <alias name="courier new" to="serif-monospace" /> @@ -255,7 +255,8 @@ </family> <family name="cursive"> - <font weight="400" style="normal">DancingScript-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="DancingScript">DancingScript-Regular.ttf + </font> <font weight="700" style="normal">DancingScript-Bold.ttf</font> </family> @@ -271,148 +272,195 @@ <font weight="700" style="normal">SourceSansPro-Bold.ttf</font> <font weight="700" style="italic">SourceSansPro-BoldItalic.ttf</font> </family> - <alias name="source-sans-pro-semi-bold" to="source-sans-pro" weight="600" /> + <alias name="source-sans-pro-semi-bold" to="source-sans-pro" weight="600"/> <!-- fallback fonts --> <family lang="und-Arab" variant="elegant"> - <font weight="400" style="normal">NotoNaskhArabic-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoNaskhArabic"> + NotoNaskhArabic-Regular.ttf + </font> <font weight="700" style="normal">NotoNaskhArabic-Bold.ttf</font> </family> <family lang="und-Arab" variant="compact"> - <font weight="400" style="normal">NotoNaskhArabicUI-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoNaskhArabicUI"> + NotoNaskhArabicUI-Regular.ttf + </font> <font weight="700" style="normal">NotoNaskhArabicUI-Bold.ttf</font> </family> <family lang="und-Ethi"> - <font weight="400" style="normal">NotoSansEthiopic-VF.ttf - <axis tag="wght" stylevalue="400"/> - </font> - <font weight="500" style="normal">NotoSansEthiopic-VF.ttf - <axis tag="wght" stylevalue="500"/> - </font> - <font weight="600" style="normal">NotoSansEthiopic-VF.ttf - <axis tag="wght" stylevalue="600"/> - </font> - <font weight="700" style="normal">NotoSansEthiopic-VF.ttf - <axis tag="wght" stylevalue="700"/> - </font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifEthiopic-VF.ttf - <axis tag="wght" stylevalue="400"/> - </font> - <font weight="500" style="normal" fallbackFor="serif">NotoSerifEthiopic-VF.ttf - <axis tag="wght" stylevalue="500"/> - </font> - <font weight="600" style="normal" fallbackFor="serif">NotoSerifEthiopic-VF.ttf - <axis tag="wght" stylevalue="600"/> - </font> - <font weight="700" style="normal" fallbackFor="serif">NotoSerifEthiopic-VF.ttf - <axis tag="wght" stylevalue="700"/> - </font> + <font weight="400" style="normal" postScriptName="NotoSansEthiopic-Regular"> + NotoSansEthiopic-VF.ttf + <axis tag="wght" stylevalue="400"/> + </font> + <font weight="500" style="normal" postScriptName="NotoSansEthiopic-Regular"> + NotoSansEthiopic-VF.ttf + <axis tag="wght" stylevalue="500"/> + </font> + <font weight="600" style="normal" postScriptName="NotoSansEthiopic-Regular"> + NotoSansEthiopic-VF.ttf + <axis tag="wght" stylevalue="600"/> + </font> + <font weight="700" style="normal" postScriptName="NotoSansEthiopic-Regular"> + NotoSansEthiopic-VF.ttf + <axis tag="wght" stylevalue="700"/> + </font> + <font weight="400" style="normal" fallbackFor="serif" + postScriptName="NotoSerifEthiopic-Regular">NotoSerifEthiopic-VF.ttf + <axis tag="wght" stylevalue="400"/> + </font> + <font weight="500" style="normal" fallbackFor="serif" + postScriptName="NotoSerifEthiopic-Regular">NotoSerifEthiopic-VF.ttf + <axis tag="wght" stylevalue="500"/> + </font> + <font weight="600" style="normal" fallbackFor="serif" + postScriptName="NotoSerifEthiopic-Regular">NotoSerifEthiopic-VF.ttf + <axis tag="wght" stylevalue="600"/> + </font> + <font weight="700" style="normal" fallbackFor="serif" + postScriptName="NotoSerifEthiopic-Regular">NotoSerifEthiopic-VF.ttf + <axis tag="wght" stylevalue="700"/> + </font> </family> <family lang="und-Hebr"> - <font weight="400" style="normal">NotoSansHebrew-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansHebrew"> + NotoSansHebrew-Regular.ttf + </font> <font weight="700" style="normal">NotoSansHebrew-Bold.ttf</font> <font weight="400" style="normal" fallbackFor="serif">NotoSerifHebrew-Regular.ttf</font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifHebrew-Bold.ttf</font> </family> <family lang="und-Thai" variant="elegant"> - <font weight="400" style="normal">NotoSansThai-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansThai">NotoSansThai-Regular.ttf + </font> <font weight="700" style="normal">NotoSansThai-Bold.ttf</font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifThai-Regular.ttf</font> + <font weight="400" style="normal" fallbackFor="serif" postScriptName="NotoSerifThai"> + NotoSerifThai-Regular.ttf + </font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifThai-Bold.ttf</font> </family> <family lang="und-Thai" variant="compact"> - <font weight="400" style="normal">NotoSansThaiUI-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansThaiUI"> + NotoSansThaiUI-Regular.ttf + </font> <font weight="700" style="normal">NotoSansThaiUI-Bold.ttf</font> </family> <family lang="und-Armn"> - <font weight="400" style="normal">NotoSansArmenian-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansArmenian-Regular"> + NotoSansArmenian-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansArmenian-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansArmenian-Regular"> + NotoSansArmenian-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansArmenian-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansArmenian-Regular"> + NotoSansArmenian-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansArmenian-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansArmenian-Regular"> + NotoSansArmenian-VF.ttf <axis tag="wght" stylevalue="700"/> </font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifArmenian-VF.ttf + <font weight="400" style="normal" fallbackFor="serif" + postScriptName="NotoSerifArmenian-Regular">NotoSerifArmenian-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal" fallbackFor="serif">NotoSerifArmenian-VF.ttf + <font weight="500" style="normal" fallbackFor="serif" + postScriptName="NotoSerifArmenian-Regular">NotoSerifArmenian-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal" fallbackFor="serif">NotoSerifArmenian-VF.ttf + <font weight="600" style="normal" fallbackFor="serif" + postScriptName="NotoSerifArmenian-Regular">NotoSerifArmenian-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal" fallbackFor="serif">NotoSerifArmenian-VF.ttf + <font weight="700" style="normal" fallbackFor="serif" + postScriptName="NotoSerifArmenian-Regular">NotoSerifArmenian-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Geor,und-Geok"> - <font weight="400" style="normal">NotoSansGeorgian-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansGeorgian-Regular"> + NotoSansGeorgian-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansGeorgian-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansGeorgian-Regular"> + NotoSansGeorgian-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansGeorgian-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansGeorgian-Regular"> + NotoSansGeorgian-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansGeorgian-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansGeorgian-Regular"> + NotoSansGeorgian-VF.ttf <axis tag="wght" stylevalue="700"/> </font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifGeorgian-VF.ttf + <font weight="400" style="normal" fallbackFor="serif" + postScriptName="NotoSerifGeorgian-Regular">NotoSerifGeorgian-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal" fallbackFor="serif">NotoSerifGeorgian-VF.ttf + <font weight="500" style="normal" fallbackFor="serif" + postScriptName="NotoSerifGeorgian-Regular">NotoSerifGeorgian-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal" fallbackFor="serif">NotoSerifGeorgian-VF.ttf + <font weight="600" style="normal" fallbackFor="serif" + postScriptName="NotoSerifGeorgian-Regular">NotoSerifGeorgian-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal" fallbackFor="serif">NotoSerifGeorgian-VF.ttf + <font weight="700" style="normal" fallbackFor="serif" + postScriptName="NotoSerifGeorgian-Regular">NotoSerifGeorgian-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Deva" variant="elegant"> - <font weight="400" style="normal">NotoSansDevanagari-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansDevanagari-Regular"> + NotoSansDevanagari-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansDevanagari-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansDevanagari-Regular"> + NotoSansDevanagari-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansDevanagari-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansDevanagari-Regular"> + NotoSansDevanagari-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansDevanagari-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansDevanagari-Regular"> + NotoSansDevanagari-VF.ttf <axis tag="wght" stylevalue="700"/> </font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifDevanagari-VF.ttf + <font weight="400" style="normal" fallbackFor="serif" + postScriptName="NotoSerifDevanagari-Regular">NotoSerifDevanagari-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal" fallbackFor="serif">NotoSerifDevanagari-VF.ttf + <font weight="500" style="normal" fallbackFor="serif" + postScriptName="NotoSerifDevanagari-Regular">NotoSerifDevanagari-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal" fallbackFor="serif">NotoSerifDevanagari-VF.ttf + <font weight="600" style="normal" fallbackFor="serif" + postScriptName="NotoSerifDevanagari-Regular">NotoSerifDevanagari-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal" fallbackFor="serif">NotoSerifDevanagari-VF.ttf + <font weight="700" style="normal" fallbackFor="serif" + postScriptName="NotoSerifDevanagari-Regular">NotoSerifDevanagari-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Deva" variant="compact"> - <font weight="400" style="normal">NotoSansDevanagariUI-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansDevanagariUI-Regular"> + NotoSansDevanagariUI-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansDevanagariUI-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansDevanagariUI-Regular"> + NotoSansDevanagariUI-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansDevanagariUI-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansDevanagariUI-Regular"> + NotoSansDevanagariUI-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansDevanagariUI-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansDevanagariUI-Regular"> + NotoSansDevanagariUI-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> @@ -421,347 +469,451 @@ danda characters. --> <family lang="und-Gujr" variant="elegant"> - <font weight="400" style="normal">NotoSansGujarati-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansGujarati"> + NotoSansGujarati-Regular.ttf + </font> <font weight="700" style="normal">NotoSansGujarati-Bold.ttf</font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifGujarati-VF.ttf + <font weight="400" style="normal" fallbackFor="serif" + postScriptName="NotoSerifGujarati-Regular">NotoSerifGujarati-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal" fallbackFor="serif">NotoSerifGujarati-VF.ttf + <font weight="500" style="normal" fallbackFor="serif" + postScriptName="NotoSerifGujarati-Regular">NotoSerifGujarati-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal" fallbackFor="serif">NotoSerifGujarati-VF.ttf + <font weight="600" style="normal" fallbackFor="serif" + postScriptName="NotoSerifGujarati-Regular">NotoSerifGujarati-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal" fallbackFor="serif">NotoSerifGujarati-VF.ttf + <font weight="700" style="normal" fallbackFor="serif" + postScriptName="NotoSerifGujarati-Regular">NotoSerifGujarati-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Gujr" variant="compact"> - <font weight="400" style="normal">NotoSansGujaratiUI-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansGujaratiUI"> + NotoSansGujaratiUI-Regular.ttf + </font> <font weight="700" style="normal">NotoSansGujaratiUI-Bold.ttf</font> </family> <family lang="und-Guru" variant="elegant"> - <font weight="400" style="normal">NotoSansGurmukhi-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansGurmukhi-Regular"> + NotoSansGurmukhi-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansGurmukhi-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansGurmukhi-Regular"> + NotoSansGurmukhi-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansGurmukhi-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansGurmukhi-Regular"> + NotoSansGurmukhi-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansGurmukhi-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansGurmukhi-Regular"> + NotoSansGurmukhi-VF.ttf <axis tag="wght" stylevalue="700"/> </font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifGurmukhi-VF.ttf + <font weight="400" style="normal" fallbackFor="serif" + postScriptName="NotoSerifGurmukhi-Regular">NotoSerifGurmukhi-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal" fallbackFor="serif">NotoSerifGurmukhi-VF.ttf + <font weight="500" style="normal" fallbackFor="serif" + postScriptName="NotoSerifGurmukhi-Regular">NotoSerifGurmukhi-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal" fallbackFor="serif">NotoSerifGurmukhi-VF.ttf + <font weight="600" style="normal" fallbackFor="serif" + postScriptName="NotoSerifGurmukhi-Regular">NotoSerifGurmukhi-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal" fallbackFor="serif">NotoSerifGurmukhi-VF.ttf + <font weight="700" style="normal" fallbackFor="serif" + postScriptName="NotoSerifGurmukhi-Regular">NotoSerifGurmukhi-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Guru" variant="compact"> - <font weight="400" style="normal">NotoSansGurmukhiUI-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansGurmukhiUI-Regular"> + NotoSansGurmukhiUI-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansGurmukhiUI-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansGurmukhiUI-Regular"> + NotoSansGurmukhiUI-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansGurmukhiUI-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansGurmukhiUI-Regular"> + NotoSansGurmukhiUI-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansGurmukhiUI-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansGurmukhiUI-Regular"> + NotoSansGurmukhiUI-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Taml" variant="elegant"> - <font weight="400" style="normal">NotoSansTamil-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansTamil-Regular"> + NotoSansTamil-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansTamil-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansTamil-Regular"> + NotoSansTamil-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansTamil-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansTamil-Regular"> + NotoSansTamil-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansTamil-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansTamil-Regular"> + NotoSansTamil-VF.ttf <axis tag="wght" stylevalue="700"/> </font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifTamil-VF.ttf + <font weight="400" style="normal" fallbackFor="serif" + postScriptName="NotoSerifTamil-Regular">NotoSerifTamil-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal" fallbackFor="serif">NotoSerifTamil-VF.ttf + <font weight="500" style="normal" fallbackFor="serif" + postScriptName="NotoSerifTamil-Regular">NotoSerifTamil-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal" fallbackFor="serif">NotoSerifTamil-VF.ttf + <font weight="600" style="normal" fallbackFor="serif" + postScriptName="NotoSerifTamil-Regular">NotoSerifTamil-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal" fallbackFor="serif">NotoSerifTamil-VF.ttf + <font weight="700" style="normal" fallbackFor="serif" + postScriptName="NotoSerifTamil-Regular">NotoSerifTamil-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Taml" variant="compact"> - <font weight="400" style="normal">NotoSansTamilUI-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansTamilUI-Regular"> + NotoSansTamilUI-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansTamilUI-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansTamilUI-Regular"> + NotoSansTamilUI-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansTamilUI-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansTamilUI-Regular"> + NotoSansTamilUI-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansTamilUI-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansTamilUI-Regular"> + NotoSansTamilUI-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Mlym" variant="elegant"> - <font weight="400" style="normal">NotoSansMalayalam-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansMalayalam-Regular"> + NotoSansMalayalam-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansMalayalam-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansMalayalam-Regular"> + NotoSansMalayalam-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansMalayalam-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansMalayalam-Regular"> + NotoSansMalayalam-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansMalayalam-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansMalayalam-Regular"> + NotoSansMalayalam-VF.ttf <axis tag="wght" stylevalue="700"/> </font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifMalayalam-VF.ttf + <font weight="400" style="normal" fallbackFor="serif" + postScriptName="NotoSerifMalayalam-Regular">NotoSerifMalayalam-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal" fallbackFor="serif">NotoSerifMalayalam-VF.ttf + <font weight="500" style="normal" fallbackFor="serif" + postScriptName="NotoSerifMalayalam-Regular">NotoSerifMalayalam-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal" fallbackFor="serif">NotoSerifMalayalam-VF.ttf + <font weight="600" style="normal" fallbackFor="serif" + postScriptName="NotoSerifMalayalam-Regular">NotoSerifMalayalam-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal" fallbackFor="serif">NotoSerifMalayalam-VF.ttf + <font weight="700" style="normal" fallbackFor="serif" + postScriptName="NotoSerifMalayalam-Regular">NotoSerifMalayalam-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Mlym" variant="compact"> - <font weight="400" style="normal">NotoSansMalayalamUI-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansMalayalamUI-Regular"> + NotoSansMalayalamUI-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansMalayalamUI-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansMalayalamUI-Regular"> + NotoSansMalayalamUI-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansMalayalamUI-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansMalayalamUI-Regular"> + NotoSansMalayalamUI-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansMalayalamUI-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansMalayalamUI-Regular"> + NotoSansMalayalamUI-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Beng" variant="elegant"> - <font weight="400" style="normal">NotoSansBengali-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansBengali-Regular"> + NotoSansBengali-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansBengali-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansBengali-Regular"> + NotoSansBengali-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansBengali-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansBengali-Regular"> + NotoSansBengali-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansBengali-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansBengali-Regular"> + NotoSansBengali-VF.ttf <axis tag="wght" stylevalue="700"/> </font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifBengali-VF.ttf + <font weight="400" style="normal" fallbackFor="serif" + postScriptName="NotoSerifBengali-Regular">NotoSerifBengali-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal" fallbackFor="serif">NotoSerifBengali-VF.ttf + <font weight="500" style="normal" fallbackFor="serif" + postScriptName="NotoSerifBengali-Regular">NotoSerifBengali-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal" fallbackFor="serif">NotoSerifBengali-VF.ttf + <font weight="600" style="normal" fallbackFor="serif" + postScriptName="NotoSerifBengali-Regular">NotoSerifBengali-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal" fallbackFor="serif">NotoSerifBengali-VF.ttf + <font weight="700" style="normal" fallbackFor="serif" + postScriptName="NotoSerifBengali-Regular">NotoSerifBengali-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Beng" variant="compact"> - <font weight="400" style="normal">NotoSansBengaliUI-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansBengaliUI-Regular"> + NotoSansBengaliUI-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansBengaliUI-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansBengaliUI-Regular"> + NotoSansBengaliUI-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansBengaliUI-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansBengaliUI-Regular"> + NotoSansBengaliUI-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansBengaliUI-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansBengaliUI-Regular"> + NotoSansBengaliUI-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Telu" variant="elegant"> - <font weight="400" style="normal">NotoSansTelugu-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansTelugu-Regular"> + NotoSansTelugu-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansTelugu-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansTelugu-Regular"> + NotoSansTelugu-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansTelugu-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansTelugu-Regular"> + NotoSansTelugu-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansTelugu-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansTelugu-Regular"> + NotoSansTelugu-VF.ttf <axis tag="wght" stylevalue="700"/> </font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifTelugu-VF.ttf + <font weight="400" style="normal" fallbackFor="serif" + postScriptName="NotoSerifTelugu-Regular">NotoSerifTelugu-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal" fallbackFor="serif">NotoSerifTelugu-VF.ttf + <font weight="500" style="normal" fallbackFor="serif" + postScriptName="NotoSerifTelugu-Regular">NotoSerifTelugu-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal" fallbackFor="serif">NotoSerifTelugu-VF.ttf + <font weight="600" style="normal" fallbackFor="serif" + postScriptName="NotoSerifTelugu-Regular">NotoSerifTelugu-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal" fallbackFor="serif">NotoSerifTelugu-VF.ttf + <font weight="700" style="normal" fallbackFor="serif" + postScriptName="NotoSerifTelugu-Regular">NotoSerifTelugu-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Telu" variant="compact"> - <font weight="400" style="normal">NotoSansTeluguUI-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansTeluguUI-Regular"> + NotoSansTeluguUI-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansTeluguUI-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansTeluguUI-Regular"> + NotoSansTeluguUI-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansTeluguUI-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansTeluguUI-Regular"> + NotoSansTeluguUI-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansTeluguUI-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansTeluguUI-Regular"> + NotoSansTeluguUI-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Knda" variant="elegant"> - <font weight="400" style="normal">NotoSansKannada-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansKannada-Regular"> + NotoSansKannada-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansKannada-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansKannada-Regular"> + NotoSansKannada-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansKannada-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansKannada-Regular"> + NotoSansKannada-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansKannada-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansKannada-Regular"> + NotoSansKannada-VF.ttf <axis tag="wght" stylevalue="700"/> </font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifKannada-VF.ttf + <font weight="400" style="normal" fallbackFor="serif" + postScriptName="NotoSerifKannada-Regular">NotoSerifKannada-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal" fallbackFor="serif">NotoSerifKannada-VF.ttf + <font weight="500" style="normal" fallbackFor="serif" + postScriptName="NotoSerifKannada-Regular">NotoSerifKannada-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal" fallbackFor="serif">NotoSerifKannada-VF.ttf + <font weight="600" style="normal" fallbackFor="serif" + postScriptName="NotoSerifKannada-Regular">NotoSerifKannada-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal" fallbackFor="serif">NotoSerifKannada-VF.ttf + <font weight="700" style="normal" fallbackFor="serif" + postScriptName="NotoSerifKannada-Regular">NotoSerifKannada-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Knda" variant="compact"> - <font weight="400" style="normal">NotoSansKannadaUI-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansKannadaUI-Regular"> + NotoSansKannadaUI-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansKannadaUI-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansKannadaUI-Regular"> + NotoSansKannadaUI-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansKannadaUI-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansKannadaUI-Regular"> + NotoSansKannadaUI-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansKannadaUI-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansKannadaUI-Regular"> + NotoSansKannadaUI-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Orya" variant="elegant"> - <font weight="400" style="normal">NotoSansOriya-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansOriya">NotoSansOriya-Regular.ttf + </font> <font weight="700" style="normal">NotoSansOriya-Bold.ttf</font> </family> <family lang="und-Orya" variant="compact"> - <font weight="400" style="normal">NotoSansOriyaUI-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansOriyaUI"> + NotoSansOriyaUI-Regular.ttf + </font> <font weight="700" style="normal">NotoSansOriyaUI-Bold.ttf</font> </family> <family lang="und-Sinh" variant="elegant"> - <font weight="400" style="normal">NotoSansSinhala-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansSinhala-Regular"> + NotoSansSinhala-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansSinhala-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansSinhala-Regular"> + NotoSansSinhala-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansSinhala-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansSinhala-Regular"> + NotoSansSinhala-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansSinhala-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansSinhala-Regular"> + NotoSansSinhala-VF.ttf <axis tag="wght" stylevalue="700"/> </font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifSinhala-VF.ttf + <font weight="400" style="normal" fallbackFor="serif" + postScriptName="NotoSerifSinhala-Regular">NotoSerifSinhala-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal" fallbackFor="serif">NotoSerifSinhala-VF.ttf + <font weight="500" style="normal" fallbackFor="serif" + postScriptName="NotoSerifSinhala-Regular">NotoSerifSinhala-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal" fallbackFor="serif">NotoSerifSinhala-VF.ttf + <font weight="600" style="normal" fallbackFor="serif" + postScriptName="NotoSerifSinhala-Regular">NotoSerifSinhala-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal" fallbackFor="serif">NotoSerifSinhala-VF.ttf + <font weight="700" style="normal" fallbackFor="serif" + postScriptName="NotoSerifSinhala-Regular">NotoSerifSinhala-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Sinh" variant="compact"> - <font weight="400" style="normal">NotoSansSinhalaUI-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansSinhalaUI-Regular"> + NotoSansSinhalaUI-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansSinhalaUI-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansSinhalaUI-Regular"> + NotoSansSinhalaUI-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansSinhalaUI-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansSinhalaUI-Regular"> + NotoSansSinhalaUI-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansSinhalaUI-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansSinhalaUI-Regular"> + NotoSansSinhalaUI-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Khmr" variant="elegant"> - <font weight="100" style="normal">NotoSansKhmer-VF.ttf + <font weight="100" style="normal" postScriptName="NotoSansKhmer-Regular"> + NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0"/> <axis tag="wght" stylevalue="26.0"/> </font> - <font weight="200" style="normal">NotoSansKhmer-VF.ttf + <font weight="200" style="normal" postScriptName="NotoSansKhmer-Regular"> + NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0"/> <axis tag="wght" stylevalue="39.0"/> </font> - <font weight="300" style="normal">NotoSansKhmer-VF.ttf + <font weight="300" style="normal" postScriptName="NotoSansKhmer-Regular"> + NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0"/> <axis tag="wght" stylevalue="58.0"/> </font> - <font weight="400" style="normal">NotoSansKhmer-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansKhmer-Regular"> + NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0"/> <axis tag="wght" stylevalue="90.0"/> </font> - <font weight="500" style="normal">NotoSansKhmer-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansKhmer-Regular"> + NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0"/> <axis tag="wght" stylevalue="108.0"/> </font> - <font weight="600" style="normal">NotoSansKhmer-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansKhmer-Regular"> + NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0"/> <axis tag="wght" stylevalue="128.0"/> </font> - <font weight="700" style="normal">NotoSansKhmer-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansKhmer-Regular"> + NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0"/> <axis tag="wght" stylevalue="151.0"/> </font> - <font weight="800" style="normal">NotoSansKhmer-VF.ttf + <font weight="800" style="normal" postScriptName="NotoSansKhmer-Regular"> + NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0"/> <axis tag="wght" stylevalue="169.0"/> </font> - <font weight="900" style="normal">NotoSansKhmer-VF.ttf + <font weight="900" style="normal" postScriptName="NotoSansKhmer-Regular"> + NotoSansKhmer-VF.ttf <axis tag="wdth" stylevalue="100.0"/> <axis tag="wght" stylevalue="190.0"/> </font> @@ -769,17 +921,23 @@ <font weight="700" style="normal" fallbackFor="serif">NotoSerifKhmer-Bold.otf</font> </family> <family lang="und-Khmr" variant="compact"> - <font weight="400" style="normal">NotoSansKhmerUI-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansKhmerUI"> + NotoSansKhmerUI-Regular.ttf + </font> <font weight="700" style="normal">NotoSansKhmerUI-Bold.ttf</font> </family> <family lang="und-Laoo" variant="elegant"> - <font weight="400" style="normal">NotoSansLao-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansLao">NotoSansLao-Regular.ttf + </font> <font weight="700" style="normal">NotoSansLao-Bold.ttf</font> - <font weight="400" style="normal" fallbackFor="serif">NotoSerifLao-Regular.ttf</font> + <font weight="400" style="normal" fallbackFor="serif" postScriptName="NotoSerifLao"> + NotoSerifLao-Regular.ttf + </font> <font weight="700" style="normal" fallbackFor="serif">NotoSerifLao-Bold.ttf</font> </family> <family lang="und-Laoo" variant="compact"> - <font weight="400" style="normal">NotoSansLaoUI-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansLaoUI">NotoSansLaoUI-Regular.ttf + </font> <font weight="700" style="normal">NotoSansLaoUI-Bold.ttf</font> </family> <family lang="und-Mymr" variant="elegant"> @@ -795,56 +953,78 @@ <font weight="700" style="normal">NotoSansMyanmarUI-Bold.otf</font> </family> <family lang="und-Thaa"> - <font weight="400" style="normal">NotoSansThaana-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansThaana"> + NotoSansThaana-Regular.ttf + </font> <font weight="700" style="normal">NotoSansThaana-Bold.ttf</font> </family> <family lang="und-Cham"> - <font weight="400" style="normal">NotoSansCham-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansCham">NotoSansCham-Regular.ttf + </font> <font weight="700" style="normal">NotoSansCham-Bold.ttf</font> </family> <family lang="und-Ahom"> <font weight="400" style="normal">NotoSansAhom-Regular.otf</font> </family> <family lang="und-Adlm"> - <font weight="400" style="normal">NotoSansAdlam-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansAdlam-Regular"> + NotoSansAdlam-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansAdlam-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansAdlam-Regular"> + NotoSansAdlam-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansAdlam-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansAdlam-Regular"> + NotoSansAdlam-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansAdlam-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansAdlam-Regular"> + NotoSansAdlam-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Avst"> - <font weight="400" style="normal">NotoSansAvestan-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansAvestan"> + NotoSansAvestan-Regular.ttf + </font> </family> <family lang="und-Bali"> - <font weight="400" style="normal">NotoSansBalinese-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansBalinese"> + NotoSansBalinese-Regular.ttf + </font> </family> <family lang="und-Bamu"> - <font weight="400" style="normal">NotoSansBamum-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansBamum">NotoSansBamum-Regular.ttf + </font> </family> <family lang="und-Batk"> - <font weight="400" style="normal">NotoSansBatak-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansBatak">NotoSansBatak-Regular.ttf + </font> </family> <family lang="und-Brah"> - <font weight="400" style="normal">NotoSansBrahmi-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansBrahmi"> + NotoSansBrahmi-Regular.ttf + </font> </family> <family lang="und-Bugi"> - <font weight="400" style="normal">NotoSansBuginese-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansBuginese"> + NotoSansBuginese-Regular.ttf + </font> </family> <family lang="und-Buhd"> - <font weight="400" style="normal">NotoSansBuhid-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansBuhid">NotoSansBuhid-Regular.ttf + </font> </family> <family lang="und-Cans"> - <font weight="400" style="normal">NotoSansCanadianAboriginal-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansCanadianAboriginal"> + NotoSansCanadianAboriginal-Regular.ttf + </font> </family> <family lang="und-Cari"> - <font weight="400" style="normal">NotoSansCarian-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansCarian"> + NotoSansCarian-Regular.ttf + </font> </family> <family lang="und-Cakm"> <font weight="400" style="normal">NotoSansChakma-Regular.otf</font> @@ -853,164 +1033,255 @@ <font weight="400" style="normal">NotoSansCherokee-Regular.ttf</font> </family> <family lang="und-Copt"> - <font weight="400" style="normal">NotoSansCoptic-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansCoptic"> + NotoSansCoptic-Regular.ttf + </font> </family> <family lang="und-Xsux"> - <font weight="400" style="normal">NotoSansCuneiform-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansCuneiform"> + NotoSansCuneiform-Regular.ttf + </font> </family> <family lang="und-Cprt"> - <font weight="400" style="normal">NotoSansCypriot-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansCypriot"> + NotoSansCypriot-Regular.ttf + </font> </family> <family lang="und-Dsrt"> - <font weight="400" style="normal">NotoSansDeseret-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansDeseret"> + NotoSansDeseret-Regular.ttf + </font> </family> <family lang="und-Egyp"> - <font weight="400" style="normal">NotoSansEgyptianHieroglyphs-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansEgyptianHieroglyphs"> + NotoSansEgyptianHieroglyphs-Regular.ttf + </font> </family> <family lang="und-Elba"> <font weight="400" style="normal">NotoSansElbasan-Regular.otf</font> </family> <family lang="und-Glag"> - <font weight="400" style="normal">NotoSansGlagolitic-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansGlagolitic"> + NotoSansGlagolitic-Regular.ttf + </font> </family> <family lang="und-Goth"> - <font weight="400" style="normal">NotoSansGothic-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansGothic"> + NotoSansGothic-Regular.ttf + </font> </family> <family lang="und-Hano"> - <font weight="400" style="normal">NotoSansHanunoo-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansHanunoo"> + NotoSansHanunoo-Regular.ttf + </font> </family> <family lang="und-Armi"> - <font weight="400" style="normal">NotoSansImperialAramaic-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansImperialAramaic"> + NotoSansImperialAramaic-Regular.ttf + </font> </family> <family lang="und-Phli"> - <font weight="400" style="normal">NotoSansInscriptionalPahlavi-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansInscriptionalPahlavi"> + NotoSansInscriptionalPahlavi-Regular.ttf + </font> </family> <family lang="und-Prti"> - <font weight="400" style="normal">NotoSansInscriptionalParthian-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansInscriptionalParthian"> + NotoSansInscriptionalParthian-Regular.ttf + </font> </family> <family lang="und-Java"> <font weight="400" style="normal">NotoSansJavanese-Regular.otf</font> </family> <family lang="und-Kthi"> - <font weight="400" style="normal">NotoSansKaithi-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansKaithi"> + NotoSansKaithi-Regular.ttf + </font> </family> <family lang="und-Kali"> - <font weight="400" style="normal">NotoSansKayahLi-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansKayahLi"> + NotoSansKayahLi-Regular.ttf + </font> </family> <family lang="und-Khar"> - <font weight="400" style="normal">NotoSansKharoshthi-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansKharoshthi"> + NotoSansKharoshthi-Regular.ttf + </font> </family> <family lang="und-Lepc"> - <font weight="400" style="normal">NotoSansLepcha-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansLepcha"> + NotoSansLepcha-Regular.ttf + </font> </family> <family lang="und-Limb"> - <font weight="400" style="normal">NotoSansLimbu-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansLimbu">NotoSansLimbu-Regular.ttf + </font> </family> <family lang="und-Linb"> - <font weight="400" style="normal">NotoSansLinearB-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansLinearB"> + NotoSansLinearB-Regular.ttf + </font> </family> <family lang="und-Lisu"> - <font weight="400" style="normal">NotoSansLisu-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansLisu">NotoSansLisu-Regular.ttf + </font> </family> <family lang="und-Lyci"> - <font weight="400" style="normal">NotoSansLycian-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansLycian"> + NotoSansLycian-Regular.ttf + </font> </family> <family lang="und-Lydi"> - <font weight="400" style="normal">NotoSansLydian-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansLydian"> + NotoSansLydian-Regular.ttf + </font> </family> <family lang="und-Mand"> - <font weight="400" style="normal">NotoSansMandaic-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansMandaic"> + NotoSansMandaic-Regular.ttf + </font> </family> <family lang="und-Mtei"> - <font weight="400" style="normal">NotoSansMeeteiMayek-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansMeeteiMayek"> + NotoSansMeeteiMayek-Regular.ttf + </font> </family> <family lang="und-Talu"> - <font weight="400" style="normal">NotoSansNewTaiLue-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansNewTaiLue"> + NotoSansNewTaiLue-Regular.ttf + </font> </family> <family lang="und-Nkoo"> - <font weight="400" style="normal">NotoSansNKo-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansNKo">NotoSansNKo-Regular.ttf + </font> </family> <family lang="und-Ogam"> - <font weight="400" style="normal">NotoSansOgham-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansOgham">NotoSansOgham-Regular.ttf + </font> </family> <family lang="und-Olck"> - <font weight="400" style="normal">NotoSansOlChiki-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansOlChiki"> + NotoSansOlChiki-Regular.ttf + </font> </family> <family lang="und-Ital"> - <font weight="400" style="normal">NotoSansOldItalic-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansOldItalic"> + NotoSansOldItalic-Regular.ttf + </font> </family> <family lang="und-Xpeo"> - <font weight="400" style="normal">NotoSansOldPersian-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansOldPersian"> + NotoSansOldPersian-Regular.ttf + </font> </family> <family lang="und-Sarb"> - <font weight="400" style="normal">NotoSansOldSouthArabian-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansOldSouthArabian"> + NotoSansOldSouthArabian-Regular.ttf + </font> </family> <family lang="und-Orkh"> - <font weight="400" style="normal">NotoSansOldTurkic-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansOldTurkic"> + NotoSansOldTurkic-Regular.ttf + </font> </family> <family lang="und-Osge"> <font weight="400" style="normal">NotoSansOsage-Regular.ttf</font> </family> <family lang="und-Osma"> - <font weight="400" style="normal">NotoSansOsmanya-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansOsmanya"> + NotoSansOsmanya-Regular.ttf + </font> </family> <family lang="und-Phnx"> - <font weight="400" style="normal">NotoSansPhoenician-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansPhoenician"> + NotoSansPhoenician-Regular.ttf + </font> </family> <family lang="und-Rjng"> - <font weight="400" style="normal">NotoSansRejang-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansRejang"> + NotoSansRejang-Regular.ttf + </font> </family> <family lang="und-Runr"> - <font weight="400" style="normal">NotoSansRunic-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansRunic">NotoSansRunic-Regular.ttf + </font> </family> <family lang="und-Samr"> - <font weight="400" style="normal">NotoSansSamaritan-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansSamaritan"> + NotoSansSamaritan-Regular.ttf + </font> </family> <family lang="und-Saur"> - <font weight="400" style="normal">NotoSansSaurashtra-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansSaurashtra"> + NotoSansSaurashtra-Regular.ttf + </font> </family> <family lang="und-Shaw"> - <font weight="400" style="normal">NotoSansShavian-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansShavian"> + NotoSansShavian-Regular.ttf + </font> </family> <family lang="und-Sund"> - <font weight="400" style="normal">NotoSansSundanese-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansSundanese"> + NotoSansSundanese-Regular.ttf + </font> </family> <family lang="und-Sylo"> - <font weight="400" style="normal">NotoSansSylotiNagri-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansSylotiNagri"> + NotoSansSylotiNagri-Regular.ttf + </font> </family> <!-- Esrangela should precede Eastern and Western Syriac, since it's our default form. --> <family lang="und-Syre"> - <font weight="400" style="normal">NotoSansSyriacEstrangela-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansSyriacEstrangela"> + NotoSansSyriacEstrangela-Regular.ttf + </font> </family> <family lang="und-Syrn"> - <font weight="400" style="normal">NotoSansSyriacEastern-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansSyriacEastern"> + NotoSansSyriacEastern-Regular.ttf + </font> </family> <family lang="und-Syrj"> - <font weight="400" style="normal">NotoSansSyriacWestern-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansSyriacWestern"> + NotoSansSyriacWestern-Regular.ttf + </font> </family> <family lang="und-Tglg"> - <font weight="400" style="normal">NotoSansTagalog-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansTagalog"> + NotoSansTagalog-Regular.ttf + </font> </family> <family lang="und-Tagb"> - <font weight="400" style="normal">NotoSansTagbanwa-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansTagbanwa"> + NotoSansTagbanwa-Regular.ttf + </font> </family> <family lang="und-Lana"> - <font weight="400" style="normal">NotoSansTaiTham-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansTaiTham"> + NotoSansTaiTham-Regular.ttf + </font> </family> <family lang="und-Tavt"> - <font weight="400" style="normal">NotoSansTaiViet-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansTaiViet"> + NotoSansTaiViet-Regular.ttf + </font> </family> <family lang="und-Tibt"> - <font weight="400" style="normal">NotoSerifTibetan-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSerifTibetan-Regular"> + NotoSerifTibetan-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSerifTibetan-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSerifTibetan-Regular"> + NotoSerifTibetan-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSerifTibetan-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSerifTibetan-Regular"> + NotoSerifTibetan-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSerifTibetan-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSerifTibetan-Regular"> + NotoSerifTibetan-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> @@ -1018,29 +1289,48 @@ <font weight="400" style="normal">NotoSansTifinagh-Regular.otf</font> </family> <family lang="und-Ugar"> - <font weight="400" style="normal">NotoSansUgaritic-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansUgaritic"> + NotoSansUgaritic-Regular.ttf + </font> </family> <family lang="und-Vaii"> - <font weight="400" style="normal">NotoSansVai-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansVai">NotoSansVai-Regular.ttf + </font> </family> <family> <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted.ttf</font> </family> <family lang="zh-Hans"> - <font weight="400" style="normal" index="2">NotoSansCJK-Regular.ttc</font> - <font weight="400" style="normal" index="2" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font> + <font weight="400" style="normal" index="2" postScriptName="NotoSansCJKjp-Regular"> + NotoSansCJK-Regular.ttc + </font> + <font weight="400" style="normal" index="2" fallbackFor="serif" + postScriptName="NotoSerifCJKjp-Regular">NotoSerifCJK-Regular.ttc + </font> </family> <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> + <font weight="400" style="normal" index="3" postScriptName="NotoSansCJKjp-Regular"> + NotoSansCJK-Regular.ttc + </font> + <font weight="400" style="normal" index="3" fallbackFor="serif" + postScriptName="NotoSerifCJKjp-Regular">NotoSerifCJK-Regular.ttc + </font> </family> <family lang="ja"> - <font weight="400" style="normal" index="0">NotoSansCJK-Regular.ttc</font> - <font weight="400" style="normal" index="0" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font> + <font weight="400" style="normal" index="0" postScriptName="NotoSansCJKjp-Regular"> + NotoSansCJK-Regular.ttc + </font> + <font weight="400" style="normal" index="0" fallbackFor="serif" + postScriptName="NotoSerifCJKjp-Regular">NotoSerifCJK-Regular.ttc + </font> </family> <family lang="ko"> - <font weight="400" style="normal" index="1">NotoSansCJK-Regular.ttc</font> - <font weight="400" style="normal" index="1" fallbackFor="serif">NotoSerifCJK-Regular.ttc</font> + <font weight="400" style="normal" index="1" postScriptName="NotoSansCJKjp-Regular"> + NotoSansCJK-Regular.ttc + </font> + <font weight="400" style="normal" index="1" fallbackFor="serif" + postScriptName="NotoSerifCJKjp-Regular">NotoSerifCJK-Regular.ttc + </font> </family> <family lang="und-Zsye"> <font weight="400" style="normal">NotoColorEmoji.ttf</font> @@ -1053,16 +1343,21 @@ override the East Asian punctuation for Chinese. --> <family lang="und-Tale"> - <font weight="400" style="normal">NotoSansTaiLe-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansTaiLe">NotoSansTaiLe-Regular.ttf + </font> </family> <family lang="und-Yiii"> - <font weight="400" style="normal">NotoSansYi-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansYi">NotoSansYi-Regular.ttf</font> </family> <family lang="und-Mong"> - <font weight="400" style="normal">NotoSansMongolian-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansMongolian"> + NotoSansMongolian-Regular.ttf + </font> </family> <family lang="und-Phag"> - <font weight="400" style="normal">NotoSansPhagsPa-Regular.ttf</font> + <font weight="400" style="normal" postScriptName="NotoSansPhagsPa"> + NotoSansPhagsPa-Regular.ttf + </font> </family> <family lang="und-Hluw"> <font weight="400" style="normal">NotoSansAnatolianHieroglyphs-Regular.otf</font> @@ -1152,72 +1447,92 @@ <font weight="400" style="normal">NotoSerifDogra-Regular.ttf</font> </family> <family lang="und-Medf"> - <font weight="400" style="normal">NotoSansMedefaidrin-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansMedefaidrin-Regular"> + NotoSansMedefaidrin-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansMedefaidrin-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansMedefaidrin-Regular"> + NotoSansMedefaidrin-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansMedefaidrin-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansMedefaidrin-Regular"> + NotoSansMedefaidrin-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansMedefaidrin-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansMedefaidrin-Regular"> + NotoSansMedefaidrin-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Soyo"> - <font weight="400" style="normal">NotoSansSoyombo-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansSoyombo-Regular"> + NotoSansSoyombo-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansSoyombo-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansSoyombo-Regular"> + NotoSansSoyombo-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansSoyombo-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansSoyombo-Regular"> + NotoSansSoyombo-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansSoyombo-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansSoyombo-Regular"> + NotoSansSoyombo-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Takr"> - <font weight="400" style="normal">NotoSansTakri-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSansTakri-Regular"> + NotoSansTakri-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSansTakri-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSansTakri-Regular"> + NotoSansTakri-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSansTakri-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSansTakri-Regular"> + NotoSansTakri-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSansTakri-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSansTakri-Regular"> + NotoSansTakri-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Hmnp"> - <font weight="400" style="normal">NotoSerifNyiakengPuachueHmong-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSerifHmongNyiakeng-Regular"> + NotoSerifNyiakengPuachueHmong-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSerifNyiakengPuachueHmong-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSerifHmongNyiakeng-Regular"> + NotoSerifNyiakengPuachueHmong-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSerifNyiakengPuachueHmong-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSerifHmongNyiakeng-Regular"> + NotoSerifNyiakengPuachueHmong-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSerifNyiakengPuachueHmong-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSerifHmongNyiakeng-Regular"> + NotoSerifNyiakengPuachueHmong-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> <family lang="und-Yezi"> - <font weight="400" style="normal">NotoSerifYezidi-VF.ttf + <font weight="400" style="normal" postScriptName="NotoSerifYezidi-Regular"> + NotoSerifYezidi-VF.ttf <axis tag="wght" stylevalue="400"/> </font> - <font weight="500" style="normal">NotoSerifYezidi-VF.ttf + <font weight="500" style="normal" postScriptName="NotoSerifYezidi-Regular"> + NotoSerifYezidi-VF.ttf <axis tag="wght" stylevalue="500"/> </font> - <font weight="600" style="normal">NotoSerifYezidi-VF.ttf + <font weight="600" style="normal" postScriptName="NotoSerifYezidi-Regular"> + NotoSerifYezidi-VF.ttf <axis tag="wght" stylevalue="600"/> </font> - <font weight="700" style="normal">NotoSerifYezidi-VF.ttf + <font weight="700" style="normal" postScriptName="NotoSerifYezidi-Regular"> + NotoSerifYezidi-VF.ttf <axis tag="wght" stylevalue="700"/> </font> </family> diff --git a/graphics/java/android/graphics/FontListParser.java b/graphics/java/android/graphics/FontListParser.java index 6fdf5526edf5..13e2692ff800 100644 --- a/graphics/java/android/graphics/FontListParser.java +++ b/graphics/java/android/graphics/FontListParser.java @@ -56,6 +56,7 @@ public class FontListParser { // XML constants for Font. public static final String ATTR_INDEX = "index"; public static final String ATTR_WEIGHT = "weight"; + public static final String ATTR_POSTSCRIPT_NAME = "postScriptName"; public static final String ATTR_STYLE = "style"; public static final String ATTR_FALLBACK_FOR = "fallbackFor"; public static final String STYLE_ITALIC = "italic"; @@ -209,6 +210,7 @@ public class FontListParser { int weight = weightStr == null ? FontStyle.FONT_WEIGHT_NORMAL : Integer.parseInt(weightStr); boolean isItalic = STYLE_ITALIC.equals(parser.getAttributeValue(null, ATTR_STYLE)); String fallbackFor = parser.getAttributeValue(null, ATTR_FALLBACK_FOR); + String postScriptName = parser.getAttributeValue(null, ATTR_POSTSCRIPT_NAME); StringBuilder filename = new StringBuilder(); while (keepReading(parser)) { if (parser.getEventType() == XmlPullParser.TEXT) { @@ -242,8 +244,18 @@ public class FontListParser { axes.toArray(new FontVariationAxis[0])); } - return new FontConfig.Font(new File(filePath), + File file = new File(filePath); + + if (postScriptName == null) { + // If post script name was not provided, assume the file name is same to PostScript + // name. + String name = file.getName(); + postScriptName = name.substring(0, name.length() - 4); + } + + return new FontConfig.Font(file, originalPath == null ? null : new File(originalPath), + postScriptName, new FontStyle( weight, isItalic ? FontStyle.FONT_SLANT_ITALIC : FontStyle.FONT_SLANT_UPRIGHT diff --git a/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java b/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java index fb14fbd49fde..c0ab09319a06 100644 --- a/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java +++ b/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java @@ -502,8 +502,8 @@ final class UpdatableFontDir { Slog.e(TAG, "Failed to lookup font file that has " + font.getPostScriptName()); return null; } - resolvedFonts.add(new FontConfig.Font(info.mFile, null, font.getFontStyle(), - font.getIndex(), font.getFontVariationSettings(), null)); + resolvedFonts.add(new FontConfig.Font(info.mFile, null, info.getPostScriptName(), + font.getFontStyle(), font.getIndex(), font.getFontVariationSettings(), null)); } return new FontConfig.FontFamily(resolvedFonts, fontFamily.getName(), null, FontConfig.FontFamily.VARIANT_DEFAULT); diff --git a/tools/fonts/fontchain_linter.py b/tools/fonts/fontchain_linter.py index f0b759547a93..1d308df00ef7 100755 --- a/tools/fonts/fontchain_linter.py +++ b/tools/fonts/fontchain_linter.py @@ -4,6 +4,7 @@ import collections import copy import glob from os import path +import re import sys from xml.etree import ElementTree @@ -199,8 +200,9 @@ def check_hyphens(hyphens_dir): class FontRecord(object): - def __init__(self, name, scripts, variant, weight, style, fallback_for, font): + def __init__(self, name, psName, scripts, variant, weight, style, fallback_for, font): self.name = name + self.psName = psName self.scripts = scripts self.variant = variant self.weight = weight @@ -236,6 +238,7 @@ def parse_fonts_xml(fonts_xml_path): assert variant in {None, 'elegant', 'compact'}, ( 'Unexpected value for variant: %s' % variant) + trim_re = re.compile(r"^[ \n\r\t]*(.+)[ \n\r\t]*$") for family in families: name = family.get('name') variant = family.get('variant') @@ -251,6 +254,10 @@ def parse_fonts_xml(fonts_xml_path): assert child.tag == 'font', ( 'Unknown tag <%s>' % child.tag) font_file = child.text.rstrip() + + m = trim_re.match(font_file) + font_file = m.group(1) + weight = int(child.get('weight')) assert weight % 100 == 0, ( 'Font weight "%d" is not a multiple of 100.' % weight) @@ -270,11 +277,12 @@ def parse_fonts_xml(fonts_xml_path): if index: index = int(index) - if not path.exists(path.join(_fonts_dir, font_file)): + if not path.exists(path.join(_fonts_dir, m.group(1))): continue # Missing font is a valid case. Just ignore the missing font files. record = FontRecord( name, + child.get('postScriptName'), frozenset(scripts), variant, weight, @@ -664,6 +672,37 @@ def check_cjk_punctuation(): break assert_font_supports_none_of_chars(record.font, cjk_punctuation, name) +def getPostScriptName(font): + font_file, index = font + font_path = path.join(_fonts_dir, font_file) + if index is not None: + # Use the first font file in the collection for resolving post script name. + ttf = ttLib.TTFont(font_path, fontNumber=0) + else: + ttf = ttLib.TTFont(font_path) + + nameTable = ttf['name'] + for name in nameTable.names: + if (name.nameID == 6 and name.platformID == 3 and name.platEncID == 1 + and name.langID == 0x0409): + return str(name) + +def check_canonical_name(): + for record in _all_fonts: + file_name, index = record.font + + psName = getPostScriptName(record.font) + if record.psName: + # If fonts element has postScriptName attribute, it should match with the PostScript + # name in the name table. + assert psName == record.psName, ('postScriptName attribute %s should match with %s' % ( + record.psName, psName)) + else: + # If fonts element doesn't have postScriptName attribute, the file name should match + # with the PostScript name in the name table. + assert psName == file_name[:-4], ('file name %s should match with %s' % ( + file_name, psName)) + def main(): global _fonts_dir @@ -682,6 +721,8 @@ def main(): check_cjk_punctuation() + check_canonical_name() + check_emoji = sys.argv[2] if check_emoji == 'true': ucd_path = sys.argv[3] |