Skip to content

Commit

Permalink
[instancer/avar2] Fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
behdad committed May 3, 2024
1 parent 8bdd50a commit 6457baf
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 14 deletions.
9 changes: 4 additions & 5 deletions Lib/fontTools/ttLib/tables/_a_v_a_r.py
Expand Up @@ -190,7 +190,8 @@ def renormalizeLocation(self, location, font):

def renormalizeAxisLimits(self, axisLimits, font, *, versionOneOnly=False):

if self.majorVersion not in (1, 2):
version = getattr(self, "majorVersion", 1)
if version not in (1, 2):
raise NotImplementedError("Unknown avar table version")

avarSegments = self.segments
Expand All @@ -203,10 +204,8 @@ def renormalizeAxisLimits(self, axisLimits, font, *, versionOneOnly=False):
)
mappedAxisLimits[axisTag] = triple

if self.majorVersion < 2 or versionOneOnly:
return instancer.NormalizedAxisLimits(
mappedAxisLimits
)
if version == 1 or versionOneOnly:
return instancer.NormalizedAxisLimits(mappedAxisLimits)

# Version 2

Expand Down
9 changes: 4 additions & 5 deletions Lib/fontTools/varLib/instancer/__init__.py
Expand Up @@ -450,9 +450,7 @@ def normalize(self, varfont, usingAvar=True) -> "NormalizedAxisLimits":

if usingAvar and "avar" in varfont:
avar = varfont["avar"]
normalizedLimits = avar.renormalizeAxisLimits(
normalizedLimits, varfont
)
normalizedLimits = avar.renormalizeAxisLimits(normalizedLimits, varfont)

return NormalizedAxisLimits(normalizedLimits)

Expand Down Expand Up @@ -1103,10 +1101,11 @@ def instantiateAvar(varfont, axisLimits, normalizedLimits):
newSegments[axisTag] = mapping
avar.segments = newSegments

if avar.majorVersion == 1:
version = getattr(avar, "majorVersion", 1)
if version == 1:
return

assert avar.majorVersion == 2
assert version == 2
fvarAxes = varfont["fvar"].axes
varStore = getattr(avar.table, "VarStore", None)

Check warning on line 1110 in Lib/fontTools/varLib/instancer/__init__.py

View check run for this annotation

Codecov / codecov/patch

Lib/fontTools/varLib/instancer/__init__.py#L1108-L1110

Added lines #L1108 - L1110 were not covered by tests
if varStore is not None:
Expand Down
12 changes: 8 additions & 4 deletions Tests/varLib/instancer/instancer_test.py
Expand Up @@ -1038,15 +1038,17 @@ class InstantiateAvarTest(object):
@pytest.mark.parametrize("location", [{"wght": 0.0}, {"wdth": 0.0}])
def test_pin_and_drop_axis(self, varfont, location):
location = instancer.AxisLimits(location)
normalized = location.normalize(varfont)

instancer.instantiateAvar(varfont, location)
instancer.instantiateAvar(varfont, location, normalized)

assert set(varfont["avar"].segments).isdisjoint(location)

def test_full_instance(self, varfont):
location = instancer.AxisLimits(wght=0.0, wdth=0.0)
normalized = location.normalize(varfont)

instancer.instantiateAvar(varfont, location)
instancer.instantiateAvar(varfont, location, normalized)

assert "avar" not in varfont

Expand Down Expand Up @@ -1214,8 +1216,9 @@ def varfont(self):
)
def test_limit_axes(self, varfont, axisLimits, expectedSegments):
axisLimits = instancer.AxisLimits(axisLimits)
normalized = axisLimits.normalize(varfont)

instancer.instantiateAvar(varfont, axisLimits)
instancer.instantiateAvar(varfont, axisLimits, normalized)

newSegments = varfont["avar"].segments
expectedSegments = {
Expand All @@ -1239,9 +1242,10 @@ def test_drop_invalid_segment_map(self, varfont, invalidSegmentMap, caplog):
varfont["avar"].segments["wght"] = invalidSegmentMap

axisLimits = instancer.AxisLimits(wght=(100, 400))
normalized = axisLimits.normalize(varfont)

with caplog.at_level(logging.WARNING, logger="fontTools.varLib.instancer"):
instancer.instantiateAvar(varfont, axisLimits)
instancer.instantiateAvar(varfont, axisLimits, normalized)

assert "Invalid avar" in caplog.text
assert "wght" not in varfont["avar"].segments
Expand Down

0 comments on commit 6457baf

Please sign in to comment.