2 % feta-timesig.mf -- implement Time Signatures
4 % source file of the Feta (not an abbreviation of Font-En-Tja) music font
6 % (c) 1998--1999 Mats Bengtsson <matsb@s3.kth.se>,
7 % Christian Mondrup <scancm@biobase.dk>
9 fet_begingroup("timesig");
12 save left_width, right_width;
13 left_width# := 0.9 staff_space#;
14 right_width# := .7 staff_space#;
15 define_pixels(left_width,right_width);
19 save hair, bulb_rad, left_fatness;
22 hair# := stafflinethickness#;
23 bulb_rad# := 0.4 staff_space#;
24 define_pixels(hair, bulb_rad);
28 y1r = .45 staff_space;
29 z2 = (0, staff_space);
30 z3r = (-left_width, 0);
31 z4 = (0, -staff_space);
32 z5r = (right_width - stafflinethickness, -0.4 staff_space);
35 penpos2(stafflinethickness, 90);
36 penpos3(left_fatness * staff_space, 180);
37 penpos4(stafflinethickness, -90);
40 draw_bulb(-1, z1l, z1r, bulb_rad, .8);
42 fill z1l{up} .. z2l{left} .. z3l{down} .. z4l{right} ..
43 simple_serif(z5l, z5r, -90) ..
44 z4r{left} .. z3r{up} .. z2r{right} .. z1r -- cycle;
50 fet_beginchar ("4/4 meter", "C4/4", "fourfourmeter")
52 set_char_box(left_width# + staff_space#, right_width# + staff_space#,
53 staff_space#, staff_space#);
58 fet_beginchar ("2/2 meter", "C2/2", "allabreve")
60 set_char_box(left_width# + staff_space#, right_width# + staff_space#,
61 1.4 staff_space#, 1.4 staff_space#);
66 excentricity = (-1.25 stafflinethickness, 0);
68 draw_block((- .75 stafflinethickness, -d) + excentricity, (.75 stafflinethickness , h) + excentricity);
71 path threequartercircle;
72 threequartercircle = halfcircle & quartercircle rotated 180;
74 save Cdiameter,Cthickness;
75 Cdiameter# := 3/2 staff_space#;
76 Cthickness# := 2 stafflinethickness#;
77 define_pixels(Cdiameter,Cthickness);
79 %% tempus imperfectum cum prolatione imperfecta
80 fet_beginchar ("Mensural 4/4 meter", "old4/4", "oldfourfourmeter")
81 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
82 .5 Cdiameter#, .5 Cdiameter#);
84 pickup pencircle scaled Cthickness;
85 draw threequartercircle rotated 45 scaled Cdiameter;
88 %% tempus imperfectum cum prolatione imperfecta proportio dupla
89 fet_beginchar ("Mensural 2/2 meter", "old2/2", "oldallabreve")
90 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
91 staff_space#, staff_space#);
93 pickup pencircle scaled Cthickness;
94 draw threequartercircle rotated 45 scaled Cdiameter;
95 draw_block((-Cthickness, -d), (0, h));
98 %% tempus perfectum cum prolatione imperfecta
99 fet_beginchar ("Mensural 3/2 meter", "old3/2", "oldthreetwometer")
100 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
101 .5 Cdiameter#, .5 Cdiameter#);
103 pickup pencircle scaled Cthickness;
104 draw fullcircle scaled Cdiameter;
107 %% tempus imperfectum cum prolatione perfecta
108 fet_beginchar ("Mensural 6/4 meter", "old6/4", "oldsixfourmeter")
109 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
110 .5 Cdiameter#, .5 Cdiameter#);
112 pickup pencircle scaled Cthickness;
113 draw threequartercircle rotated 45 scaled Cdiameter;
114 pickup pencircle scaled 4 stafflinethickness;
118 %% tempus perfectum cum prolatione perfecta
119 fet_beginchar ("Mensural 9/4 meter", "old9/4", "oldninefourmeter")
120 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
121 .5 Cdiameter#, .5 Cdiameter#);
123 pickup pencircle scaled Cthickness;
124 draw fullcircle scaled Cdiameter;
125 pickup pencircle scaled 4 stafflinethickness;
129 %% tempus perfectum cum prolatione imperfecta proportio dupla
130 fet_beginchar ("Mensural 3/4 meter", "old3/4", "oldthreefourmeter")
131 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
132 staff_space#, staff_space#);
134 pickup pencircle scaled Cthickness;
135 draw fullcircle scaled Cdiameter;
136 draw_block((-Cthickness/2, -d), (Cthickness/2, h));
139 %% tempus imperfectum cum prolatione perfecta proportio dupla
140 fet_beginchar ("Mensural 6/8 meter", "old6/8", "oldsixeightmeter")
141 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
142 staff_space#, staff_space#);
144 pickup pencircle scaled Cthickness;
145 draw threequartercircle rotated 45 scaled Cdiameter;
146 pickup pencircle scaled 4 stafflinethickness;
148 draw_block((-Cthickness/2, -d), (Cthickness/2, h));
151 %% tempus perfectum cum prolatione perfecta proportio dupla
152 fet_beginchar ("Mensural 9/8 meter", "old9/8", "oldnineeight")
153 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
154 staff_space#, staff_space#);
156 pickup pencircle scaled Cthickness;
157 draw fullcircle scaled Cdiameter;
158 pickup pencircle scaled 4 stafflinethickness;
160 draw_block((-Cthickness/2, -d), (Cthickness/2, h));
163 %% tempus imperfectum cum prolatione imperfecta diminutio simplex
164 fet_beginchar ("Mensural 4/8 meter", "old4/8", "oldfoureightmeter")
165 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
166 .5 Cdiameter#, .5 Cdiameter#);
168 pickup pencircle scaled Cthickness;
169 draw threequartercircle rotated 225 scaled Cdiameter;
172 %% tempus imperfectum cum prolatione perfecta diminutio simplex
173 fet_beginchar ("Mensural 6/8 meter", "old6/8alt", "oldsixeightmeteralt")
174 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
175 .5 Cdiameter#, .5 Cdiameter#);
177 pickup pencircle scaled Cthickness;
178 draw threequartercircle rotated 225 scaled Cdiameter;
179 pickup pencircle scaled 4 stafflinethickness;
183 %% tempus imperfectum cum prolatione imperfecta diminutio duplex
184 fet_beginchar ("Mensural 2/4 meter", "old2/4", "oldtwofourmeter")
185 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
186 staff_space#, staff_space#);
188 pickup pencircle scaled Cthickness;
189 draw threequartercircle rotated 225 scaled Cdiameter;
190 draw_block((-Cthickness, -d), (0, h));
193 fet_endgroup("timesig");