X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=mf%2Fparmesan-rests.mf;h=3ef67212b9c9e17aec163dae1c40fd99ab6e4f45;hb=HEAD;hp=314e39b9ad47ece5da6a72aeb1b04a8f44b969e1;hpb=7e72a1e50e94a7f9738d62599de79fe7745f600c;p=lilypond.git diff --git a/mf/parmesan-rests.mf b/mf/parmesan-rests.mf index 314e39b9ad..3ef67212b9 100644 --- a/mf/parmesan-rests.mf +++ b/mf/parmesan-rests.mf @@ -1,15 +1,26 @@ -% -%-Fundamental-%- -*-Metafont-*- -% parmesan-rests.mf -- implement ancient rests -% -% source file of LilyPond's pretty-but-neat music font -% -% (c) 2001--2004 Juergen Reuter +% Feta (not the Font-En-Tja) music font -- ancient rests +% This file is part of LilyPond, the GNU music typesetter. +% +% Copyright (C) 2001--2015 Juergen Reuter % % Neo-mensural rests originally by -% Christian Mondrup and Mats Bengtsson +% Christian Mondrup and Mats Bengtsson. % +% +% The LilyPond font is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version, or under the SIL Open Font License. +% +% LilyPond is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with LilyPond. If not, see . -fet_begingroup("rests") +fet_begingroup ("rests") %%%%%%%% @@ -27,99 +38,208 @@ 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); +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; + draw_block ((0, 0), + (neomens_block_rest_x, neomens_half_block_rest_y)); +enddef; + + +fet_beginchar ("Neo-mensural maxima rest", "M3neomensural"); + set_char_box (0, 3 neomens_block_rest_x#, + neomens_block_rest_y#, neomens_block_rest_y#); -fet_beginchar("Neo-mensural maxima rest", "-3neo_mensural", "neomensmaximarest"); - set_char_box(0, 3 neomens_block_rest_x#, - neomens_block_rest_y#, neomens_block_rest_y#); - draw_block ((0,-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); + addto currentpicture also currentpicture + shifted (2 neomens_block_rest_x, 0); fet_endchar; -fet_beginchar("Neo-mensural longa rest", "-2neo_mensural", "neomenslongarest"); - set_char_box(0, neomens_block_rest_x#, - neomens_block_rest_y#, neomens_block_rest_y#); - draw_block ((0,-neomens_block_rest_y), + +fet_beginchar ("Neo-mensural longa rest", "M2neomensural"); + 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", "-1neo_mensural", "neomensbreverest"); - 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_beginchar ("Neo-mensural breve rest", "M1neomensural"); + 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", "0neo_mensural", "neomenssemibrevisrest"); - set_char_box(0, neomens_block_rest_x#, - neomens_half_block_rest_y#, 0); + +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); + currentpicture shifted (0, -neomens_half_block_rest_y); fet_endchar; -fet_beginchar("Neo-mensural half rest", "1neo_mensural", "neomensminimahalfrest"); - set_char_box(0, neomens_block_rest_x#, - 0, neomens_half_block_rest_y#); + +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","2neo_mensural","neomenssemiminimarest") - set_char_box(0,neomensrestsize#,0,neomensrestsize#); + +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 + lft x2 = lft x3 = 0; + top y2 = top y3 = h; + rt x4 = w; + bot y4 = h / 2; + + z11 = z1 - stafflinethickness * unitvector (z2 - z1); + z14 = z4 + stafflinethickness * unitvector (z4 - z3); + + penpos1 (2 stafflinethickness, 0); + penpos2 (2 stafflinethickness, 0); + penpos3 (2 stafflinethickness, angle (z4 - z3) - 90); + penpos4 (2 stafflinethickness, angle (z4 - z3) - 90); + + fill z1l + -- z2l + -- z2r + -- z1r + .. z11 + .. z1l + .. cycle; + fill z3l + -- z4l + .. z14 + .. z4r + -- z3r + .. z2l{up} + .. z3l + .. cycle; + + penlabels (1, 2, 3, 4); + labels (11, 14); +fet_endchar; + + +fet_beginchar ("Neo-mensural 8th rest", "3neomensural"); + set_char_box (0, neomensrestsize#, + 0, neomensrestsize#); -fet_beginchar("Neo-mensural 8th rest","3neo_mensural","neomensfusarest") - 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","4neo_mensural","neomenssemifusarest") - set_char_box(0,neomensrestsize#,0,staff_space#); + rt x2 = rt x3 = w; + top y2 = top y3 = h; + lft x4 = 0; + bot y4 = h / 2; + + z11 = z1 - stafflinethickness * unitvector (z2 - z1); + z14 = z4 + stafflinethickness * unitvector (z4 - z3); + + penpos1 (2 stafflinethickness, 0); + penpos2 (2 stafflinethickness, 0); + penpos3 (2 stafflinethickness, angle (z4 - z3) - 90); + penpos4 (2 stafflinethickness, angle (z4 - z3) - 90); + + fill z1l + -- z2l + -- z2r + -- z1r + .. z11 + .. z1l + .. cycle; + fill z3l + -- z4l + .. z14 + .. z4r + -- z3r + .. z2r{down} + .. z3l + .. cycle; + + penlabels (1, 2, 3, 4); + labels (11, 14); +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; + bot y4 = h / 2; rt x5 = w; - top y5 = 5/8h; + top y5 = 5/8 h; lft x6 = 0; - bot y6 = h/8; - - draw z3 .. z4; - draw z5 .. z6; -fet_endchar + bot y6 = h / 8; + + z11 = z1 - stafflinethickness * unitvector (z2 - z1); + z14 = z4 + stafflinethickness * unitvector (z4 - z3); + z16 = z6 + stafflinethickness * unitvector (z6 - z5); + + penpos1 (2 stafflinethickness, 0); + penpos2 (2 stafflinethickness, 0); + penpos3 (2 stafflinethickness, angle (z4 - z3) - 90); + penpos4 (2 stafflinethickness, angle (z4 - z3) - 90); + penpos5 (2 stafflinethickness, angle (z6 - z5) - 90); + penpos6 (2 stafflinethickness, angle (z6 - z5) - 90); + + fill z1l + -- z2l + -- z2r + -- z1r + .. z11 + .. z1l + .. cycle; + fill z3l + -- z4l + .. z14 + .. z4r + -- z3r + .. z2r{down} + .. z3l + .. cycle; + fill z5l + -- z6l + .. z16 + .. z6r + -- z5r + -- z5l + -- cycle; + + penlabels (1, 2, 3, 4, 5, 6); + labels (11, 14, 16); +fet_endchar; %%%%%%%% @@ -139,107 +259,171 @@ slight_pen_rotation = 15; mens_block_rest_y# = 1/1 staff_space#; mens_half_block_rest_y# = 5/8 staff_space#; -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, pen_width#, - mens_block_rest_y#, 2mens_block_rest_y#); - pickup pencircle - xscaled pen_width - yscaled pen_height - rotated slight_pen_rotation; - 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, pen_width#, - mens_block_rest_y#, mens_block_rest_y#); - pickup pencircle - xscaled pen_width - yscaled pen_height - rotated slight_pen_rotation; - 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, pen_width#, - 0, mens_block_rest_y#); - pickup pencircle - xscaled pen_width - yscaled pen_height - rotated slight_pen_rotation; - draw (w/2, 0) -- (w/2, mens_block_rest_y); -fet_endchar; - -fet_beginchar("Mensural whole rest", "0mensural", "menssemibrevisrest"); - 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 (w/2, 0) -- (w/2, -mens_half_block_rest_y); -fet_endchar; - -fet_beginchar("Mensural half rest", "1mensural", "mensminimahalfrest"); - 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 (w/2, 0) -- (w/2, mens_half_block_rest_y); -fet_endchar; - -mensrestsize# = .8staff_space#; - -fet_beginchar("Mensural 4th rest","2mensural","menssemiminimarest") - set_char_box(0,mensrestsize#,0,mensrestsize#); - pickup pencircle - xscaled pen_width - yscaled pen_height - rotated pen_rotation; - lft x1 = 0; y1 = 0; - lft x2 = 0; top y2 = 5/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") - set_char_box(0,mensrestsize#,0,mensrestsize#); - pickup pencircle - xscaled pen_width - yscaled pen_height - rotated pen_rotation; - 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 +define_pixels (mens_block_rest_y, mens_half_block_rest_y, + pen_width, pen_height); + + +fet_beginchar ("Mensural maxima rest", "M3mensural"); + set_char_box (0, pen_width#, + mens_block_rest_y#, 2 mens_block_rest_y#); + + pickup pencircle xscaled pen_width + yscaled pen_height + rotated slight_pen_rotation; + + draw (w / 2, -mens_block_rest_y) + -- (w / 2, 2 mens_block_rest_y); +fet_endchar; + + +fet_beginchar ("Mensural longa rest", "M2mensural"); + 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 (w / 2, -mens_block_rest_y) + -- (w / 2, mens_block_rest_y); +fet_endchar; + + +fet_beginchar ("Mensural breve rest", "M1mensural"); + set_char_box (0, pen_width#, + 0, mens_block_rest_y#); + + pickup pencircle xscaled pen_width + yscaled pen_height + rotated slight_pen_rotation; + + draw (w / 2, 0) + -- (w / 2, mens_block_rest_y); +fet_endchar; + + +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 (w / 2, 0) + -- (w / 2, -mens_half_block_rest_y); +fet_endchar; + + +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 (w / 2, 0) + -- (w / 2, mens_half_block_rest_y); +fet_endchar; + + +mensrestsize# = .8 staff_space#; + + +fet_beginchar ("Mensural 4th rest", "2mensural"); + set_char_box (0, mensrestsize#, + 0, mensrestsize#); + + pickup pencircle xscaled pen_width + yscaled pen_height + rotated pen_rotation; + + lft x1 = 0; + y1 = 0; + lft x2 = 0; + top y2 = 5/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; + + labels (1, 2, 3, 4); +fet_endchar; + +% +% FIXME: The left sharp corner produces ugly results at lower resolutions. +% +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 = 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; + + labels (1, 2, 3, 4); +fet_endchar; % % 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","menssemifusarest") - set_char_box(0,mensrestsize#,0,staff_space#); - pickup pencircle - xscaled pen_width - yscaled pen_height - rotated pen_rotation; - - 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 = 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; -fet_endchar +% +% FIXME: The left sharp corner produces ugly results at lower resolutions. +% +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 = 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 = 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; + + labels (1, 2, 3, 4, 5, 6, 7); +fet_endchar; + fet_endgroup ("rests")