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--2001 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# := 1.0 staff_space#;
14 right_width# := 0.8 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);
42 draw_bulb(-1, z6l, z6r, bulb_rad, .8);
44 fill z1l{dir (100)} .. z2l{left} .. z3l{down} .. z4l{right} ..
45 simple_serif(z5l, z5r, -90) ..
46 z4r{left} .. z3r{up} .. z2r{right} .. {dir (-80)}z1r -- cycle;
48 penlabels(1,2,3,4,5,6);
51 fet_beginchar ("4/4 meter", "C4/4", "fourfourmeter")
53 set_char_box(left_width# + staff_space#, right_width# + staff_space#,
54 staff_space#, staff_space#);
59 fet_beginchar ("2/2 meter", "C2/2", "allabreve")
61 set_char_box(left_width# + staff_space#, right_width# + staff_space#,
62 1.4 staff_space#, 1.4 staff_space#);
67 excentricity = (-1.25 stafflinethickness, 0);
69 draw_block((- .75 stafflinethickness, -d) + excentricity, (.75 stafflinethickness , h) + excentricity);
72 path threequartercircle;
73 threequartercircle = halfcircle & quartercircle rotated 180;
75 save Cdiameter,Cthickness;
76 Cdiameter# := 3/2 staff_space#;
77 Cthickness# := 2 stafflinethickness#;
78 define_pixels(Cdiameter,Cthickness);
80 %% tempus imperfectum cum prolatione imperfecta
81 fet_beginchar ("Mensural 4/4 meter", "old4/4", "oldfourfourmeter")
82 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
83 .5 Cdiameter#, .5 Cdiameter#);
85 pickup pencircle scaled Cthickness;
86 draw threequartercircle rotated 45 scaled Cdiameter;
89 %% tempus imperfectum cum prolatione imperfecta proportio dupla
90 fet_beginchar ("Mensural 2/2 meter", "old2/2", "oldallabreve")
91 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
92 staff_space#, staff_space#);
94 pickup pencircle scaled Cthickness;
95 draw threequartercircle rotated 45 scaled Cdiameter;
96 draw_block((-Cthickness, -d), (0, h));
99 %% tempus perfectum cum prolatione imperfecta
100 fet_beginchar ("Mensural 3/2 meter", "old3/2", "oldthreetwometer")
101 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
102 .5 Cdiameter#, .5 Cdiameter#);
104 pickup pencircle scaled Cthickness;
105 draw fullcircle scaled Cdiameter;
108 %% tempus imperfectum cum prolatione perfecta
109 fet_beginchar ("Mensural 6/4 meter", "old6/4", "oldsixfourmeter")
110 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
111 .5 Cdiameter#, .5 Cdiameter#);
113 pickup pencircle scaled Cthickness;
114 draw threequartercircle rotated 45 scaled Cdiameter;
115 pickup pencircle scaled 4 stafflinethickness;
119 %% tempus perfectum cum prolatione perfecta
120 fet_beginchar ("Mensural 9/4 meter", "old9/4", "oldninefourmeter")
121 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
122 .5 Cdiameter#, .5 Cdiameter#);
124 pickup pencircle scaled Cthickness;
125 draw fullcircle scaled Cdiameter;
126 pickup pencircle scaled 4 stafflinethickness;
130 %% tempus perfectum cum prolatione imperfecta proportio dupla
131 fet_beginchar ("Mensural 3/4 meter", "old3/4", "oldthreefourmeter")
132 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
133 staff_space#, staff_space#);
135 pickup pencircle scaled Cthickness;
136 draw fullcircle scaled Cdiameter;
137 draw_block((-Cthickness/2, -d), (Cthickness/2, h));
140 %% tempus imperfectum cum prolatione perfecta proportio dupla
141 fet_beginchar ("Mensural 6/8 meter", "old6/8", "oldsixeightmeter")
142 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
143 staff_space#, staff_space#);
145 pickup pencircle scaled Cthickness;
146 draw threequartercircle rotated 45 scaled Cdiameter;
147 pickup pencircle scaled 4 stafflinethickness;
149 draw_block((-Cthickness/2, -d), (Cthickness/2, h));
152 %% tempus perfectum cum prolatione perfecta proportio dupla
153 fet_beginchar ("Mensural 9/8 meter", "old9/8", "oldnineeight")
154 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
155 staff_space#, staff_space#);
157 pickup pencircle scaled Cthickness;
158 draw fullcircle scaled Cdiameter;
159 pickup pencircle scaled 4 stafflinethickness;
161 draw_block((-Cthickness/2, -d), (Cthickness/2, h));
164 %% tempus imperfectum cum prolatione imperfecta diminutio simplex
165 fet_beginchar ("Mensural 4/8 meter", "old4/8", "oldfoureightmeter")
166 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
167 .5 Cdiameter#, .5 Cdiameter#);
169 pickup pencircle scaled Cthickness;
170 draw threequartercircle rotated 225 scaled Cdiameter;
173 %% tempus imperfectum cum prolatione perfecta diminutio simplex
174 fet_beginchar ("Mensural 6/8 meter", "old6/8alt", "oldsixeightmeteralt")
175 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
176 .5 Cdiameter#, .5 Cdiameter#);
178 pickup pencircle scaled Cthickness;
179 draw threequartercircle rotated 225 scaled Cdiameter;
180 pickup pencircle scaled 4 stafflinethickness;
184 %% tempus imperfectum cum prolatione imperfecta diminutio duplex
185 fet_beginchar ("Mensural 2/4 meter", "old2/4", "oldtwofourmeter")
186 set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#,
187 staff_space#, staff_space#);
189 pickup pencircle scaled Cthickness;
190 draw threequartercircle rotated 225 scaled Cdiameter;
191 draw_block((-Cthickness, -d), (0, h));
194 fet_endgroup("timesig");