diff --git a/Tests/varLib/data/PartialInstancerTest3-VF.ttx b/Tests/varLib/data/PartialInstancerTest3-VF.ttx
new file mode 100644
index 000000000..01c7d050d
--- /dev/null
+++ b/Tests/varLib/data/PartialInstancerTest3-VF.ttx
@@ -0,0 +1,439 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Weight
+
+
+ Regular
+
+
+ Remove Overlaps Test
+
+
+ Regular
+
+
+ 1.000;NONE;RemoveOverlapsTest-Regular
+
+
+ Remove Overlaps Test Regular
+
+
+ Version 1.000
+
+
+ RemoveOverlapsTest-Regular
+
+
+ Weight
+
+
+ Regular
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ wght
+ 0x0
+ 400.0
+ 400.0
+ 700.0
+ 256
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/varLib/data/test_results/PartialInstancerTest3-VF-instance-400-no-overlap-flags.ttx b/Tests/varLib/data/test_results/PartialInstancerTest3-VF-instance-400-no-overlap-flags.ttx
new file mode 100644
index 000000000..fc6310d5d
--- /dev/null
+++ b/Tests/varLib/data/test_results/PartialInstancerTest3-VF-instance-400-no-overlap-flags.ttx
@@ -0,0 +1,305 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Weight
+
+
+ Remove Overlaps Test
+
+
+ Regular
+
+
+ 1.000;NONE;RemoveOverlapsTest-Regular
+
+
+ Remove Overlaps Test Regular
+
+
+ Version 1.000
+
+
+ RemoveOverlapsTest-Regular
+
+
+ Weight
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/varLib/data/test_results/PartialInstancerTest3-VF-instance-400-no-overlaps.ttx b/Tests/varLib/data/test_results/PartialInstancerTest3-VF-instance-400-no-overlaps.ttx
new file mode 100644
index 000000000..3e18c9b70
--- /dev/null
+++ b/Tests/varLib/data/test_results/PartialInstancerTest3-VF-instance-400-no-overlaps.ttx
@@ -0,0 +1,343 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Weight
+
+
+ Remove Overlaps Test
+
+
+ Regular
+
+
+ 1.000;NONE;RemoveOverlapsTest-Regular
+
+
+ Remove Overlaps Test Regular
+
+
+ Version 1.000
+
+
+ RemoveOverlapsTest-Regular
+
+
+ Weight
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/varLib/data/test_results/PartialInstancerTest3-VF-instance-700-no-overlaps.ttx b/Tests/varLib/data/test_results/PartialInstancerTest3-VF-instance-700-no-overlaps.ttx
new file mode 100644
index 000000000..be0353da1
--- /dev/null
+++ b/Tests/varLib/data/test_results/PartialInstancerTest3-VF-instance-700-no-overlaps.ttx
@@ -0,0 +1,367 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Weight
+
+
+ Remove Overlaps Test
+
+
+ Regular
+
+
+ 1.000;NONE;RemoveOverlapsTest-Regular
+
+
+ Remove Overlaps Test Regular
+
+
+ Version 1.000
+
+
+ RemoveOverlapsTest-Regular
+
+
+ Weight
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/varLib/instancer_test.py b/Tests/varLib/instancer_test.py
index 3421b1165..0554933c2 100644
--- a/Tests/varLib/instancer_test.py
+++ b/Tests/varLib/instancer_test.py
@@ -1400,6 +1400,13 @@ def varfont2():
return f
+@pytest.fixture
+def varfont3():
+ f = ttLib.TTFont(recalcTimestamp=False)
+ f.importXML(os.path.join(TESTDATA, "PartialInstancerTest3-VF.ttx"))
+ return f
+
+
def _dump_ttx(ttFont):
# compile to temporary bytes stream, reload and dump to XML
tmp = BytesIO()
@@ -1411,13 +1418,16 @@ def _dump_ttx(ttFont):
return _strip_ttLibVersion(s.getvalue())
-def _get_expected_instance_ttx(wght, wdth):
+def _get_expected_instance_ttx(
+ name, *locations, overlap=instancer.OverlapMode.KEEP_AND_SET_FLAGS
+):
+ filename = f"{name}-VF-instance-{','.join(str(loc) for loc in locations)}"
+ if overlap == instancer.OverlapMode.KEEP_AND_DONT_SET_FLAGS:
+ filename += "-no-overlap-flags"
+ elif overlap == instancer.OverlapMode.REMOVE:
+ filename += "-no-overlaps"
with open(
- os.path.join(
- TESTDATA,
- "test_results",
- "PartialInstancerTest2-VF-instance-{0},{1}.ttx".format(wght, wdth),
- ),
+ os.path.join(TESTDATA, "test_results", f"{filename}.ttx"),
"r",
encoding="utf-8",
) as fp:
@@ -1433,7 +1443,7 @@ class InstantiateVariableFontTest(object):
partial = instancer.instantiateVariableFont(varfont2, {"wght": wght})
instance = instancer.instantiateVariableFont(partial, {"wdth": wdth})
- expected = _get_expected_instance_ttx(wght, wdth)
+ expected = _get_expected_instance_ttx("PartialInstancerTest2", wght, wdth)
assert _dump_ttx(instance) == expected
@@ -1442,7 +1452,30 @@ class InstantiateVariableFontTest(object):
varfont2, {"wght": None, "wdth": None}
)
- expected = _get_expected_instance_ttx(400, 100)
+ expected = _get_expected_instance_ttx("PartialInstancerTest2", 400, 100)
+
+ assert _dump_ttx(instance) == expected
+
+ @pytest.mark.parametrize(
+ "overlap, wght",
+ [
+ (instancer.OverlapMode.KEEP_AND_DONT_SET_FLAGS, 400),
+ (instancer.OverlapMode.REMOVE, 400),
+ (instancer.OverlapMode.REMOVE, 700),
+ ],
+ )
+ def test_overlap(self, varfont3, wght, overlap):
+ pytest.importorskip("pathops")
+
+ location = {"wght": wght}
+
+ instance = instancer.instantiateVariableFont(
+ varfont3, location, overlap=overlap
+ )
+
+ expected = _get_expected_instance_ttx(
+ "PartialInstancerTest3", wght, overlap=overlap
+ )
assert _dump_ttx(instance) == expected