* Define all the Character Variant features using X macros. These
* are then used to create 'cvXX' features and grouped into 'ssXX'
* features.
+ *
+ * Where possible, Character Variant features have numbers that are 32
+ * less than the ASCII code of the base character.
*/
#define CV07(V) V("quotesingle", ".curly")
#define CV12(V) V("comma", ".left")
#define SUFFIXSUB1(base, suffix1, ...) SUB(base, base suffix1)
#define SUFFIXSUB2(base, suffix1, suffix2, ...) SUB(base, base suffix2)
#define SINGLESUB(x) "<SingleSubst>\n" x "</SingleSubst>\n"
+ /*
+ * Each stylistic set is defined as a set of character variant
+ * feature values using the CVxx() macros defined above.
+ */
{ "ss01", SCRIPT_ALL, .name = "SAA5051",
.xml = SINGLESUB(CV07(SUFFIXSUB1) CV12(SUFFIXSUB1)
CV14(SUFFIXSUB1) CV26(SUFFIXSUB1)
#define CV3(base, a, b) CROSSALT3(base, base a, base b)
#define CV(...) GET_MACRO(__VA_ARGS__, CV3, CV2)(__VA_ARGS__)
/*
- * Where possible, Character Variant features have numbers
- * that are 32 less than the ASCII code of the base character.
+ * These construct the character-variant features out of the
+ * CVxx() macros above.
*/
{ "cv07", SCRIPT_ALL, .name = "apostrophe variants",
.subnames = { "straight", "curly" },