Browse Source

Hotfix features to be unaffected by class sorting

This is a work-around for a bug in which class members are sorted
before compilation. Essentially you can't have something like
[w uni0100] mapping to [W uni101], because the first class will get
sorted to [uni0100 w]. We can consolidate the classes again (probably
better than before) when the bug is fixed.

This also fixes a bad smcp mapping from dotlessi to Idotaccent.
James Godfrey-Kittle 9 years ago
parent
commit
75925cc929
2 changed files with 38 additions and 16 deletions
  1. 1 1
      res/smcp_requirements.txt
  2. 37 15
      src/v2/Roboto_Regular.ufo/features.fea

+ 1 - 1
res/smcp_requirements.txt

@@ -81,7 +81,7 @@
 012B Imacron.smcp         # LATIN SMALL LETTER I WITH MACRON
 012D Ibreve.smcp          # LATIN SMALL LETTER I WITH BREVE
 012F Iogonek.smcp         # LATIN SMALL LETTER I WITH OGONEK
-0131 Idotaccent.smcp      # LATIN SMALL LETTER DOTLESS I
+0131 I.smcp               # LATIN SMALL LETTER DOTLESS I
 0133 IJ.smcp              # LATIN SMALL LIGATURE IJ
 0135 Jcircumflex.smcp     # LATIN SMALL LETTER J WITH CIRCUMFLEX
 0137 Kcommaaccent.smcp    # LATIN SMALL LETTER K WITH CEDILLA

+ 37 - 15
src/v2/Roboto_Regular.ufo/features.fea

@@ -12,16 +12,26 @@ languagesystem grek dflt;
 
 # classes
 
-@UC_ROMAN = [ A - Z Scedilla Udieresis Zcaron Zdotaccent Zacute Ydieresis Ycircumflex Wcircumflex Uogonek Uhungarumlaut Uring Ubreve Umacron Utilde Tcaron uni0162 Scaron Scircumflex Sacute Rcaron Rcommaaccent Racute Ohungarumlaut Obreve Omacron Ncaron Ncommaaccent Nacute Ldot Lcaron Lcommaaccent Lacute Kcommaaccent Jcircumflex Iogonek Ibreve Imacron Itilde Hcircumflex Gcommaaccent Gbreve Gcircumflex Ecaron Eogonek Edotaccent Ebreve Emacron Dcaron Ccaron Ccircumflex Cacute Aogonek Abreve Amacron Yacute Ucircumflex Uacute Ugrave Odieresis Otilde Ocircumflex Oacute Ograve Ntilde Idieresis Icircumflex Iacute Igrave Edieresis Ecircumflex Eacute Egrave Ccedilla Aringacute Aring Adieresis Atilde Acircumflex Aacute Agrave Tbar Eth Dcroat OE uni010A uni0120 Idotaccent uni021A Aogonek.NAV Eogonek.NAV Oogonek.NAV Oogonek];
-@LC_ROMAN = [ a - z scedilla udieresis zcaron zdotaccent zacute ydieresis ycircumflex wcircumflex uogonek uhungarumlaut uring ubreve umacron utilde tcaron uni0163 scaron scircumflex sacute rcaron rcommaaccent racute ohungarumlaut obreve omacron ncaron ncommaaccent nacute ldot lcaron lcommaaccent lacute kcommaaccent jcircumflex iogonek ibreve imacron itilde hcircumflex gcommaaccent gbreve gcircumflex ecaron eogonek edotaccent ebreve emacron dcaron ccaron ccircumflex cacute aogonek abreve amacron yacute ucircumflex uacute ugrave odieresis otilde ocircumflex oacute ograve ntilde idieresis icircumflex iacute igrave edieresis ecircumflex eacute egrave ccedilla aringacute aring adieresis atilde acircumflex aacute agrave tbar eth dcroat oe uni010B uni0121 dotlessi uni021B aogonek.NAV eogonek.NAV oogonek.NAV oogonek];
-@SC_ROMAN = [ A.smcp B.smcp C.smcp D.smcp E.smcp F.smcp G.smcp H.smcp I.smcp J.smcp K.smcp L.smcp M.smcp N.smcp O.smcp P.smcp Q.smcp R.smcp S.smcp T.smcp U.smcp V.smcp W.smcp X.smcp Y.smcp Z.smcp Scedilla.smcp Udieresis.smcp Zcaron.smcp Zdotaccent.smcp Zacute.smcp Ydieresis.smcp Ycircumflex.smcp Wcircumflex.smcp Uogonek.smcp Uhungarumlaut.smcp Uring.smcp Ubreve.smcp Umacron.smcp Utilde.smcp Tcaron.smcp uni0162.smcp Scaron.smcp Scircumflex.smcp Sacute.smcp Rcaron.smcp Rcommaaccent.smcp Racute.smcp Ohungarumlaut.smcp Obreve.smcp Omacron.smcp Ncaron.smcp Ncommaaccent.smcp Nacute.smcp Ldot.smcp Lcaron.smcp Lcommaaccent.smcp Lacute.smcp Kcommaaccent.smcp Jcircumflex.smcp Iogonek.smcp Ibreve.smcp Imacron.smcp Itilde.smcp Hcircumflex.smcp Gcommaaccent.smcp Gbreve.smcp Gcircumflex.smcp Ecaron.smcp Eogonek.smcp Edotaccent.smcp Ebreve.smcp Emacron.smcp Dcaron.smcp Ccaron.smcp Ccircumflex.smcp Cacute.smcp Aogonek.smcp Abreve.smcp Amacron.smcp Yacute.smcp Ucircumflex.smcp Uacute.smcp Ugrave.smcp Odieresis.smcp Otilde.smcp Ocircumflex.smcp Oacute.smcp Ograve.smcp Ntilde.smcp Idieresis.smcp Icircumflex.smcp Iacute.smcp Igrave.smcp Edieresis.smcp Ecircumflex.smcp Eacute.smcp Egrave.smcp Ccedilla.smcp Aringacute.smcp Aring.smcp Adieresis.smcp Atilde.smcp Acircumflex.smcp Aacute.smcp Agrave.smcp Tbar.smcp Eth.smcp Dcroat.smcp OE.smcp uni010A.smcp uni0120.smcp Idotaccent.smcp Tcommaaccent.smcp Aogonek.smcp.NAV Eogonek.smcp.NAV Oogonek.smcp.NAV Oogonek.smcp];
-@UC_SET1 = [ dollar Euro lira sterling yen uni0401 uni0402 uni0403 uni0404 uni0405 uni0406 uni0407 uni0408 uni0409 uni040A uni040B uni040C uni040E uni040F uni0410 uni0411 uni0412 uni0413 uni0414 uni0415 uni0416 uni0417 uni0418 uni0419 uni041A uni041B uni041C uni041D uni041E uni041F uni0420 uni0421 uni0422 uni0423 uni0424 uni0425 uni0426 uni0427 uni0428 uni0429 uni042A uni042B uni042C uni042D uni042E uni042F uni0490 uni0492 uni0496 uni0498 uni049A uni049C uni04A0 uni04A2 uni04A8 uni04AA uni04AE uni04B0 uni04B2 uni04B4 uni04B8 uni04BA uni04BC uni04BE uni04D8 uni04E0 uni04E2 uni04E8 uni04EE uni20B4 uni20B8 uni20BD uni2116 ];
-@SC_SET1 = [ dollar.smcp Euro.smcp lira.smcp sterling.smcp yen.smcp uni0401.smcp uni0402.smcp uni0403.smcp uni0404.smcp uni0405.smcp uni0406.smcp uni0407.smcp uni0408.smcp uni0409.smcp uni040A.smcp uni040B.smcp uni040C.smcp uni040E.smcp uni040F.smcp uni0410.smcp uni0411.smcp uni0412.smcp uni0413.smcp uni0414.smcp uni0415.smcp uni0416.smcp uni0417.smcp uni0418.smcp uni0419.smcp uni041A.smcp uni041B.smcp uni041C.smcp uni041D.smcp uni041E.smcp uni041F.smcp uni0420.smcp uni0421.smcp uni0422.smcp uni0423.smcp uni0424.smcp uni0425.smcp uni0426.smcp uni0427.smcp uni0428.smcp uni0429.smcp uni042A.smcp uni042B.smcp uni042C.smcp uni042D.smcp uni042E.smcp uni042F.smcp uni0490.smcp uni0492.smcp uni0496.smcp uni0498.smcp uni049A.smcp uni049C.smcp uni04A0.smcp uni04A2.smcp uni04A8.smcp uni04AA.smcp uni04AE.smcp uni04B0.smcp uni04B2.smcp uni04B4.smcp uni04B8.smcp uni04BA.smcp uni04BC.smcp uni04BE.smcp uni04D8.smcp uni04E0.smcp uni04E2.smcp uni04E8.smcp uni04EE.smcp uni20B4.smcp uni20B8.smcp uni20BD.smcp uni2116.smcp ];
-@LC_SET2 = [ uni0451 uni0452 uni0453 uni0454 uni0455 uni0456 uni0457 uni0458 uni0459 uni045A uni045B uni045C uni045E uni045F uni0430 uni0431 uni0432 uni0433 uni0434 uni0435 uni0436 uni0437 uni0438 uni0439 uni043A uni043B uni043C uni043D uni043E uni043F uni0440 uni0441 uni0442 uni0443 uni0444 uni0445 uni0446 uni0447 uni0448 uni0449 uni044A uni044B uni044C uni044D uni044E uni044F uni0491 uni0493 uni0497 uni0499 uni049B uni049D uni04A1 uni04A3 uni04A9 uni04AB uni04AF uni04B1 uni04B3 uni04B5 uni04B9 uni04BB uni04BD uni04BF uni04D9 uni04E1 uni04E3 uni04E9 uni04EF ];
-@SC_SET2 = [ uni0401.smcp uni0402.smcp uni0403.smcp uni0404.smcp uni0405.smcp uni0406.smcp uni0407.smcp uni0408.smcp uni0409.smcp uni040A.smcp uni040B.smcp uni040C.smcp uni040E.smcp uni040F.smcp uni0410.smcp uni0411.smcp uni0412.smcp uni0413.smcp uni0414.smcp uni0415.smcp uni0416.smcp uni0417.smcp uni0418.smcp uni0419.smcp uni041A.smcp uni041B.smcp uni041C.smcp uni041D.smcp uni041E.smcp uni041F.smcp uni0420.smcp uni0421.smcp uni0422.smcp uni0423.smcp uni0424.smcp uni0425.smcp uni0426.smcp uni0427.smcp uni0428.smcp uni0429.smcp uni042A.smcp uni042B.smcp uni042C.smcp uni042D.smcp uni042E.smcp uni042F.smcp uni0490.smcp uni0492.smcp uni0496.smcp uni0498.smcp uni049A.smcp uni049C.smcp uni04A0.smcp uni04A2.smcp uni04A8.smcp uni04AA.smcp uni04AE.smcp uni04B0.smcp uni04B2.smcp uni04B4.smcp uni04B8.smcp uni04BA.smcp uni04BC.smcp uni04BE.smcp uni04D8.smcp uni04E0.smcp uni04E2.smcp uni04E8.smcp uni04EE.smcp ];
-@UC_SET3 = [ Alpha Alphatonos Beta Chi Delta Epsilon Epsilontonos Eta Etatonos Gamma Iota Iotadieresis Iotatonos Kappa Lambda Mu Omega Omegatonos Omicron Omicrontonos Phi Pi Psi Rho Sigma Tau Theta Upsilon Upsilondieresis Upsilontonos Xi Zeta Nu uni037F ];
-@LC_SET3 = [ alpha alphatonos beta chi delta epsilon epsilontonos eta etatonos gamma iota iotadieresis iotatonos kappa lambda uni03BC omega omegatonos omicron omicrontonos phi pi psi rho sigma tau theta upsilon upsilondieresis upsilontonos xi zeta nu uni03F3 ];
-@SC_SET3 = [ Alpha.smcp Alphatonos.smcp Beta.smcp Chi.smcp Delta.smcp Epsilon.smcp Epsilontonos.smcp Eta.smcp Etatonos.smcp Gamma.smcp Iota.smcp Iotadieresis.smcp Iotatonos.smcp Kappa.smcp Lambda.smcp Mu.smcp Omega.smcp Omegatonos.smcp Omicron.smcp Omicrontonos.smcp Phi.smcp Pi.smcp Psi.smcp Rho.smcp Sigma.smcp Tau.smcp Theta.smcp Upsilon.smcp Upsilondieresis.smcp Upsilontonos.smcp Xi.smcp Zeta.smcp Nu.smcp uni037F.smcp ];
+@UC_ROMAN = [ A - Z Scedilla Udieresis Zcaron Zdotaccent Zacute Ydieresis Ycircumflex Wcircumflex Uogonek Uhungarumlaut Uring Ubreve Umacron Utilde Tcaron Scaron Scircumflex Sacute Rcaron Rcommaaccent Racute Ohungarumlaut Obreve Omacron Ncaron Ncommaaccent Nacute Ldot Lcaron Lcommaaccent Lacute Kcommaaccent Jcircumflex Iogonek Ibreve Imacron Itilde Hcircumflex Gcommaaccent Gbreve Gcircumflex Ecaron Eogonek Edotaccent Ebreve Emacron Dcaron Ccaron Ccircumflex Cacute Aogonek Abreve Amacron Yacute Ucircumflex Uacute Ugrave Odieresis Otilde Ocircumflex Oacute Ograve Ntilde Idieresis Icircumflex Iacute Igrave Edieresis Ecircumflex Eacute Egrave Ccedilla Aringacute Aring Adieresis Atilde Acircumflex Aacute Agrave Tbar Eth Dcroat Aogonek.NAV Eogonek.NAV Oogonek.NAV Oogonek];
+@LC_ROMAN = [ a - z scedilla udieresis zcaron zdotaccent zacute ydieresis ycircumflex wcircumflex uogonek uhungarumlaut uring ubreve umacron utilde tcaron scaron scircumflex sacute rcaron rcommaaccent racute ohungarumlaut obreve omacron ncaron ncommaaccent nacute ldot lcaron lcommaaccent lacute kcommaaccent jcircumflex iogonek ibreve imacron itilde hcircumflex gcommaaccent gbreve gcircumflex ecaron eogonek edotaccent ebreve emacron dcaron ccaron ccircumflex cacute aogonek abreve amacron yacute ucircumflex uacute ugrave odieresis otilde ocircumflex oacute ograve ntilde idieresis icircumflex iacute igrave edieresis ecircumflex eacute egrave ccedilla aringacute aring adieresis atilde acircumflex aacute agrave tbar eth dcroat aogonek.NAV eogonek.NAV oogonek.NAV oogonek];
+@SC_ROMAN = [ A.smcp B.smcp C.smcp D.smcp E.smcp F.smcp G.smcp H.smcp I.smcp J.smcp K.smcp L.smcp M.smcp N.smcp O.smcp P.smcp Q.smcp R.smcp S.smcp T.smcp U.smcp V.smcp W.smcp X.smcp Y.smcp Z.smcp Scedilla.smcp Udieresis.smcp Zcaron.smcp Zdotaccent.smcp Zacute.smcp Ydieresis.smcp Ycircumflex.smcp Wcircumflex.smcp Uogonek.smcp Uhungarumlaut.smcp Uring.smcp Ubreve.smcp Umacron.smcp Utilde.smcp Tcaron.smcp Scaron.smcp Scircumflex.smcp Sacute.smcp Rcaron.smcp Rcommaaccent.smcp Racute.smcp Ohungarumlaut.smcp Obreve.smcp Omacron.smcp Ncaron.smcp Ncommaaccent.smcp Nacute.smcp Ldot.smcp Lcaron.smcp Lcommaaccent.smcp Lacute.smcp Kcommaaccent.smcp Jcircumflex.smcp Iogonek.smcp Ibreve.smcp Imacron.smcp Itilde.smcp Hcircumflex.smcp Gcommaaccent.smcp Gbreve.smcp Gcircumflex.smcp Ecaron.smcp Eogonek.smcp Edotaccent.smcp Ebreve.smcp Emacron.smcp Dcaron.smcp Ccaron.smcp Ccircumflex.smcp Cacute.smcp Aogonek.smcp Abreve.smcp Amacron.smcp Yacute.smcp Ucircumflex.smcp Uacute.smcp Ugrave.smcp Odieresis.smcp Otilde.smcp Ocircumflex.smcp Oacute.smcp Ograve.smcp Ntilde.smcp Idieresis.smcp Icircumflex.smcp Iacute.smcp Igrave.smcp Edieresis.smcp Ecircumflex.smcp Eacute.smcp Egrave.smcp Ccedilla.smcp Aringacute.smcp Aring.smcp Adieresis.smcp Atilde.smcp Acircumflex.smcp Aacute.smcp Agrave.smcp Tbar.smcp Eth.smcp Dcroat.smcp Aogonek.smcp.NAV Eogonek.smcp.NAV Oogonek.smcp.NAV Oogonek.smcp];
+
+@UC_SET1 = [ dollar Euro lira sterling yen uni0401 uni0402 uni0403 uni0404 uni0405 uni0406 uni0407 uni0408 uni0409 uni040A uni040B uni040C uni040E uni040F uni0410 uni0411 uni0412 uni0413 uni0414 uni0415 uni0416 uni0417 uni0418 uni0419 uni041A uni041B uni041C uni041D uni041E uni041F uni0420 uni0421 uni0422 uni0423 uni0424 uni0425 uni0426 uni0427 uni0428 uni0429 uni042A uni042B uni042C uni042D uni042E uni042F uni0490 uni0492 uni0496 uni0498 uni049A uni049C uni04A0 uni04A2 uni04A8 uni04AA uni04AE uni04B0 uni04B2 uni04B4 uni04B8 uni04BA uni04BC uni04BE uni04D8 uni04E0 uni04E2 uni04E8 uni04EE uni20B4 uni20B8 uni20BD uni2116 Idotaccent Mu ];
+@SC_SET1 = [ dollar.smcp Euro.smcp lira.smcp sterling.smcp yen.smcp uni0401.smcp uni0402.smcp uni0403.smcp uni0404.smcp uni0405.smcp uni0406.smcp uni0407.smcp uni0408.smcp uni0409.smcp uni040A.smcp uni040B.smcp uni040C.smcp uni040E.smcp uni040F.smcp uni0410.smcp uni0411.smcp uni0412.smcp uni0413.smcp uni0414.smcp uni0415.smcp uni0416.smcp uni0417.smcp uni0418.smcp uni0419.smcp uni041A.smcp uni041B.smcp uni041C.smcp uni041D.smcp uni041E.smcp uni041F.smcp uni0420.smcp uni0421.smcp uni0422.smcp uni0423.smcp uni0424.smcp uni0425.smcp uni0426.smcp uni0427.smcp uni0428.smcp uni0429.smcp uni042A.smcp uni042B.smcp uni042C.smcp uni042D.smcp uni042E.smcp uni042F.smcp uni0490.smcp uni0492.smcp uni0496.smcp uni0498.smcp uni049A.smcp uni049C.smcp uni04A0.smcp uni04A2.smcp uni04A8.smcp uni04AA.smcp uni04AE.smcp uni04B0.smcp uni04B2.smcp uni04B4.smcp uni04B8.smcp uni04BA.smcp uni04BC.smcp uni04BE.smcp uni04D8.smcp uni04E0.smcp uni04E2.smcp uni04E8.smcp uni04EE.smcp uni20B4.smcp uni20B8.smcp uni20BD.smcp uni2116.smcp Idotaccent.smcp Mu.smcp ];
+
+@LC_SET2 = [ uni0430 uni0431 uni0432 uni0433 uni0434 uni0435 uni0436 uni0437 uni0438 uni0439 uni043A uni043B uni043C uni043D uni043E uni043F uni0440 uni0441 uni0442 uni0443 uni0444 uni0445 uni0446 uni0447 uni0448 uni0449 uni044A uni044B uni044C uni044D uni044E uni044F uni0491 uni0493 uni0497 uni0499 uni049B uni049D uni04A1 uni04A3 uni04A9 uni04AB uni04AF uni04B1 uni04B3 uni04B5 uni04B9 uni04BB uni04BD uni04BF uni04D9 uni04E1 uni04E3 uni04E9 uni04EF dotlessi ];
+@SC_SET2 = [ uni0410.smcp uni0411.smcp uni0412.smcp uni0413.smcp uni0414.smcp uni0415.smcp uni0416.smcp uni0417.smcp uni0418.smcp uni0419.smcp uni041A.smcp uni041B.smcp uni041C.smcp uni041D.smcp uni041E.smcp uni041F.smcp uni0420.smcp uni0421.smcp uni0422.smcp uni0423.smcp uni0424.smcp uni0425.smcp uni0426.smcp uni0427.smcp uni0428.smcp uni0429.smcp uni042A.smcp uni042B.smcp uni042C.smcp uni042D.smcp uni042E.smcp uni042F.smcp uni0490.smcp uni0492.smcp uni0496.smcp uni0498.smcp uni049A.smcp uni049C.smcp uni04A0.smcp uni04A2.smcp uni04A8.smcp uni04AA.smcp uni04AE.smcp uni04B0.smcp uni04B2.smcp uni04B4.smcp uni04B8.smcp uni04BA.smcp uni04BC.smcp uni04BE.smcp uni04D8.smcp uni04E0.smcp uni04E2.smcp uni04E8.smcp uni04EE.smcp I.smcp ];
+
+@UC_SET3 = [ Alpha Alphatonos Beta Chi Delta Epsilon Epsilontonos Eta Etatonos Gamma Iota Iotadieresis Iotatonos Kappa Lambda Omega Omegatonos Omicron Omicrontonos Phi Pi Psi Rho Sigma Tau Theta Upsilon Upsilondieresis Upsilontonos Xi Zeta Nu ];
+@LC_SET3 = [ alpha alphatonos beta chi delta epsilon epsilontonos eta etatonos gamma iota iotadieresis iotatonos kappa lambda omega omegatonos omicron omicrontonos phi pi psi rho sigma tau theta upsilon upsilondieresis upsilontonos xi zeta nu ];
+@SC_SET3 = [ Alpha.smcp Alphatonos.smcp Beta.smcp Chi.smcp Delta.smcp Epsilon.smcp Epsilontonos.smcp Eta.smcp Etatonos.smcp Gamma.smcp Iota.smcp Iotadieresis.smcp Iotatonos.smcp Kappa.smcp Lambda.smcp Omega.smcp Omegatonos.smcp Omicron.smcp Omicrontonos.smcp Phi.smcp Pi.smcp Psi.smcp Rho.smcp Sigma.smcp Tau.smcp Theta.smcp Upsilon.smcp Upsilondieresis.smcp Upsilontonos.smcp Xi.smcp Zeta.smcp Nu.smcp ];
+
+@UC_SET4 = [ OE uni0162 uni010A uni0120 uni037F ];
+@LC_SET4 = [ oe uni0163 uni010B uni0121 uni03F3 ];
+@SC_SET4 = [ OE.smcp uni0162.smcp uni010A.smcp uni0120.smcp uni037F.smcp ];
+
+@LC_SET5 = [ uni03BC uni0451 uni0452 uni0453 uni0454 uni0455 uni0456 uni0457 uni0458 uni0459 uni045A uni045B uni045C uni045E uni045F ];
+@SC_SET5 = [ Mu.smcp uni0401.smcp uni0402.smcp uni0403.smcp uni0404.smcp uni0405.smcp uni0406.smcp uni0407.smcp uni0408.smcp uni0409.smcp uni040A.smcp uni040B.smcp uni040C.smcp uni040E.smcp uni040F.smcp ];
 
 @LNUM = [zero one two three four five six seven eight nine];
 @ONUM = [zero.onum one.onum two.onum three.onum four.onum five.onum six.onum seven.onum eight.onum nine.onum];
@@ -31,10 +41,13 @@ languagesystem grek dflt;
 @frac2 = [ zero.frac onesuperior twosuperior threesuperior four.frac five.frac six.frac seven.frac eight.frac nine.frac ];
 @frac3 = [ fraction zero.sup one.sup two.sup three.sup four.sup five.sup six.sup seven.sup eight.sup nine.sup ];
 @frac4 = [ zero.sup one.sup two.sup three.sup four.sup five.sup six.sup seven.sup eight.sup nine.sup ];
-@unicase_l = [ 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 scedilla udieresis zcaron zdotaccent zacute ydieresis ycircumflex wcircumflex uogonek uhungarumlaut uring ubreve umacron utilde tcaron uni0163 scaron scircumflex sacute rcaron rcommaaccent racute ohungarumlaut obreve omacron ncaron ncommaaccent nacute ldot lcaron lcommaaccent lacute kcommaaccent jcircumflex iogonek ibreve imacron itilde hcircumflex gcommaaccent gbreve gcircumflex ecaron eogonek edotaccent ebreve emacron dcaron ccaron ccircumflex cacute aogonek abreve amacron yacute ucircumflex uacute ugrave odieresis otilde ocircumflex oacute ograve ntilde idieresis icircumflex iacute igrave edieresis ecircumflex eacute egrave ccedilla aringacute aring adieresis atilde acircumflex aacute agrave tbar eth dcroat ae oe thorn oslash uni010B uni0121 hbar ij eng aeacute oslashacute uni0219 wgrave wacute wdieresis ygrave];
-@unicase_r = [ A.unic B C D E.unic F G H I J K L M.unic N.unic O P Q R S T U.unic V W X Y Z Scedilla Udieresis.unic Zcaron Zdotaccent Zacute Ydieresis Ycircumflex Wcircumflex Uogonek.unic Uhungarumlaut.unic Uring.unic Ubreve.unic Umacron.unic Utilde.unic Tcaron uni0162 Scaron Scircumflex Sacute Rcaron Rcommaaccent Racute Ohungarumlaut Obreve Omacron Ncaron.unic Ncommaaccent.unic Nacute.unic Ldot Lcaron Lcommaaccent Lacute Kcommaaccent Jcircumflex Iogonek Ibreve Imacron Itilde Hcircumflex Gcommaaccent Gbreve Gcircumflex Ecaron.unic Eogonek.unic Edotaccent.unic Ebreve.unic Emacron.unic Dcaron Ccaron Ccircumflex Cacute Aogonek.unic Abreve.unic Amacron.unic Yacute Ucircumflex Uacute.unic Ugrave.unic Odieresis Otilde Ocircumflex Oacute Ograve Ntilde.unic Idieresis Icircumflex Iacute Igrave Edieresis.unic Ecircumflex.unic Eacute.unic Egrave.unic Ccedilla Aringacute.unic Aring.unic Adieresis.unic Atilde.unic Acircumflex.unic Aacute.unic Agrave.unic Tbar Eth Dcroat AE OE Thorn Oslash uni010A uni0120 Hbar IJ Eng AEacute Oslashacute uni0218 Wgrave Wacute Wdieresis Ygrave];
+
+@unicase_l = [ 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 scedilla udieresis zcaron zdotaccent zacute ydieresis ycircumflex wcircumflex uogonek uhungarumlaut uring ubreve umacron utilde tcaron scaron scircumflex sacute rcaron rcommaaccent racute ohungarumlaut obreve omacron ncaron ncommaaccent nacute ldot lcaron lcommaaccent lacute kcommaaccent jcircumflex iogonek ibreve imacron itilde hcircumflex gcommaaccent gbreve gcircumflex ecaron eogonek edotaccent ebreve emacron dcaron ccaron ccircumflex cacute aogonek abreve amacron yacute ucircumflex uacute ugrave odieresis otilde ocircumflex oacute ograve ntilde idieresis icircumflex iacute igrave edieresis ecircumflex eacute egrave ccedilla aringacute aring adieresis atilde acircumflex aacute agrave tbar eth dcroat thorn oslash hbar eng oslashacute wgrave wacute wdieresis ygrave];
+@unicase_r = [ A.unic B C D E.unic F G H I J K L M.unic N.unic O P Q R S T U.unic V W X Y Z Scedilla Udieresis.unic Zcaron Zdotaccent Zacute Ydieresis Ycircumflex Wcircumflex Uogonek.unic Uhungarumlaut.unic Uring.unic Ubreve.unic Umacron.unic Utilde.unic Tcaron Scaron Scircumflex Sacute Rcaron Rcommaaccent Racute Ohungarumlaut Obreve Omacron Ncaron.unic Ncommaaccent.unic Nacute.unic Ldot Lcaron Lcommaaccent Lacute Kcommaaccent Jcircumflex Iogonek Ibreve Imacron Itilde Hcircumflex Gcommaaccent Gbreve Gcircumflex Ecaron.unic Eogonek.unic Edotaccent.unic Ebreve.unic Emacron.unic Dcaron Ccaron Ccircumflex Cacute Aogonek.unic Abreve.unic Amacron.unic Yacute Ucircumflex Uacute.unic Ugrave.unic Odieresis Otilde Ocircumflex Oacute Ograve Ntilde.unic Idieresis Icircumflex Iacute Igrave Edieresis.unic Ecircumflex.unic Eacute.unic Egrave.unic Ccedilla Aringacute.unic Aring.unic Adieresis.unic Atilde.unic Acircumflex.unic Aacute.unic Agrave.unic Tbar Eth Dcroat Thorn Oslash Hbar Eng Oslashacute Wgrave Wacute Wdieresis Ygrave];
 @unicase2_l = [ A E M N U Udieresis Uogonek Uhungarumlaut Uring Ubreve Umacron Utilde Ncaron Ncommaaccent Nacute Ecaron Eogonek Edotaccent Ebreve Emacron Aogonek Abreve Amacron Uacute Ugrave Ntilde Edieresis Ecircumflex Eacute Egrave Aringacute Aring Adieresis Atilde Acircumflex Aacute Agrave];
 @unicase2_r = [ A.unic E.unic M.unic N.unic U.unic Udieresis.unic Uogonek.unic Uhungarumlaut.unic Uring.unic Ubreve.unic Umacron.unic Utilde.unic Ncaron.unic Ncommaaccent.unic Nacute.unic Ecaron.unic Eogonek.unic Edotaccent.unic Ebreve.unic Emacron.unic Aogonek.unic Abreve.unic Amacron.unic Uacute.unic Ugrave.unic Ntilde.unic Edieresis.unic Ecircumflex.unic Eacute.unic Egrave.unic Aringacute.unic Aring.unic Adieresis.unic Atilde.unic Acircumflex.unic Aacute.unic Agrave.unic];
+@unicase3_l = [ ae oe aeacute ij uni0163 uni010B uni0121 uni0219 ];
+@unicase3_r = [ AE OE AEacute IJ uni0162 uni010A uni0120 uni0218 ];
 
 @ccmp_acc = [ gravecomb acutecomb tildecomb brevetildecomb brevehookcomb breveacutecomb circumflextildecomb circumflexhookcomb circumflexgravecomb circumflexacutecomb brevegravecomb macroncomb commaaboverightcomb dieresismacroncomb dieresisacutecomb dieresiscaroncomb dieresisgravecomb dotmacroncomb tildeacutecomb macrongravecomb macronacutecomb macrondieresiscomb acutedotcomb carondotcomb tildemacroncomb tildedieresiscomb circumflexnosp overscorenosp brevenosp dotnosp dieresisnosp hook ringnosp acutedblnosp uni030C linevertnosp linevertdblnosp uni030F candrabindunosp breveinvnosp commaturnsupnosp uni0313 commasuprevnosp uni0315 anglesupnosp hornnosp xsupnosp tildevertsupnosp overscoredblnosp graveleftnosp acuterightnosp uni0342 uni0343 diaeresistonosnosp uni0346 uni034A uni034B uni034C uni0350 uni0351 uni0352 uni0357 uni0358 uni035B tildecomb_uni1ABB tildecomb_uni1ABC macroncomb_uni1ABB dieresisnosp_uni1ABB uni030C_uni1ABB uni1AB0 uni1AB1 uni1AB2 uni1AB3 uni1AB4 uni1DC0 uni1DC1 uni1DC3 uni1DC4 uni1DC5 uni1DC6 uni1DC7 uni1DC8 uni1DC9 uni1DCB uni1DCC uni1DCD uni1DCE uni1DD1 uni1DD2 uni1DD3 uni1DD4 uni1DD5 uni1DD6 uni1DD7 uni1DD8 uni1DD9 uni1DDA uni1DDB uni1DDC uni1DDD uni1DDE uni1DDF uni1DE0 uni1DE1 uni1DE2 uni1DE3 uni1DE4 uni1DE5 uni1DE6 uni1DE7 uni1DE8 uni1DE9 uni1DEA uni1DEB uni1DEC uni1DED uni1DEE uni1DEF uni1DF0 uni1DF1 uni1DF2 uni1DF3 uni1DF4 uni1DF5 uni1DFE uni0363 uni0364 uni0365 uni0366 uni0367 uni0368 uni0369 uni036A uni036B uni036C uni036D uni036E uni036F uni0483 uni0484 uni0485 uni0486 uni0487 uni20F0 uniA66F uniA674 uniA675 uniA676 uniA677 uniA678 uniA679 uniA67A uniA67B uniA67C uniA67D uniA69F uni2DE0 uni2DE1 uni2DE2 uni2DE3 uni2DE4 uni2DE5 uni2DE6 uni2DE7 uni2DE8 uni2DE9 uni2DEA uni2DEB uni2DEC uni2DED uni2DEE uni2DEF uni2DF0 uni2DF1 uni2DF2 uni2DF3 uni2DF4 uni2DF5 uni2DF6 uni2DF7 uni2DF8 uni2DF9 uni2DFA uni2DFB uni2DFC uni2DFD uni2DFE uni2DFF uni1ABB uni1ABC uni20DC uniFE20 uniFE21 uniFE22 uniFE23 uniFE24 uniFE25 uniFE26];
 
@@ -49,10 +62,13 @@ feature c2sc {
   sub @UC_ROMAN by @SC_ROMAN;
   sub @UC_SET1 by @SC_SET1;
   sub @UC_SET3 by @SC_SET3;
+  sub @UC_SET4 by @SC_SET4;
   sub Germandbls by Germandbls.smcp;
   sub [zero one two three four five six seven eight nine ampersand] by [zero.smcp one.smcp two.smcp three.smcp four.smcp five.smcp six.smcp seven.smcp eight.smcp nine.smcp ampersand.smcp];
   sub [AE Hbar Oslash Lslash Eng Thorn] by [AE.smcp Hbar.smcp Oslash.smcp Lslash.smcp Eng.smcp Thorn.smcp];
-  sub [IJ AEacute Oslashacute uni0218 Wgrave Wacute Wdieresis Ygrave] by [IJ.smcp AEacute.smcp Oslashacute.smcp Scommaaccent.smcp Wgrave.smcp Wacute.smcp Wdieresis.smcp Ygrave.smcp];
+  sub [IJ AEacute Oslashacute Wgrave Wacute Wdieresis Ygrave] by [IJ.smcp AEacute.smcp Oslashacute.smcp Wgrave.smcp Wacute.smcp Wdieresis.smcp Ygrave.smcp];
+  sub uni0218 by Scommaaccent.smcp;
+  sub uni021A by Tcommaaccent.smcp;
 } c2sc;
 
 
@@ -60,15 +76,21 @@ feature smcp {
   sub @LC_ROMAN by @SC_ROMAN;
   sub @LC_SET2 by @SC_SET2;
   sub @LC_SET3 by @SC_SET3;
-  sub [germandbls ampersand sigma1] by [Germandbls.smcp ampersand.smcp Sigma.smcp];
+  sub @LC_SET4 by @SC_SET4;
+  sub @LC_SET5 by @SC_SET5;
+  sub [germandbls sigma1] by [Germandbls.smcp Sigma.smcp];
   sub [ae hbar oslash lslash eng thorn] by [AE.smcp Hbar.smcp Oslash.smcp Lslash.smcp Eng.smcp Thorn.smcp];
-  sub [ij aeacute oslashacute uni0219 wgrave wacute wdieresis ygrave] by [IJ.smcp AEacute.smcp Oslashacute.smcp Scommaaccent.smcp Wgrave.smcp Wacute.smcp Wdieresis.smcp Ygrave.smcp];
+  sub [ij aeacute oslashacute wgrave wacute wdieresis ygrave] by [IJ.smcp AEacute.smcp Oslashacute.smcp Wgrave.smcp Wacute.smcp Wdieresis.smcp Ygrave.smcp];
+  sub ampersand by ampersand.smcp;
+  sub uni0219 by Scommaaccent.smcp;
+  sub uni021B by Tcommaaccent.smcp;
 } smcp;
 
 
 feature unic {
   sub @unicase_l by @unicase_r ;
   sub @unicase2_l by @unicase2_r ;
+  sub @unicase3_l by @unicase3_r ;
 } unic;