diff options
Diffstat (limited to 'Tests/varLib/instancer/instancer_test.py')
-rw-r--r-- | Tests/varLib/instancer/instancer_test.py | 45 |
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 = {} |