From 54cfb5f696c3ce5db1009035aea14ab43dda31b9 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 1 Jun 2023 12:24:51 -0600 Subject: [PATCH] [designspaceLib/avar2] Err if mappings axes ranges are being subset --- Lib/fontTools/designspaceLib/split.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Lib/fontTools/designspaceLib/split.py b/Lib/fontTools/designspaceLib/split.py index af370f143..0b7cdf4be 100644 --- a/Lib/fontTools/designspaceLib/split.py +++ b/Lib/fontTools/designspaceLib/split.py @@ -226,7 +226,6 @@ def _extractSubSpace( ) ) - # TODO Trim out-of-range values? :-( subDoc.axisMappings = mappings = [] subDocAxes = {axis.name for axis in subDoc.axes} for mapping in doc.axisMappings: @@ -239,6 +238,25 @@ def _extractSubSpace( mapping.outputLocation, ) continue + + mappingAxes = set() + mappingAxes.update(mapping.inputLocation.keys()) + mappingAxes.update(mapping.outputLocation.keys()) + for axis in doc.axes: + if axis.name not in mappingAxes: + continue + range = userRegion[axis.name] + if ( + range.minimum != axis.minimum + or (range.default is not None and range.default != axis.default) + or range.maximum != axis.maximum + ): + LOGGER.error( + "Limiting axis ranges used in elements not supported: %s", + axis.name, + ) + continue + mappings.append( AxisMappingDescriptor( inputLocation=mapping.inputLocation,