fonttools/Tests/varLib/avar_test.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

95 lines
2.2 KiB
Python
Raw Normal View History

2024-08-30 08:46:21 -07:00
from fontTools.ttLib import TTFont
from fontTools.varLib.models import VariationModel
2024-08-30 08:46:21 -07:00
from fontTools.varLib.avar import _pruneLocations, mappings_from_avar
import os
import unittest
import pytest
TESTS = [
(
[
{"wght": 1},
{"wght": 0.5},
],
[
{"wght": 0.5},
],
[
{"wght": 0.5},
],
),
(
[
{"wght": 1, "wdth": 1},
{"wght": 0.5, "wdth": 1},
],
[
{"wght": 1, "wdth": 1},
],
[
{"wght": 1, "wdth": 1},
{"wght": 0.5, "wdth": 1},
],
),
(
[
{"wght": 1},
{"wdth": 1},
{"wght": 0.5, "wdth": 0.5},
],
[
{"wght": 0.5, "wdth": 0.5},
],
[
{"wght": 0.5, "wdth": 0.5},
],
),
]
@pytest.mark.parametrize("locations, poles, expected", TESTS)
def test_pruneLocations(locations, poles, expected):
axisTags = set()
for location in locations:
axisTags.update(location.keys())
axisTags = sorted(axisTags)
locations = [{}] + locations
pruned = _pruneLocations(locations, poles, axisTags)
assert pruned == expected, (pruned, expected)
@pytest.mark.parametrize("locations, poles, expected", TESTS)
def test_roundtrip(locations, poles, expected):
axisTags = set()
for location in locations:
axisTags.update(location.keys())
axisTags = sorted(axisTags)
locations = [{}] + locations
expected = [{}] + expected
model1 = VariationModel(locations, axisTags)
model2 = VariationModel(expected, axisTags)
for location in poles:
i = model1.locations.index(location)
support1 = model1.supports[i]
i = model2.locations.index(location)
support2 = model2.supports[i]
assert support1 == support2, (support1, support2)
2024-08-30 08:46:21 -07:00
def test_mappings_from_avar():
CWD = os.path.abspath(os.path.dirname(__file__))
DATADIR = os.path.join(CWD, "..", "ttLib", "tables", "data")
varfont_path = os.path.join(DATADIR, "Amstelvar-avar2.subset.ttf")
font = TTFont(varfont_path)
mappings = mappings_from_avar(font)
assert len(mappings) == 2, mappings