# serializer version: 1
# name: test_ambiguous_direction_pair
  '''
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos bar bar 1;
  } kern_ltr;
  
  lookup kern_rtl {
      lookupflag IgnoreMarks;
      pos bar bar 1;
  } kern_rtl;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_ltr;
      
      script arab;
      language dflt;
      lookup kern_rtl;
      
      script hebr;
      language dflt;
      lookup kern_rtl;
      
      script latn;
      language dflt;
      lookup kern_ltr;
  } kern;
  
  '''
# ---
# name: test_arabic_numerals
  '''
  lookup kern_rtl {
      lookupflag IgnoreMarks;
      pos four-ar seven-ar -30;
  } kern_rtl;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_rtl;
  } kern;
  
  '''
# ---
# name: test_arabic_numerals.1
  '''
  lookup kern_rtl {
      lookupflag IgnoreMarks;
      pos four-ar seven-ar -30;
  } kern_rtl;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_rtl;
      
      script arab;
      language dflt;
      lookup kern_rtl;
  } kern;
  
  '''
# ---
# name: test_arabic_numerals.2
  '''
  lookup kern_rtl {
      lookupflag IgnoreMarks;
      pos four-ar seven-ar -30;
  } kern_rtl;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_rtl;
      
      script arab;
      language dflt;
      lookup kern_rtl;
      
      script thaa;
      language dflt;
      lookup kern_rtl;
  } kern;
  
  '''
# ---
# name: test_arabic_numerals.3
  '''
  lookup kern_rtl {
      lookupflag IgnoreMarks;
      pos four-ar seven-ar -30;
  } kern_rtl;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_rtl;
      
      script thaa;
      language dflt;
      lookup kern_rtl;
  } kern;
  
  '''
# ---
# name: test_defining_classdefs
  '''
  @kern1.dflt.ssatelugu.alt = [ss-telugu.alt];
  @kern1.ltr.shatelugu.below = [sha-telugu.below];
  @kern1.ltr.ssatelugu.alt = [ssa-telugu.alt];
  @kern2.ltr.katelugu.below = [ka-telugu.below];
  @kern2.ltr.rVocalicMatratelugu = [rVocalicMatra-telugu];
  
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      enum pos @kern1.dflt.ssatelugu.alt sha-telugu.below 150;
  } kern_dflt;
  
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      enum pos @kern1.ltr.ssatelugu.alt sha-telugu.below 150;
      pos @kern1.ltr.shatelugu.below @kern2.ltr.katelugu.below 20;
      pos @kern1.dflt.ssatelugu.alt @kern2.ltr.katelugu.below 60;
      pos @kern1.ltr.ssatelugu.alt @kern2.ltr.katelugu.below 60;
  } kern_ltr;
  
  lookup kern_ltr_marks {
      pos @kern1.dflt.ssatelugu.alt @kern2.ltr.rVocalicMatratelugu 180;
      pos @kern1.ltr.ssatelugu.alt @kern2.ltr.rVocalicMatratelugu 180;
  } kern_ltr_marks;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
      lookup kern_ltr_marks;
  } kern;
  
  feature dist {
      script tel2;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
      lookup kern_ltr_marks;
      
      script telu;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
      lookup kern_ltr_marks;
  } dist;
  
  '''
# ---
# name: test_dflt_language
  '''
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos comma comma 2;
  } kern_dflt;
  
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos a a 1;
  } kern_ltr;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
      language ZND;
      
      script latn;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
      language ANG;
  } kern;
  
  '''
# ---
# name: test_dist_LTR
  '''
  @kern1.ltr.KND_aaMatra_R = [aaMatra_kannada];
  @kern2.ltr.KND_ailength_L = [aaMatra_kannada];
  
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos @kern1.ltr.KND_aaMatra_R @kern2.ltr.KND_ailength_L 34;
  } kern_ltr;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_ltr;
      
      script latn;
      language dflt;
      lookup kern_ltr;
  } kern;
  
  feature dist {
      script knd2;
      language dflt;
      lookup kern_ltr;
      
      script knda;
      language dflt;
      lookup kern_ltr;
  } dist;
  
  '''
# ---
# name: test_dist_LTR_and_RTL
  '''
  @kern1.ltr.KND_aaMatra_R = [aaMatra_kannada];
  @kern2.ltr.KND_ailength_L = [aaMatra_kannada];
  
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos @kern1.ltr.KND_aaMatra_R @kern2.ltr.KND_ailength_L 34;
  } kern_ltr;
  
  lookup kern_rtl {
      lookupflag IgnoreMarks;
      pos u10A1E u10A06 <117 0 117 0>;
  } kern_rtl;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_ltr;
  } kern;
  
  feature dist {
      script khar;
      language dflt;
      lookup kern_rtl;
      
      script knd2;
      language dflt;
      lookup kern_ltr;
      
      script knda;
      language dflt;
      lookup kern_ltr;
  } dist;
  
  '''
# ---
# name: test_dist_RTL
  '''
  lookup kern_rtl {
      lookupflag IgnoreMarks;
      pos u10A1E u10A06 <117 0 117 0>;
  } kern_rtl;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_rtl;
      
      script arab;
      language dflt;
      lookup kern_rtl;
  } kern;
  
  feature dist {
      script khar;
      language dflt;
      lookup kern_rtl;
  } dist;
  
  '''
# ---
# name: test_hyphenated_duplicates
  '''
  @kern1.dflt.hyphen = [comma];
  @kern1.dflt.hyphen_1 = [period];
  
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      enum pos @kern1.dflt.hyphen comma 1;
      enum pos @kern1.dflt.hyphen_1 period 2;
  } kern_dflt;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
  } kern;
  
  '''
# ---
# name: test_ignoreMarks
  '''
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos four six -55;
      pos one six -30;
  } kern_dflt;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
  } kern;
  
  '''
# ---
# name: test_ignoreMarks.1
  '''
  lookup kern_dflt {
      pos four six -55;
      pos one six -30;
  } kern_dflt;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
  } kern;
  
  '''
# ---
# name: test_insert_comment_after
  '''
  feature kern {
      pos one four' -50 six;
      #
      #
  } kern;
  
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos seven six 25;
  } kern_dflt;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
  } kern;
  
  '''
# ---
# name: test_insert_comment_after.1
  '''
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos seven six 25;
  } kern_dflt;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
  } kern;
  
  '''
# ---
# name: test_insert_comment_before
  '''
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos seven six 25;
  } kern_dflt;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
  } kern;
  
  feature kern {
      #
      #
      pos one four' -50 six;
  } kern;
  
  '''
# ---
# name: test_insert_comment_before.1
  '''
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos seven six 25;
  } kern_dflt;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
  } kern;
  
  '''
# ---
# name: test_insert_comment_before_extended
  '''
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos seven six 25;
  } kern_dflt;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
  } kern;
  
  feature kern {
      #
      #
      pos one four' -50 six;
  } kern;
  
  '''
# ---
# name: test_insert_comment_middle
  '''
  feature kern {
      pos one four' -50 six;
      #
  } kern;
  
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos seven six 25;
  } kern_dflt;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
  } kern;
  
  feature kern {
      #
      pos one six' -50 six;
  } kern;
  
  '''
# ---
# name: test_insert_comment_middle.1
  '''
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos seven six 25;
  } kern_dflt;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
  } kern;
  
  '''
# ---
# name: test_kern_LTR_and_RTL
  '''
  @kern1.ltr.A = [A Aacute];
  @kern1.rtl.reh = [reh-ar reh-ar.fina zain-ar];
  @kern2.rtl.alef = [alef-ar alef-ar.isol];
  
  lookup kern_dflt {
      pos seven four -25;
  } kern_dflt;
  
  lookup kern_ltr {
      enum pos @kern1.ltr.A V -40;
  } kern_ltr;
  
  lookup kern_rtl {
      pos four-ar seven-ar -30;
      pos reh-ar.fina lam-ar.init <-80 0 -80 0>;
      pos @kern1.rtl.reh @kern2.rtl.alef <-100 0 -100 0>;
  } kern_rtl;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
      
      script arab;
      language dflt;
      lookup kern_dflt;
      lookup kern_rtl;
      language URD;
      
      script latn;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
      language TRK;
  } kern;
  
  '''
# ---
# name: test_kern_LTR_and_RTL_with_marks
  '''
  @kern1.ltr.A = [A Aacute];
  @kern1.rtl.reh = [reh-ar reh-ar.fina zain-ar];
  @kern2.rtl.alef = [alef-ar alef-ar.isol];
  
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos seven four -25;
  } kern_dflt;
  
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      enum pos @kern1.ltr.A V -40;
  } kern_ltr;
  
  lookup kern_ltr_marks {
      pos V acutecomb 70;
  } kern_ltr_marks;
  
  lookup kern_rtl {
      lookupflag IgnoreMarks;
      pos four-ar seven-ar -30;
      pos reh-ar.fina lam-ar.init <-80 0 -80 0>;
      pos @kern1.rtl.reh @kern2.rtl.alef <-100 0 -100 0>;
  } kern_rtl;
  
  lookup kern_rtl_marks {
      pos reh-ar fatha-ar <80 0 80 0>;
  } kern_rtl_marks;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
      lookup kern_ltr_marks;
      
      script arab;
      language dflt;
      lookup kern_dflt;
      lookup kern_rtl;
      lookup kern_rtl_marks;
      language URD;
      
      script latn;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
      lookup kern_ltr_marks;
      language TRK;
  } kern;
  
  '''
# ---
# name: test_kern_RTL_and_DFLT_numbers
  '''
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos seven four -25;
  } kern_dflt;
  
  lookup kern_rtl {
      lookupflag IgnoreMarks;
      pos yod-hb bet-hb <-100 0 -100 0>;
  } kern_rtl;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
      lookup kern_rtl;
      
      script hebr;
      language dflt;
      lookup kern_dflt;
      lookup kern_rtl;
  } kern;
  
  '''
# ---
# name: test_kern_RTL_with_marks
  '''
  @kern1.rtl.reh = [reh-ar reh-ar.fina zain-ar];
  @kern2.rtl.alef = [alef-ar alef-ar.isol];
  
  lookup kern_rtl {
      lookupflag IgnoreMarks;
      pos reh-ar.fina lam-ar.init <-80 0 -80 0>;
      pos @kern1.rtl.reh @kern2.rtl.alef <-100 0 -100 0>;
  } kern_rtl;
  
  lookup kern_rtl_marks {
      pos reh-ar fatha-ar <80 0 80 0>;
  } kern_rtl_marks;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_rtl;
      lookup kern_rtl_marks;
      
      script arab;
      language dflt;
      lookup kern_rtl;
      lookup kern_rtl_marks;
      language ARA;
  } kern;
  
  '''
# ---
# name: test_kern_hira_kana_hrkt
  '''
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos period period 5;
  } kern_dflt;
  
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos a-hira a-hira 1;
      pos a-hira a-kana 2;
      pos a-hira period 6;
      pos a-kana a-hira 3;
      pos a-kana a-kana 4;
      pos a-kana period 8;
      pos period a-hira 7;
      pos period a-kana 9;
  } kern_ltr;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
      
      script kana;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
  } kern;
  
  '''
# ---
# name: test_kern_independent_of_languagesystem[same]
  '''
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos A V -40;
  } kern_ltr;
  
  lookup kern_rtl {
      lookupflag IgnoreMarks;
      pos reh-ar alef-ar <-100 0 -100 0>;
  } kern_rtl;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_ltr;
      
      script arab;
      language dflt;
      lookup kern_rtl;
      
      script latn;
      language dflt;
      lookup kern_ltr;
  } kern;
  
  '''
# ---
# name: test_kern_mixed_bidis
  '''
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos comma comma -1;
  } kern_dflt;
  
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos a a 1;
      pos a comma 2;
      pos comma a 3;
  } kern_ltr;
  
  lookup kern_rtl {
      lookupflag IgnoreMarks;
      pos alef-ar alef-ar <4 0 4 0>;
      pos alef-ar comma-ar <5 0 5 0>;
      pos comma-ar alef-ar <6 0 6 0>;
      pos comma-ar one-adlam <12 0 12 0>;
      pos one-adlam comma-ar <11 0 11 0>;
      pos one-adlam one-adlam <10 0 10 0>;
      pos one-ar one-ar 9;
  } kern_rtl;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
      
      script arab;
      language dflt;
      lookup kern_dflt;
      lookup kern_rtl;
      
      script latn;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
  } kern;
  
  feature dist {
      script adlm;
      language dflt;
      lookup kern_dflt;
      lookup kern_rtl;
  } dist;
  
  '''
# ---
# name: test_kern_split_and_drop
  '''
  @kern1.ltr.bar = [a-cy];
  @kern1.ltr.bar_1 = [period];
  @kern1.ltr.foo = [a a-orya alpha];
  @kern2.ltr.bar = [a-cy];
  @kern2.ltr.bar_1 = [period];
  @kern2.ltr.foo = [a a-orya alpha];
  
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos @kern1.ltr.foo @kern2.ltr.bar 20;
      pos @kern1.ltr.foo @kern2.ltr.bar_1 20;
      pos @kern1.ltr.bar @kern2.ltr.foo 20;
      pos @kern1.ltr.bar_1 @kern2.ltr.foo 20;
  } kern_ltr;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_ltr;
      
      script cyrl;
      language dflt;
      lookup kern_ltr;
      
      script grek;
      language dflt;
      lookup kern_ltr;
      
      script latn;
      language dflt;
      lookup kern_ltr;
  } kern;
  
  feature dist {
      script ory2;
      language dflt;
      lookup kern_ltr;
      
      script orya;
      language dflt;
      lookup kern_ltr;
  } dist;
  
  '''
# ---
# name: test_kern_split_and_drop_mixed
  '''
  @kern1.ltr.foo = [V W];
  @kern2.ltr.foo = [W];
  
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos @kern1.ltr.foo @kern2.ltr.foo -20;
  } kern_ltr;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_ltr;
      
      script latn;
      language dflt;
      lookup kern_ltr;
  } kern;
  
  '''
# ---
# name: test_kern_split_multi_glyph_class[same]
  '''
  @kern1.dflt.foo = [period];
  @kern1.ltr.foo = [a];
  @kern2.dflt.foo = [period];
  @kern2.ltr.foo = [b];
  
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos period period 9;
      enum pos period @kern2.dflt.foo 13;
      enum pos @kern1.dflt.foo period 11;
      pos @kern1.dflt.foo @kern2.dflt.foo 14;
  } kern_dflt;
  
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos a a 1;
      pos a b 2;
      pos a period 3;
      pos b a 4;
      pos b b 5;
      pos b period 6;
      pos period a 7;
      pos period b 8;
      enum pos a @kern2.ltr.foo 12;
      enum pos a @kern2.dflt.foo 12;
      enum pos period @kern2.ltr.foo 13;
      enum pos @kern1.ltr.foo b 10;
      enum pos @kern1.ltr.foo period 11;
      enum pos @kern1.dflt.foo b 10;
      pos @kern1.ltr.foo @kern2.ltr.foo 14;
      pos @kern1.ltr.foo @kern2.dflt.foo 14;
      pos @kern1.dflt.foo @kern2.ltr.foo 14;
  } kern_ltr;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
      
      script latn;
      language dflt;
      lookup kern_dflt;
      lookup kern_ltr;
  } kern;
  
  '''
# ---
# name: test_kern_uniqueness
  '''
  @kern1.ltr.questiondown = [questiondown];
  @kern2.ltr.y = [y];
  
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos questiondown y 35;
      enum pos questiondown @kern2.ltr.y -35;
      enum pos @kern1.ltr.questiondown y 35;
      pos @kern1.ltr.questiondown @kern2.ltr.y 15;
  } kern_ltr;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_ltr;
      
      script latn;
      language dflt;
      lookup kern_ltr;
  } kern;
  
  '''
# ---
# name: test_kern_zyyy_zinh
  '''
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos uni0300 uni0300 0;
      pos uni0310 uni0310 1;
      pos uni0320 uni0320 2;
      pos uni0330 uni0330 3;
      pos uni0640 uni0640 4;
      pos uni0650 uni0650 5;
      pos uni0670 uni0670 6;
      pos uni10100 uni10100 36;
      pos uni10110 uni10110 37;
      pos uni10120 uni10120 38;
      pos uni10130 uni10130 39;
      pos uni102E0 uni102E0 40;
      pos uni102F0 uni102F0 41;
      pos uni1BCA0 uni1BCA0 42;
      pos uni1CD0 uni1CD0 7;
      pos uni1CE0 uni1CE0 8;
      pos uni1CF0 uni1CF0 9;
      pos uni1D360 uni1D360 43;
      pos uni1D370 uni1D370 44;
      pos uni1DC0 uni1DC0 10;
      pos uni1F250 uni1F250 45;
      pos uni20F0 uni20F0 11;
      pos uni2E30 uni2E30 12;
      pos uni2FF0 uni2FF0 13;
      pos uni3010 uni3010 14;
      pos uni3030 uni3030 15;
      pos uni30A0 uni30A0 16;
      pos uni3190 uni3190 17;
      pos uni31C0 uni31C0 18;
      pos uni31D0 uni31D0 19;
      pos uni31E0 uni31E0 20;
      pos uni3220 uni3220 21;
      pos uni3230 uni3230 22;
      pos uni3240 uni3240 23;
      pos uni3280 uni3280 24;
      pos uni3290 uni3290 25;
      pos uni32A0 uni32A0 26;
      pos uni32B0 uni32B0 27;
      pos uni32C0 uni32C0 28;
      pos uni3360 uni3360 29;
      pos uni3370 uni3370 30;
      pos uni33E0 uni33E0 31;
      pos uni33F0 uni33F0 32;
      pos uniA700 uniA700 33;
      pos uniA830 uniA830 34;
      pos uniFF70 uniFF70 35;
  } kern_dflt;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
      
      script grek;
      language dflt;
      lookup kern_dflt;
      
      script hani;
      language dflt;
      lookup kern_dflt;
      
      script kana;
      language dflt;
      lookup kern_dflt;
  } kern;
  
  feature dist {
      script dev2;
      language dflt;
      lookup kern_dflt;
      
      script deva;
      language dflt;
      lookup kern_dflt;
      
      script dupl;
      language dflt;
      lookup kern_dflt;
  } dist;
  
  '''
# ---
# name: test_mark_base_kerning
  '''
  @kern1.ltr.etamil = [va-tamil];
  @kern1.ltr.etamil_1 = [aulengthmark-tamil];
  @kern2.ltr.etamil = [va-tamil];
  @kern2.ltr.etamil_1 = [aulengthmark-tamil];
  
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos aa-tamil va-tamil -20;
      pos va-tamil aa-tamil -20;
      enum pos aa-tamil @kern2.ltr.etamil -35;
      enum pos @kern1.ltr.etamil aa-tamil -35;
      pos @kern1.ltr.etamil @kern2.ltr.etamil -100;
  } kern_ltr;
  
  lookup kern_ltr_marks {
      pos aulengthmark-tamil aulengthmark-tamil -200;
      enum pos aa-tamil @kern2.ltr.etamil_1 -35;
      enum pos @kern1.ltr.etamil_1 aa-tamil -35;
      pos @kern1.ltr.etamil_1 @kern2.ltr.etamil_1 -100;
      pos @kern1.ltr.etamil_1 @kern2.ltr.etamil -100;
      pos @kern1.ltr.etamil @kern2.ltr.etamil_1 -100;
  } kern_ltr_marks;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_ltr;
      lookup kern_ltr_marks;
  } kern;
  
  feature dist {
      script tml2;
      language dflt;
      lookup kern_ltr;
      lookup kern_ltr_marks;
      
      script taml;
      language dflt;
      lookup kern_ltr;
      lookup kern_ltr_marks;
  } dist;
  
  '''
# ---
# name: test_mark_to_base_kern
  '''
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos B C -30;
  } kern_ltr;
  
  lookup kern_ltr_marks {
      pos A acutecomb -55;
  } kern_ltr_marks;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_ltr;
      lookup kern_ltr_marks;
      
      script latn;
      language dflt;
      lookup kern_ltr;
      lookup kern_ltr_marks;
  } kern;
  
  '''
# ---
# name: test_mark_to_base_kern.1
  '''
  lookup kern_ltr {
      pos A acutecomb -55;
      pos B C -30;
  } kern_ltr;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_ltr;
      
      script latn;
      language dflt;
      lookup kern_ltr;
  } kern;
  
  '''
# ---
# name: test_mark_to_base_only
  '''
  lookup kern_dflt_marks {
      pos A acutecomb -55;
  } kern_dflt_marks;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt_marks;
  } kern;
  
  '''
# ---
# name: test_mode.1
  '''
  feature kern {
      pos one four' -50 six;
  } kern;
  
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos seven six 25;
  } kern_dflt;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
  } kern;
  
  '''
# ---
# name: test_mode[existing]
  '''
  feature kern {
      pos one four' -50 six;
  } kern;
  
  '''
# ---
# name: test_quantize
  '''
  lookup kern_dflt {
      lookupflag IgnoreMarks;
      pos four six -55;
      pos one six -25;
  } kern_dflt;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_dflt;
  } kern;
  
  '''
# ---
# name: test_skip_spacing_marks
  '''
  lookup kern_ltr {
      @MFS_kern_ltr = [highspacingdot-deva];
      lookupflag UseMarkFilteringSet @MFS_kern_ltr;
      pos ka-deva ra-deva -250;
      pos ra-deva ka-deva -250;
  } kern_ltr;
  
  lookup kern_ltr_marks {
      pos highspacingdot-deva ka-deva -200;
      pos ka-deva highspacingdot-deva -150;
  } kern_ltr_marks;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_ltr;
      lookup kern_ltr_marks;
  } kern;
  
  feature dist {
      script dev2;
      language dflt;
      lookup kern_ltr;
      lookup kern_ltr_marks;
      
      script deva;
      language dflt;
      lookup kern_ltr;
      lookup kern_ltr_marks;
  } dist;
  
  '''
# ---
# name: test_skip_zero_class_kerns
  '''
  @kern1.ltr.baz = [E F];
  @kern1.ltr.foo = [A B];
  @kern2.ltr.bar = [C D];
  
  lookup kern_ltr {
      lookupflag IgnoreMarks;
      pos G H -5;
      enum pos A @kern2.ltr.bar 5;
      enum pos @kern1.ltr.foo D 15;
      pos @kern1.ltr.foo @kern2.ltr.bar 10;
      pos @kern1.ltr.baz @kern2.ltr.bar -10;
  } kern_ltr;
  
  feature kern {
      script DFLT;
      language dflt;
      lookup kern_ltr;
      
      script latn;
      language dflt;
      lookup kern_ltr;
  } kern;
  
  '''
# ---
