diff --git a/Lib/fontTools/varLib/instancer.py b/Lib/fontTools/varLib/instancer.py index d88cb38c9..4943a5463 100644 --- a/Lib/fontTools/varLib/instancer.py +++ b/Lib/fontTools/varLib/instancer.py @@ -1329,9 +1329,6 @@ def axisValueIsSelected(axisValue, seeker): axisIndex in seeker and seeker[axisIndex] <= axisValue.RangeMaxValue ]) else False - if axisIndex not in seeker: - return False - return False @@ -1395,8 +1392,15 @@ def updateNameTable(varfont, axisLimits): if "STAT" not in varfont: raise ValueError("Cannot update name table since there is no STAT table.") stat = varfont['STAT'] + fvar = varfont['fvar'] nametable = varfont["name"] + # add default axis values if they are missing from axisLimits + fvarDefaults = {a.axisTag: a.defaultValue for a in fvar.axes} + for k, v in fvarDefaults.items(): + if k not in axisLimits: + axisLimits[k] = v + selectedAxisValues = axisValuesFromAxisLimits(stat, axisLimits) _updateNameRecords(varfont, nametable, selectedAxisValues) diff --git a/Tests/varLib/data/PartialInstancerTest-VF.ttx b/Tests/varLib/data/PartialInstancerTest-VF.ttx index 92540e03e..268b5068b 100644 --- a/Tests/varLib/data/PartialInstancerTest-VF.ttx +++ b/Tests/varLib/data/PartialInstancerTest-VF.ttx @@ -479,6 +479,9 @@ TestVariableFont-XCdBd + + Normal + @@ -764,6 +767,15 @@ + + + + + + + + + diff --git a/Tests/varLib/instancer_test.py b/Tests/varLib/instancer_test.py index d148a8c45..a794f79d2 100644 --- a/Tests/varLib/instancer_test.py +++ b/Tests/varLib/instancer_test.py @@ -1209,8 +1209,8 @@ class InstantiateSTATTest(object): @pytest.mark.parametrize( "location, expected", [ - ({"wght": 400}, ["Regular", "Condensed", "Upright"]), - ({"wdth": 100}, ["Thin", "Regular", "Black", "Upright"]), + ({"wght": 400}, ["Regular", "Condensed", "Upright", "Normal"]), + ({"wdth": 100}, ["Thin", "Regular", "Black", "Upright", "Normal"]), ], ) def test_pin_and_drop_axis(self, varfont, location, expected): @@ -1344,7 +1344,7 @@ class InstantiateSTATTest(object): def test_pruningUnusedNames(varfont): varNameIDs = instancer.getVariationNameIDs(varfont) - assert varNameIDs == set(range(256, 296 + 1)) + assert varNameIDs == set(range(256, 297 + 1)) fvar = varfont["fvar"] stat = varfont["STAT"].table