diff options
Diffstat (limited to 'Lib/fontTools/varLib/models.py')
-rw-r--r-- | Lib/fontTools/varLib/models.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Lib/fontTools/varLib/models.py b/Lib/fontTools/varLib/models.py index 8ea1432a..653b75ff 100644 --- a/Lib/fontTools/varLib/models.py +++ b/Lib/fontTools/varLib/models.py @@ -339,6 +339,26 @@ class VariationModel(object): return self.interpolateFromDeltasAndScalars(deltas, scalars) +def piecewiseLinearMap(v, mapping): + keys = mapping.keys() + if not keys: + return v + if v in keys: + return mapping[v] + k = min(keys) + if v < k: + return v + mapping[k] - k + k = max(keys) + if v > k: + return v + mapping[k] - k + # Interpolate + a = max(k for k in keys if k < v) + b = min(k for k in keys if k > v) + va = mapping[a] + vb = mapping[b] + return va + (vb - va) * (v - a) / (b - a) + + def main(args): from fontTools import configLogger |