Exemplo n.º 1
0
 def test_buildLookup_conflictingSubtableTypes(self):
     s1 = builder.buildSingleSubstSubtable({"one": "two"})
     s2 = builder.buildAlternateSubstSubtable({"one": ["two", "three"]})
     with pytest.raises(AssertionError,
                        match="all subtables must have the same LookupType"
                        ) as excinfo:
         builder.buildLookup([s1, s2])
Exemplo n.º 2
0
 def test_buildLookup_badFlags(self):
     s = builder.buildSingleSubstSubtable({"one": "two"})
     with pytest.raises(
             AssertionError,
             match=("if markFilterSet is None, flags must not set "
                    "LOOKUP_FLAG_USE_MARK_FILTERING_SET; flags=0x0010"),
     ) as excinfo:
         builder.buildLookup([s],
                             builder.LOOKUP_FLAG_USE_MARK_FILTERING_SET,
                             None)
     with pytest.raises(
             AssertionError,
             match=("if markFilterSet is not None, flags must set "
                    "LOOKUP_FLAG_USE_MARK_FILTERING_SET; flags=0x0004"),
     ) as excinfo:
         builder.buildLookup([s], builder.LOOKUP_FLAG_IGNORE_LIGATURES, 777)
Exemplo n.º 3
0
def buildSubstitutionLookups(gsub, allSubstitutions):
    """Build the lookups for the glyph substitutions, return a dict mapping
    the substitution to lookup indices."""
    firstIndex = len(gsub.LookupList.Lookup)
    lookupMap = {}
    for i, substitutionMap in enumerate(allSubstitutions):
        lookupMap[substitutionMap] = i + firstIndex

    for subst in allSubstitutions:
        substMap = dict(subst)
        lookup = buildLookup([buildSingleSubstSubtable(substMap)])
        gsub.LookupList.Lookup.append(lookup)
        assert gsub.LookupList.Lookup[lookupMap[subst]] is lookup
    return lookupMap
Exemplo n.º 4
0
def buildSubstitutionLookups(gsub, allSubstitutions):
    """Build the lookups for the glyph substitutions, return a dict mapping
    the substitution to lookup indices."""
    firstIndex = len(gsub.LookupList.Lookup)
    lookupMap = {}
    for i, substitutionMap in enumerate(allSubstitutions):
        lookupMap[substitutionMap] = i + firstIndex

    for subst in allSubstitutions:
        substMap = dict(subst)
        lookup = buildLookup([buildSingleSubstSubtable(substMap)])
        gsub.LookupList.Lookup.append(lookup)
        assert gsub.LookupList.Lookup[lookupMap[subst]] is lookup
    return lookupMap
 def test_buildLookup_markFilterSet(self):
     s = builder.buildSingleSubstSubtable({"one": "two"})
     flags = (builder.LOOKUP_FLAG_RIGHT_TO_LEFT |
              builder.LOOKUP_FLAG_USE_MARK_FILTERING_SET)
     lookup = builder.buildLookup([s], flags, markFilterSet=999)
     self.assertEqual(getXML(lookup.toXML),
                      '<Lookup>'
                      '  <!-- LookupType=1 -->'
                      '  <LookupFlag value="17"/>'
                      '  <!-- SubTableCount=1 -->'
                      '  <SingleSubst index="0">'
                      '    <Substitution in="one" out="two"/>'
                      '  </SingleSubst>'
                      '  <MarkFilteringSet value="999"/>'
                      '</Lookup>')
 def test_buildLookup(self):
     s1 = builder.buildSingleSubstSubtable({"one": "two"})
     s2 = builder.buildSingleSubstSubtable({"three": "four"})
     lookup = builder.buildLookup([s1, s2], flags=7)
     self.assertEqual(getXML(lookup.toXML),
                      '<Lookup>'
                      '  <!-- LookupType=1 -->'
                      '  <LookupFlag value="7"/>'
                      '  <!-- SubTableCount=2 -->'
                      '  <SingleSubst index="0">'
                      '    <Substitution in="one" out="two"/>'
                      '  </SingleSubst>'
                      '  <SingleSubst index="1">'
                      '    <Substitution in="three" out="four"/>'
                      '  </SingleSubst>'
                      '</Lookup>')
Exemplo n.º 7
0
 def test_buildLookup_markFilterSet(self):
     s = builder.buildSingleSubstSubtable({"one": "two"})
     flags = (builder.LOOKUP_FLAG_RIGHT_TO_LEFT
              | builder.LOOKUP_FLAG_USE_MARK_FILTERING_SET)
     lookup = builder.buildLookup([s], flags, markFilterSet=999)
     assert getXML(lookup.toXML) == [
         "<Lookup>",
         '  <LookupType value="1"/>',
         '  <LookupFlag value="17"/><!-- rightToLeft useMarkFilteringSet -->',
         "  <!-- SubTableCount=1 -->",
         '  <SingleSubst index="0">',
         '    <Substitution in="one" out="two"/>',
         "  </SingleSubst>",
         '  <MarkFilteringSet value="999"/>',
         "</Lookup>",
     ]
Exemplo n.º 8
0
 def test_buildLookup(self):
     s1 = builder.buildSingleSubstSubtable({"one": "two"})
     s2 = builder.buildSingleSubstSubtable({"three": "four"})
     lookup = builder.buildLookup([s1, s2], flags=7)
     assert getXML(lookup.toXML) == [
         "<Lookup>",
         '  <LookupType value="1"/>',
         '  <LookupFlag value="7"/>',
         "  <!-- SubTableCount=2 -->",
         '  <SingleSubst index="0">',
         '    <Substitution in="one" out="two"/>',
         "  </SingleSubst>",
         '  <SingleSubst index="1">',
         '    <Substitution in="three" out="four"/>',
         "  </SingleSubst>",
         "</Lookup>",
     ]
Exemplo n.º 9
0
 def test_buildLookup_noSubtables(self):
     assert builder.buildLookup([]) is None
     assert builder.buildLookup(None) is None
     assert builder.buildLookup([None]) is None
     assert builder.buildLookup([None, None]) is None
Exemplo n.º 10
0
 def buildLookup_(self, subtables):
     return otl.buildLookup(subtables, self.lookupflag, self.markFilterSet)
 def test_buildLookup_noSubtables(self):
     self.assertIsNone(builder.buildLookup([]))
     self.assertIsNone(builder.buildLookup(None))
     self.assertIsNone(builder.buildLookup([None]))
     self.assertIsNone(builder.buildLookup([None, None]))
Exemplo n.º 12
0
 def buildLookup_(self, subtables):
     return otl.buildLookup(subtables, self.lookupflag, self.markFilterSet)