[varc] Use multiVarStore instead of GDEF varStore

That's what we agreed upon.
This commit is contained in:
Behdad Esfahbod 2024-04-23 13:34:30 -06:00
parent 973072b259
commit 753197e017

View File

@ -288,7 +288,7 @@ def _evaluateCondition(condition, fvarAxes, location, instancer):
elif condition.Format == 2: elif condition.Format == 2:
# ConditionValue # ConditionValue
value = condition.DefaultValue value = condition.DefaultValue
value += instancer[condition.VarIdx] value += instancer[condition.VarIdx][0]
return value > 0 return value > 0
elif condition.Format == 3: elif condition.Format == 3:
# ConditionAnd # ConditionAnd
@ -333,19 +333,13 @@ class _TTGlyphVARC(_TTGlyph):
instancer = MultiVarStoreInstancer( instancer = MultiVarStoreInstancer(
varc.MultiVarStore, fvarAxes, self.glyphSet.location varc.MultiVarStore, fvarAxes, self.glyphSet.location
) )
gdef = glyphSet.font.get("GDEF") if "GDEF" in glyphSet.font else None
gdefInstancer = VarStoreInstancer(
getattr(gdef.table, "VarStore") if gdef is not None else None,
fvarAxes,
self.glyphSet.location,
)
for comp in glyph.components: for comp in glyph.components:
if comp.flags & VarComponentFlags.HAVE_CONDITION: if comp.flags & VarComponentFlags.HAVE_CONDITION:
condition = varc.ConditionList.ConditionTable[comp.conditionIndex] condition = varc.ConditionList.ConditionTable[comp.conditionIndex]
if not _evaluateCondition( if not _evaluateCondition(
condition, fvarAxes, self.glyphSet.location, gdefInstancer condition, fvarAxes, self.glyphSet.location, instancer
): ):
continue continue