mirror of
https://bjh21.me.uk/bedstead/.git
synced 2026-07-30 15:33:25 -04:00
Generate 'OS/2' table for TTX
This commit is contained in:
parent
29b33c20af
commit
d4d2223429
82
bedstead.c
82
bedstead.c
@ -2899,6 +2899,62 @@ main(int argc, char **argv)
|
||||
printf(" <tableVersion value='0x5000'/>\n");
|
||||
printf(" <numGlyphs value='%d'/>\n", (int)nglyphs);
|
||||
printf(" </maxp>\n");
|
||||
|
||||
printf(" <OS_2>\n");
|
||||
printf(" <version value='4'/>\n");
|
||||
printf(" <xAvgCharWidth value='%d'/>\n", (int)(XSIZE * XPIX));
|
||||
printf(" <usWeightClass value='%d'/>\n", weight->ttfweight);
|
||||
printf(" <usWidthClass value='%d'/>\n", width->ttfwidth);
|
||||
printf(" <fsType value='00000000 00000000'/>\n");
|
||||
/* Sub/Superscript are three by five pixels */
|
||||
printf(" <ySubscriptXSize value='%d'/>\n",
|
||||
(int)(YSIZE * YPIX * 3 / (XSIZE - 1)));
|
||||
printf(" <ySubscriptYSize value='%d'/>\n",
|
||||
(int)(YSIZE * YPIX * 5 / (YSIZE - 3)));
|
||||
printf(" <ySubscriptXOffset value='0'/>\n");
|
||||
printf(" <ySubscriptYOffset value='%d'/>\n", (int)(2 * YPIX));
|
||||
printf(" <ySuperscriptXSize value='%d'/>\n",
|
||||
(int)(YSIZE * YPIX * 3 / (XSIZE - 1)));
|
||||
printf(" <ySuperscriptYSize value='%d'/>\n",
|
||||
(int)(YSIZE * YPIX * 5 / (YSIZE - 3)));
|
||||
printf(" <ySuperscriptXOffset value='0'/>\n");
|
||||
printf(" <ySuperscriptYOffset value='%d'/>\n", (int)(2 * YPIX));
|
||||
printf(" <yStrikeoutSize value='%d'/>\n", (int)(YPIX));
|
||||
printf(" <yStrikeoutPosition value='%d'/>\n", (int)(3 * YPIX));
|
||||
printf(" <sFamilyClass value='%d'/>\n", 0x080a);
|
||||
dopanose();
|
||||
/* XXX These were generated by FontForge and should be checked. */
|
||||
printf(" <ulUnicodeRange1 "
|
||||
"value='10100000 00000000 00001010 10111111'/>\n");
|
||||
printf(" <ulUnicodeRange2 "
|
||||
"value='01010010 00000000 11111001 11111011'/>\n");
|
||||
printf(" <ulUnicodeRange3 "
|
||||
"value='00000011 00000000 00000000 00110000'/>\n");
|
||||
printf(" <ulUnicodeRange4 "
|
||||
"value='00000000 00000000 00000010 00000000'/>\n");
|
||||
printf(" <achVendID value='PfEd'/>\n");
|
||||
printf(" <fsSelection value='00000001 1%c%c00000'/>\n",
|
||||
/* Fixed: use typo metrics; WWS */
|
||||
weight->ttfweight == 500 && width->ttfwidth == 5 ? '1' : '0',
|
||||
weight->ttfweight > 500 ? '1' : '0'); /* Bold? */
|
||||
printf(" <usFirstCharIndex value='32'/>\n");
|
||||
printf(" <usLastCharIndex value='65535'/>\n");
|
||||
printf(" <sTypoAscender value='%d'/>\n", (int)(ASCENT * YPIX));
|
||||
printf(" <sTypoDescender value='%d'/>\n", (int)(-DESCENT * YPIX));
|
||||
printf(" <sTypoLineGap value='0'/>\n");
|
||||
printf(" <usWinAscent value='%d'/>\n", (int)(ASCENT * YPIX));
|
||||
printf(" <usWinDescent value='%d'/>\n", (int)(DESCENT * YPIX));
|
||||
/* XXX These were generated by FontForge and should be checked. */
|
||||
printf(" <ulCodePageRange1 "
|
||||
"value='01100000 00000000 00000000 00111111'/>\n");
|
||||
printf(" <ulCodePageRange2 "
|
||||
"value='11010111 11110111 00000000 00000000'/>\n");
|
||||
printf(" <sxHeight value='%d'/>\n", (int)(XHEIGHT * YPIX));
|
||||
printf(" <sCapHeight value='%d'/>\n", (int)(CAPHEIGHT * YPIX));
|
||||
printf(" <usDefaultChar value='0'/>\n");
|
||||
printf(" <usBreakChar value='32'/>\n");
|
||||
printf(" <usMaxContext value='1'/>\n"); /* No pair subs. */
|
||||
printf(" </OS_2>\n");
|
||||
/* printf("FontName: %s\n", fullname_to_fontname(get_fullname())); */
|
||||
/* printf("FullName: %s\n", get_fullname()); */
|
||||
/* printf("FamilyName: Bedstead\n"); */
|
||||
@ -2922,31 +2978,13 @@ main(int argc, char **argv)
|
||||
/* weight->suffix[0] ? width->suffix : */
|
||||
/* width->suffix[0] ? width->suffix+1 : ""); */
|
||||
/* printf("Weight:%s\n", weight->suffix[0] ? weight->suffix : " Medium"); */
|
||||
/* printf("OS2_WeightWidthSlopeOnly: 1\n"); */
|
||||
/* printf("Copyright: Dedicated to the public domain\n"); */
|
||||
/* printf("Version: 002.009\n"); */
|
||||
/* printf("ItalicAngle: 0\n"); */
|
||||
/* printf("UnderlinePosition: %g\n", (double)(-3 * YPIX / 2)); */
|
||||
/* printf("UnderlineWidth: %g\n", (double)(YPIX)); */
|
||||
/* printf("OS2StrikeYPos: %d\n", (int)(3 * YPIX)); */
|
||||
/* printf("OS2StrikeYSize: %d\n", (int)(YPIX)); */
|
||||
/* printf("Ascent: %g\n", (double)(8 * YPIX)); */
|
||||
/* printf("Descent: %g\n", (double)(2 * YPIX)); */
|
||||
/* /\* Sub/Superscript are three by five pixels *\/ */
|
||||
/* printf("OS2SubXSize: %d\n", (int)(YSIZE * YPIX * 3 / (XSIZE - 1))); */
|
||||
/* printf("OS2SupXSize: %d\n", (int)(YSIZE * YPIX * 3 / (XSIZE - 1))); */
|
||||
/* printf("OS2SubYSize: %d\n", (int)(YSIZE * YPIX * 5 / (YSIZE - 3))); */
|
||||
/* printf("OS2SupYSize: %d\n", (int)(YSIZE * YPIX * 5 / (YSIZE - 3))); */
|
||||
/* printf("OS2SubXOff: 0\n"); */
|
||||
/* printf("OS2SupXOff: 0\n"); */
|
||||
/* printf("OS2SubYOff: %d\n", (int)(2 * YPIX)); */
|
||||
/* printf("OS2SupYOff: %d\n", (int)(2 * YPIX)); */
|
||||
/* printf("FSType: 0\n"); */
|
||||
/* printf("TTFWeight: %d\n", weight->ttfweight); */
|
||||
/* printf("TTFWidth: %d\n", width->ttfwidth); */
|
||||
/* dopanose(); */
|
||||
/* printf("OS2Vendor: 'PfEd'\n"); */
|
||||
/* printf("OS2FamilyClass: %d\n", 0x080a); */
|
||||
/* printf("LayerCount: 2\n"); */
|
||||
/* printf("Layer: 0 0 \"Back\" 1\n"); */
|
||||
/* printf("Layer: 1 0 \"Fore\" 0\n"); */
|
||||
@ -3181,7 +3219,13 @@ dopanose(void)
|
||||
* DuckRat = XRat = 5/7
|
||||
*/
|
||||
panose[9] = 7; /* Ducking/Large */
|
||||
printf("Panose: %d %d %d %d %d %d %d %d %d %d\n",
|
||||
printf(" <panose>\n"
|
||||
" <bFamilyType value='%d'/><bSerifStyle value='%d'/>\n"
|
||||
" <bWeight value='%d'/><bProportion value='%d'/>\n"
|
||||
" <bContrast value='%d'/><bStrokeVariation value='%d'/>\n"
|
||||
" <bArmStyle value='%d'/><bLetterForm value='%d'/>\n"
|
||||
" <bMidline value='%d'/><bXHeight value='%d'/>\n"
|
||||
" </panose>\n",
|
||||
panose[0], panose[1], panose[2], panose[3], panose[4],
|
||||
panose[5], panose[6], panose[7], panose[8], panose[9]);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user