aboutsummaryrefslogtreecommitdiff
path: root/Tests/varLib/instancer/instancer_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/varLib/instancer/instancer_test.py')
-rw-r--r--Tests/varLib/instancer/instancer_test.py45
1 files changed, 43 insertions, 2 deletions
diff --git a/Tests/varLib/instancer/instancer_test.py b/Tests/varLib/instancer/instancer_test.py
index cb7e8547..bb2d1758 100644
--- a/Tests/varLib/instancer/instancer_test.py
+++ b/Tests/varLib/instancer/instancer_test.py
@@ -1,5 +1,5 @@
-from fontTools.misc.py23 import Tag
from fontTools.misc.fixedTools import floatToFixedToFloat
+from fontTools.misc.textTools import Tag
from fontTools import ttLib
from fontTools import designspaceLib
from fontTools.feaLib.builder import addOpenTypeFeaturesFromString
@@ -936,6 +936,30 @@ class InstantiateOTLTest(object):
assert not hasattr(valueRec1, "XAdvDevice")
assert valueRec1.XAdvance == v2
+ def test_GPOS_ValueRecord_XAdvDevice_wtihout_XAdvance(self):
+ # Test VF contains a PairPos adjustment in which the default instance
+ # has no XAdvance but there are deltas in XAdvDevice (VariationIndex).
+ vf = ttLib.TTFont()
+ vf.importXML(os.path.join(TESTDATA, "PartialInstancerTest4-VF.ttx"))
+ pairPos = vf["GPOS"].table.LookupList.Lookup[0].SubTable[0]
+ assert pairPos.ValueFormat1 == 0x40
+ valueRec1 = pairPos.PairSet[0].PairValueRecord[0].Value1
+ assert not hasattr(valueRec1, "XAdvance")
+ assert valueRec1.XAdvDevice.DeltaFormat == 0x8000
+ outer = valueRec1.XAdvDevice.StartSize
+ inner = valueRec1.XAdvDevice.EndSize
+ assert vf["GDEF"].table.VarStore.VarData[outer].Item[inner] == [-50]
+
+ # check that MutatorMerger for ValueRecord doesn't raise AttributeError
+ # when XAdvDevice is present but there's no corresponding XAdvance.
+ instancer.instantiateOTL(vf, {"wght": 0.5})
+
+ pairPos = vf["GPOS"].table.LookupList.Lookup[0].SubTable[0]
+ assert pairPos.ValueFormat1 == 0x4
+ valueRec1 = pairPos.PairSet[0].PairValueRecord[0].Value1
+ assert not hasattr(valueRec1, "XAdvDevice")
+ assert valueRec1.XAdvance == -25
+
class InstantiateAvarTest(object):
@pytest.mark.parametrize("location", [{"wght": 0.0}, {"wdth": 0.0}])
@@ -1387,7 +1411,7 @@ def _dump_ttx(ttFont):
tmp.seek(0)
ttFont2 = ttLib.TTFont(tmp, recalcBBoxes=False, recalcTimestamp=False)
s = StringIO()
- ttFont2.saveXML(s, newlinestr="\n")
+ ttFont2.saveXML(s)
return _strip_ttLibVersion(s.getvalue())
@@ -1452,6 +1476,23 @@ class InstantiateVariableFontTest(object):
assert _dump_ttx(instance) == expected
+ def test_singlepos(self):
+ varfont = ttLib.TTFont(recalcTimestamp=False)
+ varfont.importXML(os.path.join(TESTDATA, "SinglePos.ttx"))
+
+ location = {"wght": 280, "opsz": 18}
+
+ instance = instancer.instantiateVariableFont(
+ varfont, location,
+ )
+
+ expected = _get_expected_instance_ttx(
+ "SinglePos", *location.values()
+ )
+
+ assert _dump_ttx(instance) == expected
+
+
def _conditionSetAsDict(conditionSet, axisOrder):
result = {}