1 % Feta (not the Font-En-Tja) music font -- ancient rests
2 % This file is part of LilyPond, the GNU music typesetter.
4 % Copyright (C) 2001--2009 Juergen Reuter <reuter@ipd.uka.de>
6 % Neo-mensural rests originally by
7 % Christian Mondrup and Mats Bengtsson.
10 % LilyPond is free software: you can redistribute it and/or modify
11 % it under the terms of the GNU General Public License as published by
12 % the Free Software Foundation, either version 3 of the License, or
13 % (at your option) any later version.
15 % LilyPond is distributed in the hope that it will be useful,
16 % but WITHOUT ANY WARRANTY; without even the implied warranty of
17 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 % GNU General Public License for more details.
20 % You should have received a copy of the GNU General Public License
21 % along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
23 fet_begingroup ("rests")
30 % NEO-MENSURAL NOTATION
35 % Neo-mensural longa and breve are identical with default longa and breve.
37 neomens_block_rest_x# = 2/5 staff_space#;
38 neomens_block_rest_y# = 1/1 staff_space#;
39 neomens_half_block_rest_y# = 5/8 staff_space#;
41 define_pixels (neomens_block_rest_x,
43 neomens_half_block_rest_y);
46 def neomens_half_block_rest =
48 (neomens_block_rest_x, neomens_half_block_rest_y));
52 fet_beginchar ("Neo-mensural maxima rest", "M3neomensural");
53 set_char_box (0, 3 neomens_block_rest_x#,
54 neomens_block_rest_y#, neomens_block_rest_y#);
56 draw_block ((0, -neomens_block_rest_y),
57 (neomens_block_rest_x, neomens_block_rest_y));
58 addto currentpicture also currentpicture
59 shifted (2 neomens_block_rest_x, 0);
63 fet_beginchar ("Neo-mensural longa rest", "M2neomensural");
64 set_char_box (0, neomens_block_rest_x#,
65 neomens_block_rest_y#, neomens_block_rest_y#);
67 draw_block ((0, -neomens_block_rest_y),
68 (neomens_block_rest_x, neomens_block_rest_y));
72 fet_beginchar ("Neo-mensural breve rest", "M1neomensural");
73 set_char_box (0, neomens_block_rest_x#,
74 0, neomens_block_rest_y#);
77 (neomens_block_rest_x, neomens_block_rest_y));
81 fet_beginchar ("Neo-mensural whole rest", "0neomensural");
82 set_char_box (0, neomens_block_rest_x#,
83 neomens_half_block_rest_y#, 0);
85 neomens_half_block_rest;
87 currentpicture shifted (0, -neomens_half_block_rest_y);
91 fet_beginchar ("Neo-mensural half rest", "1neomensural");
92 set_char_box (0, neomens_block_rest_x#,
93 0, neomens_half_block_rest_y#);
95 neomens_half_block_rest;
99 neomensrestsize# = 0.8 staff_space#;
102 fet_beginchar ("Neo-mensural 4th rest", "2neomensural");
103 set_char_box (0, neomensrestsize#,
104 0, neomensrestsize#);
106 pickup pencircle scaled 2 stafflinethickness;
115 z11 = z1 - stafflinethickness * unitvector (z2 - z1);
116 z14 = z4 + stafflinethickness * unitvector (z4 - z3);
118 penpos1 (2 stafflinethickness, 0);
119 penpos2 (2 stafflinethickness, 0);
120 penpos3 (2 stafflinethickness, angle (z4 - z3) - 90);
121 penpos4 (2 stafflinethickness, angle (z4 - z3) - 90);
139 penlabels (1, 2, 3, 4);
144 fet_beginchar ("Neo-mensural 8th rest", "3neomensural");
145 set_char_box (0, neomensrestsize#,
146 0, neomensrestsize#);
148 pickup pencircle scaled 2 stafflinethickness;
157 z11 = z1 - stafflinethickness * unitvector (z2 - z1);
158 z14 = z4 + stafflinethickness * unitvector (z4 - z3);
160 penpos1 (2 stafflinethickness, 0);
161 penpos2 (2 stafflinethickness, 0);
162 penpos3 (2 stafflinethickness, angle (z4 - z3) - 90);
163 penpos4 (2 stafflinethickness, angle (z4 - z3) - 90);
181 penlabels (1, 2, 3, 4);
186 fet_beginchar ("Neo-mensural 16th rest", "4neomensural");
187 set_char_box (0, neomensrestsize#,
190 pickup pencircle scaled 2 stafflinethickness;
206 z11 = z1 - stafflinethickness * unitvector (z2 - z1);
207 z14 = z4 + stafflinethickness * unitvector (z4 - z3);
208 z16 = z6 + stafflinethickness * unitvector (z6 - z5);
210 penpos1 (2 stafflinethickness, 0);
211 penpos2 (2 stafflinethickness, 0);
212 penpos3 (2 stafflinethickness, angle (z4 - z3) - 90);
213 penpos4 (2 stafflinethickness, angle (z4 - z3) - 90);
214 penpos5 (2 stafflinethickness, angle (z6 - z5) - 90);
215 penpos6 (2 stafflinethickness, angle (z6 - z5) - 90);
240 penlabels (1, 2, 3, 4, 5, 6);
254 pen_width# = 0.3 staff_space#;
257 slight_pen_rotation = 15;
259 mens_block_rest_y# = 1/1 staff_space#;
260 mens_half_block_rest_y# = 5/8 staff_space#;
262 define_pixels (mens_block_rest_y, mens_half_block_rest_y,
263 pen_width, pen_height);
266 fet_beginchar ("Mensural maxima rest", "M3mensural");
267 set_char_box (0, pen_width#,
268 mens_block_rest_y#, 2 mens_block_rest_y#);
270 pickup pencircle xscaled pen_width
272 rotated slight_pen_rotation;
274 draw (w / 2, -mens_block_rest_y)
275 -- (w / 2, 2 mens_block_rest_y);
279 fet_beginchar ("Mensural longa rest", "M2mensural");
280 set_char_box (0, pen_width#,
281 mens_block_rest_y#, mens_block_rest_y#);
283 pickup pencircle xscaled pen_width
285 rotated slight_pen_rotation;
287 draw (w / 2, -mens_block_rest_y)
288 -- (w / 2, mens_block_rest_y);
292 fet_beginchar ("Mensural breve rest", "M1mensural");
293 set_char_box (0, pen_width#,
294 0, mens_block_rest_y#);
296 pickup pencircle xscaled pen_width
298 rotated slight_pen_rotation;
301 -- (w / 2, mens_block_rest_y);
305 fet_beginchar ("Mensural whole rest", "0mensural");
306 set_char_box (0, pen_width#,
307 mens_half_block_rest_y#, 0);
309 pickup pencircle xscaled pen_width
311 rotated slight_pen_rotation;
314 -- (w / 2, -mens_half_block_rest_y);
318 fet_beginchar ("Mensural half rest", "1mensural");
319 set_char_box (0, pen_width#,
320 0, mens_half_block_rest_y#);
322 pickup pencircle xscaled pen_width
324 rotated slight_pen_rotation;
327 -- (w / 2, mens_half_block_rest_y);
331 mensrestsize# = .8 staff_space#;
334 fet_beginchar ("Mensural 4th rest", "2mensural");
335 set_char_box (0, mensrestsize#,
338 pickup pencircle xscaled pen_width
340 rotated pen_rotation;
360 % FIXME: The left sharp corner produces ugly results at lower resolutions.
362 fet_beginchar ("Mensural 8th rest", "3mensural");
363 set_char_box (0, mensrestsize#,
366 pickup pencircle xscaled pen_width
368 rotated pen_rotation;
388 % FIXME: So far, I have never seen a semifusa rest printed. Hence,
389 % the shape of this font character is currently pure invention. --jr
392 % FIXME: The left sharp corner produces ugly results at lower resolutions.
394 fet_beginchar ("Mensural 16th rest", "4mensural");
395 set_char_box (0, mensrestsize#,
398 pickup pencircle xscaled pen_width
400 rotated pen_rotation;
425 labels (1, 2, 3, 4, 5, 6, 7);
429 fet_endgroup ("rests")