From 0264e16018ee9f80535fc80076417b88ee70cd17 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Sat, 28 Mar 2020 17:00:14 +0000 Subject: [PATCH] Make the 'c2sc' feature work like others Now that we can have aliases, we can arrange that 'smcp' applied to "a", and 'c2sc' applied to "A" give differently-named glyphs that have the same appearance. This means that something attempting to generate Unicode from PostScript will be able to properly distinguish them. It also means that the SC flag can be removed and we can stop making assumptions about case-mapping of glyph names. --- bedstead.c | 59 +++++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/bedstead.c b/bedstead.c index 0817eec..c2f557e 100644 --- a/bedstead.c +++ b/bedstead.c @@ -230,7 +230,6 @@ static struct glyph { int unicode; char const *name; unsigned int flags; -#define SC 0x01 /* Character has a small-caps variant. */ #define MOS 0x02 /* Mosaic graphics character */ #define MOS4 0x04 /* 4-cell mosaic graphics character */ char const *alias_of; @@ -273,32 +272,32 @@ static struct glyph { {{010,004,002,001,002,004,010,000,000}, 0x003e, "greater" }, {{016,021,002,004,004,000,004,000,000}, 0x003f, "question" }, {{016,021,027,025,027,020,016,000,000}, 0x0040, "at" }, - {{004,012,021,021,037,021,021,000,000}, 0x0041, "A", SC }, - {{036,021,021,036,021,021,036,000,000}, 0x0042, "B", SC }, - {{016,021,020,020,020,021,016,000,000}, 0x0043, "C", SC }, - {{036,021,021,021,021,021,036,000,000}, 0x0044, "D", SC }, - {{037,020,020,036,020,020,037,000,000}, 0x0045, "E", SC }, - {{037,020,020,036,020,020,020,000,000}, 0x0046, "F", SC }, - {{016,021,020,020,023,021,017,000,000}, 0x0047, "G", SC }, - {{021,021,021,037,021,021,021,000,000}, 0x0048, "H", SC }, - {{016,004,004,004,004,004,016,000,000}, 0x0049, "I", SC }, - {{001,001,001,001,001,021,016,000,000}, 0x004a, "J", SC }, - {{021,022,024,030,024,022,021,000,000}, 0x004b, "K", SC }, - {{020,020,020,020,020,020,037,000,000}, 0x004c, "L", SC }, - {{021,033,025,025,021,021,021,000,000}, 0x004d, "M", SC }, - {{021,021,031,025,023,021,021,000,000}, 0x004e, "N", SC }, - {{016,021,021,021,021,021,016,000,000}, 0x004f, "O", SC }, - {{036,021,021,036,020,020,020,000,000}, 0x0050, "P", SC }, - {{016,021,021,021,025,022,015,000,000}, 0x0051, "Q", SC }, - {{036,021,021,036,024,022,021,000,000}, 0x0052, "R", SC }, - {{016,021,020,016,001,021,016,000,000}, 0x0053, "S", SC }, - {{037,004,004,004,004,004,004,000,000}, 0x0054, "T", SC }, - {{021,021,021,021,021,021,016,000,000}, 0x0055, "U", SC }, - {{021,021,021,012,012,004,004,000,000}, 0x0056, "V", SC }, - {{021,021,021,025,025,025,012,000,000}, 0x0057, "W", SC }, - {{021,021,012,004,012,021,021,000,000}, 0x0058, "X", SC }, - {{021,021,012,004,004,004,004,000,000}, 0x0059, "Y", SC }, - {{037,001,002,004,010,020,037,000,000}, 0x005a, "Z", SC }, + {{004,012,021,021,037,021,021,000,000}, 0x0041, "A" }, + {{036,021,021,036,021,021,036,000,000}, 0x0042, "B" }, + {{016,021,020,020,020,021,016,000,000}, 0x0043, "C" }, + {{036,021,021,021,021,021,036,000,000}, 0x0044, "D" }, + {{037,020,020,036,020,020,037,000,000}, 0x0045, "E" }, + {{037,020,020,036,020,020,020,000,000}, 0x0046, "F" }, + {{016,021,020,020,023,021,017,000,000}, 0x0047, "G" }, + {{021,021,021,037,021,021,021,000,000}, 0x0048, "H" }, + {{016,004,004,004,004,004,016,000,000}, 0x0049, "I" }, + {{001,001,001,001,001,021,016,000,000}, 0x004a, "J" }, + {{021,022,024,030,024,022,021,000,000}, 0x004b, "K" }, + {{020,020,020,020,020,020,037,000,000}, 0x004c, "L" }, + {{021,033,025,025,021,021,021,000,000}, 0x004d, "M" }, + {{021,021,031,025,023,021,021,000,000}, 0x004e, "N" }, + {{016,021,021,021,021,021,016,000,000}, 0x004f, "O" }, + {{036,021,021,036,020,020,020,000,000}, 0x0050, "P" }, + {{016,021,021,021,025,022,015,000,000}, 0x0051, "Q" }, + {{036,021,021,036,024,022,021,000,000}, 0x0052, "R" }, + {{016,021,020,016,001,021,016,000,000}, 0x0053, "S" }, + {{037,004,004,004,004,004,004,000,000}, 0x0054, "T" }, + {{021,021,021,021,021,021,016,000,000}, 0x0055, "U" }, + {{021,021,021,012,012,004,004,000,000}, 0x0056, "V" }, + {{021,021,021,025,025,025,012,000,000}, 0x0057, "W" }, + {{021,021,012,004,012,021,021,000,000}, 0x0058, "X" }, + {{021,021,012,004,004,004,004,000,000}, 0x0059, "Y" }, + {{037,001,002,004,010,020,037,000,000}, 0x005a, "Z" }, {{017,010,010,010,010,010,017,000,000}, 0x005b, "bracketleft" }, {{000,020,010,004,002,001,000,000,000}, 0x005c, "backslash" }, {{036,002,002,002,002,002,036,000,000}, 0x005d, "bracketright" }, @@ -2119,13 +2118,13 @@ dolookups(struct glyph const *g) if (strcmp((*found)->name + plen, "sc") == 0) printf("Substitution2: \"smcp\" %s\n", (*found)->name); + if (strcmp((*found)->name + plen, "c2sc") == 0) + printf("Substitution2: \"c2sc\" %s\n", + (*found)->name); printf("AlternateSubs2: \"aalt\" %s\n", (*found)->name); } else break; } - if ((g->flags & SC)) - printf("Substitution2: \"%s\" %c%ssc\n", "c2sc", - tolower((unsigned char)prefix[0]), prefix + 1); dopalt(g); } -- 2.30.2