X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=mf%2Ffeta-haak.mf;h=2e8e83275ae6c7623786c3e2c973537eff66b77a;hb=1aea74028c07ffd9d3681ff6b3046d17fb5dddbd;hp=9fb5c2b163d79413ba27bf9d996129b00b92ffc3;hpb=e7cb72c9fce8f40b1b1cad506597178223323a78;p=lilypond.git diff --git a/mf/feta-haak.mf b/mf/feta-haak.mf index 9fb5c2b163..2e8e83275a 100644 --- a/mf/feta-haak.mf +++ b/mf/feta-haak.mf @@ -1,74 +1,92 @@ -input feta-macros; -input feta-params; -input feta-autometric; +% feta-haak.mf -- implement bracket tips -*-Fundamental-*- +% +% part of LilyPond's pretty-but-neat music font +% +% source file of the Feta (not the Font-En-Tja) music font +% +% (c) 2005--2007 Han-Wen Nienhuys -save code; -code :=0; +fet_begingroup ("brackettips"); +def draw_bracket (expr thick_sharp, width_sharp, updown) = +begingroup; + save p, thin, thick, flattening, width, hair, flare; + path p; + pair tipdir; -def draw_bracket( expr height_sharp, width_sharp) = - save alpha, height, p, width, thin, thick; - height# := height_sharp; - width# := width_sharp; + flattening = 0.72; + thick# = thick_sharp; + flare# = flattening * width#; + width# = width_sharp; + + define_pixels (thick, width, flare); + if updown = 1: + set_char_box (0, width#, + .5 thick#, flare#); + else: + set_char_box (0, width#, + flare#, .5 thick#); + fi; - beginchar(incr code, width#, height#/2, height#/2); - - define_pixels (height, width); thin = 2 linethickness; - thick = .5 staff_space; - + hair = 1.25 linethickness; + pickup pencircle scaled thin; - lft x1 = 0; - top y1 = height/2 + thick + thin; + y7 = y1; + x7 = x2; + z2 = z4r + (thin, 0); - x2 = x1; - z2 = (x1, 0); - rt x3 = thick; - y3 = y2; + penpos3 (thin, 0); + penpos4 (thin, 90); - x4 = x3; - bot y4 = y1 - thick + thin/2; + z3 = z4; - alpha = 50; - z5 = z1 + (width, 3/4staff_space); + top y3 = 0.5 thick; + lft x3 = 0.0; + x1 = x3l; + y1 = -0.5 thick; - % need silly z6? - % strange turning path when invoked via MakeTeXTFM...? - % mf "\\mode:=ljfour; mag:=1; scrollmode; input feta-brackets16" - z6 = z5 - (0, thin/16); + z8 = .5 [z2, z7]; + top y5 = flare; + rt x5 = width; - filldraw z5{dir(180+alpha)}..{left}z1--z2--z3..{up}z4{right} - ..{dir(alpha)}z6..cycle; + p := z8{right} + ..tension 1.2.. z5{curl 0}; + tipdir := direction 1 of p; -% % try control points to do this in ps -% currentpicture:=currentpicture shifted (-x5/2,(x5-x4)/2); -% -% s7 := 0.4*(x5-x1); -% x7 = x1 + s7 * cosd(0); -% y7 = y1 + s7 * sind(0); -% -% s8 := -0.25*(x5-x1); -% x8 := x5 + s8 * cosd(alpha); -% y8 := y5 + s8 * sind(alpha); -% -% s9 := 0.5*(x5-x4); -% x9 := x4 + s9 * cosd(0); -% y9 := y4 + s9 * sind(0); -% -% s10 := -0.15*(x5-x4); -% x10 := x5 + s10 * cosd(alpha); -% y10 := y5 + s10 * sind(alpha); -% -% draw z5..controls z8 and z7..z1--z2--z3..{up}z4 -% ..controls z9 and z10..z6..cycle; -% -% labels(1,2,3,4,5,6,7,8,9,10); - addto currentpicture also currentpicture yscaled -1; -endchar; + penpos5 (hair, angle tipdir); + penpos6 (hair, 90 + angle tipdir); + + z5 = z6; + + pickup pencircle scaled 1; + + fill (z1 + -- z3l{up} + .. z4r{right} + -- z2{right} + .. z6r{tipdir} + .. z5r + .. z6l{-tipdir} + ..tension 1.1.. z7{left} + & z7 + -- z1 + & cycle) yscaled updown; + + if updown = 1: + penlabels (1, 2, 3, 4, 5, 6, 7, 8); + fi; +endgroup; enddef; -% for h := staffsize# step 1 pt# until (1.1 * staffsize#): -for h := staffsize# step 1 pt# until (7 * staffsize#): - draw_bracket(h, 2staff_space# ); -endfor +fet_beginchar ("bracket tip up", "up"); + draw_bracket (0.45 staff_space#, 1.9 staff_space#, 1); +fet_endchar; + + +fet_beginchar ("bracket tip down", "down"); + draw_bracket (0.45 staff_space#, 1.9 staff_space#, -1); +fet_endchar; + +fet_endgroup ("brackettips");