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:
Cosimo Lupo 2019-05-30 11:22:01 +01:00
parent 823f0fc021
commit 36f2775d6c
No known key found for this signature in database
GPG Key ID: 20D4A261E4A0E642
2 changed files with 8 additions and 5 deletions

View File

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

View File

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