chiark / gitweb /
Change TTXI etc macros to take XML tag name as a string
authorBen Harris <bjh21@bjh21.me.uk>
Fri, 8 Nov 2024 00:41:20 +0000 (00:41 +0000)
committerBen Harris <bjh21@bjh21.me.uk>
Thu, 14 Nov 2024 22:27:18 +0000 (22:27 +0000)
Stringifying it from a C token may have been more compact, but it was
also quite confusing because those really weren't C identifiers and
everywhere else XML appears in strings.

bedstead.c

index 7209cb1b5226a088cd9f220f1d8f14173c65cadd..9f6c8091ddd6a1d044e13ee3e9e74dfa2eaec341 100644 (file)
@@ -2894,104 +2894,104 @@ main(int argc, char **argv)
        printf("<ttFont sfntVersion='OTTO'>\n");
 /* Convenient macros for TTX values. */
 #define TTXF(key, format, ...) \
-    printf("  <" #key " value='" format "'/>\n", __VA_ARGS__)
+    printf("  <" key " value='" format "'/>\n", __VA_ARGS__)
 #define TTXI(key, i) TTXF(key, "%ld", (long)(i))
 #define TTXS(key, s) TTXF(key, "%s", (s))
        printf(" <head>\n");
-       TTXS(tableVersion, "1.0");
-       TTXS(fontRevision, VERSION);
-       TTXI(checkSumAdjustment, 0);
-       TTXI(magicNumber, 0x5f0f3cf5);
+       TTXS("tableVersion", "1.0");
+       TTXS("fontRevision", VERSION);
+       TTXI("checkSumAdjustment", 0);
+       TTXI("magicNumber", 0x5f0f3cf5);
        /*
         * Flags:
         *  Baseline and left sidebearing point at (0,0)
         *  Force ppem to integer
         */
-       TTXS(flags, "00000000 00001011");
-       TTXI(unitsPerEm, YSIZE * YPIX);
+       TTXS("flags", "00000000 00001011");
+       TTXI("unitsPerEm", YSIZE * YPIX);
        if ((timestr = time_for_ttx()) == NULL) return 1;
-       TTXS(created, timestr);
-       TTXS(modified, timestr);
-       TTXI(xMin, 0);
-       TTXI(yMin, -DESCENT * YPIX);
-       TTXI(xMax, XSIZE * XPIX);
-       TTXI(yMax, ASCENT * YPIX);
-       TTXF(macStyle, "00000000 0%c%c000%c",
+       TTXS("created", timestr);
+       TTXS("modified", timestr);
+       TTXI("xMin", 0);
+       TTXI("yMin", -DESCENT * YPIX);
+       TTXI("xMax", XSIZE * XPIX);
+       TTXI("yMax", ASCENT * YPIX);
+       TTXF("macStyle", "00000000 0%c%c000%c",
               width->ttfwidth > 5 ? '1' : '0', /* Expanded? */
               width->ttfwidth < 5 ? '1' : '0', /* Condensed? */
               weight->ttfweight > 500 ? '1' : '0'); /* Bold? */
-       TTXI(lowestRecPPEM, YSIZE);
-       TTXI(fontDirectionHint, 0); /* Fully bi-di. */
-       TTXI(indexToLocFormat, 0);
-       TTXI(glyphDataFormat, 0);
+       TTXI("lowestRecPPEM", YSIZE);
+       TTXI("fontDirectionHint", 0); /* Fully bi-di. */
+       TTXI("indexToLocFormat", 0);
+       TTXI("glyphDataFormat", 0);
        printf(" </head>\n");
 
        printf(" <hhea>\n");
-       TTXS(tableVersion, "0x00010000");
-       TTXI(ascent, ASCENT * YPIX);
-       TTXI(descent, -DESCENT * YPIX);
-       TTXI(lineGap, 0);
-       TTXI(advanceWidthMax, XSIZE * XPIX);
-       TTXI(minLeftSideBearing, 0);
-       TTXI(minRightSideBearing, 0);
-       TTXI(xMaxExtent, XSIZE * XPIX);
-       TTXI(caretSlopeRise, 1); TTXI(caretSlopeRun, 0);
-       TTXI(caretOffset, 0);
-       TTXI(reserved0, 0); TTXI(reserved1, 0);
-       TTXI(reserved2, 0); TTXI(reserved3, 0);
-       TTXI(metricDataFormat, 0);
-       TTXI(numberOfHMetrics, 0); /* Will be calculated by TTX. */
+       TTXS("tableVersion", "0x00010000");
+       TTXI("ascent", ASCENT * YPIX);
+       TTXI("descent", -DESCENT * YPIX);
+       TTXI("lineGap", 0);
+       TTXI("advanceWidthMax", XSIZE * XPIX);
+       TTXI("minLeftSideBearing", 0);
+       TTXI("minRightSideBearing", 0);
+       TTXI("xMaxExtent", XSIZE * XPIX);
+       TTXI("caretSlopeRise", 1); TTXI("caretSlopeRun", 0);
+       TTXI("caretOffset", 0);
+       TTXI("reserved0", 0); TTXI("reserved1", 0);
+       TTXI("reserved2", 0); TTXI("reserved3", 0);
+       TTXI("metricDataFormat", 0);
+       TTXI("numberOfHMetrics", 0); /* Will be calculated by TTX. */
        printf(" </hhea>\n");
 
        printf(" <maxp>\n");
-       TTXS(tableVersion, "0x5000");
-       TTXI(numGlyphs, nglyphs);
+       TTXS("tableVersion", "0x5000");
+       TTXI("numGlyphs", nglyphs);
        printf(" </maxp>\n");
 
        printf(" <OS_2>\n");
-       TTXI(version, 4);
-       TTXI(xAvgCharWidth, XSIZE * XPIX);
-       TTXI(usWeightClass, weight->ttfweight);
-       TTXI(usWidthClass, width->ttfwidth);
-       TTXS(fsType, "00000000 00000000");
+       TTXI("version", 4);
+       TTXI("xAvgCharWidth", XSIZE * XPIX);
+       TTXI("usWeightClass", weight->ttfweight);
+       TTXI("usWidthClass", width->ttfwidth);
+       TTXS("fsType", "00000000 00000000");
        /* Sub/Superscript are three by five pixels */
-       TTXI(ySubscriptXSize, YSIZE * YPIX * 3 / (XSIZE - 1));
-       TTXI(ySubscriptYSize, YSIZE * YPIX * 5 / (YSIZE - 3));
-       TTXI(ySubscriptXOffset, 0);
-       TTXI(ySubscriptYOffset, 2 * YPIX);
-       TTXI(ySuperscriptXSize, YSIZE * YPIX * 3 / (XSIZE - 1));
-       TTXI(ySuperscriptYSize, YSIZE * YPIX * 5 / (YSIZE - 3));
-       TTXI(ySuperscriptXOffset, 0);
-       TTXI(ySuperscriptYOffset, 2 * YPIX);
-       TTXI(yStrikeoutSize, YPIX);
-       TTXI(yStrikeoutPosition, 3 * YPIX);
-       TTXI(sFamilyClass, 0x080a);
+       TTXI("ySubscriptXSize", YSIZE * YPIX * 3 / (XSIZE - 1));
+       TTXI("ySubscriptYSize", YSIZE * YPIX * 5 / (YSIZE - 3));
+       TTXI("ySubscriptXOffset", 0);
+       TTXI("ySubscriptYOffset", 2 * YPIX);
+       TTXI("ySuperscriptXSize", YSIZE * YPIX * 3 / (XSIZE - 1));
+       TTXI("ySuperscriptYSize", YSIZE * YPIX * 5 / (YSIZE - 3));
+       TTXI("ySuperscriptXOffset", 0);
+       TTXI("ySuperscriptYOffset", 2 * YPIX);
+       TTXI("yStrikeoutSize", YPIX);
+       TTXI("yStrikeoutPosition", 3 * YPIX);
+       TTXI("sFamilyClass", 0x080a);
        dopanose();
        /* XXX These were generated by FontForge and should be checked. */
-       TTXS(ulUnicodeRange1, "10100000 00000000 00001010 10111111");
-       TTXS(ulUnicodeRange2, "01010010 00000000 11111001 11111011");
-       TTXS(ulUnicodeRange3, "00000011 00000000 00000000 00110000");
-       TTXS(ulUnicodeRange4, "00000000 00000000 00000010 00000000");
-       TTXS(achVendID, "PfEd");
-       TTXF(fsSelection, "00000001 1%c%c00000",
+       TTXS("ulUnicodeRange1", "10100000 00000000 00001010 10111111");
+       TTXS("ulUnicodeRange2", "01010010 00000000 11111001 11111011");
+       TTXS("ulUnicodeRange3", "00000011 00000000 00000000 00110000");
+       TTXS("ulUnicodeRange4", "00000000 00000000 00000010 00000000");
+       TTXS("achVendID", "PfEd");
+       TTXF("fsSelection", "00000001 1%c%c00000",
               /* Fixed: use typo metrics; WWS */
               weight->ttfweight == 500 && width->ttfwidth == 5 ? '1' : '0',
               weight->ttfweight > 500 ? '1' : '0'); /* Bold? */
-       TTXI(usFirstCharIndex, 32);
-       TTXI(usLastCharIndex, 65535);
-       TTXI(sTypoAscender, ASCENT * YPIX);
-       TTXI(sTypoDescender, -DESCENT * YPIX);
-       TTXI(sTypoLineGap, 0);
-       TTXI(usWinAscent, ASCENT * YPIX);
-       TTXI(usWinDescent, DESCENT * YPIX);
+       TTXI("usFirstCharIndex", 32);
+       TTXI("usLastCharIndex", 65535);
+       TTXI("sTypoAscender", ASCENT * YPIX);
+       TTXI("sTypoDescender", -DESCENT * YPIX);
+       TTXI("sTypoLineGap", 0);
+       TTXI("usWinAscent", ASCENT * YPIX);
+       TTXI("usWinDescent", DESCENT * YPIX);
        /* XXX These were generated by FontForge and should be checked. */
-       TTXS(ulCodePageRange1, "01100000 00000000 00000000 00111111");
-       TTXS(ulCodePageRange2, "11010111 11110111 00000000 00000000");
-       TTXI(sxHeight, XHEIGHT * YPIX);
-       TTXI(sCapHeight, CAPHEIGHT * YPIX);
-       TTXI(usDefaultChar, 0);
-       TTXI(usBreakChar, 32);
-       TTXI(usMaxContext, 1); /* No pair subs. */
+       TTXS("ulCodePageRange1", "01100000 00000000 00000000 00111111");
+       TTXS("ulCodePageRange2", "11010111 11110111 00000000 00000000");
+       TTXI("sxHeight", XHEIGHT * YPIX);
+       TTXI("sCapHeight", CAPHEIGHT * YPIX);
+       TTXI("usDefaultChar", 0);
+       TTXI("usBreakChar", 32);
+       TTXI("usMaxContext", 1); /* No pair subs. */
        printf(" </OS_2>\n");
 
        printf(" <name>\n");
@@ -3044,43 +3044,43 @@ main(int argc, char **argv)
        printf(" </cmap>\n");
 
        printf(" <post>\n");
-       TTXS(formatType, "3.0");
-       TTXS(italicAngle, "0.0");
-       TTXI(underlinePosition, -YPIX);
-       TTXI(underlineThickness, YPIX);
-       TTXI(isFixedPitch, 1);
-       TTXI(minMemType42, 0); TTXI(maxMemType42, 0);
-       TTXI(minMemType1, 0); TTXI(maxMemType1, 0);
+       TTXS("formatType", "3.0");
+       TTXS("italicAngle", "0.0");
+       TTXI("underlinePosition", -YPIX);
+       TTXI("underlineThickness", YPIX);
+       TTXI("isFixedPitch", 1);
+       TTXI("minMemType42", 0); TTXI("maxMemType42", 0);
+       TTXI("minMemType1", 0); TTXI("maxMemType1", 0);
        printf(" </post>\n");
 
        printf(" <CFF>\n");
-       TTXI(major, 1); TTXI(minor, 0);
+       TTXI("major", 1); TTXI("minor", 0);
        printf("  <CFFFont name='%s'>\n",
               fullname_to_fontname(get_fullname()));
-       TTXS(version, VERSION);
-       TTXS(Notice, "Dedicated to the public domain");
-       TTXS(FullName, get_fullname());
-       TTXS(FamilyName, "Bedstead");
-       TTXS(Weight, *weight->suffix ? weight->suffix + 1 : "Medium");
-       TTXI(isFixedPitch, 1);
-       TTXI(UnderlinePosition, -3 * YPIX / 2);
-       TTXI(UnderlineThickness, YPIX);
-       TTXF(FontMatrix, "%g 0 0 %g 0 0",
+       TTXS("version", VERSION);
+       TTXS("Notice", "Dedicated to the public domain");
+       TTXS("FullName", get_fullname());
+       TTXS("FamilyName", "Bedstead");
+       TTXS("Weight", *weight->suffix ? weight->suffix + 1 : "Medium");
+       TTXI("isFixedPitch", 1);
+       TTXI("UnderlinePosition", -3 * YPIX / 2);
+       TTXI("UnderlineThickness", YPIX);
+       TTXF("FontMatrix", "%g 0 0 %g 0 0",
             1.0/(YSIZE * YPIX), 1.0/(YSIZE * YPIX));
-       TTXF(FontBBox, "0 %d %d %d", (int)(-DESCENT * YPIX),
+       TTXF("FontBBox", "0 %d %d %d", (int)(-DESCENT * YPIX),
             (int)(XSIZE * XPIX), (int)(ASCENT * YPIX));
        printf("   <Private>\n");
-       TTXF(BlueValues, "0 0 %4g %4g %4g %4g %4g %4g",
+       TTXF("BlueValues", "0 0 %4g %4g %4g %4g %4g %4g",
             (double)(YPIX * 5), (double)(YPIX * 5),
             (double)(YPIX * 6), (double)(YPIX * 6),
             (double)(YPIX * 7), (double)(YPIX * 7));
-       TTXF(OtherBlues, "%4g %4g %4g %4g",
+       TTXF("OtherBlues", "%4g %4g %4g %4g",
             (double)(YPIX * -2), (double)(YPIX * -2),
             (double)(YPIX * 1), (double)(YPIX * 1));
-       TTXI(BlueFuzz, 0);
-       TTXF(StdHW, "%4g", (double)YPIX);
-       TTXF(StdVW, "%4g", (double)(XPIX * (100 + weight->weight) / 100));
-       TTXI(defaultWidthX, XSIZE * XPIX);
+       TTXI("BlueFuzz", 0);
+       TTXF("StdHW", "%4g", (double)YPIX);
+       TTXF("StdVW", "%4g", (double)(XPIX * (100 + weight->weight) / 100));
+       TTXI("defaultWidthX", XSIZE * XPIX);
        /* if (plottermode) { */
        /*      printf("StrokedFont: 1\n"); */
        /*      printf("StrokeWidth: 50\n"); */
@@ -3311,16 +3311,16 @@ dogsub(void)
        int i, j;
 
        printf(" <GSUB>\n");
-       TTXS(Version, "0x00010000");
+       TTXS("Version", "0x00010000");
        printf("  <ScriptList>\n");
        for (i = 0; i < ngsub_scripts; i++) {
                printf("   <ScriptRecord>\n");
-               TTXS(ScriptTag, gsub_scripts[i].tag);
+               TTXS("ScriptTag", gsub_scripts[i].tag);
                printf("    <Script><DefaultLangSys>\n");
-               TTXI(ReqFeatureIndex, 0xffff); /* No required feature. */
+               TTXI("ReqFeatureIndex", 0xffff); /* No required feature. */
                for (j = 0; j < ngsub_features; j++)
                        if (gsub_features[j].scripts & gsub_scripts[i].flag)
-                               TTXI(FeatureIndex, j);
+                               TTXI("FeatureIndex", j);
                printf("    </DefaultLangSys></Script>\n");
                printf("   </ScriptRecord>\n");
        }
@@ -3328,16 +3328,16 @@ dogsub(void)
        printf("  <FeatureList>\n");
        for (i = 0; i < ngsub_features; i++) {
                printf("    <FeatureRecord>\n");
-               TTXS(FeatureTag, gsub_features[i].tag);
+               TTXS("FeatureTag", gsub_features[i].tag);
                printf("     <Feature>\n");
                if (gsub_features[i].name != NULL) {
                        printf("      <FeatureParamsStylisticSet>\n");
-                       TTXI(Version, 0);
-                       TTXI(UINameID, NAMEBASE_GSUB + i);
+                       TTXI("Version", 0);
+                       TTXI("UINameID", NAMEBASE_GSUB + i);
                        printf("      </FeatureParamsStylisticSet>\n");
                }
                /* We only have one GSUB lookup per feature, thankfully. */
-               TTXI(LookupListIndex, i);
+               TTXI("LookupListIndex", i);
                printf("     </Feature>\n");
                printf("    </FeatureRecord>\n");
        }
@@ -3347,14 +3347,14 @@ dogsub(void)
                printf("    <Lookup>\n");
                if (gsub_features[i].suffix == NULL) {
                        /* This is 'aalt' */
-                       TTXI(LookupType, 3);
-                       TTXI(LookupFlag, 0);
+                       TTXI("LookupType", 3);
+                       TTXI("LookupFlag", 0);
                        printf("     <AlternateSubst>\n");
                        doaltsubs();
                        printf("     </AlternateSubst>\n");
                } else {
-                       TTXI(LookupType, 1);
-                       TTXI(LookupFlag, 0);
+                       TTXI("LookupType", 1);
+                       TTXI("LookupFlag", 0);
                        printf("     <SingleSubst>\n");
                        dosinglesubs(gsub_features[i].suffix);
                        printf("     </SingleSubst>\n");
@@ -3415,28 +3415,28 @@ dogpos(void)
 
        /* We only support one 'GPOS' lookup, 'palt'. */
        printf(" <GPOS>\n");
-       TTXS(Version, "0x00010000");
+       TTXS("Version", "0x00010000");
        printf("  <ScriptList>\n");
        printf("   <ScriptRecord>\n");
-       TTXS(ScriptTag, "DFLT");
+       TTXS("ScriptTag", "DFLT");
        printf("    <Script><DefaultLangSys>\n");
-       TTXI(ReqFeatureIndex, 0xffff); /* No required feature. */
-       TTXI(FeatureIndex, 0);
+       TTXI("ReqFeatureIndex", 0xffff); /* No required feature. */
+       TTXI("FeatureIndex", 0);
        printf("    </DefaultLangSys></Script>\n");
        printf("   </ScriptRecord>\n");
        printf("  </ScriptList>\n");
        printf("  <FeatureList>\n");
        printf("   <FeatureRecord>\n");
-       TTXS(FeatureTag, "palt");
+       TTXS("FeatureTag", "palt");
        printf("    <Feature>\n");
-       TTXI(LookupListIndex, 0);
+       TTXI("LookupListIndex", 0);
        printf("    </Feature>\n");
        printf("   </FeatureRecord>\n");
        printf("  </FeatureList>\n");
        printf("  <LookupList>\n");
        printf("   <Lookup>\n");
-       TTXI(LookupType, 1);
-       TTXI(LookupFlag, 0);
+       TTXI("LookupType", 1);
+       TTXI("LookupFlag", 0);
        printf("   </Lookup>\n");
        printf("  </LookupList>\n");
        printf(" </GPOS>\n");