diff --git a/Lib/fontTools/ttLib/tables/otBase.py b/Lib/fontTools/ttLib/tables/otBase.py index 3c07f9e11..24c619700 100644 --- a/Lib/fontTools/ttLib/tables/otBase.py +++ b/Lib/fontTools/ttLib/tables/otBase.py @@ -571,7 +571,7 @@ class BaseTable(object): countValue = 1 if conv.repeat: if conv.repeat in reader: - countValue = reader[conv.repeat] + countValue = reader[conv.repeat] + conv.aux else: return NotImplemented totalSize += size * countValue diff --git a/Tests/ttLib/tables/M_V_A_R_test.py b/Tests/ttLib/tables/M_V_A_R_test.py index 3972d8c30..a8b092e0e 100644 --- a/Tests/ttLib/tables/M_V_A_R_test.py +++ b/Tests/ttLib/tables/M_V_A_R_test.py @@ -8,8 +8,8 @@ import unittest MVAR_DATA = deHexStr( '0001 0000 ' # 0: version=1.0 '0000 0008 ' # 4: reserved=0, valueRecordSize=8 - '0007 ' # 8: valueRecordCount=7 - '0044 ' # 10: offsetToItemVariationStore=68 + '0009 ' # 8: valueRecordCount=9 + '0054 ' # 10: offsetToItemVariationStore=84 '6861 7363 ' # 12: ValueRecord.valueTag="hasc" '0000 ' # 16: ValueRecord.deltaSetOuterIndex '0003 ' # 18: ValueRecord.deltaSetInnerIndex @@ -31,30 +31,36 @@ MVAR_DATA = deHexStr( '7370 796F ' # 60: ValueRecord.valueTag="spyo" '0000 ' # 64: ValueRecord.deltaSetOuterIndex '0002 ' # 66: ValueRecord.deltaSetInnerIndex - '0001 ' # 68: VarStore.format=1 - '0000 000C ' # 70: VarStore.offsetToVariationRegionList=12 - '0001 ' # 74: VarStore.itemVariationDataCount=1 - '0000 0016 ' # 76: VarStore.itemVariationDataOffsets[0]=22 - '0001 ' # 80: VarRegionList.axisCount=1 - '0001 ' # 82: VarRegionList.regionCount=1 - '0000 ' # 84: variationRegions[0].regionAxes[0].startCoord=0.0 - '4000 ' # 86: variationRegions[0].regionAxes[0].peakCoord=1.0 - '4000 ' # 88: variationRegions[0].regionAxes[0].endCoord=1.0 - '0004 ' # 90: VarData.ItemCount=4 - '0001 ' # 92: VarData.NumShorts=1 - '0001 ' # 94: VarData.VarRegionCount=1 - '0000 ' # 96: VarData.VarRegionIndex[0]=0 - 'FF38 ' # 98: VarData.deltaSets[0]=-200 - 'FFCE ' # 100: VarData.deltaSets[0]=-50 - '0064 ' # 102: VarData.deltaSets[0]=100 - '00C8 ' # 104: VarData.deltaSets[0]=200 + '7465 7374 ' # 68: ValueRecord.valueTag="test" + '0000 ' # 72: ValueRecord.deltaSetOuterIndex + '0002 ' # 74: ValueRecord.deltaSetInnerIndex + '7465 7332 ' # 76: ValueRecord.valueTag="tes2" + '0000 ' # 78: ValueRecord.deltaSetOuterIndex + '0002 ' # 82: ValueRecord.deltaSetInnerIndex + '0001 ' # 84: VarStore.format=1 + '0000 000C ' # 86: VarStore.offsetToVariationRegionList=12 + '0001 ' # 90: VarStore.itemVariationDataCount=1 + '0000 0016 ' # 92: VarStore.itemVariationDataOffsets[0]=22 + '0001 ' # 96: VarRegionList.axisCount=1 + '0001 ' # 98: VarRegionList.regionCount=1 + '0000 ' # 100: variationRegions[0].regionAxes[0].startCoord=0.0 + '4000 ' # 102: variationRegions[0].regionAxes[0].peakCoord=1.0 + '4000 ' # 104: variationRegions[0].regionAxes[0].endCoord=1.0 + '0004 ' # 106: VarData.ItemCount=4 + '0001 ' # 108: VarData.NumShorts=1 + '0001 ' # 110: VarData.VarRegionCount=1 + '0000 ' # 112: VarData.VarRegionIndex[0]=0 + 'FF38 ' # 114: VarData.deltaSets[0]=-200 + 'FFCE ' # 116: VarData.deltaSets[0]=-50 + '0064 ' # 118: VarData.deltaSets[0]=100 + '00C8 ' # 120: VarData.deltaSets[0]=200 ) MVAR_XML = [ '', '', '', - '', + '', '', ' ', ' ', @@ -108,6 +114,14 @@ MVAR_XML = [ ' ', ' ', '', + '', + ' ', + ' ', + '', + '', + ' ', + ' ', + '', ] @@ -123,6 +137,13 @@ class MVARTest(unittest.TestCase): mvar.decompile(MVAR_DATA, font) self.assertEqual(getXML(mvar.toXML), MVAR_XML) + + def test_decompile_toXML_lazy(self): + mvar = newTable('MVAR') + font = TTFont(lazy=True) + mvar.decompile(MVAR_DATA, font) + self.assertEqual(getXML(mvar.toXML), MVAR_XML) + def test_compile_fromXML(self): mvar = newTable('MVAR') font = TTFont()