[VARC] Load axisValues as float

https://github.com/fonttools/fonttools/pull/3395#issuecomment-1897696665
This commit is contained in:
Behdad Esfahbod 2024-01-18 06:25:52 -07:00
parent 5ad4045cec
commit 037bbe1030
3 changed files with 15 additions and 12 deletions

View File

@ -185,7 +185,7 @@ class VarComponent:
axisValues, i = TupleVariation.decompileDeltas_(numAxes, data, i) axisValues, i = TupleVariation.decompileDeltas_(numAxes, data, i)
assert len(axisValues) == numAxes 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: if flags & VarComponentFlags.AXIS_VALUES_HAVE_VARIATION:
self.axisValuesVarIndex, i = _read_uint32var(data, i) self.axisValuesVarIndex, i = _read_uint32var(data, i)
@ -239,7 +239,11 @@ class VarComponent:
if numAxes: if numAxes:
flags |= VarComponentFlags.HAVE_AXES flags |= VarComponentFlags.HAVE_AXES
data.append(_write_uint32var(self.axisIndicesIndex)) 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: else:
flags &= ~VarComponentFlags.HAVE_AXES flags &= ~VarComponentFlags.HAVE_AXES
@ -282,7 +286,7 @@ class VarComponent:
if self.axisIndicesIndex is not None: if self.axisIndicesIndex is not None:
write("axisIndicesIndex", self.axisIndicesIndex) 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: if self.axisValuesVarIndex != NO_VARIATION_INDEX:
write("axisValuesVarIndex", self.axisValuesVarIndex) write("axisValuesVarIndex", self.axisValuesVarIndex)
@ -313,7 +317,7 @@ class VarComponent:
elif name == "axisIndicesIndex": elif name == "axisIndicesIndex":
self.axisIndicesIndex = safeEval(v) self.axisIndicesIndex = safeEval(v)
elif name == "axisValues": elif name == "axisValues":
self.axisValues = safeEval(v) self.axisValues = tuple(str2fl(v, 14) for v in safeEval(v))
elif name == "axisValuesVarIndex": elif name == "axisValuesVarIndex":
self.axisValuesVarIndex = safeEval(v) self.axisValuesVarIndex = safeEval(v)
elif name == "transformVarIndex": elif name == "transformVarIndex":

View File

@ -304,14 +304,13 @@ class _TTGlyphVARC(_TTGlyph):
axisIndices = varc.AxisIndicesList.Item[comp.axisIndicesIndex] axisIndices = varc.AxisIndicesList.Item[comp.axisIndicesIndex]
axisValues = Vector(comp.axisValues) axisValues = Vector(comp.axisValues)
if comp.axisValuesVarIndex != NO_VARIATION_INDEX: if comp.axisValuesVarIndex != NO_VARIATION_INDEX:
axisValues += instancer[comp.axisValuesVarIndex] axisValues += fi2fl(instancer[comp.axisValuesVarIndex], 14)
assert len(axisIndices) == len(axisValues), ( assert len(axisIndices) == len(axisValues), (
len(axisIndices), len(axisIndices),
len(axisValues), len(axisValues),
) )
location = { location = {
fvarAxes[i].axisTag: fi2fl(v, 14) fvarAxes[i].axisTag: v for i, v in zip(axisIndices, axisValues)
for i, v in zip(axisIndices, axisValues)
} }
if comp.transformVarIndex != NO_VARIATION_INDEX: if comp.transformVarIndex != NO_VARIATION_INDEX:

View File

@ -332,7 +332,7 @@
<glyphName value="glyph00008"/> <glyphName value="glyph00008"/>
<flags value="0x12"/> <flags value="0x12"/>
<axisIndicesIndex value="2"/> <axisIndicesIndex value="2"/>
<axisValues value="(3537,)"/> <axisValues value="[0.2159]"/>
<translateX value="-6.0"/> <translateX value="-6.0"/>
</VarComponent> </VarComponent>
</VarCompositeGlyph> </VarCompositeGlyph>
@ -341,7 +341,7 @@
<glyphName value="glyph00008"/> <glyphName value="glyph00008"/>
<flags value="0x16"/> <flags value="0x16"/>
<axisIndicesIndex value="0"/> <axisIndicesIndex value="0"/>
<axisValues value="(-13184, 0, 7928)"/> <axisValues value="[-0.8047, 0.0, 0.4839]"/>
<axisValuesVarIndex value="0"/> <axisValuesVarIndex value="0"/>
<translateX value="-3.0"/> <translateX value="-3.0"/>
</VarComponent> </VarComponent>
@ -351,7 +351,7 @@
<glyphName value="glyph00009"/> <glyphName value="glyph00009"/>
<flags value="0x3e"/> <flags value="0x3e"/>
<axisIndicesIndex value="1"/> <axisIndicesIndex value="1"/>
<axisValues value="(-8847, 655, -8484, 0, 0)"/> <axisValues value="[-0.54, 0.04, -0.5178, 0.0, 0.0]"/>
<axisValuesVarIndex value="1"/> <axisValuesVarIndex value="1"/>
<transformVarIndex value="2"/> <transformVarIndex value="2"/>
<translateX value="-5.0"/> <translateX value="-5.0"/>
@ -363,7 +363,7 @@
<glyphName value="glyph00010"/> <glyphName value="glyph00010"/>
<flags value="0x3e"/> <flags value="0x3e"/>
<axisIndicesIndex value="0"/> <axisIndicesIndex value="0"/>
<axisValues value="(-12714, -5843, 0)"/> <axisValues value="[-0.776, -0.3566, 0.0]"/>
<axisValuesVarIndex value="3"/> <axisValuesVarIndex value="3"/>
<transformVarIndex value="4"/> <transformVarIndex value="4"/>
<translateX value="53.0"/> <translateX value="53.0"/>
@ -375,7 +375,7 @@
<glyphName value="glyph00009"/> <glyphName value="glyph00009"/>
<flags value="0x3e"/> <flags value="0x3e"/>
<axisIndicesIndex value="0"/> <axisIndicesIndex value="0"/>
<axisValues value="(-4227, 819, -8484)"/> <axisValues value="[-0.258, 0.05, -0.5178]"/>
<axisValuesVarIndex value="5"/> <axisValuesVarIndex value="5"/>
<transformVarIndex value="6"/> <transformVarIndex value="6"/>
<translateX value="-5.0"/> <translateX value="-5.0"/>