From e1e906332121ad0143ac576b6f2c18326495cff7 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Sat, 6 Aug 2022 16:01:03 -0600 Subject: [PATCH] [instancer.solver] Massage a bit --- Lib/fontTools/varLib/instancer/__init__.py | 12 ++++++++++++ Lib/fontTools/varLib/instancer/solver.py | 12 ++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/Lib/fontTools/varLib/instancer/__init__.py b/Lib/fontTools/varLib/instancer/__init__.py index e4fae9efbd4..f2a4e325fc7 100644 --- a/Lib/fontTools/varLib/instancer/__init__.py +++ b/Lib/fontTools/varLib/instancer/__init__.py @@ -226,6 +226,18 @@ def _negate(*values): def changeTupleVariationAxisLimit(var, axisTag, axisLimit): assert isinstance(axisLimit, NormalizedAxisTent) + + # Skip when current axis is missing (i.e. doesn't participate), + lower, peak, upper = var.axes.get(axisTag, (-1, 0, 1)) + if peak == 0: + return [var] + # Drop if the var 'tent' isn't well-formed + if not (lower <= peak <= upper) or (lower < 0 and upper > 0): + return [] + + if axisTag not in var.axes: + return [var] + return solver.changeTupleVariationAxisLimit(var, axisTag, axisLimit) def _instantiateGvarGlyph(glyphname, glyf, gvar, hMetrics, vMetrics, axisLimits, optimize=True): diff --git a/Lib/fontTools/varLib/instancer/solver.py b/Lib/fontTools/varLib/instancer/solver.py index 91bfe956160..1cd5d59e74d 100644 --- a/Lib/fontTools/varLib/instancer/solver.py +++ b/Lib/fontTools/varLib/instancer/solver.py @@ -4,7 +4,7 @@ def _solvePinned(var, axisTag, axisLimit): axisMin, axisDef, axisMax = axisLimit - support = {axisTag: var.axes.pop(axisTag, (-1, 0, 1))} + support = {axisTag: var.axes.pop(axisTag)} scalar = supportScalar({axisTag: axisLimit.default}, support) if scalar == 0.0: return [] @@ -16,7 +16,7 @@ def _solvePinned(var, axisTag, axisLimit): def _solveDefaultUnmoved(var, axisTag, axisLimit): axisMin, axisDef, axisMax = axisLimit - lower, peak, upper = var.axes.get(axisTag, (-1, 0, 1)) + lower, peak, upper = var.axes.get(axisTag) negative = lower < 0 if negative: @@ -111,14 +111,6 @@ def changeTupleVariationAxisLimit(var, axisTag, axisLimit): axisMin, axisDef, axisMax = axisLimit assert -1 <= axisMin <= axisDef <= axisMax <= +1 - # Skip when current axis is missing (i.e. doesn't participate), - lower, peak, upper = var.axes.get(axisTag, (-1, 0, 1)) - if peak == 0: - return [var] - # Drop if the var 'tent' isn't well-formed - if not (lower <= peak <= upper) or (lower < 0 and upper > 0): - return [] - # Get the pinned case out of the way if axisMin == axisMax: return _solvePinned(var, axisTag, axisLimit)