X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=mf%2Ffeta-slag.mf;h=101385cfec13c42082db4c51523bc6a40b847929;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=bc23437c2125a439d577a089f8ad6f86b382ae00;hpb=71dd5f6c45009b85d2f9232d31370ee81cf21f5a;p=lilypond.git diff --git a/mf/feta-slag.mf b/mf/feta-slag.mf index bc23437c21..101385cfec 100644 --- a/mf/feta-slag.mf +++ b/mf/feta-slag.mf @@ -4,138 +4,161 @@ % source file of the Feta (definitely not an abbreviation for Font-En-Tja) % music font % -% (c) 1998--2004 Jan Nieuwenhuizen +% (c) 1998--2008 Jan Nieuwenhuizen % % this file is included by feta-scripts.mf trill_thin# = 0.1 staff_space# + 0.6 stafflinethickness#; -trill_thick# = 1/2 staff_space#; -trill_width# = 5/12 staff_space#; +trill_stemwidth# = trill_thin#; +define_pixels (trill_thin); +define_whole_blacker_pixels (trill_stemwidth); + +trill_thick = 1/2 staff_space; +trill_overlap = 1/6 staff_space; + +trill_width# = 5/6 staff_space#; trill_height# = 1/2 staff_space#; -trill_overlap# = 1/6 staff_space#; +define_pixels (trill_height); +define_whole_pixels (trill_width); pair trill_ne; trill_ne := unitvector ((2, 3)); -define_pixels (trill_thick, trill_thin, - trill_width, trill_overlap, trill_height); - % % The trill element sticks out on both the left and right side % of the normal bbox, so you can glue them together easily. % +% `ending' is either 0 for none, 1 for left, or 2 for right. +% -def draw_trillelement (expr offset) = +def draw_trillelement (expr offset, ending) = clearxy; begingroup; - save nw, p; - pair nw; - path p; + save nw, pat, nw_dist, ne_dist; + pair nw, nw_dist, ne_dist; + path pat; pickup pencircle scaled trill_thin; - x1 = -trill_width; + x1 = -.5 trill_width; y1 = 0; z3 = whatever * trill_ne + z1; - top y3 = trill_height; + top y3 = vround trill_height; z2 = z3 - (trill_thick - trill_thin) * trill_ne; + bot z3' = (top z3) scaled -1; + + nw = unitvector (z2 - z3'); + ne_dist = (nw rotated -90) * 0.5 trill_thin; + nw_dist = (trill_ne rotated 90) * 0.5 trill_thin; + + z5 = whatever * trill_ne + (z1 - nw_dist); + z5 = whatever * nw + (z3' - ne_dist); + + pat := z5 + -- (z1 - nw_dist){-trill_ne} + -- (z1 + nw_dist){trill_ne} + -- (z3 + nw_dist){trill_ne} + .. top z3{right} + .. (z3 + ne_dist){-nw}; + pat := pat + -- pat scaled -1 shifted (-feta_eps, -feta_eps) + -- cycle; + pat := pat shifted (offset, 0); + fill pat; + z4 = z1 - trill_ne * trill_overlap; - x5 = x2; - y5 = 0; - - z3' = z3 scaled -1; - z5' = z5 scaled -1; - - nw := unitvector (z2 - z3'); - - path p; - p := z5 - --- (z4 - 0.5 trill_thin * nw) - .. bot z4 - .. lft z4 - .. (z4 + 0.5 trill_thin * nw) - --- (z3 + 0.5 trill_thin * nw) - .. top z3 - .. (z3 + 0.5 trill_thin * trill_ne) - --- z5'; - p := p - & p scaled -1 - & cycle; - p := p shifted (offset, 0); - fill p; + x4 := hround (x4 + 0.5 trill_thin) - 0.5 trill_thin; + + pat := (z4 - nw_dist){-trill_ne} + .. bot z4{left} + .. lft z4{up} + .. (z4 + nw_dist){trill_ne} + -- (z1 + nw_dist){trill_ne} + -- (z1 - nw_dist){-trill_ne} + -- cycle; + + if ending = 1: + fill pat shifted (offset, 0); + elseif ending = 2: + pat := pat scaled -1 shifted (-feta_eps, -feta_eps); + fill pat shifted (offset, 0); + fi; endgroup; enddef; -fet_beginchar ("trilelement", "trilelement") - set_char_box (trill_width#, trill_width#, +fet_beginchar ("trilelement", "trilelement"); + set_char_box (.5 trill_width#, .5 trill_width#, trill_height#, trill_height#); - draw_trillelement (0); + draw_trillelement (0, 0); labels (1, 2, 3, 3', 4, 5, 5'); fet_endchar; -fet_beginchar ("prall", "prall") - set_char_box (2 trill_width#, 2 trill_width#, +fet_beginchar ("prall", "prall"); + set_char_box (trill_width#, trill_width#, trill_height#, trill_height#); - draw_trillelement (-trill_width); - draw_trillelement (trill_width); + draw_trillelement (-hround (.5 trill_width), 1); + draw_trillelement (-hround (.5 trill_width) + trill_width, 2); fet_endchar; -fet_beginchar ("mordent", "mordent") - set_char_box (2 trill_width#, 2 trill_width#, +fet_beginchar ("mordent", "mordent"); + set_char_box (trill_width#, trill_width#, 4/3 trill_height#, 4/3 trill_height#); - draw_trillelement (-trill_width); - draw_trillelement (trill_width); + draw_trillelement (-hround (.5 trill_width), 1); + draw_trillelement (-hround (.5 trill_width) + trill_width, 2); clearxy; - pickup pencircle scaled trill_thin; + + pickup pencircle scaled trill_stemwidth; top y1 = h; bot y2 = -d; x1 = x2; x2 = 0; - draw_gridline (z2, z1, trill_thin); + draw_gridline (z2, z1, trill_stemwidth); labels (1, 2); fet_endchar; -fet_beginchar ("prallprall", "prallprall") - set_char_box (3 trill_width#, 3 trill_width#, +fet_beginchar ("prallprall", "prallprall"); + set_char_box (1.5 trill_width#, 1.5 trill_width#, trill_height#, trill_height#); - draw_trillelement (-2 trill_width); - draw_trillelement (0); - draw_trillelement (2 trill_width); + draw_trillelement (-trill_width, 1); + draw_trillelement (0, 0); + draw_trillelement (trill_width, 2); fet_endchar; -fet_beginchar ("prallmordent", "prallmordent") - set_char_box (3 trill_width#, 3 trill_width#, +fet_beginchar ("prallmordent", "prallmordent"); + set_char_box (1.5 trill_width#, 1.5 trill_width#, 4/3 trill_height#, 4/3 trill_height#); - draw_trillelement (-2 trill_width); - draw_trillelement (0); - draw_trillelement (2 trill_width); + + draw_trillelement (-trill_width, 1); + draw_trillelement (0, 0); + draw_trillelement (trill_width, 2); clearxy; - pickup pencircle scaled trill_thin; + + pickup pencircle scaled trill_stemwidth; top y1 = h; bot y2 = -d; x1 = x2 ; - x2 = trill_width; + x2 = good.x (.5 trill_width); - draw_gridline (z2, z1, trill_thin); + draw_gridline (z2, z1, trill_stemwidth); labels (1, 2); fet_endchar; @@ -145,139 +168,148 @@ save remember_pic; picture remember_pic; -fet_beginchar ("upprall", "upprall") - set_char_box (3 trill_width#, 3 trill_width#, +fet_beginchar ("upprall", "upprall"); + set_char_box (1.5 trill_width#, 1.5 trill_width#, trill_height#, trill_height#); - draw_trillelement (-2 trill_width); - draw_trillelement (0); - draw_trillelement (2 trill_width); - clearxy; + draw_trillelement (-trill_width, 1); + draw_trillelement (0, 0); + draw_trillelement (trill_width, 2); - z1 = (-b, 0) - trill_overlap * trill_ne; - z2 = z1 + (0, -2 trill_height); + z11 = z4 shifted (-trill_width, 0); + z12 = z11 + (0, -2 trill_height); - penpos1 (trill_thin, angle (trill_ne) - 90); - penpos2 (trill_thin, angle (trill_ne yscaled -1) + 90); - penlabels (1, 2); + penpos11 (trill_thin, angle (trill_ne) - 90); + penpos12 (trill_thin, angle (trill_ne yscaled -1) + 90); + penlabels (11, 12); - pickup pencircle scaled trill_thin; + pickup pencircle scaled trill_stemwidth; - fill z1l{-trill_ne} - .. z2l{trill_ne yscaled -1} - .. bot z2 - .. rt z2 - .. z2r{-trill_ne yscaled -1} - .. z1r{trill_ne} + fill z11l{-trill_ne} + .. z12l{trill_ne yscaled -1} + .. bot z12 + .. rt z12 + .. z12r{-trill_ne yscaled -1} + .. z11r{trill_ne} -- cycle; remember_pic := currentpicture; fet_endchar; -fet_beginchar ("upmordent", "upmordent") - set_char_box (3 trill_width#, 3 trill_width#, +fet_beginchar ("upmordent", "upmordent"); + set_char_box (1.5 trill_width#, 1.5 trill_width#, 4/3 trill_height#, 4/3 trill_height#); currentpicture := remember_pic; clearxy; - pickup pencircle scaled trill_thin; + + pickup pencircle scaled trill_stemwidth; top y1 = h; bot y2 = -d; - x1 = x2 ; - x2 = trill_width; + x1 = x2; + x2 = good.x (.5 trill_width); - draw_gridline (z2, z1, trill_thin); + draw_gridline (z2, z1, trill_stemwidth); labels (1, 2); fet_endchar; -fet_beginchar ("pralldown", "pralldown") - set_char_box (3 trill_width#, 3 trill_width#, +fet_beginchar ("pralldown", "pralldown"); + set_char_box (1.5 trill_width#, 1.5 trill_width#, trill_height#, trill_height#); currentpicture := remember_pic xscaled -1; fet_endchar; -fet_beginchar ("downprall", "downprall") - set_char_box (3 trill_width#, 3 trill_width#, +fet_beginchar ("downprall", "downprall"); + set_char_box (1.5 trill_width#, 1.5 trill_width#, trill_height#, trill_height#); - remember_pic := currentpicture; - - draw_trillelement (-2 trill_width); - draw_trillelement (0); - draw_trillelement (2 trill_width); + draw_trillelement (-trill_width, 1); + draw_trillelement (0, 0); + draw_trillelement (trill_width, 2); - clearxy; - z1 = (-b, 0) - trill_overlap * trill_ne; - z2 = z1 + (0, 2 trill_height); + z11 = z4 shifted (-trill_width, 0); + z12 = z11 + (0, 2 trill_height); - penpos1 (trill_thin, angle (trill_ne xscaled -1) - 90); - penpos2 (trill_thin, angle (trill_ne) - 90); - penlabels (1, 2); + penpos11 (trill_thin, angle (trill_ne xscaled -1) - 90); + penpos12 (trill_thin, angle (trill_ne) - 90); + penlabels (11, 12); - pickup pencircle scaled trill_thin; + pickup pencircle scaled trill_stemwidth; - fill z1l{trill_ne xscaled -1} - .. z2l{trill_ne} - .. top z2 - .. rt z2 - .. z2r{-trill_ne} - .. z1r{-trill_ne xscaled -1} + fill z11l{trill_ne xscaled -1} + .. z12l{trill_ne} + .. top z12 + .. rt z12 + .. z12r{-trill_ne} + .. z11r{-trill_ne xscaled -1} -- cycle; remember_pic := currentpicture; fet_endchar; -fet_beginchar ("downmordent", "downmordent") - set_char_box (3 trill_width#, 3 trill_width#, +fet_beginchar ("downmordent", "downmordent"); + set_char_box (1.5 trill_width#, 1.5 trill_width#, 4/3 trill_height#, 4/3 trill_height#); currentpicture := remember_pic; clearxy; - pickup pencircle scaled trill_thin; + + pickup pencircle scaled trill_stemwidth; top y1 = h; bot y2 = -d; - x1 = x2 ; - x2 = trill_width; + x1 = x2; + x2 = good.x (.5 trill_width); - draw_gridline (z2, z1, trill_thin); + draw_gridline (z2, z1, trill_stemwidth); labels (1, 2); fet_endchar; -fet_beginchar ("prallup", "prallup") - set_char_box (3 trill_width#, 3 trill_width#, +fet_beginchar ("prallup", "prallup"); + set_char_box (1.5 trill_width#, 1.5 trill_width#, trill_height#, trill_height#); currentpicture := remember_pic xscaled -1; fet_endchar; -fet_beginchar ("lineprall", "lineprall") - set_char_box (3 trill_width#, 3 trill_width#, +fet_beginchar ("lineprall", "lineprall"); + set_char_box (1.5 trill_width#, 1.5 trill_width#, trill_height#, 4 trill_height#); - remember_pic := currentpicture; + draw_trillelement (-trill_width, 1); - draw_trillelement (-2 trill_width); - draw_trillelement (0); - draw_trillelement (2 trill_width); + labels (1, 2, 3, 3', 4, 5, 5'); - clearxy; - z1 = (-b, 0) - trill_overlap * trill_ne ; - z2 = z1 + (0, h); + pickup pencircle scaled trill_stemwidth; - labels (1, 2); + penpos10 (trill_stemwidth, 0); + penpos11 (trill_stemwidth, 0); + + x10l = x4 - .5 trill_thin - trill_width; + y10 = y4; + z11 = z10 + (0, h); + + penlabels (10, 11); + + fill z11l + .. top z11 + .. z11r + -- z10r + -- z10l + -- cycle; - draw_gridline (z1, z2, trill_thin); + draw_trillelement (0, 0); + draw_trillelement (trill_width, 2); fet_endchar;