languagesystem DFLT dflt; @TOP_MARKS = [acute grave macron]; markClass [cedilla ogonek] @BOTTOM_MARKS; @FRENCH_MARKS = [acute grave cedilla dieresis circumflex]; @MARKS_WITH_DUPLICATES = [breve caron umlaut breve caron umlaut]; lookup A { lookupflag RightToLeft; pos one 1; } A; lookup B { lookupflag IgnoreBaseGlyphs; pos two 2; } B; lookup C { lookupflag IgnoreLigatures; pos four 4; } C; lookup D { #test-fea2fea: lookupflag RightToLeft IgnoreBaseGlyphs IgnoreLigatures; lookupflag 7; pos seven 7; } D; lookup E { lookupflag IgnoreMarks; pos eight 8; } E; lookup F { lookupflag MarkAttachmentType @TOP_MARKS; pos F 1; } F; lookup G { lookupflag MarkAttachmentType @BOTTOM_MARKS; pos G 1; } G; lookup H { lookupflag IgnoreLigatures MarkAttachmentType @TOP_MARKS; pos H 1; } H; lookup I { lookupflag UseMarkFilteringSet @TOP_MARKS; pos I 1; } I; lookup J { # @FRENCH_MARKS overlaps with @TOP_MARKS. # Other than with MarkAttachmentType, the same glyph may appear # in multiple glyphsets for UseMarkFilteringSet. Make sure that # our implementation can handle this. lookupflag UseMarkFilteringSet @FRENCH_MARKS; pos J 1; } J; lookup K { lookupflag IgnoreLigatures UseMarkFilteringSet @TOP_MARKS; pos K 1; } K; lookup L { pos L 1; } L; lookup M { lookupflag UseMarkFilteringSet @MARKS_WITH_DUPLICATES; pos M 1; } M; lookup N { lookupflag MarkAttachmentType @MARKS_WITH_DUPLICATES; pos N 1; } N; feature test { lookup A; lookup B; lookup C; lookup D; lookup E; lookup F; lookup G; lookup H; lookup I; lookup J; lookup K; lookup L; lookup M; lookup N; } test; feature test { lookupflag IgnoreMarks; lookup O { pos one 1; } O; lookup P { pos one 1; } P; } test; feature test { lookup Q { pos one 1; } Q; lookup R { pos one 1; } R; } test; feature test { lookup S { lookupflag IgnoreMarks; pos one 1; } S; lookup T { pos one 1; } T; } test; feature test { lookup U { pos one 1; } U; lookup V { lookupflag IgnoreMarks; pos one 1; } V; } test; feature test { lookup W { lookupflag IgnoreMarks; script latn; pos one 1; } W; lookup X { lookupflag IgnoreMarks; script latn; 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;