[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)
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":

View File

@ -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:

View File

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