File: test_optimizer.py

package info (click to toggle)
python-fontfeatures 1.9.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,096 kB
  • sloc: python: 9,112; makefile: 22
file content (45 lines) | stat: -rw-r--r-- 1,534 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from fontFeatures import Substitution, Routine, FontFeatures
from fontFeatures.optimizer import Optimizer

import unittest
import pytest


pytest.skip("Optimizer is currently broken", allow_module_level=True)


class TestSubstitution(unittest.TestCase):
    def test_MergeMultipleSingleSubstitutions_1(self):
        r1 = Routine(
            rules=[
                Substitution([["a", "y"]], [["b", "z"]]),
                Substitution([["b", "d", "a"]], [["c", "e", "f"]]),
            ]
        )
        Optimizer(FontFeatures()).optimize_routine(r1, level=1)
        self.assertEqual(r1.asFea(), "    sub [a y b d] by [c z c e];\n")

    def test_MergeMultipleSingleSubstitutions_2(self):
        r1 = Routine(
            rules=[
                Substitution([["a"]], [["b"]]),
                Substitution([["b"]], [["c"]]),
                Substitution([["d"]], [["e"]]),
                Substitution([["y"]], [["z"]]),
            ]
        )
        Optimizer(FontFeatures()).optimize_routine(r1, level=1)
        self.assertEqual(r1.asFea(), "    sub [a b d y] by [c c e z];\n")

    def test_GlyphClasses(self):
        r1 = Routine(
            rules=[
                Substitution([["a", "b", "c", "d", "e", "f", "g", "h"]], [["z"]]),
            ]
        )
        ff = FontFeatures()
        Optimizer(ff).optimize_routine(r1, level=1)
        self.assertEqual(r1.asFea(), "    sub @class1 by z;\n")
        self.assertEqual(
            ff.namedClasses["class1"], ("a", "b", "c", "d", "e", "f", "g", "h")
        )