Skip to content

Commit

Permalink
[instancer.solver] Massage a bit
Browse files Browse the repository at this point in the history
  • Loading branch information
behdad committed Aug 17, 2022
1 parent 22403b6 commit e1e9063
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 10 deletions.
12 changes: 12 additions & 0 deletions Lib/fontTools/varLib/instancer/__init__.py
Expand Up @@ -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):
Expand Down
12 changes: 2 additions & 10 deletions Lib/fontTools/varLib/instancer/solver.py
Expand Up @@ -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 []
Expand All @@ -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:
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit e1e9063

Please sign in to comment.