From: Ben Harris Date: Tue, 14 Jan 2025 23:29:48 +0000 (+0000) Subject: Don't emit multiple subtables for 'cv31' X-Git-Tag: bedstead-3.251~35 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~bjharris/git?a=commitdiff_plain;h=b0f67aa3eff48d769871da07485f7fab2b0c2f98;p=bedstead.git Don't emit multiple subtables for 'cv31' I was accidentally emitting a separate element for each base character, which worked but was unnecessary. A single for the whole lookup will make for a smaller font file and probably faster lookups as well. --- diff --git a/bedstead.c b/bedstead.c index fdf0252..b84b42c 100644 --- a/bedstead.c +++ b/bedstead.c @@ -2777,11 +2777,9 @@ static struct gsub_feature { #define ALT3(a, b, c) ALT1(a) ALT2(b, c) #define ALTSET(g, a) "" a "\n" #define ALTSUB(x) "\n" x "\n" -#define CROSSALT2(a, b) ALTSUB(ALTSET(a, ALT2(a, b)) ALTSET(b, ALT2(a, b))) -#define CROSSALT3(a, b, c) \ - ALTSUB(ALTSET(a, ALT3(a, b, c)) \ - ALTSET(b, ALT3(a, b, c)) \ - ALTSET(c, ALT3(a, b, c))) +#define CROSSALT2(a, b) ALTSET(a, ALT2(a, b)) ALTSET(b, ALT2(a, b)) +#define CROSSALT3(a, b, c) ALTSET(a, ALT3(a, b, c)) ALTSET(b, ALT3(a, b, c)) \ + ALTSET(c, ALT3(a, b, c)) #define CV2(base, a) CROSSALT2(base, base a) #undef VAR2 #define VAR2 CV2 @@ -2790,20 +2788,32 @@ static struct gsub_feature { * Where possible, Character Variant features have numbers * that are 32 less than the ASCII code of the base character. */ - { "cv12", SCRIPT_ALL, .name = "comma variants", .xml = CV12 }, - { "cv14", SCRIPT_ALL, .name = "full-stop variants", .xml = CV14 }, - { "cv26", SCRIPT_ALL, .name = "colon variants", .xml = CV26 }, - { "cv27", SCRIPT_ALL, .name = "semicolon variants", .xml = CV27 }, - { "cv31", SCRIPT_ALL, .name = "question-mark variants", .xml = CV31 }, + { "cv12", SCRIPT_ALL, .name = "comma variants", + .xml = ALTSUB(CV12) }, + { "cv14", SCRIPT_ALL, .name = "full-stop variants", + .xml = ALTSUB(CV14) }, + { "cv26", SCRIPT_ALL, .name = "colon variants", + .xml = ALTSUB(CV26) }, + { "cv27", SCRIPT_ALL, .name = "semicolon variants", + .xml = ALTSUB(CV27) }, + { "cv31", SCRIPT_ALL, .name = "question-mark variants", + .xml = ALTSUB(CV31) }, { "cv38", SCRIPT_ALL, .name = "capital-D variants", - .xml = CV3("D", ".serif", ".narrow") }, - { "cv42", SCRIPT_ALL, .name = "capital-J variants", .xml = CV42 }, - { "cv44", SCRIPT_ALL, .name = "capital-L variants", .xml = CV44 }, - { "cv61", SCRIPT_ALL, .name = "small-u-grave variants", .xml = CV61 }, - { "cv74", SCRIPT_ALL, .name = "small-j variants", .xml = CV74 }, - { "cv79", SCRIPT_ALL, .name = "small-o variants", .xml = CV79 }, - { "cv84", SCRIPT_ALL, .name = "small-t variants", .xml = CV84 }, - { "cv96", SCRIPT_ALL, .name = "cedilla variants", .xml = CV96 }, + .xml = ALTSUB(CV3("D", ".serif", ".narrow")) }, + { "cv42", SCRIPT_ALL, .name = "capital-J variants", + .xml = ALTSUB(CV42) }, + { "cv44", SCRIPT_ALL, .name = "capital-L variants", + .xml = ALTSUB(CV44) }, + { "cv61", SCRIPT_ALL, .name = "small-u-grave variants", + .xml = ALTSUB(CV61) }, + { "cv74", SCRIPT_ALL, .name = "small-j variants", + .xml = ALTSUB(CV74) }, + { "cv79", SCRIPT_ALL, .name = "small-o variants", + .xml = ALTSUB(CV79) }, + { "cv84", SCRIPT_ALL, .name = "small-t variants", + .xml = ALTSUB(CV84) }, + { "cv96", SCRIPT_ALL, .name = "cedilla variants", + .xml = ALTSUB(CV96) }, { "ss14", SCRIPT_ALL, ".sep4", .name = "4-cell separated graphics" }, { "ss16", SCRIPT_ALL, ".sep6", .name = "6-cell separated graphics" }, };