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