X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=mf%2Ffeta-macros.mf;h=89458e3c3dbb7e69358eed3f70813507bb988e98;hb=acae40c266a7df9b4882f937c733745c803ac9e4;hp=d8b7028cd110bee3270ee378d0681c040b48a05a;hpb=f423fa364db4d816ee207a675fd1c0d7ef26cd22;p=lilypond.git diff --git a/mf/feta-macros.mf b/mf/feta-macros.mf index d8b7028cd1..89458e3c3d 100644 --- a/mf/feta-macros.mf +++ b/mf/feta-macros.mf @@ -1,7 +1,27 @@ +% Feta (not the Font-En-Tja) music font -- auxiliary macros for both feta and parmesan fonts +% This file is part of LilyPond, the GNU music typesetter. +% +% Copyright (C) 1997--2015 Han-Wen Nienhuys +% +% 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 . + + % % debugging % + def print_penpos (suffix $) = message "z" & str$ & "l = (" & decimal x.$.l & ", " &decimal y.$.l & ");" @@ -31,15 +51,15 @@ def treq = enddef; -def draw_staff (expr first, last, offset) = +def draw_staff_if_debugging (expr first, last) = if test <> 0: pickup pencircle scaled stafflinethickness; for i := first step 1 until last: draw (-staff_space, - (i + offset) * staff_space_rounded) + (i + stafflines_y_offset) * staff_space_rounded) -- (4 staff_space, - (i + offset) * staff_space_rounded); + (i + stafflines_y_offset) * staff_space_rounded); endfor; fi; enddef; @@ -141,7 +161,7 @@ def make_pen_stack = enddef; -def del_pen_stack= +def del_pen_stack = save save_pen_stack, pen_stack_idx; enddef; @@ -165,6 +185,36 @@ def soft_penstroke text t = enddef; +def soft_start_penstroke text t = + forsuffixes e = l, r: + path_.e := t; + endfor; + + if cycle path_.l: + cyclestroke_; + else: + fill path_.l + -- reverse path_.r + ..tension1.5.. cycle; + fi; +enddef; + + +def soft_end_penstroke text t = + forsuffixes e = l, r: + path_.e := t; + endfor; + + if cycle path_.l: + cyclestroke_; + else: + fill path_.l + ..tension1.5.. reverse path_.r + -- cycle; + fi; +enddef; + + % % Make a round path segment going from P to Q. 2*A is the angle that the % path should take. @@ -408,7 +458,8 @@ enddef; def draw_bulb (expr turndir, zl, zr, bulb_rad, radius_factor)= begingroup; - save rad, ang; + save rad, ang, pat; + path pat; clearxy; @@ -425,9 +476,13 @@ begingroup; labels (0', 1', 2'); - fill zr{dir (ang + turndir * 90)} - .. z1' - .. z2' + pat = zr{dir (ang + turndir * 90)} + .. z1' + .. z2' + .. cycle; + + % avoid grazing outlines + fill subpath (0, 2.5) of pat -- cycle; endgroup enddef;