languagesystem DFLT dflt;

@TOP_MARKS = [acute grave macron];
markClass [cedilla ogonek] <anchor 350 -20> @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;