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])
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)
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>')
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>", ]
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>", ]
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
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]))