Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
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)
Пример #9
0
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)
Пример #10
0
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)