Skip to content

Commit

Permalink
[instancer] Add test for FeatureVariations limiting range
Browse files Browse the repository at this point in the history
  • Loading branch information
behdad committed Aug 17, 2022
1 parent 6bab8f3 commit e2e40e6
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
1 change: 1 addition & 0 deletions Lib/fontTools/varLib/instancer/__init__.py
Expand Up @@ -730,6 +730,7 @@ def _limitFeatureVariationRecord(record, axisLimits, axisOrder):
if condition.Format == 1:
axisIdx = condition.AxisIndex
axisTag = axisOrder[axisIdx]
print(axisTag)
if axisTag in axisLimits:
axisLimit = axisLimits[axisTag]
newRange = _limitFeatureVariationConditionRange(condition, axisLimit)
Expand Down
30 changes: 26 additions & 4 deletions Tests/varLib/instancer/instancer_test.py
Expand Up @@ -1575,6 +1575,28 @@ class InstantiateFeatureVariationsTest(object):
)
],
),
(
{"cntr": (-.5, 0, 1.0)},
{},
[
(
{"wght": (0.20886, 1.0), "cntr": (.75, 1)},
{"uni0024": "uni0024.nostroke", "uni0041": "uni0061"},
),
(
{"wght": (-1.0, -0.45654), "cntr": (0, .25)},
{"uni0061": "uni0041"},
),
(
{"cntr": (0.75, 1.0)},
{"uni0041": "uni0061"},
),
(
{"wght": (0.20886, 1.0)},
{"uni0024": "uni0024.nostroke"},
),
],
),
],
)
def test_partial_instance(self, location, appliedSubs, expectedRecords):
Expand All @@ -1589,7 +1611,7 @@ def test_partial_instance(self, location, appliedSubs, expectedRecords):
]
)

limits = {tag:instancer.NormalizedAxisTent(l, l, l)
limits = {tag:instancer.NormalizedAxisTent(l, l, l) if not isinstance(l, tuple) else instancer.NormalizedAxisTent(*l)
for tag,l in location.items()}
instancer.instantiateFeatureVariations(font, limits)

Expand All @@ -1598,18 +1620,18 @@ def test_partial_instance(self, location, appliedSubs, expectedRecords):

assert featureVariations.FeatureVariationCount == len(expectedRecords)

axisOrder = [a.axisTag for a in font["fvar"].axes if a.axisTag not in location]
axisOrder = [a.axisTag for a in font["fvar"].axes if a.axisTag not in location or isinstance(location[a.axisTag], tuple)]
for i, (expectedConditionSet, expectedSubs) in enumerate(expectedRecords):
rec = featureVariations.FeatureVariationRecord[i]
conditionSet = _conditionSetAsDict(rec.ConditionSet, axisOrder)

assert conditionSet == expectedConditionSet
assert conditionSet == expectedConditionSet, i

subsRecord = rec.FeatureTableSubstitution.SubstitutionRecord[0]
lookupIndices = subsRecord.Feature.LookupListIndex
substitutions = _getSubstitutions(gsub, lookupIndices)

assert substitutions == expectedSubs
assert substitutions == expectedSubs, i

appliedLookupIndices = gsub.FeatureList.FeatureRecord[0].Feature.LookupListIndex

Expand Down

0 comments on commit e2e40e6

Please sign in to comment.