diff --git a/Tests/varLib/instancer/data/CFF2Instancer-VF-3.ttx b/Tests/varLib/instancer/data/CFF2Instancer-VF-3.ttx
new file mode 100644
index 000000000..55a009ed1
--- /dev/null
+++ b/Tests/varLib/instancer/data/CFF2Instancer-VF-3.ttx
@@ -0,0 +1,648 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ © 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.
+
+
+ Noto Sans SC
+
+
+ Regular
+
+
+ 2.004;ADBO;NotoSansSC-Thin;ADOBE
+
+
+ Noto Sans SC
+
+
+ Version 2.004;hotconv 1.0.118;makeotfexe 2.5.65603
+
+
+ NotoSansSC-Thin
+
+
+ Regular
+
+
+ Thin
+
+
+ Light
+
+
+ DemiLight
+
+
+ Regular
+
+
+ Medium
+
+
+ Bold
+
+
+ Black
+
+
+ Weight
+
+
+ Thin
+
+
+ NotoSansSC-Thin
+
+
+ Light
+
+
+ NotoSansSC-Light
+
+
+ DemiLight
+
+
+ NotoSansSC-DemiLight
+
+
+ Regular
+
+
+ NotoSansSC-Regular
+
+
+ Medium
+
+
+ NotoSansSC-Medium
+
+
+ Bold
+
+
+ NotoSansSC-Bold
+
+
+ Black
+
+
+ NotoSansSC-Black
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 69 271 -16 33 2 blend
+ rmoveto
+ -30 856 30 -95 40 95 3 blend
+ vlineto
+ -443 103 -81 -61 2 blend
+ rmoveto
+ -446 30 446 5 119 -5 3 blend
+ vlineto
+ -62 -110 -125 -2 2 blend
+ rmoveto
+ -87 -119 -170 -109 -147 -49 7 -5 9 -11 5 -9 145 54 174 111 90 124 11 40 23 37 5 14 24 -25 35 -45 16 -26 1 -4 -29 -15 1 -12 18 blend
+ rrcurveto
+ 71 12 39 33 2 blend
+ rmoveto
+ -27 -13 -86 -39 2 blend
+ rlineto
+ 88 -127 173 -108 158 -50 5 9 9 10 7 6 -159 45 -170 104 -84 124 7 22 -25 14 -16 1 16 28 35 46 25 23 19 -10 19 -35 6 -50 18 blend
+ rrcurveto
+ -451 501 -120 18 2 blend
+ rmoveto
+ 42 -51 44 -70 16 -45 -11 5 -10 8 -3 5 6 blend
+ rrcurveto
+ 28 15 -17 44 -44 68 -42 50 86 50 3 -4 6 -9 9 -8 8 blend
+ rlinecurve
+ 183 56 -86 -8 2 blend
+ rmoveto
+ -472 28 472 -50 111 50 3 blend
+ vlineto
+ -273 -379 -84 31 2 blend
+ rmoveto
+ 16 -26 70 33 93 45 88 42 42 -101 -2 8 -13 5 -16 7 8 blend
+ rlinecurve
+ -7 26 -97 -46 -98 -46 -65 -32 87 9 -3 7 -3 5 7 blend
+ -28 rlinecurve
+ 467 173 19 -103 2 blend
+ rmoveto
+ 59 -44 67 -64 31 -43 -24 2 -24 5 -14 5 6 blend
+ rrcurveto
+ 26 17 -33 43 -67 63 -58 43 84 51 13 -5 22 -8 22 -4 8 blend
+ rlinecurve
+ 8 104 -63 31 2 blend
+ rmoveto
+ -29 340 29 -90 -29 90 3 blend
+ vlineto
+ -291 89 -3 -2 2 blend
+ rmoveto
+ -33 -81 -82 -84 -90 -50 7 -5 9 -11 4 -6 94 52 84 89 38 88 -6 12 -3 4 6 4 18 -19 29 -37 16 -23 3 6 14 7 25 9 18 blend
+ rrcurveto
+ 251 -81 -122 39 2 blend
+ rmoveto
+ -7 -14 1 blend
+ vlineto
+ -76 -215 -200 -89 -239 -37 6 -7 8 -12 4 -7 243 43 202 90 84 231 17 41 27 6 11 5 19 -20 30 -48 10 -27 -1 4 -4 21 -1 1 18 blend
+ rrcurveto
+ -17 12 -7 -2 -71 33 -17 -2 4 blend
+ rlineto
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ wght
+ 0x0
+ 100.0
+ 100.0
+ 900.0
+ 265
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/varLib/instancer/data/test_results/CFF2Instancer-VF-3-instance-400.ttx b/Tests/varLib/instancer/data/test_results/CFF2Instancer-VF-3-instance-400.ttx
new file mode 100644
index 000000000..bcc83baee
--- /dev/null
+++ b/Tests/varLib/instancer/data/test_results/CFF2Instancer-VF-3-instance-400.ttx
@@ -0,0 +1,398 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ © 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.
+
+
+ Noto Sans SC
+
+
+ Regular
+
+
+ 2.004;ADBO;NotoSansSC-Thin;ADOBE
+
+
+ Noto Sans SC
+
+
+ Version 2.004;hotconv 1.0.118;makeotfexe 2.5.65603
+
+
+ NotoSansSC-Thin
+
+
+ Regular
+
+
+ Regular
+
+
+ Weight
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 63 284 rmoveto
+ -67 872 67 vlineto
+ -475 79 rmoveto
+ -444 76 444 vlineto
+ -111 -111 rmoveto
+ -83 -103 -161 -95 -145 -44 16 -15 23 -29 11 -19 145 52 163 105 90 119 rrcurveto
+ 86 25 rmoveto
+ -61 -28 rlineto
+ 91 -118 163 -103 152 -50 11 20 23 28 17 15 -152 41 -163 90 -82 104 rrcurveto
+ -498 508 rmoveto
+ 38 -49 40 -67 15 -43 rrcurveto
+ 62 35 -16 42 -42 64 -38 47 rlinecurve
+ 149 53 rmoveto
+ -492 71 492 vlineto
+ -306 -367 rmoveto
+ 32 -65 69 36 88 47 82 45 rlinecurve
+ -19 60 -93 -47 -95 -47 -63 -28 rlinecurve
+ 474 133 rmoveto
+ 50 -43 58 -62 26 -41 rrcurveto
+ 59 37 -28 41 -58 60 -49 41 rlinecurve
+ -17 116 rmoveto
+ -64 329 64 vlineto
+ -292 88 rmoveto
+ -35 -76 -83 -82 -88 -48 14 -12 20 -25 10 -15 95 54 89 92 48 92 rrcurveto
+ 203 -66 rmoveto
+ -12 vlineto
+ -69 -199 -189 -87 -235 -35 13 -15 20 -31 8 -18 243 45 200 98 84 231 rrcurveto
+ -45 25 -14 -3 rlineto
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/varLib/instancer/instancer_test.py b/Tests/varLib/instancer/instancer_test.py
index d2b65d768..428166a90 100644
--- a/Tests/varLib/instancer/instancer_test.py
+++ b/Tests/varLib/instancer/instancer_test.py
@@ -106,9 +106,16 @@ class InstantiateCFF2Test(object):
program = varfont["CFF2"].cff.topDictIndex[0].CharStrings.values()[1].program
assert program == expected
- def test_full_instance(self, varfont):
+ @pytest.mark.parametrize(
+ "source_ttx, expected_ttx",
+ [
+ ("CFF2Instancer-VF-2.ttx", "CFF2Instancer-VF-2-instance-400.ttx"),
+ ("CFF2Instancer-VF-3.ttx", "CFF2Instancer-VF-3-instance-400.ttx"),
+ ],
+ )
+ def test_full_instance(self, varfont, source_ttx, expected_ttx):
varfont = ttLib.TTFont()
- varfont.importXML(os.path.join(TESTDATA, "CFF2Instancer-VF-2.ttx"))
+ varfont.importXML(os.path.join(TESTDATA, source_ttx))
s = BytesIO()
varfont.save(s)
s.seek(0)
@@ -125,11 +132,7 @@ class InstantiateCFF2Test(object):
actual = stripVariableItemsFromTTX(s.getvalue())
expected = ttLib.TTFont()
- expected.importXML(
- os.path.join(
- TESTDATA, "test_results", "CFF2Instancer-VF-2-instance-400.ttx"
- )
- )
+ expected.importXML(os.path.join(TESTDATA, "test_results", expected_ttx))
s = BytesIO()
expected.save(s)
s.seek(0)