5 font_coding_scheme "feta braces";
7 % we set the designsize arbitrarily at 10
8 % if the * 10 is left out, pktrace gets confused over the proper magnification,
9 % and makes it too large.
10 fet_beginfont("feta-braces", font_count * 10);
20 def abc_encode_int (expr i) =
22 abc_encode_int(i div 26)&char(65 + i mod 26)
28 def draw_brace (expr height_sharp, width_sharp, slt_sharp) =
30 save pendir, height, width, thin, thick, slt;
32 height# := height_sharp;
33 width# := width_sharp;
36 %% +1 is needed because fet_beginchar increments after dumping the strings.
37 fet_beginchar("brace number "&(decimal (code + 1)), "brace"&abc_encode_int(code+1),
38 "brace"&abc_encode_int (code+1))
40 set_char_box (0, width#, height#/2, height#/2);
42 define_pixels (height, width, slt);
53 pendir = unitvector(x3 - x1, y3l/6 - y1);
54 penangle = angle pendir - 90;
55 penpos3(thin, penangle);
56 penpos2(thick, angle(z3 -z1) -90 );
57 penpos1(2/3 thin, penangle);
60 fill z2r .. simple_serif (z3r, z3l, 90)
61 .. z2l .. simple_serif (z1l, z1r, 90) ..cycle;
63 addto currentpicture also currentpicture yscaled -1;
69 save stafflinethickness;
72 stafflinethickness := 0.5pt#;
78 for i := 0 step 1 until font_count:
80 %% We can't store more than 64 (65?) height dimensions in a TFM
81 %% file, so we make small files.
83 for j := 0 step 1 until 63:
84 % message "l: "&decimal l;
85 % note: define_pixels (x) multiplies x by hppp,
86 % must never get bigger than infinity
87 y := min (y + increment, infinity/hppp - 1);
89 % x should be about one staff space, taking brace to have
90 % default height of 3 staffs, this yields height / 3 / 4 = 12
95 stafflinethickness := min (0.5pt#, y/150);
97 draw_brace (y, x, stafflinethickness);
102 fet_endfont("feta-braces");