instancer: always keep FeatureVariationRecords with unknown condition format
there was a logic issue in the function that checks whether a FeatureVariationRecord has a unique set of condition (was returning False instead of True for unsupported condition). It's safer to always keep such records with unknown condition formats as new formats may be added in the future. A warning is already issued in these cases.
This commit is contained in:
parent
823f0fc021
commit
36f2775d6c
@ -419,8 +419,8 @@ def _featureVariationRecordIsUnique(rec, seen):
|
||||
conditionSet = []
|
||||
for cond in rec.ConditionSet.ConditionTable:
|
||||
if cond.Format != 1:
|
||||
# can't tell whether this is duplicate, assume not seen
|
||||
return False
|
||||
# can't tell whether this is duplicate, assume is unique
|
||||
return True
|
||||
conditionSet.append(
|
||||
(cond.AxisIndex, cond.FilterRangeMinValue, cond.FilterRangeMaxValue)
|
||||
)
|
||||
@ -474,6 +474,7 @@ def _instantiateFeatureVariations(table, fvarAxes, location):
|
||||
)
|
||||
applies = False
|
||||
newConditions.append(condition)
|
||||
break
|
||||
|
||||
if retainRecord and newConditions:
|
||||
record.ConditionSet.ConditionTable = newConditions
|
||||
|
@ -1285,9 +1285,8 @@ class InstantiateFeatureVariationsTest(object):
|
||||
def test_unsupported_condition_format(self, varfont3):
|
||||
gsub = varfont3["GSUB"].table
|
||||
featureVariations = gsub.FeatureVariations
|
||||
cd = featureVariations.FeatureVariationRecord[0].ConditionSet.ConditionTable[0]
|
||||
assert cd.Format == 1
|
||||
cd.Format = 2
|
||||
rec1 = featureVariations.FeatureVariationRecord[0]
|
||||
rec1.ConditionSet.ConditionTable[0].Format = 2
|
||||
|
||||
with CapturingLogHandler("fontTools.varLib.instancer", "WARNING") as captor:
|
||||
instancer.instantiateFeatureVariations(varfont3, {"wght": 0})
|
||||
@ -1296,3 +1295,6 @@ class InstantiateFeatureVariationsTest(object):
|
||||
r"Condition table 0 of FeatureVariationRecord 0 "
|
||||
r"has unsupported format \(2\); ignored"
|
||||
)
|
||||
|
||||
# check that record with unsupported condition format is kept
|
||||
assert featureVariations.FeatureVariationRecord[0] is rec1
|
||||
|
Loading…
x
Reference in New Issue
Block a user