[VARC] Compute flags from XML transform components

This commit is contained in:
Behdad Esfahbod 2024-01-20 05:29:33 -08:00
parent 037bbe1030
commit 5b2df6b90b
2 changed files with 10 additions and 13 deletions

View File

@ -282,7 +282,8 @@ class VarComponent:
writer.newline()
write("glyphName", self.glyphName)
write("flags", hex(self.flags))
if self.flags & VarComponentFlags.RESET_UNSPECIFIED_AXES:
write("resetUnspecifiedAxes", True)
if self.axisIndicesIndex is not None:
write("axisIndicesIndex", self.axisIndicesIndex)
@ -293,9 +294,12 @@ class VarComponent:
if self.transformVarIndex != NO_VARIATION_INDEX:
write("transformVarIndex", self.transformVarIndex)
# Only write transform components that are specified in the
# flags, even if they are the default value.
for attr_name, mapping in VAR_TRANSFORM_MAPPING.items():
if not (self.flags & mapping.flag):
continue
v = getattr(self.transform, attr_name)
if v != mapping.defaultValue:
write(attr_name, fl2str(v, mapping.fractionalBits))
writer.endtag("VarComponent")
@ -312,6 +316,8 @@ class VarComponent:
if name == "glyphName":
self.glyphName = v
elif name == "resetUnspecifiedAxes":
self.flags = VarComponentFlags.RESET_UNSPECIFIED_AXES if v else 0
elif name == "flags":
self.flags = safeEval(v)
elif name == "axisIndicesIndex":
@ -328,6 +334,7 @@ class VarComponent:
name,
safeEval(v),
)
self.flags |= VAR_TRANSFORM_MAPPING[name].flag
else:
assert False, name

View File

@ -306,31 +306,25 @@
<VarCompositeGlyph index="0">
<VarComponent index="0">
<glyphName value="glyph00007"/>
<flags value="0x0"/>
</VarComponent>
<VarComponent index="1">
<glyphName value="glyph00003"/>
<flags value="0x0"/>
</VarComponent>
</VarCompositeGlyph>
<VarCompositeGlyph index="1">
<VarComponent index="0">
<glyphName value="glyph00005"/>
<flags value="0x0"/>
</VarComponent>
<VarComponent index="1">
<glyphName value="glyph00004"/>
<flags value="0x0"/>
</VarComponent>
<VarComponent index="2">
<glyphName value="glyph00006"/>
<flags value="0x0"/>
</VarComponent>
</VarCompositeGlyph>
<VarCompositeGlyph index="2">
<VarComponent index="0">
<glyphName value="glyph00008"/>
<flags value="0x12"/>
<axisIndicesIndex value="2"/>
<axisValues value="[0.2159]"/>
<translateX value="-6.0"/>
@ -339,7 +333,6 @@
<VarCompositeGlyph index="3">
<VarComponent index="0">
<glyphName value="glyph00008"/>
<flags value="0x16"/>
<axisIndicesIndex value="0"/>
<axisValues value="[-0.8047, 0.0, 0.4839]"/>
<axisValuesVarIndex value="0"/>
@ -349,7 +342,6 @@
<VarCompositeGlyph index="4">
<VarComponent index="0">
<glyphName value="glyph00009"/>
<flags value="0x3e"/>
<axisIndicesIndex value="1"/>
<axisValues value="[-0.54, 0.04, -0.5178, 0.0, 0.0]"/>
<axisValuesVarIndex value="1"/>
@ -361,7 +353,6 @@
<VarCompositeGlyph index="5">
<VarComponent index="0">
<glyphName value="glyph00010"/>
<flags value="0x3e"/>
<axisIndicesIndex value="0"/>
<axisValues value="[-0.776, -0.3566, 0.0]"/>
<axisValuesVarIndex value="3"/>
@ -373,7 +364,6 @@
<VarCompositeGlyph index="6">
<VarComponent index="0">
<glyphName value="glyph00009"/>
<flags value="0x3e"/>
<axisIndicesIndex value="0"/>
<axisValues value="[-0.258, 0.05, -0.5178]"/>
<axisValuesVarIndex value="5"/>