% % feta-sleur.mf -- implement runtime MF slurs % % source file of LilyPond's pretty-but-neat music font % % (c) 1997 Jan Nieuwenhuizen % & Han-Wen Nienhuys % % see Documentation/fonts.tex % mode_setup; %% staffsize#=16pt#; % interline#:=staffsize#/4; % stafflinethickness#:=0.1interline#; pi:=3.14159; def atan(expr x) = (angle(1,x)*pi/180) enddef; sleur_pen#:=stafflinethickness#; slurheightlimit#:=staffsize#/2; slurthick#:=1.8stafflinethickness#; define_pixels(staffsize,interline,stafflinethickness); define_pixels(sleur_pen,slurheightlimit,slurthick); sluralpha:=2slurheightlimit#/pi; slurratio:=1/3; slurbeta:=pi*slurratio/2slurheightlimit#; def draw_slur(expr dxs,dys,hs,d) = save x, y; save b, dx, dy, h, indent; dx#:=dxs*1pt#; dy#:=dys*1pt#; h#:=hs*1pt#; define_pixels(dx,dy); b#:=length(dx#,dy#); indent#:=sluralpha*atan(slurbeta*b#); define_pixels(b,h,indent); height:=(indent+h)*d; z1=(0,0); z2=(b,0); z3=(indent,height); z4=(b-indent,height); z5=z4-(0,d*slurthick); z6=z3-(0,d*slurthick); path boogje; boogje=z1..controls z3 and z4..z2..controls z5 and z6..cycle; boogje:=boogje rotated angle(dxs,dys); pickup pencircle scaled sleur_pen; filldraw boogje; enddef;