def test_sub(self): kerning1 = { ("A", "A"): 1, ("B", "B"): 1, ("NotIn2", "NotIn2"): 1, ("public.kern1.NotIn2", "C"): 1, ("public.kern1.D", "public.kern2.D"): 1, } groups1 = { "public.kern1.NotIn1": ["C"], "public.kern1.D": ["D", "H"], "public.kern2.D": ["D", "H"], } kerning2 = { ("A", "A"): -1, ("B", "B"): 1, ("NotIn1", "NotIn1"): 1, ("public.kern1.NotIn1", "C"): 1, ("public.kern1.D", "public.kern2.D"): 1, } groups2 = { "public.kern1.NotIn2": ["C"], "public.kern1.D": ["D"], "public.kern2.D": ["D", "H"], } obj = MathKerning(kerning1, groups1) - MathKerning(kerning2, groups2) self.assertEqual(sorted(obj.items()), [(('A', 'A'), 2), (('NotIn1', 'NotIn1'), -1), (('NotIn2', 'NotIn2'), 1), (('public.kern1.NotIn1', 'C'), -1), (('public.kern1.NotIn2', 'C'), 1)]) self.assertEqual(sorted(obj.groups()["public.kern1.D"]), ['D', 'H']) self.assertEqual(sorted(obj.groups()["public.kern2.D"]), ['D', 'H'])
def test_add(self): kerning1 = { ("A", "A"): 1, ("B", "B"): 1, ("NotIn2", "NotIn2"): 1, ("public.kern1.NotIn2", "C"): 1, ("public.kern1.D", "public.kern2.D"): 1, } groups1 = { "public.kern1.NotIn1": ["C"], "public.kern1.D": ["D", "H"], "public.kern2.D": ["D", "H"], } kerning2 = { ("A", "A"): -1, ("B", "B"): 1, ("NotIn1", "NotIn1"): 1, ("public.kern1.NotIn1", "C"): 1, ("public.kern1.D", "public.kern2.D"): 1, } groups2 = { "public.kern1.NotIn2": ["C"], "public.kern1.D": ["D", "H"], "public.kern2.D": ["D", "H"], } obj = MathKerning(kerning1, groups1) + MathKerning(kerning2, groups2) self.assertEqual( sorted(obj.items()), [(('B', 'B'), 2), (('NotIn1', 'NotIn1'), 1), (('NotIn2', 'NotIn2'), 1), (('public.kern1.D', 'public.kern2.D'), 2), (('public.kern1.NotIn1', 'C'), 1), (('public.kern1.NotIn2', 'C'), 1)]) self.assertEqual( obj.groups()["public.kern1.D"], ['D', 'H']) self.assertEqual( obj.groups()["public.kern2.D"], ['D', 'H'])
# process with varlib.model mut1 = VariationModelMutator(items, [a]) m1i = mut1.makeInstance(dict(w=1)) print("\n#varlib") print(m1i.items()) # process with mutator bias, mut2 = buildMutator(items) m2i = mut2.makeInstance(dict(w=1)) print("\n#mutator") print(m2i.items()) # process with the same mathematical operations on a naked mathKerning object v = None deltas = [m, m] scalars = [1.0, 1.0] assert len(deltas) == len(scalars) for i, (delta, scalar) in enumerate(zip(deltas, scalars)): if not scalar: continue contribution = delta * scalar if v is None: v = contribution else: v += contribution print("\n#doing the math that varlib does") print(v.items()) print(m.groups()) print((m * 2.0).groups())