diff --git a/Lib/fontTools/varLib/__init__.py b/Lib/fontTools/varLib/__init__.py index 818c484c4..9bae80d12 100644 --- a/Lib/fontTools/varLib/__init__.py +++ b/Lib/fontTools/varLib/__init__.py @@ -743,7 +743,8 @@ def load_designspace(designspace): assert axis_name in axes, "Location axis '%s' unknown for '%s'." % (axis_name, obj_name) for axis_name,axis in axes.items(): if axis_name not in loc: - loc[axis_name] = axis.default + # NOTE: `axis.default` is always user-space, but `obj.location` always design-space. + loc[axis_name] = axis.map_forward(axis.default) else: v = axis.map_backward(loc[axis_name]) assert axis.minimum <= v <= axis.maximum, "Location for axis '%s' (mapped to %s) out of range for '%s' [%s..%s]" % (axis_name, v, obj_name, axis.minimum, axis.maximum) diff --git a/Tests/varLib/data/VarLibLocationTest.designspace b/Tests/varLib/data/VarLibLocationTest.designspace new file mode 100644 index 000000000..b73e1b50d --- /dev/null +++ b/Tests/varLib/data/VarLibLocationTest.designspace @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/varLib_test.py b/Tests/varLib/varLib_test.py index 02b893ad7..b1faa50b0 100644 --- a/Tests/varLib/varLib_test.py +++ b/Tests/varLib/varLib_test.py @@ -1,6 +1,6 @@ from fontTools.misc.py23 import * from fontTools.ttLib import TTFont, newTable -from fontTools.varLib import build +from fontTools.varLib import build, load_designspace from fontTools.varLib.mutator import instantiateVariableFont from fontTools.varLib import main as varLib_main, load_masters from fontTools.varLib import set_default_weight_width_slant @@ -728,6 +728,13 @@ class BuildTest(unittest.TestCase): ("B", "D"): 40, } + def test_designspace_fill_in_location(self): + ds_path = self.get_test_input("VarLibLocationTest.designspace") + ds = DesignSpaceDocument.fromfile(ds_path) + ds_loaded = load_designspace(ds) + + assert ds_loaded.instances[0].location == {"weight": 0, "width": 50} + def test_load_masters_layerName_without_required_font(): ds = DesignSpaceDocument()