def find_kerning_diffs(self):

        classes_a, classes_b = {}, {}
        rx = re.compile(r'(@[\w\d_.]+) = \[([\s\w\d_.]+)\];')
        self._parse_kerning_classes(rx, self.text_a, classes_a)
        self._parse_kerning_classes(rx, self.text_b, classes_b)

        unmatched = defaultdict(list)
        mismatched = defaultdict(list)
        rx = re.compile('pos ([\w\d@_.]+) ([\w\d@_.]+) (-?\d+);')
        self._parse_kerning(rx, '-', self.text_a, classes_a, unmatched)
        self._parse_kerning(rx, '+', self.text_b, classes_b, unmatched)
        self._organize_kerning_diffs(unmatched, mismatched)

        unmatched = [(k, v) for k, v in unmatched.iteritems() if v]
        res = ['%d differences in kerning pairs' % len(unmatched)]
        unmatched.sort(self._compare_keys)
        for (sign, left, right), vals in unmatched[:self.out_lines]:
            res.append('%s pos %s %s %s' % (sign, left, right, vals))
        res.append('')

        mismatched = [(k, v) for k, v in mismatched.iteritems() if any(v)]
        res.append('%d differences in kerning values' % len(mismatched))
        mismatched.sort(self._compare_kerning_values)
        for (left, right), (vals1, vals2) in mismatched[:self.out_lines]:
            if sum(abs(v1 - v2) for v1, v2 in zip(vals1, vals2)) > self.err:
                res.append('pos %s %s: %s vs %s' % (left, right, vals1, vals2))
        res.append('')
        return '\n'.join(res)
Add a asset definition.
dataset/ETHPy150Open googlei18n/nototools/nototools/gpos_diff.py/GposDiffFinder.find_kerning_diffs--crossover with--dataset/ETHPy150Open chromaway/ngcccbase/ngcccbase/api.py/Ngccc.addasset