From 6210e7d331926e37d1a43dc2ec482d9d5bad7141 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 8 Aug 2022 08:05:37 -0600 Subject: [PATCH] [instancer.solver] Test more --- Lib/fontTools/varLib/instancer/solver.py | 5 +++-- Tests/varLib/instancer/solver_test.py | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Lib/fontTools/varLib/instancer/solver.py b/Lib/fontTools/varLib/instancer/solver.py index c9423f3c6..fe9717355 100644 --- a/Lib/fontTools/varLib/instancer/solver.py +++ b/Lib/fontTools/varLib/instancer/solver.py @@ -61,7 +61,8 @@ def _solveWithGain(tent, axisLimit): # we clamp +2.0 to the max F2Dot14 (~1.99994) for convenience upper = axisDef + (axisMax - axisDef) * MAX_F2DOT14 - out.append((1 - gain, (axisDef, peak, upper))) + if upper > axisDef: + out.append((0 - gain, (axisDef, peak, upper))) # case 4: new limit doesn't fit; we need to chop the deltaset into two 'tents', # because the shape of a triangle with part of one side cut off cannot be @@ -70,7 +71,7 @@ def _solveWithGain(tent, axisLimit): else: loc1 = (axisDef, peak, axisMax) - scalar1 = 1 + scalar1 = 0 loc2 = (peak, axisMax, axisMax) scalar2 = supportScalar({'tag': axisMax}, {'tag': tent}) diff --git a/Tests/varLib/instancer/solver_test.py b/Tests/varLib/instancer/solver_test.py index ca3475cf8..b57f0d3ad 100644 --- a/Tests/varLib/instancer/solver_test.py +++ b/Tests/varLib/instancer/solver_test.py @@ -84,12 +84,22 @@ class RebaseTentTest(object): # With gain: # + # Case 1neg + pytest.param( + (.0, .5, 1), (0, .5, 1), + [ + (1, (-1, 0, 1)), + (-1, (0, 0, 1)), + (-1, (-1, -1, 0)), + ] + ), + # Case 1neg pytest.param( (.0, .5, 1), (0, .25, .5), [ (.5, (-1, 0, 1)), - (.5, (0, 1, 1)), + (-.5, (0, 1, 1)), (-.5, (-1, -1, 0)), ] ), @@ -98,8 +108,8 @@ class RebaseTentTest(object): pytest.param( (.05, .55, 1), (0, .25, .5), [ - (.4, (-1, 0, 1)), - (.5, (0, 1, 1)), + (.4, (-1.0, 0.0, 1.0)), + (-.4, (0.0, 1.0, 1.0)), (-.4, (-1, -.8, 0)), (-.4, (-1, -1, -.8)), ]