2 % autometric.mf -- administrative MF routines
4 % source file of the Feta (Font-En-Tja) pretty-but-neat music font
6 % (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
8 % these macros help create ascii logging output
9 % to automate generation of lily tables and tex backend
10 % The output should be parsed by the mf-to-table script
15 def fet_beginfont(expr name,size) =
16 font_identifier:=name&decimal size;
18 message "@{font:"&name&":"&decimal size&"@}";
22 def fet_endfont(expr name) =
23 message "@{tnof:"&name&"@}";
28 def fet_begingroup(expr name) =
29 message "@{group:"&name&"@}";
34 def fet_endgroup(expr name) =
36 message "@{puorg:"&name&"@}";
40 def autometric_output_char=
41 message "@{char:"&charnamestr&":"&decimal charcode&":"&decimal charbp&":"&decimal charwd&":"&decimal chardp&":"&decimal charht&":"&idstr&":"&texstr&"@}";
45 %breapth, width, depth, height
47 def set_char_box(expr b_sharp, w_sharp, d_sharp,h_sharp) =
48 save scharbp, scharht, scharwd, schardp;
50 % some paranoia if someone calls set_char_box(charwd, charbp, .. )
61 w := hround(w_sharp *hppp);
62 b := hround(b_sharp *hppp);
63 h := hround(h_sharp *vppp);
64 d := hround(d_sharp *vppp);
67 def no_dimen_beginchar(expr c) =
69 charcode := if known c: byte c else: 0; fi;
74 scantokens extra_beginchar;
79 % starts just as plain mf's beginchar:
83 % id index in lily's table
84 % texstr name of tex macro in lily's table and tex backend
86 % the dims are uninitialised; you should use set_char_box manually.
87 def fet_beginchar(expr name, id_lit, texstr_lit) =
88 save texstr, idstr, charnamestr;
91 string texstr, idstr, charnamestr;
96 no_dimen_beginchar(incr code) name;
100 def makebox_with_breapth(text r) =
101 for y = -d, 0, h: r((-b, y),(w,y)); endfor
102 for x = -b, 0, w: r((x, -d),(x, h)); endfor
106 % override plain endchar. We want a different box.
108 def breapth_endchar =
109 scantokens extra_endchar;
110 if proofing > 0: makebox_with_breapth(proofrule); fi
117 autometric_output_char;