Esempio n. 1
0
def CompareDirs(font1, font2):
  """Compares fonts by assuming font1/2 are dirs containing METADATA.pb."""

  m1 = fonts.Metadata(font1)
  m2 = fonts.Metadata(font2)

  subsets_to_compare = fonts.UniqueSort(m1.subsets, m2.subsets)
  subsets_to_compare.remove('menu')
  subsets_to_compare.append('all')

  font_filename1 = os.path.join(font1, fonts.RegularWeight(m1))
  font_filename2 = os.path.join(font2, fonts.RegularWeight(m2))

  if FLAGS.diff_coverage:
    print 'Subset Coverage Change (codepoints)'
    for subset in subsets_to_compare:
      DiffCoverage(font_filename1, font_filename2, subset)

  print CompareSize(font_filename1, font_filename2)
Esempio n. 2
0
def DiffTables(font_filename1, font_filename2):
    """Prints a table-by-table size comparison of two fonts.

  Args:
    font_filename1: The first font to compare.
    font_filename2: The second font to compare.
  Returns:
    String describing size difference. One line per unique table in either font.
  """
    result = ['    Table    Changes  Delta-Bytes(from=>to)  % Change']
    result.append('    -------------------------------------------------')
    sfnt1 = sfnt.SFNTReader(open(font_filename1))
    sfnt2 = sfnt.SFNTReader(open(font_filename2))

    font_sz1 = os.stat(font_filename1).st_size

    sum_tables1 = 0
    sum_tables2 = 0

    table_l1_l2s = []
    for t in fonts.UniqueSort(sfnt1.tables, sfnt2.tables, _KNOWN_TABLES):
        table1_sz = sfnt1.tables[t].length if t in sfnt1 else 0
        table2_sz = sfnt2.tables[t].length if t in sfnt2 else 0
        sum_tables1 += table1_sz
        sum_tables2 += table2_sz
        table_l1_l2s.append((t, table1_sz, table2_sz))

    for (table, table1_sz, table2_sz) in table_l1_l2s:
        delta_pct = float(table2_sz - table1_sz) / font_sz1 * 100
        result.append(
            '    %s  %+6d      %06d => %06d %+10.1f%%' %
            (table, table2_sz - table1_sz, table1_sz, table2_sz, delta_pct))

    delta_pct = float(sum_tables2 - sum_tables1) / font_sz1 * 100
    result.append(
        '    TOTAL %+6d      %06d => %06d %+10.1f%%' %
        (sum_tables2 - sum_tables1, sum_tables1, sum_tables2, delta_pct))

    return '\n'.join(result)