diff --git a/Lib/fontTools/ttLib/tables/otTables.py b/Lib/fontTools/ttLib/tables/otTables.py index a4b18a281..3406415d0 100644 --- a/Lib/fontTools/ttLib/tables/otTables.py +++ b/Lib/fontTools/ttLib/tables/otTables.py @@ -11,6 +11,7 @@ from functools import reduce from math import radians import itertools from collections import defaultdict, namedtuple +from fontTools.ttLib.tables.TupleVariation import TupleVariation from fontTools.ttLib.tables.otTraverse import dfs_base_table from fontTools.misc.arrayTools import quantizeRect from fontTools.misc.roundTools import otRound @@ -140,10 +141,7 @@ class VarComponent: axisIndices = localState["AxisIndicesList"].Item[self.axisIndicesIndex] numAxes = len(axisIndices) - axisValues = array.array("h", data[i : i + 2 * numAxes]) - i += 2 * numAxes - if sys.byteorder != "big": - axisValues.byteswap() + axisValues, i = TupleVariation.decompileDeltas_(numAxes, data, i) assert len(axisValues) == numAxes self.axisValues = tuple(axisValues) @@ -217,10 +215,7 @@ class VarComponent: if axisIndicesIndexSize: data.append(_packer[axisIndicesIndexSize](self.axisIndicesIndex)) - axisValues = array.array("h", self.axisValues) - if sys.byteorder != "big": - axisValues.byteswap() - data.append(axisValues.tobytes()) + data.append(TupleVariation.compileDeltaValues_(self.axisValues)) if self.axisValuesVarIndex != NO_VARIATION_INDEX: flags |= VarComponentFlags.AXIS_VALUES_HAVE_VARIATION diff --git a/Tests/ttLib/data/varc-6868.ttf b/Tests/ttLib/data/varc-6868.ttf index 62e071c17..5e02bb146 100644 Binary files a/Tests/ttLib/data/varc-6868.ttf and b/Tests/ttLib/data/varc-6868.ttf differ diff --git a/Tests/ttLib/data/varc-ac00-ac01.ttf b/Tests/ttLib/data/varc-ac00-ac01.ttf index c011395a8..4597c2e61 100644 Binary files a/Tests/ttLib/data/varc-ac00-ac01.ttf and b/Tests/ttLib/data/varc-ac00-ac01.ttf differ