def font_cmap_data(paths): """Return CmapData for (almost) all the noto font families.""" args = [("paths", paths)] if paths else None metadata = cmap_data.create_metadata("noto_font_cmaps", args) def use_in_web(font): return ( not font.subset and not font.fmt == "ttc" and not font.script in {"CJK", "HST"} and not font.family in {"Arimo", "Cousine", "Tinos"} ) if not paths: paths = noto_fonts.NOTO_FONT_PATHS fonts = filter(use_in_web, noto_fonts.get_noto_fonts(paths=paths)) families = noto_fonts.get_families(fonts) ScriptData = collections.namedtuple("ScriptData", "family_name,script,cpset") script_to_data = collections.defaultdict(list) for family in families.values(): script = family.rep_member.script family_name = family.name cpset = family.charset script_to_data[script].append(ScriptData(family_name, script, cpset)) def report_data_error(index, script_data): sys.stderr.write( " %d: %s, %d, %s\n" % ( index, script_data.family_name, script_data.script, len(script_data.cpset), lint_config.write_int_ranges(script_data.cpset), ) ) script_to_cmap = {} for script in sorted(script_to_data): data = script_to_data[script] selected_cpset = data[0].cpset if len(data) > 1: differ = False for i in range(1, len(data)): test_data = data[i] for j in range(i): if data[j].cpset != test_data.cpset: differ = True if len(test_data.cpset) > len(selected_cpset): selected_cpset = test_data.cpset if differ: sys.stderr.write("\nscript %s cmaps differ\n" % script) differences = {i.family_name: i.cpset for i in data} report_set_differences(differences) script_to_cmap[script] = selected_cpset tabledata = cmap_data.create_table_from_map(script_to_cmap) return cmap_data.CmapData(metadata, tabledata)
def get_cmap_data(scripts, unicode_version, unicode_only, verbose): metadata = cmap_data.create_metadata('lint_cmap_reqs', [ ('unicode_version', unicode_version), ('unicode_only', unicode_only)]) tabledata = cmap_data.create_table_from_map({ script : _get_script_required( script, unicode_version, unicode_only, verbose) for script in sorted(scripts) }) return cmap_data.CmapData(metadata, tabledata)
def get_cmap_data(scripts, unicode_version, noto_phase, unicode_only, verbose): metadata = cmap_data.create_metadata('lint_cmap_reqs', [ ('unicode_version', unicode_version), ('phase', noto_phase), ('unicode_only', unicode_only)]) tabledata = cmap_data.create_table_from_map({ script : _get_script_required( script, unicode_version, noto_phase, unicode_only, verbose) for script in sorted(scripts) }) return cmap_data.CmapData(metadata, tabledata)
def font_cmap_data(paths): """Return CmapData for (almost) all the noto font families.""" args = [('paths', paths)] if paths else None metadata = cmap_data.create_metadata('noto_font_cmaps', args) def use_in_web(font): return (not font.subset and not font.fmt == 'ttc' and not font.script in {'CJK', 'HST'} and not font.family in {'Arimo', 'Cousine', 'Tinos'}) if not paths: paths = noto_fonts.NOTO_FONT_PATHS fonts = filter(use_in_web, noto_fonts.get_noto_fonts(paths=paths)) families = noto_fonts.get_families(fonts) ScriptData = collections.namedtuple('ScriptData', 'family_name,script,cpset') script_to_data = collections.defaultdict(list) for family in families.values(): script = family.rep_member.script family_name = family.name cpset = family.charset script_to_data[script].append(ScriptData(family_name, script, cpset)) def report_data_error(index, script_data): print >> sys.stderr, ' %d: %s, %d, %s' % ( index, script_data.family_name, script_data.script, len(script_data.cpset), lint_config.write_int_ranges(script_data.cpset)) script_to_cmap = {} for script in sorted(script_to_data): data = script_to_data[script] selected_cpset = data[0].cpset if len(data) > 1: differ = False for i in range(1, len(data)): test_data = data[i] for j in range(i): if data[j].cpset != test_data.cpset: differ = True if len(test_data.cpset) > len(selected_cpset): selected_cpset = test_data.cpset if differ: print >> sys.stderr, '\nscript %s cmaps differ' % script differences = {i.family_name: i.cpset for i in data} report_set_differences(differences) script_to_cmap[script] = selected_cpset tabledata = cmap_data.create_table_from_map(script_to_cmap) return cmap_data.CmapData(metadata, tabledata)
def cmap_data_from_csv( csvdata, scripts=None, exclude_scripts=None, infile=None): args = [('infile', infile)] if infile else None metadata = cmap_data.create_metadata('mti_cmap_data', args) script_to_cmaps = get_script_to_cmaps(csvdata) if scripts or exclude_scripts: script_list = script_to_cmap.keys() for script in script_list: if scripts and script not in scripts: del script_to_cmaps[script] elif exclude_scripts and script in exclude_scripts: del script_to_cmaps[script] tabledata = cmap_data.create_table_from_map(script_to_cmaps) return cmap_data.CmapData(metadata, tabledata)
def cmap_data_from_csv( csvdata, scripts=None, exclude_scripts=None, infile=None): args = [('infile', infile)] if infile else None metadata = cmap_data.create_metadata('mti_cmap_data', args) script_to_cmaps = get_script_to_cmaps(csvdata) if scripts or exclude_scripts: script_list = script_to_cmaps.keys() for script in script_list: if scripts and script not in scripts: del script_to_cmaps[script] elif exclude_scripts and script in exclude_scripts: del script_to_cmaps[script] tabledata = cmap_data.create_table_from_map(script_to_cmaps) return cmap_data.CmapData(metadata, tabledata)
def get_cmap_data(scripts, unicode_version, noto_phase, unicode_only, verbose): metadata = cmap_data.create_metadata( "lint_cmap_reqs", [ ("unicode_version", unicode_version), ("phase", noto_phase), ("unicode_only", unicode_only), ], ) tabledata = cmap_data.create_table_from_map({ script: _get_script_required(script, unicode_version, noto_phase, unicode_only, verbose) for script in sorted(scripts) }) return cmap_data.CmapData(metadata, tabledata)
def font_cmap_data(): """Return CmapData for (almost) all the noto font families.""" metadata = cmap_data.create_metadata('noto_font_cmaps') def use_in_web(font): return (not font.subset and not font.is_UI and not font.fmt == 'ttc' and not font.script in {'CJK', 'HST'} and not font.family in {'Arimo', 'Cousine', 'Tinos'}) fonts = filter(use_in_web, noto_fonts.get_noto_fonts()) families = noto_fonts.get_families(fonts) ScriptData = collections.namedtuple('ScriptData', 'family_name,script,cpset') script_to_data = collections.defaultdict(list) for family in families.values(): script = family.rep_member.script family_name = family.name cpset = family.charset script_to_data[script].append(ScriptData(family_name, script, cpset)) def report_data_error(index, script_data): print >> sys.stderr, ' %d: %s, %d, %s' % ( index, script_data.family_name, script_data.script, len(script_data.cpset), lint_config.write_int_ranges(script_data.cpset)) script_to_cmap = {} for script in sorted(script_to_data): data = script_to_data[script] selected_cpset = data[0].cpset if len(data) > 1: differ = False for i in range(1, len(data)): test_data = data[i] for j in range(i): if data[j].cpset != test_data.cpset: differ = True if len(test_data.cpset) > len(selected_cpset): selected_cpset = test_data.cpset if differ: print >> sys.stderr, '\nscript %s cmaps differ' % script differences = {i.family_name: i.cpset for i in data} report_set_differences(differences) script_to_cmap[script] = selected_cpset tabledata = cmap_data.create_table_from_map(script_to_cmap) return cmap_data.CmapData(metadata, tabledata)
def cmap_data_from_csv(csvdata, infile=None): args = [('infile', infile)] if infile else None metadata = cmap_data.create_metadata('mti_cmap_data', args) tabledata = cmap_data.create_table_from_map( get_script_to_cmap(csvdata)) return cmap_data.CmapData(metadata, tabledata)
def cmap_data_from_csv(csvdata, infile=None): args = [('infile', infile)] if infile else None metadata = cmap_data.create_metadata('mti_cmap_data', args) tabledata = cmap_data.create_table_from_map(get_script_to_cmap(csvdata)) return cmap_data.CmapData(metadata, tabledata)