From 037bbe103005241e08d7d5da7cbd36624a93b7b5 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 18 Jan 2024 06:25:52 -0700 Subject: [PATCH] [VARC] Load axisValues as float https://github.com/fonttools/fonttools/pull/3395#issuecomment-1897696665 --- Lib/fontTools/ttLib/tables/otTables.py | 12 ++++++++---- Lib/fontTools/ttLib/ttGlyphSet.py | 5 ++--- Tests/ttLib/data/varc-ac00-ac01-500upem.ttx | 10 +++++----- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/Lib/fontTools/ttLib/tables/otTables.py b/Lib/fontTools/ttLib/tables/otTables.py index b5d76aaf3..595707656 100644 --- a/Lib/fontTools/ttLib/tables/otTables.py +++ b/Lib/fontTools/ttLib/tables/otTables.py @@ -185,7 +185,7 @@ class VarComponent: axisValues, i = TupleVariation.decompileDeltas_(numAxes, data, i) assert len(axisValues) == numAxes - self.axisValues = tuple(axisValues) + self.axisValues = tuple(fi2fl(v, 14) for v in axisValues) if flags & VarComponentFlags.AXIS_VALUES_HAVE_VARIATION: self.axisValuesVarIndex, i = _read_uint32var(data, i) @@ -239,7 +239,11 @@ class VarComponent: if numAxes: flags |= VarComponentFlags.HAVE_AXES data.append(_write_uint32var(self.axisIndicesIndex)) - data.append(TupleVariation.compileDeltaValues_(self.axisValues)) + data.append( + TupleVariation.compileDeltaValues_( + [fl2fi(v, 14) for v in self.axisValues] + ) + ) else: flags &= ~VarComponentFlags.HAVE_AXES @@ -282,7 +286,7 @@ class VarComponent: if self.axisIndicesIndex is not None: write("axisIndicesIndex", self.axisIndicesIndex) - write("axisValues", self.axisValues) + write("axisValues", [float(fl2str(v, 14)) for v in self.axisValues]) if self.axisValuesVarIndex != NO_VARIATION_INDEX: write("axisValuesVarIndex", self.axisValuesVarIndex) @@ -313,7 +317,7 @@ class VarComponent: elif name == "axisIndicesIndex": self.axisIndicesIndex = safeEval(v) elif name == "axisValues": - self.axisValues = safeEval(v) + self.axisValues = tuple(str2fl(v, 14) for v in safeEval(v)) elif name == "axisValuesVarIndex": self.axisValuesVarIndex = safeEval(v) elif name == "transformVarIndex": diff --git a/Lib/fontTools/ttLib/ttGlyphSet.py b/Lib/fontTools/ttLib/ttGlyphSet.py index 4a5af3b8e..e458466af 100644 --- a/Lib/fontTools/ttLib/ttGlyphSet.py +++ b/Lib/fontTools/ttLib/ttGlyphSet.py @@ -304,14 +304,13 @@ class _TTGlyphVARC(_TTGlyph): axisIndices = varc.AxisIndicesList.Item[comp.axisIndicesIndex] axisValues = Vector(comp.axisValues) if comp.axisValuesVarIndex != NO_VARIATION_INDEX: - axisValues += instancer[comp.axisValuesVarIndex] + axisValues += fi2fl(instancer[comp.axisValuesVarIndex], 14) assert len(axisIndices) == len(axisValues), ( len(axisIndices), len(axisValues), ) location = { - fvarAxes[i].axisTag: fi2fl(v, 14) - for i, v in zip(axisIndices, axisValues) + fvarAxes[i].axisTag: v for i, v in zip(axisIndices, axisValues) } if comp.transformVarIndex != NO_VARIATION_INDEX: diff --git a/Tests/ttLib/data/varc-ac00-ac01-500upem.ttx b/Tests/ttLib/data/varc-ac00-ac01-500upem.ttx index 360807b7c..1c60b923b 100644 --- a/Tests/ttLib/data/varc-ac00-ac01-500upem.ttx +++ b/Tests/ttLib/data/varc-ac00-ac01-500upem.ttx @@ -332,7 +332,7 @@ - + @@ -341,7 +341,7 @@ - + @@ -351,7 +351,7 @@ - + @@ -363,7 +363,7 @@ - + @@ -375,7 +375,7 @@ - +