From 2a0135d19cab371293eb810609d9fb8d882bb27b Mon Sep 17 00:00:00 2001 From: Seigo Nonaka Date: Wed, 24 Feb 2021 17:36:37 -0800 Subject: Rename the font file with PostScript name based file name This CL also adds lint rules for matching the file name and PostScript name. Bug: 179952916 Test: m fontchain_lint Merged-In: I829840299b5d138cfec8924ce8f77e1371524a70 Change-Id: Ifbe99d68c40605f004c88f63000b092cb68cafd6 --- data/fonts/fonts.xml | 242 ++++++++++++++++++++-------------------- tools/fonts/fontchain_linter.py | 55 +++++++++ 2 files changed, 176 insertions(+), 121 deletions(-) diff --git a/data/fonts/fonts.xml b/data/fonts/fonts.xml index 4c214b529b39..d2b47c6336c4 100644 --- a/data/fonts/fonts.xml +++ b/data/fonts/fonts.xml @@ -60,7 +60,7 @@ - NotoSerif-Regular.ttf + NotoSerif.ttf NotoSerif-Bold.ttf NotoSerif-Italic.ttf NotoSerif-BoldItalic.ttf @@ -112,33 +112,33 @@ - NotoNaskhArabic-Regular.ttf + NotoNaskhArabic.ttf NotoNaskhArabic-Bold.ttf - NotoNaskhArabicUI-Regular.ttf + NotoNaskhArabicUI.ttf NotoNaskhArabicUI-Bold.ttf - NotoSansEthiopic-Regular.ttf + NotoSansEthiopic.ttf NotoSansEthiopic-Bold.ttf NotoSerifEthiopic-Regular.otf NotoSerifEthiopic-Bold.otf - NotoSansHebrew-Regular.ttf + NotoSansHebrew.ttf NotoSansHebrew-Bold.ttf NotoSerifHebrew-Regular.ttf NotoSerifHebrew-Bold.ttf - NotoSansThai-Regular.ttf + NotoSansThai.ttf NotoSansThai-Bold.ttf - NotoSerifThai-Regular.ttf + NotoSerifThai.ttf NotoSerifThai-Bold.ttf - NotoSansThaiUI-Regular.ttf + NotoSansThaiUI.ttf NotoSansThaiUI-Bold.ttf @@ -149,28 +149,28 @@ NotoSerifArmenian-Bold.otf - NotoSansGeorgian-VF.ttf + NotoSansGeorgian-Regular.ttf - NotoSansGeorgian-VF.ttf + NotoSansGeorgian-Regular.ttf - NotoSansGeorgian-VF.ttf + NotoSansGeorgian-Regular.ttf - NotoSansGeorgian-VF.ttf + NotoSansGeorgian-Regular.ttf - NotoSerifGeorgian-VF.ttf + NotoSerifGeorgian-Regular.ttf - NotoSerifGeorgian-VF.ttf + NotoSerifGeorgian-Regular.ttf - NotoSerifGeorgian-VF.ttf + NotoSerifGeorgian-Regular.ttf - NotoSerifGeorgian-VF.ttf + NotoSerifGeorgian-Regular.ttf @@ -178,7 +178,7 @@ NotoSansDevanagari-Regular.otf NotoSansDevanagari-Medium.otf NotoSansDevanagari-Bold.otf - NotoSerifDevanagari-Regular.ttf + NotoSerifDevanagari.ttf NotoSerifDevanagari-Bold.ttf @@ -191,23 +191,23 @@ danda characters. --> - NotoSansGujarati-Regular.ttf + NotoSansGujarati.ttf NotoSansGujarati-Bold.ttf - NotoSerifGujarati-Regular.ttf + NotoSerifGujarati.ttf NotoSerifGujarati-Bold.ttf - NotoSansGujaratiUI-Regular.ttf + NotoSansGujaratiUI.ttf NotoSansGujaratiUI-Bold.ttf - NotoSansGurmukhi-Regular.ttf + NotoSansGurmukhi.ttf NotoSansGurmukhi-Bold.ttf NotoSerifGurmukhi-Regular.otf NotoSerifGurmukhi-Bold.otf - NotoSansGurmukhiUI-Regular.ttf + NotoSansGurmukhiUI.ttf NotoSansGurmukhiUI-Bold.ttf @@ -226,7 +226,7 @@ NotoSansMalayalam-Regular.otf NotoSansMalayalam-Medium.otf NotoSansMalayalam-Bold.otf - NotoSerifMalayalam-Regular.ttf + NotoSerifMalayalam.ttf NotoSerifMalayalam-Bold.ttf @@ -238,7 +238,7 @@ NotoSansBengali-Regular.otf NotoSansBengali-Medium.otf NotoSansBengali-Bold.otf - NotoSerifBengali-Regular.ttf + NotoSerifBengali.ttf NotoSerifBengali-Bold.ttf @@ -247,31 +247,31 @@ NotoSansBengaliUI-Bold.otf - NotoSansTelugu-Regular.ttf + NotoSansTelugu.ttf NotoSansTelugu-Bold.ttf - NotoSerifTelugu-Regular.ttf + NotoSerifTelugu.ttf NotoSerifTelugu-Bold.ttf - NotoSansTeluguUI-Regular.ttf + NotoSansTeluguUI.ttf NotoSansTeluguUI-Bold.ttf - NotoSansKannada-Regular.ttf + NotoSansKannada.ttf NotoSansKannada-Bold.ttf - NotoSerifKannada-Regular.ttf + NotoSerifKannada.ttf NotoSerifKannada-Bold.ttf - NotoSansKannadaUI-Regular.ttf + NotoSansKannadaUI.ttf NotoSansKannadaUI-Bold.ttf - NotoSansOriya-Regular.ttf + NotoSansOriya.ttf NotoSansOriya-Bold.ttf - NotoSansOriyaUI-Regular.ttf + NotoSansOriyaUI.ttf NotoSansOriyaUI-Bold.ttf @@ -288,39 +288,39 @@ NotoSansSinhalaUI-Bold.otf - NotoSansKhmer-VF.ttf + NotoSansKhmer-Regular.ttf - NotoSansKhmer-VF.ttf + NotoSansKhmer-Regular.ttf - NotoSansKhmer-VF.ttf + NotoSansKhmer-Regular.ttf - NotoSansKhmer-VF.ttf + NotoSansKhmer-Regular.ttf - NotoSansKhmer-VF.ttf + NotoSansKhmer-Regular.ttf - NotoSansKhmer-VF.ttf + NotoSansKhmer-Regular.ttf - NotoSansKhmer-VF.ttf + NotoSansKhmer-Regular.ttf - NotoSansKhmer-VF.ttf + NotoSansKhmer-Regular.ttf - NotoSansKhmer-VF.ttf + NotoSansKhmer-Regular.ttf @@ -328,17 +328,17 @@ NotoSerifKhmer-Bold.otf - NotoSansKhmerUI-Regular.ttf + NotoSansKhmerUI.ttf NotoSansKhmerUI-Bold.ttf - NotoSansLao-Regular.ttf + NotoSansLao.ttf NotoSansLao-Bold.ttf - NotoSerifLao-Regular.ttf + NotoSerifLao.ttf NotoSerifLao-Bold.ttf - NotoSansLaoUI-Regular.ttf + NotoSansLaoUI.ttf NotoSansLaoUI-Bold.ttf @@ -354,56 +354,56 @@ NotoSansMyanmarUI-Bold.otf - NotoSansThaana-Regular.ttf + NotoSansThaana.ttf NotoSansThaana-Bold.ttf - NotoSansCham-Regular.ttf + NotoSansCham.ttf NotoSansCham-Bold.ttf NotoSansAhom-Regular.otf - NotoSansAdlam-VF.ttf + NotoSansAdlam-Regular.ttf - NotoSansAdlam-VF.ttf + NotoSansAdlam-Regular.ttf - NotoSansAdlam-VF.ttf + NotoSansAdlam-Regular.ttf - NotoSansAdlam-VF.ttf + NotoSansAdlam-Regular.ttf - NotoSansAvestan-Regular.ttf + NotoSansAvestan.ttf - NotoSansBalinese-Regular.ttf + NotoSansBalinese.ttf - NotoSansBamum-Regular.ttf + NotoSansBamum.ttf - NotoSansBatak-Regular.ttf + NotoSansBatak.ttf - NotoSansBrahmi-Regular.ttf + NotoSansBrahmi.ttf - NotoSansBuginese-Regular.ttf + NotoSansBuginese.ttf - NotoSansBuhid-Regular.ttf + NotoSansBuhid.ttf - NotoSansCanadianAboriginal-Regular.ttf + NotoSansCanadianAboriginal.ttf - NotoSansCarian-Regular.ttf + NotoSansCarian.ttf NotoSansChakma-Regular.otf @@ -412,184 +412,184 @@ NotoSansCherokee-Regular.ttf - NotoSansCoptic-Regular.ttf + NotoSansCoptic.ttf - NotoSansCuneiform-Regular.ttf + NotoSansCuneiform.ttf - NotoSansCypriot-Regular.ttf + NotoSansCypriot.ttf - NotoSansDeseret-Regular.ttf + NotoSansDeseret.ttf - NotoSansEgyptianHieroglyphs-Regular.ttf + NotoSansEgyptianHieroglyphs.ttf NotoSansElbasan-Regular.otf - NotoSansGlagolitic-Regular.ttf + NotoSansGlagolitic.ttf - NotoSansGothic-Regular.ttf + NotoSansGothic.ttf - NotoSansHanunoo-Regular.ttf + NotoSansHanunoo.ttf - NotoSansImperialAramaic-Regular.ttf + NotoSansImperialAramaic.ttf - NotoSansInscriptionalPahlavi-Regular.ttf + NotoSansInscriptionalPahlavi.ttf - NotoSansInscriptionalParthian-Regular.ttf + NotoSansInscriptionalParthian.ttf NotoSansJavanese-Regular.ttf - NotoSansKaithi-Regular.ttf + NotoSansKaithi.ttf - NotoSansKayahLi-Regular.ttf + NotoSansKayahLi.ttf - NotoSansKharoshthi-Regular.ttf + NotoSansKharoshthi.ttf - NotoSansLepcha-Regular.ttf + NotoSansLepcha.ttf - NotoSansLimbu-Regular.ttf + NotoSansLimbu.ttf - NotoSansLinearB-Regular.ttf + NotoSansLinearB.ttf - NotoSansLisu-Regular.ttf + NotoSansLisu.ttf - NotoSansLycian-Regular.ttf + NotoSansLycian.ttf - NotoSansLydian-Regular.ttf + NotoSansLydian.ttf - NotoSansMandaic-Regular.ttf + NotoSansMandaic.ttf - NotoSansMeeteiMayek-Regular.ttf + NotoSansMeeteiMayek.ttf - NotoSansNewTaiLue-Regular.ttf + NotoSansNewTaiLue.ttf - NotoSansNKo-Regular.ttf + NotoSansNKo.ttf - NotoSansOgham-Regular.ttf + NotoSansOgham.ttf - NotoSansOlChiki-Regular.ttf + NotoSansOlChiki.ttf - NotoSansOldItalic-Regular.ttf + NotoSansOldItalic.ttf - NotoSansOldPersian-Regular.ttf + NotoSansOldPersian.ttf - NotoSansOldSouthArabian-Regular.ttf + NotoSansOldSouthArabian.ttf - NotoSansOldTurkic-Regular.ttf + NotoSansOldTurkic.ttf NotoSansOsage-Regular.ttf - NotoSansOsmanya-Regular.ttf + NotoSansOsmanya.ttf - NotoSansPhoenician-Regular.ttf + NotoSansPhoenician.ttf - NotoSansRejang-Regular.ttf + NotoSansRejang.ttf - NotoSansRunic-Regular.ttf + NotoSansRunic.ttf - NotoSansSamaritan-Regular.ttf + NotoSansSamaritan.ttf - NotoSansSaurashtra-Regular.ttf + NotoSansSaurashtra.ttf - NotoSansShavian-Regular.ttf + NotoSansShavian.ttf - NotoSansSundanese-Regular.ttf + NotoSansSundanese.ttf - NotoSansSylotiNagri-Regular.ttf + NotoSansSylotiNagri.ttf - NotoSansSyriacEstrangela-Regular.ttf + NotoSansSyriacEstrangela.ttf - NotoSansSyriacEastern-Regular.ttf + NotoSansSyriacEastern.ttf - NotoSansSyriacWestern-Regular.ttf + NotoSansSyriacWestern.ttf - NotoSansTagalog-Regular.ttf + NotoSansTagalog.ttf - NotoSansTagbanwa-Regular.ttf + NotoSansTagbanwa.ttf - NotoSansTaiTham-Regular.ttf + NotoSansTaiTham.ttf - NotoSansTaiViet-Regular.ttf + NotoSansTaiViet.ttf - NotoSansTibetan-Regular.ttf + NotoSansTibetan.ttf NotoSansTibetan-Bold.ttf NotoSansTifinagh-Regular.otf - NotoSansUgaritic-Regular.ttf + NotoSansUgaritic.ttf - NotoSansVai-Regular.ttf + NotoSansVai.ttf NotoSansSymbols-Regular-Subsetted.ttf - NotoSansCJK-Regular.ttc - NotoSerifCJK-Regular.ttc + NotoSansCJKjp-Regular.otc + NotoSerifCJKjp-Regular.otc - NotoSansCJK-Regular.ttc - NotoSerifCJK-Regular.ttc + NotoSansCJKjp-Regular.otc + NotoSerifCJKjp-Regular.otc - NotoSansCJK-Regular.ttc - NotoSerifCJK-Regular.ttc + NotoSansCJKjp-Regular.otc + NotoSerifCJKjp-Regular.otc - NotoSansCJK-Regular.ttc - NotoSerifCJK-Regular.ttc + NotoSansCJKjp-Regular.otc + NotoSerifCJKjp-Regular.otc NotoColorEmoji.ttf @@ -602,16 +602,16 @@ override the East Asian punctuation for Chinese. --> - NotoSansTaiLe-Regular.ttf + NotoSansTaiLe.ttf - NotoSansYi-Regular.ttf + NotoSansYi.ttf - NotoSansMongolian-Regular.ttf + NotoSansMongolian.ttf - NotoSansPhagsPa-Regular.ttf + NotoSansPhagsPa.ttf NotoSansAnatolianHieroglyphs-Regular.otf diff --git a/tools/fonts/fontchain_linter.py b/tools/fonts/fontchain_linter.py index a4a315b7e371..7de706502618 100755 --- a/tools/fonts/fontchain_linter.py +++ b/tools/fonts/fontchain_linter.py @@ -11,6 +11,12 @@ from fontTools import ttLib EMOJI_VS = 0xFE0F +#TODO(179952916): Rename CutiveMono and DancingScript +CANONICAL_NAME_EXCEPTION_LIST = [ + 'CutiveMono.ttf', + 'DancingScript-Regular.ttf', +] + LANG_TO_SCRIPT = { 'as': 'Beng', 'be': 'Cyrl', @@ -658,6 +664,53 @@ def check_cjk_punctuation(): assert_font_supports_none_of_chars(record.font, cjk_punctuation, name) +def getPostScriptName(font): + ttf = open_font(font) + 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 getSuffix(font): + file_path, index = font + with open(path.join(_fonts_dir, file_path), 'rb') as f: + tag = f.read(4) + isCollection = tag == b'ttcf' + + ttf = open_font(font) + isType1 = ('CFF ' in ttf or 'CFF2' in ttf) + + if isType1: + if isCollection: + return '.otc' + else: + return '.otf' + else: + if isCollection: + return '.ttc' + else: + return '.ttf' + + +def check_canonical_name(): + for record in _all_fonts: + file_name, index = record.font + if file_name in CANONICAL_NAME_EXCEPTION_LIST: + continue + + if index and index != 0: + continue + + psName = getPostScriptName(record.font) + assert psName, 'PostScript must be defined' + + suffix = getSuffix(record.font) + canonicalName = '%s%s' % (psName, suffix) + + assert file_name == canonicalName, ( + '%s is not a canonical name. Must be %s' % (file_name, canonicalName)) + def main(): global _fonts_dir target_out = sys.argv[1] @@ -675,6 +728,8 @@ def main(): check_cjk_punctuation() + check_canonical_name() + check_emoji = sys.argv[2] if check_emoji == 'true': ucd_path = sys.argv[3] -- cgit v1.2.3-59-g8ed1b