diff options
author | Seigo Nonaka <nona@google.com> | 2021-02-24 17:36:37 -0800 |
---|---|---|
committer | Seigo Nonaka <nona@google.com> | 2021-02-25 01:43:32 +0000 |
commit | 2a0135d19cab371293eb810609d9fb8d882bb27b (patch) | |
tree | 875e95e0c363ac6af2b21ceff45c6283196d144a /tools | |
parent | eb45aabc03b635ee5d63ceeb7a58f1cbcdfdd02c (diff) |
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
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/fonts/fontchain_linter.py | 55 |
1 files changed, 55 insertions, 0 deletions
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] |