diff --git a/Lib/fontTools/varLib/instancer/__init__.py b/Lib/fontTools/varLib/instancer/__init__.py
index 6a79fc9c2..7af8e5e0b 100644
--- a/Lib/fontTools/varLib/instancer/__init__.py
+++ b/Lib/fontTools/varLib/instancer/__init__.py
@@ -751,7 +751,10 @@ def instantiateCFF2(
# Empty out the VarStore
for i, varData in enumerate(varStore.VarData):
- assert varDataCursor[i] == varData.ItemCount, (varDataCursor[i], varData.ItemCount)
+ assert varDataCursor[i] == varData.ItemCount, (
+ varDataCursor[i],
+ varData.ItemCount,
+ )
varData.Item = []
varData.ItemCount = 0
@@ -779,6 +782,11 @@ def instantiateCFF2(
if command[0] == "vsindex":
command[1][0] = vsindexMapping[command[1][0]]
+ # Remove initial vsindex commands that are implied
+ for commands in allCommands:
+ if commands and commands[0] == ("vsindex", [0]):
+ commands.pop(0)
+
# Ship the charstrings!
for cs, commands in zip(charStrings, allCommands):
cs.program = commandsToProgram(commands)
diff --git a/Tests/varLib/instancer/data/test_results/CFF2Instancer-VF-2-instance-400.ttx b/Tests/varLib/instancer/data/test_results/CFF2Instancer-VF-2-instance-400.ttx
index bcee028c0..69d746ff6 100644
--- a/Tests/varLib/instancer/data/test_results/CFF2Instancer-VF-2-instance-400.ttx
+++ b/Tests/varLib/instancer/data/test_results/CFF2Instancer-VF-2-instance-400.ttx
@@ -183,7 +183,6 @@
- 0 vsindex
9 30 1 blend
hmoveto
122 31 1 blend