languagesystem DFLT dflt;
languagesystem latn dflt;

feature dlig {
    lookup dlig1 {
        sub s t by st.dlig;
        sub n d by nd.dlig;
        sub r d by rd.dlig;
        sub t h by th.dlig;
        sub t h e by the.dlig;
        sub a n d by and.dlig;
        sub o f by of.dlig;
    } dlig1;
} dlig;

## AUTOMATICALLY GENERATED ##
@A = [A Agrave Aacute Acircumflex Atilde Adieresis Aring Amacron Abreve Aogonek];
@C = [C Cacute Ccircumflex Cdotaccent Ccaron Ccedilla];
@D = [D Dcaron];
@E = [E Egrave Eacute Ecircumflex Edieresis Emacron Ebreve Edotaccent Ecaron Eogonek];
@G = [G Gcircumflex Gbreve Gdotaccent uni0122];
@H = [H Hcircumflex];
@I = [I Igrave Iacute Icircumflex Idieresis Itilde Imacron Ibreve Idotaccent Iogonek];
@J = [J Jcircumflex];
@K = [K uni0136];
@L = [L Lacute uni013B Lcaron];
@N = [N Ntilde Nacute uni0145 Ncaron];
@O = [O Ograve Oacute Ocircumflex Otilde Odieresis Omacron Obreve Ohungarumlaut];
@R = [R Racute uni0156 Rcaron];
@S = [S Sacute Scircumflex Scaron Scedilla];
@T = [T Tcaron uni0162];
@U = [U Ugrave Uacute Ucircumflex Udieresis Utilde Umacron Ubreve Uring Uhungarumlaut Uogonek];
@W = [W Wcircumflex];
@Y = [Y Yacute Ycircumflex Ydieresis];
@Z = [Z Zacute Zdotaccent Zcaron];
@a = [a agrave aacute acircumflex atilde adieresis aring amacron abreve aogonek];
@c = [c cacute ccircumflex cdotaccent ccaron ccedilla];
@d = [d dcaron];
@e = [e egrave eacute ecircumflex edieresis emacron ebreve edotaccent ecaron eogonek];
@g = [g gcircumflex gbreve gdotaccent uni0123];
@h = [h hcircumflex];
@i = [i igrave iacute icircumflex idieresis itilde imacron ibreve iogonek dotlessi];
@j = [j jcircumflex dotlessj];
@k = [k uni0137];
@l = [l lacute uni013C lcaron];
@n = [n ntilde nacute uni0146 ncaron];
@o = [o ograve oacute ocircumflex otilde odieresis omacron obreve ohungarumlaut];
@r = [r racute uni0157 rcaron];
@s = [s sacute scircumflex scaron scedilla];
@t = [t tcaron uni0163];
@u = [u ugrave uacute ucircumflex udieresis utilde umacron ubreve uring uhungarumlaut uogonek];
@w = [w wcircumflex];
@y = [y yacute ydieresis ycircumflex];
@z = [z zacute zdotaccent zcaron];

# Lonely letters
@b = [b];
@f = [f];
@m = [m];
@p = [p];
@q = [q];
@v = [v];
@x = [x];
@B = [B];
@F = [F];
@M = [M];
@P = [P];
@Q = [Q];
@V = [V];
@X = [X];

@lower = [@a @b @c @d @e @f @g @h @i @j @k @l @m @n @o @p @q @r @s @t @u @v @w @x @y @z schwa];
@lower_ligas = [f_f f_l f_f_l f_i f_f_i];
@lowerA = [@lower @lower_ligas];
@upper = [@A @B @C @D @E @F @G @H @I @J @K @L @M @N @O @P @Q @R @S @T @U @V @W @X @Y @Z Schwa];
@digit = [zero one two three four five six seven eight nine];

feature liga {
    sub f l by f_l;
    sub f i by f_i;
    sub f f by f_f;
    sub f f l by f_f_l;
    sub f f i by f_f_i;
} liga;

feature salt {
    sub hyphen by uni2E17.alt;
    sub uni2E17 by uni2E17.alt;
} salt;

@combiningmarks = [gravecomb acutecomb circumflexcomb tildecomb macroncomb overlinecomb brevecomb periodcomb dieresiscomb ringabovecomb hungarumlautcomb caroncomb doublegravecomb uni0315 cedillacomb ogonekcomb uni0364];
feature ccmp {
    sub [i j]' @combiningmarks by [dotlessi dotlessj];
} ccmp;

@roundlc = [@b @d @h @o @p eth thorn];

feature hist {
  lookup hist1 {
    lookupflag 0;
    sub @roundlc r' by uniA75B;
  } hist1;
} hist;

feature kern {
  lookup kernsub {
    lookupflag IgnoreMarks;
    sub [@digit @upper] space' @upper by enspace;
    sub @upper space' [@digit @upper] by enspace;
  } kernsub;
} kern;
