File: test_unparse_pos.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 (53 lines) | stat: -rw-r--r-- 2,154 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
46
47
48
49
50
51
52
53
from fontFeatures import Substitution, FontFeatures
from fontTools.ttLib import TTFont
from fontFeatures.ttLib.GPOSUnparser import GPOSUnparser
from fontFeatures.ttLib import unparseLanguageSystems
import pprint
import unittest


class TestUnparse(unittest.TestCase):
    font = TTFont("fonts/Amiri-Regular.ttf")
    lookups = font["GPOS"].table.LookupList.Lookup
    unparser = GPOSUnparser(font["GPOS"], None, [])
    unparser.font = font

    def test_single_f1(self):
        g, _ = self.unparser.unparseLookup(self.lookups[1], 1)  # part of kern
        self.assertEqual(g.rules[0].asFea(), "pos uni0621.float <-146 0 0 0>;")

    def test_single_f1_class(self):
        g, _ = self.unparser.unparseLookup(self.lookups[3], 3)  # part of kern
        self.assertEqual(
            g.rules[0].asFea(),
            "pos [uni0627.fina uni0627.fina_KafMemAlf uni0627.fina_MemAlfFina uni0627.fina_Wide] <122 0 122 0>;",
        )

    def test_single_f2(self):
        g, _ = self.unparser.unparseLookup(
            self.lookups[3], 3
        )  # lookups called in mark feature
        self.assertEqual(g.rules[1].asFea(), "pos uni0627 <73 0 146 0>;")
        self.assertEqual(g.rules[2].asFea(), "pos uni06E5.low <24 0 122 0>;")

    def test_pair_f1(self):
        g, _ = self.unparser.unparseLookup(
            self.lookups[56], 56
        )  # proportional digits in kern feature
        self.assertEqual(g.rules[0].asFea(), "pos uni0660.prop uni0667.prop 24;")
        self.assertEqual(g.rules[1].asFea(), "pos uni0660.prop uni0668.prop 24;")

    def test_pair_f2(self):
        g, _ = self.unparser.unparseLookup(self.lookups[76], 76)  # kerns
        self.assertEqual(
            g.rules[0].asFea(),
            "pos [zero zero.prop] [A Aacute Abreve Acircumflex Adieresis Agrave Amacron Aogonek Aring Atilde] -10;",
        )
        self.assertEqual(
            g.rules[1].asFea(),
            "pos [zero zero.prop] [Y Yacute Ycircumflex Ydieresis Ygrave] -21;",
        )

    # def test_pair(self):
    #   g,_ = self.unparser.unparseLookup(self.lookups[56])
    #   self.assertEqual(g.rules[0].asFea(),"pos uni0621.float <-146 0 0 0>;")