aboutsummaryrefslogtreecommitdiff
path: root/Lib/fontTools/varLib/merger.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/fontTools/varLib/merger.py')
-rw-r--r--Lib/fontTools/varLib/merger.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/Lib/fontTools/varLib/merger.py b/Lib/fontTools/varLib/merger.py
index 0e4095db..aaee3118 100644
--- a/Lib/fontTools/varLib/merger.py
+++ b/Lib/fontTools/varLib/merger.py
@@ -705,6 +705,37 @@ class MutatorMerger(AligningMerger):
def instantiate(self):
font = self.font
+ for tableTag in 'GSUB','GPOS':
+ if not tableTag in font:
+ continue
+ table = font[tableTag].table
+ if not hasattr(table, 'FeatureVariations'):
+ continue
+ variations = table.FeatureVariations
+ for record in variations.FeatureVariationRecord:
+ applies = True
+ for condition in record.ConditionSet.ConditionTable:
+ if condition.Format == 1:
+ axisIdx = condition.AxisIndex
+ axisTag = self.font['fvar'].axes[axisIdx].axisTag
+ Min = condition.FilterRangeMinValue
+ Max = condition.FilterRangeMaxValue
+ loc = self.location[axisTag]
+ if not (Min <= loc <= Max):
+ applies = False
+ else:
+ applies = False
+ if not applies:
+ break
+
+ if applies:
+ assert record.FeatureTableSubstitution.Version == 0x00010000
+ for rec in record.FeatureTableSubstitution.SubstitutionRecord:
+ table.FeatureList.FeatureRecord[rec.FeatureIndex].Feature = rec.Feature
+ break
+ del table.FeatureVariations
+
+
self.mergeTables(font, [font], ['GPOS'])
if 'GDEF' in font: