From: Ben Harris Date: Fri, 8 Nov 2024 00:41:20 +0000 (+0000) Subject: Change TTXI etc macros to take XML tag name as a string X-Git-Tag: bedstead-3.246~46 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~bjharris/git?a=commitdiff_plain;h=1055dd31f574477bf0e5d422be143435ddd0e92e;p=bedstead.git Change TTXI etc macros to take XML tag name as a string 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. --- diff --git a/bedstead.c b/bedstead.c index 7209cb1..9f6c809 100644 --- a/bedstead.c +++ b/bedstead.c @@ -2894,104 +2894,104 @@ main(int argc, char **argv) printf("\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(" \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(" \n"); printf(" \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(" \n"); printf(" \n"); - TTXS(tableVersion, "0x5000"); - TTXI(numGlyphs, nglyphs); + TTXS("tableVersion", "0x5000"); + TTXI("numGlyphs", nglyphs); printf(" \n"); printf(" \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(" \n"); printf(" \n"); @@ -3044,43 +3044,43 @@ main(int argc, char **argv) printf(" \n"); printf(" \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(" \n"); printf(" \n"); - TTXI(major, 1); TTXI(minor, 0); + TTXI("major", 1); TTXI("minor", 0); printf(" \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(" \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(" \n"); - TTXS(Version, "0x00010000"); + TTXS("Version", "0x00010000"); printf(" \n"); for (i = 0; i < ngsub_scripts; i++) { printf(" \n"); - TTXS(ScriptTag, gsub_scripts[i].tag); + TTXS("ScriptTag", gsub_scripts[i].tag); printf(" \n"); printf(" \n"); } @@ -3328,16 +3328,16 @@ dogsub(void) printf(" \n"); for (i = 0; i < ngsub_features; i++) { printf(" \n"); - TTXS(FeatureTag, gsub_features[i].tag); + TTXS("FeatureTag", gsub_features[i].tag); printf(" \n"); if (gsub_features[i].name != NULL) { printf(" \n"); - TTXI(Version, 0); - TTXI(UINameID, NAMEBASE_GSUB + i); + TTXI("Version", 0); + TTXI("UINameID", NAMEBASE_GSUB + i); printf(" \n"); } /* We only have one GSUB lookup per feature, thankfully. */ - TTXI(LookupListIndex, i); + TTXI("LookupListIndex", i); printf(" \n"); printf(" \n"); } @@ -3347,14 +3347,14 @@ dogsub(void) printf(" \n"); if (gsub_features[i].suffix == NULL) { /* This is 'aalt' */ - TTXI(LookupType, 3); - TTXI(LookupFlag, 0); + TTXI("LookupType", 3); + TTXI("LookupFlag", 0); printf(" \n"); doaltsubs(); printf(" \n"); } else { - TTXI(LookupType, 1); - TTXI(LookupFlag, 0); + TTXI("LookupType", 1); + TTXI("LookupFlag", 0); printf(" \n"); dosinglesubs(gsub_features[i].suffix); printf(" \n"); @@ -3415,28 +3415,28 @@ dogpos(void) /* We only support one 'GPOS' lookup, 'palt'. */ printf(" \n"); - TTXS(Version, "0x00010000"); + TTXS("Version", "0x00010000"); printf(" \n"); printf(" \n"); - TTXS(ScriptTag, "DFLT"); + TTXS("ScriptTag", "DFLT"); printf(" \n"); printf(" \n"); printf(" \n"); printf(" \n"); printf(" \n"); - TTXS(FeatureTag, "palt"); + TTXS("FeatureTag", "palt"); printf(" \n"); - TTXI(LookupListIndex, 0); + TTXI("LookupListIndex", 0); printf(" \n"); printf(" \n"); printf(" \n"); printf(" \n"); printf(" \n"); - TTXI(LookupType, 1); - TTXI(LookupFlag, 0); + TTXI("LookupType", 1); + TTXI("LookupFlag", 0); printf(" \n"); printf(" \n"); printf(" \n");