-% -*-Fundamental-*-
+% -%-Fundamental-%- -*-Metafont-*-
% parmesan-rests.mf -- implement ancient rests
%
% source file of LilyPond's pretty-but-neat music font
%
-% (c) 2001--2002 Juergen Reuter <reuter@ipd.uka.de>
+% (c) 2001--2005 Juergen Reuter <reuter@ipd.uka.de>
+%
+% Neo-mensural rests originally by
+% Christian Mondrup and Mats Bengtsson
%
fet_begingroup("rests")
+%%%%%%%%
+%
+%
+%
+% NEO-MENSURAL NOTATION
+%
+%
+%
+
+% Neo-mensural longa and breve are identical with default longa and breve.
+
+neomens_block_rest_x# = 2/5 staff_space#;
+neomens_block_rest_y# = 1/1 staff_space#;
+neomens_half_block_rest_y# = 5/8 staff_space#;
+
+define_pixels(neomens_block_rest_x,
+ neomens_block_rest_y, neomens_half_block_rest_y);
+
+def neomens_half_block_rest =
+ draw_block ((0,0), (neomens_block_rest_x, neomens_half_block_rest_y));
+ enddef;
+
+fet_beginchar("Neo-mensural maxima rest", "-3neomensural");
+ set_char_box(0, 3 neomens_block_rest_x#,
+ neomens_block_rest_y#, neomens_block_rest_y#);
+ draw_block ((0,-neomens_block_rest_y),
+ (neomens_block_rest_x, neomens_block_rest_y));
+ addto currentpicture also currentpicture shifted (2 neomens_block_rest_x, 0);
+fet_endchar;
+
+fet_beginchar("Neo-mensural longa rest", "-2neomensural");
+ set_char_box(0, neomens_block_rest_x#,
+ neomens_block_rest_y#, neomens_block_rest_y#);
+ draw_block ((0,-neomens_block_rest_y),
+ (neomens_block_rest_x, neomens_block_rest_y));
+fet_endchar;
+
+fet_beginchar("Neo-mensural breve rest", "-1neomensural");
+ set_char_box(0, neomens_block_rest_x#,
+ 0, neomens_block_rest_y#);
+ draw_block ((0,0), (neomens_block_rest_x, neomens_block_rest_y));
+fet_endchar;
+
+fet_beginchar("Neo-mensural whole rest", "0neomensural");
+ set_char_box(0, neomens_block_rest_x#,
+ neomens_half_block_rest_y#, 0);
+ neomens_half_block_rest;
+ currentpicture :=
+ currentpicture shifted (0,- neomens_half_block_rest_y);
+fet_endchar;
+
+fet_beginchar("Neo-mensural half rest", "1neomensural");
+ set_char_box(0, neomens_block_rest_x#,
+ 0, neomens_half_block_rest_y#);
+ neomens_half_block_rest;
+fet_endchar;
+
+neomensrestsize# = 0.8 staff_space#;
+
+fet_beginchar("Neo-mensural 4th rest","2neomensural")
+ set_char_box(0,neomensrestsize#,0,neomensrestsize#);
+ pickup pencircle scaled 2 stafflinethickness;
+ lft x1 = 0;
+ bot y1 = 0;
+ lft x2 = 0;
+ top y2 = h;
+ rt x3 = w;
+ bot y3 = h/2;
+ draw z1 .. z2;
+ draw z2 .. z3;
+fet_endchar
+
+fet_beginchar("Neo-mensural 8th rest","3neomensural")
+ set_char_box(0,neomensrestsize#,0,neomensrestsize#);
+ pickup pencircle scaled 2 stafflinethickness;
+ rt x1 = w;
+ bot y1 = 0;
+ rt x2 = w;
+ top y2 = h;
+ lft x3 = 0;
+ bot y3 = h/2;
+ draw z1 .. z2;
+ draw z2 .. z3;
+fet_endchar
+
+fet_beginchar("Neo-mensural 16th rest","4neomensural")
+ set_char_box(0,neomensrestsize#,0,staff_space#);
+ pickup pencircle scaled 2 stafflinethickness;
+ rt x1 = w;
+ bot y1 = 0;
+ rt x2 = w;
+ top y2 = h;
+
+ draw z1 .. z2;
+
+ pickup pencircle scaled 2 stafflinethickness;
+ rt x3 = w;
+ top y3 = h;
+ lft x4 = 0;
+ bot y4 = h/2;
+ rt x5 = w;
+ top y5 = 5/8h;
+ lft x6 = 0;
+ bot y6 = h/8;
+
+ draw z3 .. z4;
+ draw z5 .. z6;
+fet_endchar
+
+
%%%%%%%%
%
%
define_pixels(mens_block_rest_y, mens_half_block_rest_y,
pen_width, pen_height);
-fet_beginchar("Mensural maxima rest", "-3mensural", "mensmaximarest");
- set_char_box(0.7pen_width#, 0.7pen_width#,
+fet_beginchar("Mensural maxima rest", "-3mensural");
+ set_char_box(0, pen_width#,
mens_block_rest_y#, 2mens_block_rest_y#);
pickup pencircle
xscaled pen_width
yscaled pen_height
rotated slight_pen_rotation;
- draw (0, -mens_block_rest_y) -- (0, 2 mens_block_rest_y);
+ draw (w/2, -mens_block_rest_y) -- (w/2, 2 mens_block_rest_y);
fet_endchar;
-fet_beginchar("Mensural longa rest", "-2mensural", "menslongarest");
- set_char_box(0.7pen_width#, 0.7pen_width#,
+fet_beginchar("Mensural longa rest", "-2mensural");
+ set_char_box(0, pen_width#,
mens_block_rest_y#, mens_block_rest_y#);
pickup pencircle
xscaled pen_width
yscaled pen_height
rotated slight_pen_rotation;
- draw (0, -mens_block_rest_y) -- (0, mens_block_rest_y);
+ draw (w/2, -mens_block_rest_y) -- (w/2, mens_block_rest_y);
fet_endchar;
-fet_beginchar("Mensural breve rest", "-1mensural", "mensbreverest");
- set_char_box(0.7pen_width#, 0.7pen_width#,
+fet_beginchar("Mensural breve rest", "-1mensural");
+ set_char_box(0, pen_width#,
0, mens_block_rest_y#);
pickup pencircle
xscaled pen_width
yscaled pen_height
rotated slight_pen_rotation;
- draw (0, 0) -- (0, mens_block_rest_y);
+ draw (w/2, 0) -- (w/2, mens_block_rest_y);
fet_endchar;
-fet_beginchar("Mensural whole rest", "0mensural", "menssemibrevisrest");
- set_char_box(0.7pen_width#, 0.7pen_width#,
+fet_beginchar("Mensural whole rest", "0mensural");
+ set_char_box(0, pen_width#,
mens_half_block_rest_y#, 0);
pickup pencircle
xscaled pen_width
yscaled pen_height
rotated slight_pen_rotation;
- draw (0, 0) -- (0, -mens_half_block_rest_y);
+ draw (w/2, 0) -- (w/2, -mens_half_block_rest_y);
fet_endchar;
-fet_beginchar("Mensural half rest", "1mensural", "mensminimahalfrest");
- set_char_box(0.7pen_width#, 0.7pen_width#,
+fet_beginchar("Mensural half rest", "1mensural");
+ set_char_box(0, pen_width#,
0, mens_half_block_rest_y#);
pickup pencircle
xscaled pen_width
yscaled pen_height
rotated slight_pen_rotation;
- draw (0, 0) -- (0, mens_half_block_rest_y);
+ draw (w/2, 0) -- (w/2, mens_half_block_rest_y);
fet_endchar;
mensrestsize# = .8staff_space#;
-fet_beginchar("Mensural 4th rest","2mensural","menssemiminimarest")
+fet_beginchar("Mensural 4th rest","2mensural")
set_char_box(0,mensrestsize#,0,mensrestsize#);
pickup pencircle
xscaled pen_width
rotated pen_rotation;
lft x1 = 0; y1 = 0;
lft x2 = 0; top y2 = 5/8 h;
- rt x3 = 4/8 w; bot y3 = 6/8 h;
- rt x4 = 10/8 w; bot y4 = 4/8 h;
+ rt x3 = 1/5 w; bot y3 = 6/8 h;
+ rt x4 = w; bot y4 = 4/8 h;
draw z1 -- z2 -- z3 -- z4;
fet_endchar
-fet_beginchar("Mensural 8th rest","3mensural","mensfusarest")
+fet_beginchar("Mensural 8th rest","3mensural")
set_char_box(0,mensrestsize#,0,mensrestsize#);
pickup pencircle
xscaled pen_width
yscaled pen_height
rotated pen_rotation;
- rt x1 = 10/8 w; y1 = 0;
- rt x2 = 10/8 w; top y2 = 5/8 h;
- lft x3 = 2/8 w; bot y3 = 6/8 h;
+ rt x1 = w; y1 = 0;
+ rt x2 = w; top y2 = 5/8 h;
+ lft x3 = 1/5 w; bot y3 = 6/8 h;
lft x4 = 0; bot y4 = 4/8 h;
draw z1 -- z2 -- z3 -- z4;
fet_endchar
-fet_beginchar("Mensural 16th rest","4mensural","menssemifusarest")
+%
+% FIXME: So far, I have never seen a semifusa rest printed. Hence,
+% the shape of this font character is currently pure invention. --jr
+%
+fet_beginchar("Mensural 16th rest","4mensural")
set_char_box(0,mensrestsize#,0,staff_space#);
pickup pencircle
xscaled pen_width
yscaled pen_height
rotated pen_rotation;
- rt x1 = 10/8 w; y1 = 0;
- rt x2 = 10/8 w; top y2 = 5.5/8 h;
- lft x3 = 2/8 w; bot y3 = 6.5/8 h;
+ rt x1 = w; y1 = 0;
+ rt x2 = w; top y2 = 5.5/8 h;
+ lft x3 = 1/5 w; bot y3 = 6.5/8 h;
lft x4 = 0; bot y4 = 4.5/8 h;
- rt x5 = 10/8 w; top y5 = 2.5/8 h;
- lft x6 = 2/8 w; bot y6 = 3.5/8 h;
+ rt x5 = w; top y5 = 2.5/8 h;
+ lft x6 = 1/5 w; bot y6 = 3.5/8 h;
lft x7 = 0; bot y7 = 1.5/8 h;
draw z1 -- z2 -- z3 -- z4;
draw z5 -- z6 -- z7;