diff options
Diffstat (limited to 'Tests/feaLib')
-rw-r--r-- | Tests/feaLib/builder_test.py | 8 | ||||
-rw-r--r-- | Tests/feaLib/data/ChainSubstSubtable.fea | 8 | ||||
-rw-r--r-- | Tests/feaLib/data/ChainSubstSubtable.ttx | 20 | ||||
-rw-r--r-- | Tests/feaLib/data/SubstSubtable.fea | 9 | ||||
-rw-r--r-- | Tests/feaLib/data/SubstSubtable.ttx | 116 | ||||
-rw-r--r-- | Tests/feaLib/data/bug506.ttx | 20 | ||||
-rw-r--r-- | Tests/feaLib/data/bug509.ttx | 30 | ||||
-rw-r--r-- | Tests/feaLib/data/bug512.ttx | 58 | ||||
-rw-r--r-- | Tests/feaLib/data/lookupflag.fea | 10 | ||||
-rw-r--r-- | Tests/feaLib/data/lookupflag.ttx | 27 | ||||
-rw-r--r-- | Tests/feaLib/data/spec6h_ii.ttx | 24 | ||||
-rw-r--r-- | Tests/feaLib/data/spec6h_iii_3d.ttx | 20 | ||||
-rw-r--r-- | Tests/feaLib/parser_test.py | 24 |
13 files changed, 276 insertions, 98 deletions
diff --git a/Tests/feaLib/builder_test.py b/Tests/feaLib/builder_test.py index 512f6082..5a8c562d 100644 --- a/Tests/feaLib/builder_test.py +++ b/Tests/feaLib/builder_test.py @@ -69,10 +69,10 @@ class BuilderTest(unittest.TestCase): ZeroValue_SinglePos_horizontal ZeroValue_SinglePos_vertical ZeroValue_PairPos_horizontal ZeroValue_PairPos_vertical ZeroValue_ChainSinglePos_horizontal ZeroValue_ChainSinglePos_vertical - PairPosSubtable ChainSubstSubtable ChainPosSubtable LigatureSubtable - AlternateSubtable MultipleSubstSubtable SingleSubstSubtable - aalt_chain_contextual_subst AlternateChained MultipleLookupsPerGlyph - MultipleLookupsPerGlyph2 + PairPosSubtable ChainSubstSubtable SubstSubtable ChainPosSubtable + LigatureSubtable AlternateSubtable MultipleSubstSubtable + SingleSubstSubtable aalt_chain_contextual_subst AlternateChained + MultipleLookupsPerGlyph MultipleLookupsPerGlyph2 """.split() def __init__(self, methodName): diff --git a/Tests/feaLib/data/ChainSubstSubtable.fea b/Tests/feaLib/data/ChainSubstSubtable.fea index b6e959a2..ec248805 100644 --- a/Tests/feaLib/data/ChainSubstSubtable.fea +++ b/Tests/feaLib/data/ChainSubstSubtable.fea @@ -1,9 +1,9 @@ feature test { - sub G' by G.swash; + sub A G' by G.swash; subtable; - sub H' by H.swash; + sub A H' by H.swash; subtable; - sub G' by g; + sub A G' by g; subtable; - sub H' by H.swash; + sub A H' by H.swash; } test; diff --git a/Tests/feaLib/data/ChainSubstSubtable.ttx b/Tests/feaLib/data/ChainSubstSubtable.ttx index f7a09c7f..75348dc2 100644 --- a/Tests/feaLib/data/ChainSubstSubtable.ttx +++ b/Tests/feaLib/data/ChainSubstSubtable.ttx @@ -34,7 +34,10 @@ <LookupFlag value="0"/> <!-- SubTableCount=4 --> <ChainContextSubst index="0" Format="3"> - <!-- BacktrackGlyphCount=0 --> + <!-- BacktrackGlyphCount=1 --> + <BacktrackCoverage index="0"> + <Glyph value="A"/> + </BacktrackCoverage> <!-- InputGlyphCount=1 --> <InputCoverage index="0"> <Glyph value="G"/> @@ -47,7 +50,10 @@ </SubstLookupRecord> </ChainContextSubst> <ChainContextSubst index="1" Format="3"> - <!-- BacktrackGlyphCount=0 --> + <!-- BacktrackGlyphCount=1 --> + <BacktrackCoverage index="0"> + <Glyph value="A"/> + </BacktrackCoverage> <!-- InputGlyphCount=1 --> <InputCoverage index="0"> <Glyph value="H"/> @@ -60,7 +66,10 @@ </SubstLookupRecord> </ChainContextSubst> <ChainContextSubst index="2" Format="3"> - <!-- BacktrackGlyphCount=0 --> + <!-- BacktrackGlyphCount=1 --> + <BacktrackCoverage index="0"> + <Glyph value="A"/> + </BacktrackCoverage> <!-- InputGlyphCount=1 --> <InputCoverage index="0"> <Glyph value="G"/> @@ -73,7 +82,10 @@ </SubstLookupRecord> </ChainContextSubst> <ChainContextSubst index="3" Format="3"> - <!-- BacktrackGlyphCount=0 --> + <!-- BacktrackGlyphCount=1 --> + <BacktrackCoverage index="0"> + <Glyph value="A"/> + </BacktrackCoverage> <!-- InputGlyphCount=1 --> <InputCoverage index="0"> <Glyph value="H"/> diff --git a/Tests/feaLib/data/SubstSubtable.fea b/Tests/feaLib/data/SubstSubtable.fea new file mode 100644 index 00000000..b6e959a2 --- /dev/null +++ b/Tests/feaLib/data/SubstSubtable.fea @@ -0,0 +1,9 @@ +feature test { + sub G' by G.swash; + subtable; + sub H' by H.swash; + subtable; + sub G' by g; + subtable; + sub H' by H.swash; +} test; diff --git a/Tests/feaLib/data/SubstSubtable.ttx b/Tests/feaLib/data/SubstSubtable.ttx new file mode 100644 index 00000000..8718f46f --- /dev/null +++ b/Tests/feaLib/data/SubstSubtable.ttx @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ttFont> + + <GSUB> + <Version value="0x00010000"/> + <ScriptList> + <!-- ScriptCount=1 --> + <ScriptRecord index="0"> + <ScriptTag value="DFLT"/> + <Script> + <DefaultLangSys> + <ReqFeatureIndex value="65535"/> + <!-- FeatureCount=1 --> + <FeatureIndex index="0" value="0"/> + </DefaultLangSys> + <!-- LangSysCount=0 --> + </Script> + </ScriptRecord> + </ScriptList> + <FeatureList> + <!-- FeatureCount=1 --> + <FeatureRecord index="0"> + <FeatureTag value="test"/> + <Feature> + <!-- LookupCount=1 --> + <LookupListIndex index="0" value="0"/> + </Feature> + </FeatureRecord> + </FeatureList> + <LookupList> + <!-- LookupCount=5 --> + <Lookup index="0"> + <LookupType value="5"/> + <LookupFlag value="0"/> + <!-- SubTableCount=4 --> + <ContextSubst index="0" Format="3"> + <!-- GlyphCount=1 --> + <!-- SubstCount=1 --> + <Coverage index="0"> + <Glyph value="G"/> + </Coverage> + <SubstLookupRecord index="0"> + <SequenceIndex value="0"/> + <LookupListIndex value="1"/> + </SubstLookupRecord> + </ContextSubst> + <ContextSubst index="1" Format="3"> + <!-- GlyphCount=1 --> + <!-- SubstCount=1 --> + <Coverage index="0"> + <Glyph value="H"/> + </Coverage> + <SubstLookupRecord index="0"> + <SequenceIndex value="0"/> + <LookupListIndex value="2"/> + </SubstLookupRecord> + </ContextSubst> + <ContextSubst index="2" Format="3"> + <!-- GlyphCount=1 --> + <!-- SubstCount=1 --> + <Coverage index="0"> + <Glyph value="G"/> + </Coverage> + <SubstLookupRecord index="0"> + <SequenceIndex value="0"/> + <LookupListIndex value="3"/> + </SubstLookupRecord> + </ContextSubst> + <ContextSubst index="3" Format="3"> + <!-- GlyphCount=1 --> + <!-- SubstCount=1 --> + <Coverage index="0"> + <Glyph value="H"/> + </Coverage> + <SubstLookupRecord index="0"> + <SequenceIndex value="0"/> + <LookupListIndex value="4"/> + </SubstLookupRecord> + </ContextSubst> + </Lookup> + <Lookup index="1"> + <LookupType value="1"/> + <LookupFlag value="0"/> + <!-- SubTableCount=1 --> + <SingleSubst index="0"> + <Substitution in="G" out="G.swash"/> + </SingleSubst> + </Lookup> + <Lookup index="2"> + <LookupType value="1"/> + <LookupFlag value="0"/> + <!-- SubTableCount=1 --> + <SingleSubst index="0"> + <Substitution in="H" out="H.swash"/> + </SingleSubst> + </Lookup> + <Lookup index="3"> + <LookupType value="1"/> + <LookupFlag value="0"/> + <!-- SubTableCount=1 --> + <SingleSubst index="0"> + <Substitution in="G" out="g"/> + </SingleSubst> + </Lookup> + <Lookup index="4"> + <LookupType value="1"/> + <LookupFlag value="0"/> + <!-- SubTableCount=1 --> + <SingleSubst index="0"> + <Substitution in="H" out="H.swash"/> + </SingleSubst> + </Lookup> + </LookupList> + </GSUB> + +</ttFont> diff --git a/Tests/feaLib/data/bug506.ttx b/Tests/feaLib/data/bug506.ttx index 9aff9135..4daba45b 100644 --- a/Tests/feaLib/data/bug506.ttx +++ b/Tests/feaLib/data/bug506.ttx @@ -30,25 +30,23 @@ <LookupList> <!-- LookupCount=2 --> <Lookup index="0"> - <LookupType value="6"/> + <LookupType value="5"/> <LookupFlag value="0"/> <!-- SubTableCount=1 --> - <ChainContextSubst index="0" Format="3"> - <!-- BacktrackGlyphCount=0 --> - <!-- InputGlyphCount=2 --> - <InputCoverage index="0"> + <ContextSubst index="0" Format="3"> + <!-- GlyphCount=2 --> + <!-- SubstCount=1 --> + <Coverage index="0"> <Glyph value="f"/> - </InputCoverage> - <InputCoverage index="1"> + </Coverage> + <Coverage index="1"> <Glyph value="i"/> - </InputCoverage> - <!-- LookAheadGlyphCount=0 --> - <!-- SubstCount=1 --> + </Coverage> <SubstLookupRecord index="0"> <SequenceIndex value="0"/> <LookupListIndex value="1"/> </SubstLookupRecord> - </ChainContextSubst> + </ContextSubst> </Lookup> <Lookup index="1"> <LookupType value="4"/> diff --git a/Tests/feaLib/data/bug509.ttx b/Tests/feaLib/data/bug509.ttx index e5a36afd..52fba201 100644 --- a/Tests/feaLib/data/bug509.ttx +++ b/Tests/feaLib/data/bug509.ttx @@ -30,33 +30,29 @@ <LookupList> <!-- LookupCount=2 --> <Lookup index="0"> - <LookupType value="6"/> + <LookupType value="5"/> <LookupFlag value="0"/> <!-- SubTableCount=2 --> - <ChainContextSubst index="0" Format="3"> - <!-- BacktrackGlyphCount=0 --> - <!-- InputGlyphCount=1 --> - <InputCoverage index="0"> - <Glyph value="A"/> - </InputCoverage> - <!-- LookAheadGlyphCount=0 --> + <ContextSubst index="0" Format="3"> + <!-- GlyphCount=1 --> <!-- SubstCount=0 --> - </ChainContextSubst> - <ChainContextSubst index="1" Format="3"> - <!-- BacktrackGlyphCount=0 --> - <!-- InputGlyphCount=1 --> - <InputCoverage index="0"> + <Coverage index="0"> + <Glyph value="A"/> + </Coverage> + </ContextSubst> + <ContextSubst index="1" Format="3"> + <!-- GlyphCount=1 --> + <!-- SubstCount=1 --> + <Coverage index="0"> <Glyph value="A"/> <Glyph value="A.sc"/> <Glyph value="A.alt1"/> - </InputCoverage> - <!-- LookAheadGlyphCount=0 --> - <!-- SubstCount=1 --> + </Coverage> <SubstLookupRecord index="0"> <SequenceIndex value="0"/> <LookupListIndex value="1"/> </SubstLookupRecord> - </ChainContextSubst> + </ContextSubst> </Lookup> <Lookup index="1"> <LookupType value="1"/> diff --git a/Tests/feaLib/data/bug512.ttx b/Tests/feaLib/data/bug512.ttx index 1dfe63fe..50b76b46 100644 --- a/Tests/feaLib/data/bug512.ttx +++ b/Tests/feaLib/data/bug512.ttx @@ -30,61 +30,53 @@ <LookupList> <!-- LookupCount=3 --> <Lookup index="0"> - <LookupType value="6"/> + <LookupType value="5"/> <LookupFlag value="0"/> <!-- SubTableCount=4 --> - <ChainContextSubst index="0" Format="3"> - <!-- BacktrackGlyphCount=0 --> - <!-- InputGlyphCount=1 --> - <InputCoverage index="0"> - <Glyph value="G"/> - </InputCoverage> - <!-- LookAheadGlyphCount=0 --> + <ContextSubst index="0" Format="3"> + <!-- GlyphCount=1 --> <!-- SubstCount=1 --> + <Coverage index="0"> + <Glyph value="G"/> + </Coverage> <SubstLookupRecord index="0"> <SequenceIndex value="0"/> <LookupListIndex value="1"/> </SubstLookupRecord> - </ChainContextSubst> - <ChainContextSubst index="1" Format="3"> - <!-- BacktrackGlyphCount=0 --> - <!-- InputGlyphCount=1 --> - <InputCoverage index="0"> - <Glyph value="H"/> - </InputCoverage> - <!-- LookAheadGlyphCount=0 --> + </ContextSubst> + <ContextSubst index="1" Format="3"> + <!-- GlyphCount=1 --> <!-- SubstCount=1 --> + <Coverage index="0"> + <Glyph value="H"/> + </Coverage> <SubstLookupRecord index="0"> <SequenceIndex value="0"/> <LookupListIndex value="1"/> </SubstLookupRecord> - </ChainContextSubst> - <ChainContextSubst index="2" Format="3"> - <!-- BacktrackGlyphCount=0 --> - <!-- InputGlyphCount=1 --> - <InputCoverage index="0"> - <Glyph value="G"/> - </InputCoverage> - <!-- LookAheadGlyphCount=0 --> + </ContextSubst> + <ContextSubst index="2" Format="3"> + <!-- GlyphCount=1 --> <!-- SubstCount=1 --> + <Coverage index="0"> + <Glyph value="G"/> + </Coverage> <SubstLookupRecord index="0"> <SequenceIndex value="0"/> <LookupListIndex value="2"/> </SubstLookupRecord> - </ChainContextSubst> - <ChainContextSubst index="3" Format="3"> - <!-- BacktrackGlyphCount=0 --> - <!-- InputGlyphCount=1 --> - <InputCoverage index="0"> - <Glyph value="H"/> - </InputCoverage> - <!-- LookAheadGlyphCount=0 --> + </ContextSubst> + <ContextSubst index="3" Format="3"> + <!-- GlyphCount=1 --> <!-- SubstCount=1 --> + <Coverage index="0"> + <Glyph value="H"/> + </Coverage> <SubstLookupRecord index="0"> <SequenceIndex value="0"/> <LookupListIndex value="2"/> </SubstLookupRecord> - </ChainContextSubst> + </ContextSubst> </Lookup> <Lookup index="1"> <LookupType value="1"/> diff --git a/Tests/feaLib/data/lookupflag.fea b/Tests/feaLib/data/lookupflag.fea index 1828c43e..0210ab42 100644 --- a/Tests/feaLib/data/lookupflag.fea +++ b/Tests/feaLib/data/lookupflag.fea @@ -147,3 +147,13 @@ feature test { pos two 2; } X; } test; + +lookup Y { + lookupflag UseMarkFilteringSet [acute grave macron]; + pos Y 1; +} Y; + +lookup Z { + lookupflag MarkAttachmentType [acute grave macron]; + pos Z 1; +} Z; diff --git a/Tests/feaLib/data/lookupflag.ttx b/Tests/feaLib/data/lookupflag.ttx index 760eab31..16ea751f 100644 --- a/Tests/feaLib/data/lookupflag.ttx +++ b/Tests/feaLib/data/lookupflag.ttx @@ -107,7 +107,7 @@ </FeatureRecord> </FeatureList> <LookupList> - <!-- LookupCount=24 --> + <!-- LookupCount=26 --> <Lookup index="0"> <LookupType value="1"/> <LookupFlag value="1"/><!-- rightToLeft --> @@ -400,6 +400,31 @@ <Value XAdvance="2"/> </SinglePos> </Lookup> + <Lookup index="24"> + <LookupType value="1"/> + <LookupFlag value="16"/><!-- useMarkFilteringSet --> + <!-- SubTableCount=1 --> + <SinglePos index="0" Format="1"> + <Coverage> + <Glyph value="Y"/> + </Coverage> + <ValueFormat value="4"/> + <Value XAdvance="1"/> + </SinglePos> + <MarkFilteringSet value="0"/> + </Lookup> + <Lookup index="25"> + <LookupType value="1"/> + <LookupFlag value="256"/><!-- markAttachmentType[1] --> + <!-- SubTableCount=1 --> + <SinglePos index="0" Format="1"> + <Coverage> + <Glyph value="Z"/> + </Coverage> + <ValueFormat value="4"/> + <Value XAdvance="1"/> + </SinglePos> + </Lookup> </LookupList> </GPOS> diff --git a/Tests/feaLib/data/spec6h_ii.ttx b/Tests/feaLib/data/spec6h_ii.ttx index e8ec85f2..2f0efc6f 100644 --- a/Tests/feaLib/data/spec6h_ii.ttx +++ b/Tests/feaLib/data/spec6h_ii.ttx @@ -112,25 +112,23 @@ </MarkBasePos> </Lookup> <Lookup index="2"> - <LookupType value="8"/> + <LookupType value="7"/> <LookupFlag value="0"/> <!-- SubTableCount=1 --> - <ChainContextPos index="0" Format="3"> - <!-- BacktrackGlyphCount=0 --> - <!-- InputGlyphCount=3 --> - <InputCoverage index="0"> + <ContextPos index="0" Format="3"> + <!-- GlyphCount=3 --> + <!-- PosCount=2 --> + <Coverage index="0"> <Glyph value="T"/> - </InputCoverage> - <InputCoverage index="1"> + </Coverage> + <Coverage index="1"> <Glyph value="c"/> <Glyph value="o"/> - </InputCoverage> - <InputCoverage index="2"> + </Coverage> + <Coverage index="2"> <Glyph value="grave"/> <Glyph value="acute"/> - </InputCoverage> - <!-- LookAheadGlyphCount=0 --> - <!-- PosCount=2 --> + </Coverage> <PosLookupRecord index="0"> <SequenceIndex value="0"/> <LookupListIndex value="0"/> @@ -139,7 +137,7 @@ <SequenceIndex value="2"/> <LookupListIndex value="1"/> </PosLookupRecord> - </ChainContextPos> + </ContextPos> </Lookup> </LookupList> </GPOS> diff --git a/Tests/feaLib/data/spec6h_iii_3d.ttx b/Tests/feaLib/data/spec6h_iii_3d.ttx index a608f0e6..2335dd0b 100644 --- a/Tests/feaLib/data/spec6h_iii_3d.ttx +++ b/Tests/feaLib/data/spec6h_iii_3d.ttx @@ -30,25 +30,23 @@ <LookupList> <!-- LookupCount=2 --> <Lookup index="0"> - <LookupType value="8"/> + <LookupType value="7"/> <LookupFlag value="0"/> <!-- SubTableCount=1 --> - <ChainContextPos index="0" Format="3"> - <!-- BacktrackGlyphCount=0 --> - <!-- InputGlyphCount=2 --> - <InputCoverage index="0"> + <ContextPos index="0" Format="3"> + <!-- GlyphCount=2 --> + <!-- PosCount=1 --> + <Coverage index="0"> <Glyph value="L"/> - </InputCoverage> - <InputCoverage index="1"> + </Coverage> + <Coverage index="1"> <Glyph value="quoteright"/> - </InputCoverage> - <!-- LookAheadGlyphCount=0 --> - <!-- PosCount=1 --> + </Coverage> <PosLookupRecord index="0"> <SequenceIndex value="1"/> <LookupListIndex value="1"/> </PosLookupRecord> - </ChainContextPos> + </ContextPos> </Lookup> <Lookup index="1"> <LookupType value="1"/> diff --git a/Tests/feaLib/parser_test.py b/Tests/feaLib/parser_test.py index 58090296..db505950 100644 --- a/Tests/feaLib/parser_test.py +++ b/Tests/feaLib/parser_test.py @@ -718,6 +718,18 @@ class ParserTest(unittest.TestCase): self.assertEqual(flag.asFea(), "lookupflag RightToLeft MarkAttachmentType @TOP_MARKS;") + def test_lookupflag_format_A_MarkAttachmentType_glyphClass(self): + flag = self.parse_lookupflag_( + "lookupflag RightToLeft MarkAttachmentType [acute grave macron];") + self.assertIsInstance(flag, ast.LookupFlagStatement) + self.assertEqual(flag.value, 1) + self.assertIsInstance(flag.markAttachment, ast.GlyphClass) + self.assertEqual(flag.markAttachment.glyphSet(), + ("acute", "grave", "macron")) + self.assertIsNone(flag.markFilteringSet) + self.assertEqual(flag.asFea(), + "lookupflag RightToLeft MarkAttachmentType [acute grave macron];") + def test_lookupflag_format_A_UseMarkFilteringSet(self): flag = self.parse_lookupflag_( "@BOTTOM_MARKS = [cedilla ogonek];" @@ -731,6 +743,18 @@ class ParserTest(unittest.TestCase): self.assertEqual(flag.asFea(), "lookupflag IgnoreLigatures UseMarkFilteringSet @BOTTOM_MARKS;") + def test_lookupflag_format_A_UseMarkFilteringSet_glyphClass(self): + flag = self.parse_lookupflag_( + "lookupflag UseMarkFilteringSet [cedilla ogonek] IgnoreLigatures;") + self.assertIsInstance(flag, ast.LookupFlagStatement) + self.assertEqual(flag.value, 4) + self.assertIsNone(flag.markAttachment) + self.assertIsInstance(flag.markFilteringSet, ast.GlyphClass) + self.assertEqual(flag.markFilteringSet.glyphSet(), + ("cedilla", "ogonek")) + self.assertEqual(flag.asFea(), + "lookupflag IgnoreLigatures UseMarkFilteringSet [cedilla ogonek];") + def test_lookupflag_format_B(self): flag = self.parse_lookupflag_("lookupflag 7;") self.assertIsInstance(flag, ast.LookupFlagStatement) |