From 564667279bc7108f28b8ee1749b507baa45c90a4 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sat, 28 May 2005 00:47:04 +0000 Subject: [PATCH] * lily/system-start-delimiter.cc (staff_bracket): use glyphs. * mf/feta-generic.mf: include feta-haak. * mf/feta-haak.mf: rewrite. Make separate glyphs for the tips --- ChangeLog | 6 ++ lily/include/system-start-delimiter.hh | 1 + lily/system-start-delimiter.cc | 27 +++++- mf/GNUmakefile | 5 +- mf/feta-generic.mf | 1 + mf/feta-haak.mf | 129 +++++++++++++------------ mf/feta-test-generic.mf | 7 +- scm/define-grobs.scm | 2 +- stepmake/stepmake/metafont-rules.make | 2 +- 9 files changed, 109 insertions(+), 71 deletions(-) diff --git a/ChangeLog b/ChangeLog index b84e4432ba..4512d6b168 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2005-05-28 Han-Wen Nienhuys + * lily/system-start-delimiter.cc (staff_bracket): use glyphs. + + * mf/feta-generic.mf: include feta-haak. + + * mf/feta-haak.mf: rewrite. Make separate glyphs for the tips + * scm/framework-ps.scm (write-preamble): only load fonts if their filename is a string. diff --git a/lily/include/system-start-delimiter.hh b/lily/include/system-start-delimiter.hh index 8468de947b..44906c9a1e 100644 --- a/lily/include/system-start-delimiter.hh +++ b/lily/include/system-start-delimiter.hh @@ -24,6 +24,7 @@ public: DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM)); static void try_collapse (Grob *); static Stencil staff_bracket (Grob *, Real); + static Stencil old_staff_bracket (Grob *, Real); static Stencil staff_brace (Grob *, Real); static Stencil simple_bar (Grob *, Real); }; diff --git a/lily/system-start-delimiter.cc b/lily/system-start-delimiter.cc index 972b264b5d..ed150d3854 100644 --- a/lily/system-start-delimiter.cc +++ b/lily/system-start-delimiter.cc @@ -20,7 +20,7 @@ #include "item.hh" Stencil -System_start_delimiter::staff_bracket (Grob *me, Real height) +System_start_delimiter::old_staff_bracket (Grob *me, Real height) { Real arc_height = scm_to_double (me->get_property ("arch-height")); @@ -58,6 +58,31 @@ System_start_delimiter::staff_bracket (Grob *me, Real height) return mol; } + + +Stencil +System_start_delimiter::staff_bracket (Grob *me, Real height) +{ + Font_metric *fm = Font_interface::get_default_font (me); + Drul_array tips (fm->find_by_name ("brackettips.down"), + fm->find_by_name ("brackettips.up")); + + Real thickness = robust_scm2double (me->get_property ("thickness"), 0.25); + + Stencil bracket = Lookup::filled_box (Box (Interval (0, thickness), + Interval (-height/2, height/2))); + + Direction d = DOWN; + do + { + bracket.add_at_edge (Y_AXIS, d, tips[d], 0.0, 0.0); + } + while (flip (&d) != DOWN); + + return bracket; +} + + Stencil System_start_delimiter::simple_bar (Grob *me, Real h) { diff --git a/mf/GNUmakefile b/mf/GNUmakefile index 58ef0ec1d1..8710f18b42 100644 --- a/mf/GNUmakefile +++ b/mf/GNUmakefile @@ -5,7 +5,10 @@ LOCALSTEPMAKE_TEMPLATES=lilypond include $(depth)/make/stepmake.make -AF_FILES = $(wildcard *.af) +AF_FILES = $(wildcard *.af) + +# hangs on feta23 +MFTRACE_FLAGS= # --simplify EXTRA_DIST_FILES += README feta.tex diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf index 0afbcdd9a0..1d75e0a5c0 100644 --- a/mf/feta-generic.mf +++ b/mf/feta-generic.mf @@ -36,6 +36,7 @@ if test = 0: input feta-klef; input feta-timesig; input feta-pendaal; + input feta-haak; input feta-accordion; else: input feta-test-generic.mf; diff --git a/mf/feta-haak.mf b/mf/feta-haak.mf index 9fb5c2b163..6729a2e90f 100644 --- a/mf/feta-haak.mf +++ b/mf/feta-haak.mf @@ -1,74 +1,75 @@ -input feta-macros; -input feta-params; -input feta-autometric; -save code; -code :=0; +fet_begingroup ("brackettips"); +def draw_bracket(expr thick_sharp, width_sharp, updown) = +begingroup; + save p, thin, thick, flattening, width; + 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.70; + thick# := thick_sharp; + width# := width_sharp; + + define_pixels (thick, width); + if updown = 1: + set_char_box (0, width#, + .5 thick# , flattening * width#); + else: + set_char_box (0, width#, + flattening * width#, .5 thick#); + fi; - beginchar(incr code, width#, height#/2, height#/2); - - define_pixels (height, width); thin = 2 linethickness; - thick = .5 staff_space; pickup pencircle scaled thin; - lft x1 = 0; - top y1 = height/2 + thick + thin; - - x2 = x1; - z2 = (x1, 0); - rt x3 = thick; - y3 = y2; - - x4 = x3; - bot y4 = y1 - thick + thin/2; - - alpha = 50; - z5 = z1 + (width, 3/4staff_space); - - % need silly z6? - % strange turning path when invoked via MakeTeXTFM...? - % mf "\\mode:=ljfour; mag:=1; scrollmode; input feta-brackets16" - z6 = z5 - (0, thin/16); - - filldraw z5{dir(180+alpha)}..{left}z1--z2--z3..{up}z4{right} - ..{dir(alpha)}z6..cycle; - -% % 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; + + + penpos3(thin, 0); + penpos4(thin, 90); + + z3 = z4; + + top y3 = 0.5 thick; + lft x3 = 0.0; + x1 = x3l; + y1 = -0.5 thick; + + z5 = .5 [z1, z3] + (width - thin, flattening * width - .5 thin); + p := .5 [z1, z3]{right} .. z5; + tipdir := (direction 1 of p); + + penpos5 (thin, angle (tipdir)); + penpos6 (thin, 90 + angle (tipdir)); + + z5 = z6; + + z7 = z1 + (thick,0); + + + pickup pencircle scaled 1; + + % draw p; + fill (z1{up} .. z3l{up} + .. z4r{right} .. z6r{tipdir} + .. z5r .. z6l{-tipdir} + .. z7{left} .. z1{left} & cycle) + yscaled updown; + + + if updown = 1: + penlabels (1,2,3,4,5,6,7); + 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#, 2.0 staff_space#, 1); +fet_endchar; + +fet_beginchar ("bracket tip down", "down"); + draw_bracket (0.45 staff_space#, 2.0 staff_space#, -1); +fet_endchar; +fet_endgroup ("brackettips"); diff --git a/mf/feta-test-generic.mf b/mf/feta-test-generic.mf index 60e9a222fc..9af341967b 100644 --- a/mf/feta-test-generic.mf +++ b/mf/feta-test-generic.mf @@ -4,13 +4,14 @@ % %input feta-eindelijk; -input feta-toevallig; +%input feta-toevallig; %input feta-puntje; -%input feta-bolletjes; +input feta-bolletjes; %input feta-schrift; %input feta-banier; % input feta-slag; -input feta-klef; +%input feta-klef; +input feta-haak; % input feta-haak; %input feta-timesig; %input feta-pendaal; diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index f8a92c1939..e745f4a9c3 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -1207,7 +1207,7 @@ (arch-thick . 0.25) (arch-width . 1.5) (collapse-height . 1) - (thickness . 0.25) + (thickness . 0.45) (meta . ((interfaces . (system-start-delimiter-interface spanner-interface)))) )) diff --git a/stepmake/stepmake/metafont-rules.make b/stepmake/stepmake/metafont-rules.make index 585da6669f..d1bbc418d5 100644 --- a/stepmake/stepmake/metafont-rules.make +++ b/stepmake/stepmake/metafont-rules.make @@ -31,7 +31,7 @@ $(outdir)/%.$(XPM_RESOLUTION)pk: $(outdir)/%.$(XPM_RESOLUTION)gf MFTRACE_FORMATS = pfa pfb svg $(outdir)/%.pfb $(outdir)/%.svg $(outdir)/%.pfa: %.mf - $(MFTRACE) $(MFTRACE_FLAGS) --simplify -I $(outdir)/ --formats=pfa,pfb,svg $(basename $(@F)) + $(MFTRACE) $(MFTRACE_FLAGS) -I $(outdir)/ --formats=pfa,pfb,svg $(basename $(@F)) # -mv $(MFTRACE_FORMATS:%=$(basename $(@F).%)) $(outdir) -mv $(basename $(@F)).pfa $(outdir) -mv $(basename $(@F)).pfb $(outdir) -- 2.39.2