X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=mf%2Ffeta-slag.mf;h=7834d1fd8078ec88112bba9bd429c58d352d1169;hb=8b500afb9431f5471e385fa2eeb8fde868e4fc49;hp=cdc7f1ec7209b4a89916f1865b3820eb9bf0b40d;hpb=f423fa364db4d816ee207a675fd1c0d7ef26cd22;p=lilypond.git diff --git a/mf/feta-slag.mf b/mf/feta-slag.mf index cdc7f1ec72..7834d1fd80 100644 --- a/mf/feta-slag.mf +++ b/mf/feta-slag.mf @@ -4,7 +4,7 @@ % source file of the Feta (definitely not an abbreviation for Font-En-Tja) % music font % -% (c) 1998--2004 Jan Nieuwenhuizen +% (c) 1998--2006 Jan Nieuwenhuizen % % this file is included by feta-scripts.mf @@ -30,14 +30,16 @@ trill_ne := unitvector ((2, 3)); % 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; @@ -47,29 +49,44 @@ begingroup; top y3 = vround trill_height; z2 = z3 - (trill_thick - trill_thin) * trill_ne; - z4 = z1 - trill_ne * trill_overlap; - x4 := hround x4; - x5 = x2; - y5 = 0; - bot z3' = (top z3) 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); - p := p - -- p scaled -1 shifted (-feta_eps, -feta_eps) - -- cycle; - p := p shifted (offset, 0); - fill p; + 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; + 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; @@ -78,7 +95,7 @@ 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; @@ -87,8 +104,8 @@ fet_beginchar ("prall", "prall"); set_char_box (trill_width#, trill_width#, trill_height#, trill_height#); - draw_trillelement (-hround (.5 trill_width)); - draw_trillelement (-hround (.5 trill_width) + trill_width); + draw_trillelement (-hround (.5 trill_width), 1); + draw_trillelement (-hround (.5 trill_width) + trill_width, 2); fet_endchar; @@ -96,8 +113,8 @@ fet_beginchar ("mordent", "mordent"); set_char_box (trill_width#, trill_width#, 4/3 trill_height#, 4/3 trill_height#); - draw_trillelement (-hround (.5 trill_width)); - draw_trillelement (-hround (.5 trill_width) + trill_width); + draw_trillelement (-hround (.5 trill_width), 1); + draw_trillelement (-hround (.5 trill_width) + trill_width, 2); clearxy; @@ -118,9 +135,9 @@ fet_beginchar ("prallprall", "prallprall"); set_char_box (1.5 trill_width#, 1.5 trill_width#, trill_height#, trill_height#); - draw_trillelement (-trill_width); - draw_trillelement (0); - draw_trillelement (trill_width); + draw_trillelement (-trill_width, 1); + draw_trillelement (0, 0); + draw_trillelement (trill_width, 2); fet_endchar; @@ -128,9 +145,9 @@ 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 (-trill_width); - draw_trillelement (0); - draw_trillelement (trill_width); + draw_trillelement (-trill_width, 1); + draw_trillelement (0, 0); + draw_trillelement (trill_width, 2); clearxy; @@ -155,9 +172,9 @@ fet_beginchar ("upprall", "upprall"); set_char_box (1.5 trill_width#, 1.5 trill_width#, trill_height#, trill_height#); - draw_trillelement (-trill_width); - draw_trillelement (0); - draw_trillelement (trill_width); + draw_trillelement (-trill_width, 1); + draw_trillelement (0, 0); + draw_trillelement (trill_width, 2); z11 = z4 shifted (-trill_width, 0); z12 = z11 + (0, -2 trill_height); @@ -213,9 +230,9 @@ fet_beginchar ("downprall", "downprall"); set_char_box (1.5 trill_width#, 1.5 trill_width#, trill_height#, trill_height#); - draw_trillelement (-trill_width); - draw_trillelement (0); - draw_trillelement (trill_width); + draw_trillelement (-trill_width, 1); + draw_trillelement (0, 0); + draw_trillelement (trill_width, 2); z11 = z4 shifted (-trill_width, 0); z12 = z11 + (0, 2 trill_height); @@ -271,20 +288,28 @@ fet_beginchar ("lineprall", "lineprall"); set_char_box (1.5 trill_width#, 1.5 trill_width#, trill_height#, 4 trill_height#); - draw_trillelement (-trill_width); + draw_trillelement (-trill_width, 1); labels (1, 2, 3, 3', 4, 5, 5'); pickup pencircle scaled trill_stemwidth; - lft x10 = x4 - .5 trill_thin - trill_width; + penpos10 (trill_stemwidth, 0); + penpos11 (trill_stemwidth, 0); + + x10l = x4 - .5 trill_thin - trill_width; y10 = y4; z11 = z10 + (0, h); - labels (10, 11); + penlabels (10, 11); - draw_gridline (z10, z11, trill_stemwidth); + fill z11l + .. top z11 + .. z11r + -- z10r + -- z10l + -- cycle; - draw_trillelement (0); - draw_trillelement (trill_width); + draw_trillelement (0, 0); + draw_trillelement (trill_width, 2); fet_endchar;