diff --git a/Lib/fontTools/varLib/instancer/__init__.py b/Lib/fontTools/varLib/instancer/__init__.py index d22cf49b64..a1787181ee 100644 --- a/Lib/fontTools/varLib/instancer/__init__.py +++ b/Lib/fontTools/varLib/instancer/__init__.py @@ -860,14 +860,24 @@ def instantiateAvar(varfont, axisLimits): ) newMapping = {} for fromCoord, toCoord in mapping.items(): - - if fromCoord < axisRange.minimum or fromCoord > axisRange.maximum: - continue - fromCoord = normalizeValue(fromCoord, (axisRange.minimum, 0, axisRange.maximum)) - - assert mappedMin <= toCoord <= mappedMax - toCoord = normalizeValue(toCoord, (mappedMin, 0, mappedMax)) - + if fromCoord < 0: + if fromCoord < axisRange.minimum: + continue + else: + fromCoord /= abs(axisRange.minimum) + elif fromCoord > 0: + if fromCoord > axisRange.maximum: + continue + else: + fromCoord /= axisRange.maximum + if toCoord < 0: + assert mappedMin != 0 + assert toCoord >= mappedMin + toCoord /= abs(mappedMin) + elif toCoord > 0: + assert mappedMax != 0 + assert toCoord <= mappedMax + toCoord /= mappedMax fromCoord = floatToFixedToFloat(fromCoord, 14) toCoord = floatToFixedToFloat(toCoord, 14) newMapping[fromCoord] = toCoord