* are then used to create 'cvXX' features and grouped into 'ssXX'
* features.
*/
-#define CV12(VAR2) VAR2("comma", ".left")
-#define CV14(VAR2) VAR2("period", ".large")
-#define CV26(VAR2) VAR2("colon", ".leftsmall")
-#define CV27(VAR2) VAR2("semicolon", ".left")
-#define CV31(VAR2) VAR2("question", ".open") VAR2("questiondown", ".open") \
- VAR2("uni2E2E", ".open")
-#define CV38(VAR3) VAR3("D", ".serif", ".narrow") \
- VAR3("D.c2sc", ".serif", ".narrow") VAR3("d.sc", ".serif", ".narrow") \
- VAR3("Eth", ".serif", "") \
- VAR3("Eth.c2sc", ".serif", "") VAR3("eth.sc", ".serif", "") \
- VAR3("Dcaron", ".serif", ".narrow") \
- VAR3("dcaron.sc", ".serif", ".narrow") VAR3("Dcroat", ".serif", "") \
- VAR3("Dcroat.c2sc", ".serif", "") VAR3("dcroat.sc", ".serif", "") \
- VAR3("uni1D05", ".serif", ".narrow") VAR3("uni1D06", ".serif", "") \
- VAR3("uni1E0A", ".serif", ".narrow") \
- VAR3("uni1E0B.sc", ".serif", ".narrow") \
- VAR3("uni1E0C", ".serif", ".narrow") \
- VAR3("uni1E0C.c2sc", ".serif", ".narrow") \
- VAR3("uni1E0D.sc", ".serif", ".narrow") \
- VAR3("uni1E0E", ".serif", ".narrow") \
- VAR3("uni1E0E.c2sc", ".serif", ".narrow") \
- VAR3("uni1E0F.sc", ".serif", ".narrow") \
- VAR3("uni1E10", ".serif", ".narrow") \
- VAR3("uni1E10.angular", ".serif", ".narrow") \
- VAR3("uni1E10.c2sc", ".serif", ".narrow") \
- VAR3("uni1E10.c2sc.angular", ".serif", ".narrow") \
- VAR3("uni1E11.sc", ".serif", ".narrow") \
- VAR3("uni1E11.sc.angular", ".serif", ".narrow") \
- VAR3("uni1E12", ".serif", ".narrow") \
- VAR3("uni1E12.c2sc", ".serif", ".narrow") \
- VAR3("uni1E13.sc", ".serif", ".narrow")
-#define CV42(VAR2) VAR2("J", ".narrow") VAR2("J.c2sc", ".narrow") \
- VAR2("j.sc", ".narrow") VAR2("uni1D0A", ".narrow")
-#define CV44(VAR2) VAR2("L", ".narrow") VAR2("L.c2sc", ".narrow") \
- VAR2("l.sc", ".narrow") VAR2("Lcaron", ".narrow") \
- VAR2("Lcaron.c2sc", ".narrow") VAR2("lcaron.sc", ".narrow") \
- VAR2("Ldot", ".narrow") VAR2("Ldot.c2sc", ".narrow") \
- VAR2("ldot.sc", ".narrow") VAR2("uni029F", ".narrow")
-#define CV61(VAR2) VAR2("ugrave",".roundjoined")
-#define CV74(VAR2) VAR2("j", ".serif") VAR2("ij", ".serif") \
- VAR2("jcircumflex", ".serif") VAR2("uni01F0", ".serif") \
- VAR2("uni0237", ".serif") VAR2("uni029D", ".serif")
-#define CV79(VAR2) VAR2("ograve", ".large") VAR2("oacute", ".large") \
- VAR2("ocircumflex", ".large") VAR2("otilde", ".large") \
- VAR2("odieresis", ".large") VAR2("omacron", ".large")
-#define CV84(VAR2) VAR2("t", ".small") VAR2("uni0163", ".small") \
- VAR2("uni0163.angular", ".small") \
- VAR2("tcaron", ".small") VAR2("tbar", ".small") \
- VAR2("uni01AB", ".small") VAR2("uni0287", ".small") \
- VAR2("uni0288", ".small") VAR2("uni02A6", ".small") \
- VAR2("uni02A7", ".small") VAR2("uni1E6D", ".small") \
- VAR2("uni1E6F", ".small") VAR2("uni1E71", ".small") \
- VAR2("uni1E97", ".small")
-#define CV96(VAR2) VAR2("cedilla", ".angular") \
- VAR2("ccedilla", ".angular") VAR2("ccedilla.sc", ".angular") \
- VAR2("Ccedilla", ".angular") VAR2("Ccedilla.c2sc", ".angular") \
- VAR2("Scedilla", ".angular") VAR2("Scedilla.c2sc", ".angular") \
- VAR2("scedilla", ".angular") \
- VAR2("uni0162", ".angular") VAR2("uni0162.c2sc", ".angular") \
- VAR2("uni0163", ".angular") VAR2("uni0163.small", ".angular") \
- VAR2("uni0163.sc", ".angular") \
- VAR2("uni1E08", ".angular") \
- VAR2("uni1E09", ".angular") VAR2("uni1E09.sc", ".angular") \
- VAR2("uni1E10", ".angular") VAR2("uni1E10.serif", ".angular") \
- VAR2("uni1E10.narrow", ".angular") VAR2("uni1E10.c2sc", ".angular") \
- VAR2("uni1E10.c2sc.serif", ".angular") \
- VAR2("uni1E10.c2sc.narrow", ".angular") \
- VAR2("uni1E11", ".angular") VAR2("uni1E11.sc", ".angular") \
- VAR2("uni1E11.sc.serif", ".angular") \
- VAR2("uni1E11.sc.narrow", ".angular") \
- VAR2("uni1E28", ".angular") VAR2("uni1E28.c2sc", ".angular") \
- VAR2("uni1E29", ".angular") VAR2("uni1E29.sc", ".angular")
+#define CV12(V) V("comma", ".left")
+#define CV14(V) V("period", ".large")
+#define CV26(V) V("colon", ".leftsmall")
+#define CV27(V) V("semicolon", ".left")
+#define CV31(V) V("question", ".open") V("questiondown", ".open") \
+ V("uni2E2E", ".open")
+#define CV38(V) V("D", ".serif", ".narrow") \
+ V("D.c2sc", ".serif", ".narrow") V("d.sc", ".serif", ".narrow") \
+ V("Eth", ".serif", "") \
+ V("Eth.c2sc", ".serif", "") V("eth.sc", ".serif", "") \
+ V("Dcaron", ".serif", ".narrow") \
+ V("dcaron.sc", ".serif", ".narrow") V("Dcroat", ".serif", "") \
+ V("Dcroat.c2sc", ".serif", "") V("dcroat.sc", ".serif", "") \
+ V("uni1D05", ".serif", ".narrow") V("uni1D06", ".serif", "") \
+ V("uni1E0A", ".serif", ".narrow") \
+ V("uni1E0B.sc", ".serif", ".narrow") \
+ V("uni1E0C", ".serif", ".narrow") \
+ V("uni1E0C.c2sc", ".serif", ".narrow") \
+ V("uni1E0D.sc", ".serif", ".narrow") \
+ V("uni1E0E", ".serif", ".narrow") \
+ V("uni1E0E.c2sc", ".serif", ".narrow") \
+ V("uni1E0F.sc", ".serif", ".narrow") \
+ V("uni1E10", ".serif", ".narrow") \
+ V("uni1E10.angular", ".serif", ".narrow") \
+ V("uni1E10.c2sc", ".serif", ".narrow") \
+ V("uni1E10.c2sc.angular", ".serif", ".narrow") \
+ V("uni1E11.sc", ".serif", ".narrow") \
+ V("uni1E11.sc.angular", ".serif", ".narrow") \
+ V("uni1E12", ".serif", ".narrow") \
+ V("uni1E12.c2sc", ".serif", ".narrow") \
+ V("uni1E13.sc", ".serif", ".narrow")
+#define CV42(V) V("J", ".narrow") V("J.c2sc", ".narrow") \
+ V("j.sc", ".narrow") V("uni1D0A", ".narrow")
+#define CV44(V) V("L", ".narrow") V("L.c2sc", ".narrow") \
+ V("l.sc", ".narrow") V("Lcaron", ".narrow") \
+ V("Lcaron.c2sc", ".narrow") V("lcaron.sc", ".narrow") \
+ V("Ldot", ".narrow") V("Ldot.c2sc", ".narrow") \
+ V("ldot.sc", ".narrow") V("uni029F", ".narrow")
+#define CV61(V) V("ugrave",".roundjoined")
+#define CV74(V) V("j", ".serif") V("ij", ".serif") \
+ V("jcircumflex", ".serif") V("uni01F0", ".serif") \
+ V("uni0237", ".serif") V("uni029D", ".serif")
+#define CV79(V) V("ograve", ".large") V("oacute", ".large") \
+ V("ocircumflex", ".large") V("otilde", ".large") \
+ V("odieresis", ".large") V("omacron", ".large")
+#define CV84(V) V("t", ".small") V("uni0163", ".small") \
+ V("uni0163.angular", ".small") \
+ V("tcaron", ".small") V("tbar", ".small") \
+ V("uni01AB", ".small") V("uni0287", ".small") \
+ V("uni0288", ".small") V("uni02A6", ".small") \
+ V("uni02A7", ".small") V("uni1E6D", ".small") \
+ V("uni1E6F", ".small") V("uni1E71", ".small") \
+ V("uni1E97", ".small")
+#define CV96(V) V("cedilla", ".angular") \
+ V("ccedilla", ".angular") V("ccedilla.sc", ".angular") \
+ V("Ccedilla", ".angular") V("Ccedilla.c2sc", ".angular") \
+ V("Scedilla", ".angular") V("Scedilla.c2sc", ".angular") \
+ V("scedilla", ".angular") \
+ V("uni0162", ".angular") V("uni0162.c2sc", ".angular") \
+ V("uni0163", ".angular") V("uni0163.small", ".angular") \
+ V("uni0163.sc", ".angular") \
+ V("uni1E08", ".angular") \
+ V("uni1E09", ".angular") V("uni1E09.sc", ".angular") \
+ V("uni1E10", ".angular") V("uni1E10.serif", ".angular") \
+ V("uni1E10.narrow", ".angular") V("uni1E10.c2sc", ".angular") \
+ V("uni1E10.c2sc.serif", ".angular") \
+ V("uni1E10.c2sc.narrow", ".angular") \
+ V("uni1E11", ".angular") V("uni1E11.sc", ".angular") \
+ V("uni1E11.sc.serif", ".angular") \
+ V("uni1E11.sc.narrow", ".angular") \
+ V("uni1E28", ".angular") V("uni1E28.c2sc", ".angular") \
+ V("uni1E29", ".angular") V("uni1E29.sc", ".angular")
static struct gsub_feature {
char const *tag;