diff --git a/Lib/fontTools/varLib/instancer.py b/Lib/fontTools/varLib/instancer.py index 2f92157b0..c3d342433 100644 --- a/Lib/fontTools/varLib/instancer.py +++ b/Lib/fontTools/varLib/instancer.py @@ -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 diff --git a/Tests/varLib/instancer_test.py b/Tests/varLib/instancer_test.py index 9fead7ab4..2c418697a 100644 --- a/Tests/varLib/instancer_test.py +++ b/Tests/varLib/instancer_test.py @@ -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