Merge pull request #2077 from fonttools/feature-variations-none
[instancer] FeatureVariations table is optional in GSUB 1.1 and can be None
This commit is contained in:
commit
558b9cba7c
@ -683,8 +683,8 @@ def instantiateOTL(varfont, axisLimits):
|
||||
|
||||
def instantiateFeatureVariations(varfont, axisLimits):
|
||||
for tableTag in ("GPOS", "GSUB"):
|
||||
if tableTag not in varfont or not hasattr(
|
||||
varfont[tableTag].table, "FeatureVariations"
|
||||
if tableTag not in varfont or not getattr(
|
||||
varfont[tableTag].table, "FeatureVariations", None
|
||||
):
|
||||
continue
|
||||
log.info("Instantiating FeatureVariations of %s table", tableTag)
|
||||
|
@ -257,7 +257,7 @@ def instantiateVariableFont(varfont, location, inplace=False, overlap=True):
|
||||
if not tableTag in varfont:
|
||||
continue
|
||||
table = varfont[tableTag].table
|
||||
if not hasattr(table, 'FeatureVariations'):
|
||||
if not getattr(table, 'FeatureVariations', None):
|
||||
continue
|
||||
variations = table.FeatureVariations
|
||||
for record in variations.FeatureVariationRecord:
|
||||
|
@ -1666,6 +1666,19 @@ class InstantiateFeatureVariationsTest(object):
|
||||
assert len(rec1.ConditionSet.ConditionTable) == 2
|
||||
assert rec1.ConditionSet.ConditionTable[0].Format == 2
|
||||
|
||||
def test_GSUB_FeatureVariations_is_None(self, varfont2):
|
||||
varfont2["GSUB"].table.Version = 0x00010001
|
||||
varfont2["GSUB"].table.FeatureVariations = None
|
||||
tmp = BytesIO()
|
||||
varfont2.save(tmp)
|
||||
varfont = ttLib.TTFont(tmp)
|
||||
|
||||
# DO NOT raise an exception when the optional 'FeatureVariations' attribute is
|
||||
# present but is set to None (e.g. with GSUB 1.1); skip and do nothing.
|
||||
assert varfont["GSUB"].table.FeatureVariations is None
|
||||
instancer.instantiateFeatureVariations(varfont, {"wght": 400, "wdth": 100})
|
||||
assert varfont["GSUB"].table.FeatureVariations is None
|
||||
|
||||
|
||||
class LimitTupleVariationAxisRangesTest:
|
||||
def check_limit_single_var_axis_range(self, var, axisTag, axisRange, expected):
|
||||
|
Loading…
x
Reference in New Issue
Block a user