From fd7679ace7d1e2720f302fa1b3db34e10697790d Mon Sep 17 00:00:00 2001 From: uid67283 Date: Mon, 29 Dec 2003 16:32:09 +0000 Subject: [PATCH] * mf/feta-params.mf (stafflines): fix stafflinethickness at 0.5 pt throughout. Many fixes. * mf/feta-sleur,slur.mf: remove. * mf/feta-slag.mf: rewrite. --- ChangeLog | 9 + ly/paper16-init.ly | 1 - ly/params-init.ly | 8 +- mf/feta-accordion.mf | 8 +- mf/feta-banier.mf | 5 +- mf/feta-bolletjes.mf | 76 ++++--- mf/feta-generic.mf | 2 - mf/feta-klef.mf | 23 +- mf/feta-macros.mf | 2 + mf/feta-params.mf | 13 +- mf/feta-pendaal.mf | 63 +++--- mf/feta-schrift.mf | 87 ++++---- mf/feta-slag.mf | 293 +++++++++++++------------- mf/feta-sleur.mf | 59 ------ mf/feta-test-generic.mf | 3 +- mf/feta-timesig.mf | 7 +- mf/feta-toevallig.mf | 10 +- mf/slur.mf | 31 --- stepmake/stepmake/metafont-rules.make | 2 +- 19 files changed, 327 insertions(+), 375 deletions(-) delete mode 100644 mf/feta-sleur.mf delete mode 100644 mf/slur.mf diff --git a/ChangeLog b/ChangeLog index 7bea6ea3f4..306161c853 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2003-12-29 Han-Wen Nienhuys + + * mf/feta-params.mf (stafflines): fix stafflinethickness at 0.5 pt + throughout. Many fixes. + + * mf/feta-sleur,slur.mf: remove. + + * mf/feta-slag.mf: rewrite. + 2003-12-24 Han-Wen Nienhuys * stepmake/stepmake/toplevel-targets.make: remove pfa targets diff --git a/ly/paper16-init.ly b/ly/paper16-init.ly index 8ace29880a..054feec723 100644 --- a/ly/paper16-init.ly +++ b/ly/paper16-init.ly @@ -6,7 +6,6 @@ paperSixteen = \paper { staffheight = 16.0\pt #(define fonts (scale-font-list (/ 16. 20.))) - \include "params-init.ly" } diff --git a/ly/params-init.ly b/ly/params-init.ly index 1091b75b09..2d92144942 100644 --- a/ly/params-init.ly +++ b/ly/params-init.ly @@ -19,13 +19,15 @@ paperfile = \papersize + "-init.ly" \include "paper-init.ly" staffspace = #(/ staffheight 4.0) -linethickness = #(/ staffspace 10.0) +linethickness = 0.5 \pt outputscale = #(/ staffheight 4.0) -ledgerlinethickness = #(* 2.0 linethickness) + +% don't do full 2x for ledger, otherwise no white is left. +ledgerlinethickness = #(+ linethickness (/ staffspace 10)) % 2/3 stafflinethickness in 20pt staffheight % this parameter is independent of the output size. -blotdiameter = 0.45 \pt +blotdiameter = 0.35 \pt interscoreline = 4. \mm diff --git a/mf/feta-accordion.mf b/mf/feta-accordion.mf index c06618dc37..06215e1af1 100644 --- a/mf/feta-accordion.mf +++ b/mf/feta-accordion.mf @@ -132,7 +132,7 @@ enddef; def def_some_vars = save hs, mb, mt, thin, thick, height, width, cOne, cTwo; - width = .8staffsize; + width = .8(4 staff_space); height = 2.4staff_space; % URG. smaller sizes should be wider and fatter %thin = 0.05staff_space; @@ -156,14 +156,14 @@ def print_penpos (suffix $)= enddef; %fet_beginchar("accTEST", "accTEST", "accTEST") -% set_char_box(.4staffsize#, .4staffsize#, 0, 2.4staff_space#); +% set_char_box(.4(4 staff_space#), .4(4 staff_space#), 0, 2.4staff_space#); % def_some_vars; % penlabels(10, 11, 12, 13, 14); % penstroke z10e--z11e{right}..z12e..z13e{left}--z14e; %fet_endchar; fet_beginchar("accSB", "accSB", "accSB") - set_char_box(.4staffsize#, .4staffsize#, 0, 2.4staff_space#); + set_char_box(.4(4 staff_space#), .4(4 staff_space#), 0, 2.4staff_space#); def_some_vars; def_B(.35width, .7height); @@ -197,7 +197,7 @@ fet_beginchar("accSB", "accSB", "accSB") fet_endchar; fet_beginchar("accBB", "accBB", "accBB") - set_char_box(.4staffsize#, .4staffsize#, 0, 2.4staff_space#); + set_char_box(.4(4 staff_space#), .4(4 staff_space#), 0, 2.4staff_space#); def_some_vars; def_B(.35width, .7height); diff --git a/mf/feta-banier.mf b/mf/feta-banier.mf index 206cf20d84..e384cc0d4c 100644 --- a/mf/feta-banier.mf +++ b/mf/feta-banier.mf @@ -25,8 +25,9 @@ right_downflag_space# = .0 downflag_width#; % save hip_thickness, foot_thickness; -hip_thickness# = 1.3 stemthickness#; -foot_thickness# = 0.95 hip_thickness#; + +hip_thickness# = 1.0 stafflinethickness# + 0.069 staff_space#; +foot_thickness# = 1.2055 stafflinethickness# + 0.06 staff_space#; % % Inspired by Adobe Sonata and [Wanske] diff --git a/mf/feta-bolletjes.mf b/mf/feta-bolletjes.mf index 396f895dca..b895f96e44 100644 --- a/mf/feta-bolletjes.mf +++ b/mf/feta-bolletjes.mf @@ -402,50 +402,70 @@ endgroup; %%% Editable values: -slash_slope := 1.7; % slope of slash. From scm/grob-description.scm. How to auto-copy? -slt# := 2/3*0.48staff_space#; % thickness of lines. quarter notes get 1.5slt width. -slh# := 2staff_space#; % height of char. -%%% Calculated values: -sxa# := 0; % how much the char exceeds the boundingbox horizontally: +% slope of slash. From scm/grob-description.scm. How to auto-copy? +slash_slope := 1.7; - % Width of hor. pen - with thanks to Pythagoras -slxt# := sqrt(slt#*slt#+(slt#/slash_slope)*(slt#/slash_slope)); -slw# := slh#/slash_slope; % width of sloping part of slash: +% thickness of lines. quarter notes get 1.5slt width. +slash_thick# := 2/3*0.48staff_space#; -define_pixels(slt,slh,sxa,slxt,slw); +define_pixels(slash_thick); +def draw_slash(expr hwid_hash) = + set_char_box (0, staff_space# / slash_slope + hwid_hash, + staff_space#/2 + stafflinethickness#/2, + staff_space#/2 + stafflinethickness#/2); -% -% -% UUGGGH! FIXME -- get rid of those sharp corners. -% -% -% + clearxy; + pickup pencircle scaled blot_diameter; + + bot y1 = - d; + top y2 = h; + lft x1 = 0; + lft x2 = staff_space / slash_slope; + + rt x3 = w; + y3 = y2; + y4 = y1; + x3- x2 = x4 - x1; + + filldraw z1 --- z2 --- z3 --- z4 --- cycle; + + if hwid_hash > 2 slash_thick#: + save th; + + th = slash_thick - blot_diameter; + y6 = y7; + y5 = y8; + y3 - y7 = th; + y5 - y1 = th; + z6 - z5 = whatever * (1, slash_slope); + z8 - z7 = whatever * (1, slash_slope); + + z5 = z1 + whatever * (1, slash_slope) + (th, 0); + z8 = z4 + whatever * (1, slash_slope) + (-th, 0); + + unfill + z5 -- z6 -- z7 -- z8 -- cycle; + fi + labels (range 1 thru 10); -def draw_slash(expr hwid_hash) = - wid# := slw#+2slxt#+hwid_hash; - set_char_box(0,wid#-2sxa#,slh#/2,slh#/2); - define_pixels (wid#); - pickup penrazor scaled slxt; - draw (-b+slxt/2-sxa,-d) -- (-b+slxt/2+slw-sxa,h); - draw (w-slxt/2-slw+sxa,-d) -- (w-slxt/2+sxa,h); - pickup penrazor scaled slt rotated 90; - draw (-b+slxt-sxa,-d+slt/2) -- (w-slw+sxa,-d+slt/2); - draw (-b+slw-sxa,h-slt/2) -- (w-slxt+sxa,h-slt/2); enddef; + + + fet_beginchar("Whole slashhead","0slash","wholeslashhead") - draw_slash(staff_space#); + draw_slash(2 slash_thick# + 0.5 staff_space#); fet_endchar; fet_beginchar("Half slashhead","1slash","halfslashhead") - draw_slash(0.6staff_space#); + draw_slash(2 slash_thick# + 0.15 staff_space#); fet_endchar; fet_beginchar("Quart slashhead","2slash","quartslashhead") - draw_slash(-slxt#/2); + draw_slash(slash_thick#); fet_endchar; % thick is the distance between the two parallel lines in the cross (distance between centres of lines) diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf index 4c1e0916eb..6b4ad8e883 100644 --- a/mf/feta-generic.mf +++ b/mf/feta-generic.mf @@ -18,8 +18,6 @@ mode_setup; input feta-macros; -make_pen_stack; -make_picture_stack; input feta-params; font_x_height staff_space#; diff --git a/mf/feta-klef.mf b/mf/feta-klef.mf index 3fcb0ef876..7838004e2e 100644 --- a/mf/feta-klef.mf +++ b/mf/feta-klef.mf @@ -21,7 +21,7 @@ def draw_c_clef (expr reduction) = save hair, norm, reduced_ss, right_edge; reduced_ss#=staff_space#*reduction; norm#:=2/3reduced_ss#; - hair#:=1/6norm#; + hair#:=0.06 reduced_ss# + 0.5 stafflinethickness# ; right_edge# = 15/4norm#+2hair#; @@ -43,7 +43,7 @@ def draw_c_clef (expr reduction) = z3=(((right_edge -xoff)/2)+xoff,2hair); penpos4(hair,0); - z4=(xoff+1/2norm+1/2hair,reduced_ss-hair); + z4=(xoff+1/2norm+1/2hair, reduced_ss - stafflinethickness - .2 hair); penpos5(4hair,0); z5=(xoff+5/4hair,0); @@ -275,7 +275,7 @@ def draw_gclef (expr reduction)= define_pixels(reduced_ss); pair downstroke_dir, center; - thinness = 1.4 stafflinethickness; + thinness = 0.1 staff_space + 0.4 stafflinethickness; downstroke_dir = unitvector (14, -75); downstroke_angle = angle downstroke_dir; @@ -283,7 +283,7 @@ def draw_gclef (expr reduction)= breapth_factor = 21.0 /14; inner_thick_end = 45; inner_start_angle = downstroke_angle - 43; - thickness = .4 reduced_ss; + thickness = .3 reduced_ss + 1 stafflinethickness; thinnib = thinness; @@ -296,7 +296,7 @@ def draw_gclef (expr reduction)= center := (1.0 * breapth_factor* reduced_ss, 0); save upward_swoosh_angle; - upward_swoosh_angle =130 ; + upward_swoosh_angle = 132; penpos7(thickness, upward_swoosh_angle); penpos5(thickness, upward_swoosh_angle); @@ -337,7 +337,7 @@ def draw_gclef (expr reduction)= z10 = .5 [z10l, z10r]; - z11 = center + whatever * downstroke_dir + ( .05 reduced_ss, 0); + z11 = center + whatever * downstroke_dir + ( .00 reduced_ss, 0); penpos1(thinnib, inner_start_angle); penpos2(thickness, 90); @@ -349,7 +349,7 @@ def draw_gclef (expr reduction)= save lipje; pair lipje; lipje= .5 [z9l, z9r] + .25 ((z9r- z9l) rotated -90); - penpos13(2 thinnib, 180); + penpos13(thinnib + 0.14 staff_space, 180); pickup pencircle scaled 1; @@ -359,12 +359,10 @@ def draw_gclef (expr reduction)= .. z4l{left} .. z5l{up} .. z7l{up} - %.. z8l .. tension 1.2 .. z9l -- lipje --z9r % {dir (downstroke_angle+ 0)} .. tension 0.8 - %.. z8r .. z7r{down} .. z5r{down} .. z4r{right} .. z3r .. z2r{left} .. tension .95 .. @@ -394,8 +392,7 @@ def draw_gclef (expr reduction)= p := z9 .. z10{down} .. z6 - .. (.52 [z4, z3]) - .. z11{down} + .. z11{dir (-95) } .. z12{dir(bot_angle)} .. z13{up} ; @@ -431,7 +428,9 @@ def draw_gclef (expr reduction)= z11r{dir(start_angle)} .. z12r{dir(bot_angle)} - ..new_bulb (z13r, 0.45 reduced_ss, 0.38 reduced_ss, 3 stafflinethickness, 1, -1) {down} + ..new_bulb (z13r, 0.45 reduced_ss, 0.38 reduced_ss, thinnib + + .15 staff_space + , 1, -1) {down} % .. tension 0.98 .. z12l{-dir (bot_angle)} diff --git a/mf/feta-macros.mf b/mf/feta-macros.mf index ae413e6a51..6f07c7d2c3 100644 --- a/mf/feta-macros.mf +++ b/mf/feta-macros.mf @@ -305,3 +305,5 @@ def draw_bulb(expr turndir, zl, zr, bulb_rad, radius_factor)= endgroup enddef; + +pi:=3.14159; diff --git a/mf/feta-params.mf b/mf/feta-params.mf index e822bcc591..4029517579 100644 --- a/mf/feta-params.mf +++ b/mf/feta-params.mf @@ -7,15 +7,10 @@ stafflines = 5; staff_space#:=staffsize#/(stafflines-1); -% URG! -%font_x_height staff_space# ; -% -% [D.K.Roush & J.S.Gourlay] say this should be 0.072 -% We know better -% FIXME: generally, the "blackness" of most chars depends on this. -% these dimensions should be independent. -stafflinethickness#:=0.1 staff_space#; +% measuring on pocket scores turns out: stafflinethickness is +% independent on staff size, and generally 0.5 pt. +stafflinethickness# :=0.5 pt#; stemthickness# := 1.3 stafflinethickness#; ledgerlinethickness# := 2 stafflinethickness#; @@ -50,3 +45,5 @@ if (blot_diameter# * vppp) < 1: blot_diameter# := 1/vppp; fi define_pixels(blot_diameter); + + diff --git a/mf/feta-pendaal.mf b/mf/feta-pendaal.mf index f783f302ef..9695556381 100644 --- a/mf/feta-pendaal.mf +++ b/mf/feta-pendaal.mf @@ -20,8 +20,9 @@ pedalpha = 40; pedbeta = 25; penh#=0.7stafflinethickness#; -penw#=4penh#; -%penw#=penh#; + +penw# = 2penh# + 0.14 staff_space#; + define_pixels (penh,penw); pedalh# = 2staff_space#; @@ -31,42 +32,48 @@ define_pixels (pedalh,pedalbh); % code values for own pedal font commented out % code := 41; % * = 42 -def draw_asterisk_bulb (expr w, h, i) = - begingroup; - clearxy; - save bulb, p; +fet_beginchar("Pedal asterisk", "*", "pedalasterisk") + set_char_box(0, 7/9pedalh#, 0, pedalh#); + z0 = (1/2w, h - 1/2w); + save bulb, p, radius, thin; path p; - bulb = 4/3penw; + + thin = 0.8 stafflinethickness; + + bulb + 2 radius = w; + 0.9 thin + bulb = (radius * pi * 2) / 8; pickup pencircle scaled penh; penpos 1 (bulb, 180); penpos 2 (bulb, 0); - penpos 3 (penh, 0); - penpos 4 (penw, 0); + penpos 3 (thin, 0); - z0 = (1/2w, h - 1/2w); - z1 = (1/2w, h-1/2bulb); + z1 = z0 + (0,radius); z2 = z1; - z3 = (x1, y1-penw); - z4 = (x1, y3-2penh); + + save inner_r ; + inner_r = .45 radius ; + + z4l = z0 + inner_r * dir (90 + 360/16); + z4r = z0 + inner_r * dir (90 - 360/16); + + z4 = .5 [z4l,z4r]; + z3 = .75 [z1,z4]; + penlabels (1,2,3,4); -% penstroke z1e{up}..z2e{down}..z3e{down}..z4e; - p = z1l{up}..z2l{down}..z3l{down}..z4l..z4r - ..z3r{up}..z2r{up}..z1r{down}..cycle; - p := p rotatedaround (z0, 360/8i); - fill p; - endgroup; - enddef; -fet_beginchar("Pedal asterisk", "*", "pedalasterisk") - set_char_box(0, 7/9pedalh#, 0, pedalh#); - z0 = (1/2w, h - 1/2w); - for i = 0 upto 7: - draw_asterisk_bulb (w, h, i); - pickup pencircle scaled penw; - undraw z0; - endfor + %% what is empty path? + p = z3r{up} .. z1l{up}..z2l{down}..z3l{down} .. z4l{dir (180 + 360/16)}; + for i = 1 upto 7: + p := p ... ((z3r{up}.. z1l{up}..z2l{down}..z3l{down}..z4l{dir (180 + 360/16)}) + rotatedaround (z0, 360/8i)); + endfor + + p := p .. cycle; + fill p; + pickup pencircle scaled (7/8 inner_r); + undraw z0; fet_endchar; % skip + and , diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf index 513acfcf22..e49aad3217 100644 --- a/mf/feta-schrift.mf +++ b/mf/feta-schrift.mf @@ -20,7 +20,7 @@ def draw_fermata = radius# = 1.25 staff_space#; crook_thinness# = 1.5stafflinethickness#; - crook_fatness# = 4 stafflinethickness#; + crook_fatness# = 0.25 staff_space# + 1.5 stafflinethickness#; radius# + crook_fatness#/2 = h#; radius# + crook_thinness#/2 = w#; @@ -60,7 +60,8 @@ fet_endchar; def draw_short_fermata = save fat_factor, thinness, dot_radius; set_char_box(staff_space#, staff_space#, 0, 2.2 staff_space#); - dot_radius# = 8/3*stafflinethickness#; + + dot_radius# = 0.133 staff_space# + 1.33 stafflinethickness#; define_pixels(dot_radius) fat_factor = .11; @@ -101,8 +102,8 @@ def draw_long_fermata = wd# = 2.5 staff_space#; stemthick = 1.5 stafflinethickness; - beamheight = 4 stafflinethickness; - dot_radius# = 8/3*stafflinethickness#; + beamheight = 0.3 staff_space+ stafflinethickness; + dot_radius# = 0.133 staff_space#+ + 1.333 *stafflinethickness#; set_char_box(wd#/2, wd#/2, 0, 3/2 staff_space#); draw_rounded_block((-b, h-beamheight), (w, h), blot_diameter); @@ -128,16 +129,18 @@ def draw_very_long_fermata = save ibeamheight, obeamheight; save ihwd, ohwd, iht, oht; % inner/outer half_width/height save stemthick, dot_radius; - define_pixels(ihwd, ohwd, iht, oht, dot_radius) + define_pixels(ihwd, ohwd, iht, oht) ihwd# = 1.0 staff_space#; ohwd# = 1.5 staff_space#; iht# = 0.9 staff_space#; oht# = 1.6 staff_space#; + stemthick = 1.5 stafflinethickness; - ibeamheight = 3 stafflinethickness; - obeamheight = 5 stafflinethickness; - dot_radius# = 8/3*stafflinethickness#; + ibeamheight = 0.3 staff_space; + obeamheight = 0.5 staff_space; + dot_radius = ((iht - ibeamheight) * 4/10) ; + set_char_box(ohwd#, ohwd#, 0, oht#); draw_rounded_block((-ohwd, oht-obeamheight), (ohwd, oht), blot_diameter); @@ -171,10 +174,12 @@ fet_beginchar("Thumb", "thumb", "thumb") save thin, height, width, thick; height# = 5/4 width#; height# = staff_space#; - thin = 1.2 stafflinethickness; - thick = 2 thin; set_char_box(width#/2, width#/2, height#/2, height#/2); - + define_pixels (height,width) + + thin = .6 stafflinethickness + 0.06 staff_space; + 2 thick + 0.5 (height - 2 thin) = width; + penpos1(thick, 0); penpos2(thin, 90); z1r = (w, 0); @@ -198,7 +203,7 @@ fet_beginchar("> accent", "sforzato", "sforzatoaccent") set_char_box(.9 staff_space#, .9 staff_space#, .5 staff_space#, .5 staff_space#); save thickness, diminish; - thickness = 3/2 stafflinethickness; + thickness = 0.05 staff_space + stafflinethickness; pickup pencircle scaled thickness; % prevent blobs at crossing lines @@ -210,7 +215,7 @@ fet_beginchar("> accent", "sforzato", "sforzatoaccent") y2 = .25 thickness* diminish; rt z4 = (w,0); - x3 =0; + x3 = - stafflinethickness + 0.1 staff_space; z3 = whatever [z1, z4]; penpos2(thickness*(2 - diminish)/2 , 90); @@ -239,7 +244,7 @@ fet_endchar; def draw_staccatissimo = save radius, height; height# = .8 staff_space#; - radius# = 2 stafflinethickness#; + radius# = stafflinethickness# + .1 staff_space#; define_whole_pixels(radius); define_pixels(height); @@ -341,9 +346,10 @@ fet_beginchar("open (unstopped)", "open", "ouvert") save thin, height, width, thick; height# = 5/4 width#; height# = staff_space#; - thin = 1.2 stafflinethickness; - thick = 1.4 thin; + thin = .6 stafflinethickness + 0.06 staff_space; set_char_box(width#/2, width#/2, height#/2, height#/2); + define_pixels (width,height); + 2 thick + 0.6 (height - 2 thin) = width; penpos1(thick, 0); penpos2(thin, 90); @@ -384,7 +390,9 @@ begingroup rt x2 = w; top y2 = h; - z3 = 0.6 [z2, z1]; + z3 = whatever [z2, z1]; + y3 = 0.6 [y2, y1] + thickness; + penpos3(thickness, 0); penpos4(thickness * diminish, 0); x4r = thickness/2; @@ -438,7 +446,7 @@ def draw_turn = wd# = 35/16 staff_space#; ht# = 18/17 staff_space#; - darkness = 1.20 stafflinethickness; + darkness = 0.3 stafflinethickness + 0.09 staff_space; set_char_box(wd#/2, wd#/2, ht#/2, ht#/2); @@ -484,16 +492,12 @@ enddef; fet_beginchar("Reverse turn","reverseturn","reverseturn") draw_turn; currentpicture := currentpicture yscaled -1; - penlabels(5,6,7); - penlabels(2,3,4); fet_endchar; fet_beginchar("Turn","turn","turn") draw_turn; - - penlabels(5,6,7); - penlabels(1,2,3,4); + penlabels(1,2,3,4,5,6,7); fet_endchar; @@ -521,7 +525,7 @@ fet_beginchar("Trill (`tr')","trill","trill") ex# = 1.4 staff_space#; kerning# = .60 ex#; start_nib_angle = 20; - bulb_size = 0.70; + bulb_size = 0.80; define_pixels(ex, ascender_extra, ascender, kerning); t_overshoot = 0.03 ex; @@ -530,8 +534,8 @@ fet_beginchar("Trill (`tr')","trill","trill") t_width = 1.9 t_fatness; r_fatness = 0.78 fatness; uitschieter = 0.48 ex; - hair_thick = blot_diameter; - r_flare = 0.45 r_fatness; + hair_thick = stafflinethickness; + r_flare = .5 hair_thick + 0.25 r_fatness; r_width = 2 r_fatness + 0.25 kerning; slant = .2; @@ -617,13 +621,13 @@ fet_beginchar("Trill (`tr')","trill","trill") set_char_box(.85 staff_space# , .85 staff_space#, 0,ascender#); - penpos11(1/4 r_fatness, -4); + penpos11(hair_thick, -4); z11r = z9r; z13l = (x9l + r_width, y11 - stafflinethickness ); penpos13(r_flare, 180); - z15 = z13r - (bulb_size * r_fatness,0); + z15 = z13r - ( bulb_size * r_fatness,0); z14 = 0.5 [z13l, z15] - (0,bulb_size* r_fatness); z16 = 0.5 [z13l, z15] + (0,bulb_size* r_fatness); @@ -720,6 +724,12 @@ fet_beginchar("Flageolet", "flageolet", "flageolet") draw z1..z2..z3..z4..cycle; fet_endchar; +%% +% +%TODO: ARGRGHGH code dup. +% +% + fet_beginchar("Segno", "segno", "segno") save thin, thick, ball_diam, darkness, pointheight; save wd, ht, thick_nibangle, ball_nib_thick; @@ -728,7 +738,7 @@ fet_beginchar("Segno", "segno", "segno") ht# = 3 staff_space#; wd# = 2 staff_space#; - darkness = 1.20 stafflinethickness; + darkness = .08 staff_space + 0.4 stafflinethickness; set_char_box(wd#/2, wd#/2, ht#/2, ht#/2); @@ -781,15 +791,18 @@ fet_beginchar("Segno", "segno", "segno") fet_endchar; fet_beginchar("Coda", "coda", "coda") - save thin, thick, codawidth, codaheight; - thin# = 1.2 stafflinethickness#; - thick# = 3.5 stafflinethickness#; + save stickout, thin, thick, codawidth, codaheight; + + stickout# = 0.35 staff_space#; codawidth# = 2/3 staff_space#; codaheight# = 1 staff_space#; - define_pixels(thin, thick, codawidth, codaheight); - set_char_box(codawidth#+thick#, codawidth#+thick#, - codaheight#+thick#, codaheight#+thick#); + set_char_box(codawidth#+stickout#, codawidth#+stickout#, + codaheight#+stickout#, codaheight#+stickout#); + + define_pixels(codawidth, codaheight); + thin = 1.2 stafflinethickness; + 0.1 (codaheight - 2 thin) = (codawidth - 2 thick); penpos1(thick,0); penpos2(thin,-90); @@ -815,7 +828,7 @@ fet_endchar; fet_beginchar("Varied Coda", "varcoda", "varcoda") save thin, thick, codawidth, codaheight; thin# = 1.2 stafflinethickness#; - thick# = 3.5 stafflinethickness#; + thick# = 1.0 stafflinethickness# + 0.25 staff_space#; codawidth# = 2/3 staff_space#; codaheight# = 1 staff_space#; define_pixels(thin, thick, codawidth, codaheight); @@ -902,7 +915,7 @@ fet_endchar; thick#:=1/24designsize; define_blacker_pixels(thick); -rthin:=1/8*staff_space; +rthin:= 0.075 *staff_space + 0.5 stafflinethickness; rthick:=2thick+rthin; def draw_arpeggio = diff --git a/mf/feta-slag.mf b/mf/feta-slag.mf index ab3ab508c6..e7105bd081 100644 --- a/mf/feta-slag.mf +++ b/mf/feta-slag.mf @@ -9,198 +9,191 @@ % this file is included by feta-scripts.mf -tfat := 1/2; -%twidth# := 0.5staff_space#; -%theight# := 0.55staff_space#; -% tthin# := stafflinethickness#; -tthin# := 1.6stafflinethickness#; +trill_thin# = 0.1 staff_space# + 0.6 stafflinethickness#; +trill_thick# = 1/2 staff_space#; +trill_width# = 5/12 staff_space#; +trill_height# = 1/2staff_space#; +trill_overlap# = 1/6 staff_space#; -twidth# := 2/3staff_space#; -theight# := 1/2staff_space#; +pair trill_ne; +trill_ne := unitvector ((6,9)); -% uhg/ uhuh? -% toverlap# := tfat*twidth#+tthin#; -toverlap# := tfat*twidth#+0.45tthin#; -define_pixels(twidth,theight,tthin,toverlap); +define_pixels (trill_thick, trill_thin, + trill_width, trill_overlap, trill_height); -def draw_trillelement = - save x, y; - pickup pencircle scaled tthin; +% +% the trill element sticks out on both the left and right side +% out of the normal bbox, so you can glue them together easily. +% +def draw_trillelement (expr startx) = +begingroup + clearxy; + save x, y, p; + + pickup pencircle scaled trill_thin; - lft x1 = -twidth; -% x3 = -1/3*twidth; - x3 = -0.3*twidth; - top y3 = theight; + x1 = - trill_width; + y1 = 0; + z3 = whatever * trill_ne + z1; + top y3 = trill_height; + z2 = z3 - (trill_thick - trill_thin) * trill_ne; - z3 - z1 = whatever * (0.5twidth, theight); - z2 = tfat[z3, z1]; + z4 = z1 - trill_ne * trill_overlap; path p; - p = z3 -- z2 -- z1 -- z2; + p = z3 -- z2 -- z4 -- z2; p := p -- (p scaled -1) -- cycle; - filldraw p; - labels(1,2,3); + %pickup pencircle scaled 2; + filldraw (p shifted (startx + trill_width,0)) ; + %draw p; + labels(1,2,3,4); +endgroup; enddef; -def draw_trill_two = - draw_trillelement; - currentpicture := currentpicture shifted (-2*twidth+toverlap, 0); - draw_trillelement; - currentpicture := currentpicture shifted (twidth-0.5toverlap, 0); -enddef; -def draw_trill_three = - draw_trillelement; - currentpicture := currentpicture shifted (-2*twidth+toverlap, 0); - draw_trillelement; - currentpicture := currentpicture shifted (-2*twidth+toverlap, 0); - draw_trillelement; - currentpicture := currentpicture shifted (2twidth-toverlap, 0); -enddef; -def draw_trill_four = - draw_trillelement; - currentpicture := currentpicture shifted (-2*twidth+toverlap, 0); - draw_trillelement; - currentpicture := currentpicture shifted (-2*twidth+toverlap, 0); - draw_trillelement; - currentpicture := currentpicture shifted (-2*twidth+toverlap, 0); - draw_trillelement; - currentpicture := currentpicture shifted (3twidth-1.5toverlap, 0); -enddef; - -def draw_mordent(expr a) = - pickup pencircle scaled tthin; - save x, y; - top y1 = 4/3theight; - x1 = x2 = a; - y2 = - y1; - draw z1 -- z2; -enddef; fet_beginchar("trilelement", "trilelement", "trilelement") -% set_char_box(twidth#, twidth#, theight#, theight#); - set_char_box(twidth#, twidth#-toverlap#, theight#, theight#); - draw_trillelement; + set_char_box(trill_width#, trill_width#, + trill_height#, trill_height#); + draw_trillelement(-trill_width); fet_endchar; fet_beginchar("prall", "prall", "prall") - trills := 2; - set_char_box(trills*twidth#-0.5toverlap#, trills*twidth#-0.5toverlap#, theight#, theight#); - draw_trill_two; + set_char_box(2 trill_width#, 2 trill_width#, + trill_height#, trill_height#); + draw_trillelement(-2 trill_width); + draw_trillelement(0); fet_endchar; fet_beginchar("mordent", "mordent", "mordent") - trills := 2; - set_char_box(trills*twidth#-0.5toverlap#, trills*twidth#-0.5toverlap#, 4/3*theight#, 4/3*theight#); - draw_trill_two; - draw_mordent(0); + set_char_box(2 trill_width#, 2 trill_width#, + 4/3 trill_height#, 4/3 trill_height#); + draw_trillelement(-2 trill_width); + draw_trillelement(0); + + pickup pencircle scaled trill_thin; + top y1 = h; + bot y2 = -d; + x1 = x2 ; + x2 = 0; + draw z1 -- z2; fet_endchar; - -% in modern typesetting, i've seen these double symbols implemented -% as three trills rather than the actual double four [gerou and lusk]. -% it looks nicer and i don't think it introduces ambiguity. -% would like to have more references -- jcn. - fet_beginchar("prallprall", "prallprall", "prallprall") - trills := 3; - set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#); - draw_trill_three; + set_char_box(3 trill_width#, 3 trill_width#, + trill_height#, trill_height#); + draw_trillelement(-3 trill_width); + draw_trillelement(-1 trill_width); + draw_trillelement(1 trill_width); fet_endchar; fet_beginchar("prallmordent", "prallmordent", "prallmordent") - trills := 3; - set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, 4/3*theight#, 4/3*theight#); - draw_trill_three; - draw_mordent(twidth-0.5toverlap); -fet_endchar; -input feta-sleur; + set_char_box(3 trill_width#, 3 trill_width#, + 4/3 trill_height#, 4/3trill_height#); + draw_trillelement(-3 trill_width); + draw_trillelement(-1 trill_width); + draw_trillelement(1 trill_width); + + pickup pencircle scaled trill_thin; + top y1 = h; + bot y2 = -d; + x1 = x2 ; + x2 = trill_width; + draw z1 -- z2; +fet_endchar; -% -% URG. The attached slurs look weird, and discontinuous in their connection to the -% main part. --hwn +save remember_pic; +picture remember_pic; fet_beginchar("upprall", "upprall", "upprall") -% trills := 4; - trills := 3; - set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#); -% draw_slur(-2twidth#,-2theight#,0,-1); -% currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin); - draw_slur(0,-2theight#,0,-1); -% currentpicture := currentpicture shifted (-0.5w+1.3tthin,-tfat*theight+1.5tthin); - currentpicture := currentpicture shifted (-0.5w+1.65tthin,-tfat*theight+1.15tthin); -% draw_trill_four; - draw_trill_three; -fet_endchar; - -fet_beginchar("downprall", "downprall", "downprall") - trills := 3; - set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#); -% draw_slur(-2twidth#,2theight#,0,1); - draw_slur(0,2theight#,0,1); -% currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin); - currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.5tthin); - draw_trill_three; + set_char_box(3 trill_width#, 3 trill_width#, + trill_height#, trill_height#); + draw_trillelement(-3 trill_width); + draw_trillelement(-1 trill_width); + draw_trillelement(1 trill_width); + + + z1 = (- b,0) - trill_overlap * trill_ne ; + z4 = z1 + (0, - 2 trill_height); + labels (1,4); + draw z1{-trill_ne} .. z4{trill_ne yscaled -1}; + remember_pic := currentpicture ; fet_endchar; fet_beginchar("upmordent", "upmordent", "upmordent") -% trills := 4; - trills := 3; - set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, 4/3*theight#, 4/3*theight#); -% draw_slur(-2twidth#,-2theight#,0,-1); -% currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin); - draw_slur(0,-2theight#,0,-1); -% currentpicture := currentpicture shifted (-0.5w+1.3tthin,-tfat*theight+1.5tthin); - currentpicture := currentpicture shifted (-0.5w+1.65tthin,-tfat*theight+1.15tthin); -% draw_trill_four; - draw_trill_three; - draw_mordent(twidth-0.5toverlap); + set_char_box(3 trill_width#, 3 trill_width#, + trill_height#, trill_height#); + + currentpicture := remember_pic; + + pickup pencircle scaled trill_thin; + top y1 = h; + bot y2 = -d; + x1 = x2 ; + x2 = trill_width; + draw z1 -- z2; fet_endchar; -fet_beginchar("downmordent", "downmordent", "downmordent") - trills := 3; - set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, 4/3*theight#, 4/3*theight#); -% draw_slur(-2twidth#,2theight#,0,1); - draw_slur(0,2theight#,0,1); -% currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin); - currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.5tthin); - draw_trill_three; - draw_mordent(twidth-0.5toverlap); +fet_beginchar("pralldown", "pralldown", "pralldown") + set_char_box(3 trill_width#, 3 trill_width#, + trill_height#, trill_height#); + currentpicture := remember_pic xscaled -1; fet_endchar; -fet_beginchar("lineprall", "lineprall", "lineprall") - trills := 3; - set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, 4*theight#); - pickup pencircle scaled tthin; - draw (-0.5w+tthin,-tfat*theight+0.5tthin) -- (-0.5w+tthin,h); - draw_trill_three; +fet_beginchar("downprall", "downprall", "downprall") + set_char_box(3 trill_width#, 3 trill_width#, + trill_height#, trill_height#); + remember_pic := currentpicture; + draw_trillelement(-3 trill_width); + draw_trillelement(-1 trill_width); + draw_trillelement(1 trill_width); + + + z1 = (- b,0) - trill_overlap * trill_ne ; + z4 = z1 + (0, 2 trill_height); + labels (1,4); + draw z1{trill_ne xscaled -1} .. z4{trill_ne}; + remember_pic := currentpicture ; + fet_endchar; -fet_beginchar("pralldown", "pralldown", "pralldown") -% trills := 4; - trills := 3; - set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#); -% draw_slur(-2twidth#,-2theight#,0,-1); -% currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin); - draw_slur(0,-2theight#,0,-1); -% currentpicture := currentpicture shifted (-0.5w+1.3tthin,-tfat*theight+1.5tthin); - currentpicture := currentpicture shifted (-0.5w+1.65tthin,-tfat*theight+1.15tthin); -% draw_trill_four; - draw_trill_three; - currentpicture := currentpicture xscaled -1; +fet_beginchar("downmordent", "downmordent", "downmordent") + set_char_box(3 trill_width#, 3 trill_width#, + 4/3 trill_height#, 4/3trill_height#); + + currentpicture := remember_pic; + + pickup pencircle scaled trill_thin; + top y1 = h; + bot y2 = -d; + x1 = x2 ; + x2 = trill_width; + draw z1 -- z2; fet_endchar; fet_beginchar("prallup", "prallup", "prallup") - trills := 3; - set_char_box(trills*twidth#-(trills-1)*0.5toverlap#, trills*twidth#-(trills-1)*0.5toverlap#, theight#, theight#); -% draw_slur(-2twidth#,2theight#,0,1); - draw_slur(0,2theight#,0,1); -% currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.75tthin); - currentpicture := currentpicture shifted (-0.5w+tthin,-tfat*theight+0.5tthin); - draw_trill_three; - currentpicture := currentpicture xscaled -1; + set_char_box(3 trill_width#, 3 trill_width#, + trill_height#, trill_height#); + currentpicture := remember_pic xscaled -1; +fet_endchar; + + +fet_beginchar("lineprall", "lineprall", "lineprall") + set_char_box(3 trill_width#, 3 trill_width#, + trill_height#, 4trill_height#); + remember_pic := currentpicture; + draw_trillelement(-3 trill_width); + draw_trillelement(-1 trill_width); + draw_trillelement(1 trill_width); + + + z1 = (- b,0) - trill_overlap * trill_ne ; + z4 = z1 + (0, h); + labels (1,4); + draw z1 -- z4; fet_endchar; + diff --git a/mf/feta-sleur.mf b/mf/feta-sleur.mf deleted file mode 100644 index e1b9321a68..0000000000 --- a/mf/feta-sleur.mf +++ /dev/null @@ -1,59 +0,0 @@ -% -% feta-sleur.mf -- implement runtime MF slurs -% -% source file of LilyPond's pretty-but-neat music font -% -% (c) 1997--2003 Jan Nieuwenhuizen -% & Han-Wen Nienhuys -% -% see Documentation/fonts.tex - -% mode_setup; - -%% staffsize#=16pt#; -% staff_space#:=staffsize#/4; -% stafflinethickness#:=0.1staff_space#; - -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,staff_space,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; - - diff --git a/mf/feta-test-generic.mf b/mf/feta-test-generic.mf index 4e89505e42..d48e01932c 100644 --- a/mf/feta-test-generic.mf +++ b/mf/feta-test-generic.mf @@ -6,12 +6,13 @@ input feta-bolletjes; %input feta-banier; +%input feta-slag; %input feta-eindelijk; %input feta-klef; % input feta-toevallig; % input feta-schrift; % input feta-haak; % input feta-timesig; -% input feta-pendaal; + input feta-pendaal; % input feta-accordion; % input feta-solfa; diff --git a/mf/feta-timesig.mf b/mf/feta-timesig.mf index 28bf31a86f..5caf9cbd31 100644 --- a/mf/feta-timesig.mf +++ b/mf/feta-timesig.mf @@ -83,18 +83,19 @@ fet_beginchar ("4/4 meter", "C4/4", "fourfourmeter") fet_endchar; fet_beginchar ("2/2 meter", "C2/2", "allabreve") - draw_C; save excentricity; pair excentricity; - xpart excentricity = x2 -1.25 stafflinethickness; + xpart excentricity = x2 -1.25 stafflinethickness; ypart excentricity = 0; save stemlen ; stemlen = 1.4 staff_space; + save thick; + thick = stafflinethickness / 2 + 0.025 staff_space; - draw_block((- .75 stafflinethickness, - stemlen) + excentricity, (.75 stafflinethickness , stemlen) + excentricity); + draw_block((- thick, - stemlen) + excentricity, (thick , stemlen) + excentricity); fet_endchar; fet_endgroup("timesig"); diff --git a/mf/feta-toevallig.mf b/mf/feta-toevallig.mf index 1c5ca0165e..bad84f5104 100644 --- a/mf/feta-toevallig.mf +++ b/mf/feta-toevallig.mf @@ -36,7 +36,7 @@ def draw_meta_sharp (expr width) = pair center; interbeam := 1.05 staff_space; - beamheight := 4 stafflinethickness; + beamheight := 0.3 staff_space + stafflinethickness; beamwidth := width; stemwidth := 1.5 stafflinethickness; roundness := 2 blot_diameter; @@ -133,7 +133,7 @@ fet_beginchar( "Natural", "0", "natural") stemwidth; save top_stem_thick; - beamheight# = 4.0 stafflinethickness#; + beamheight# = 0.3 staff_space# + stafflinethickness#; height# = 1.5 staff_space#; set_char_box(0, 2/3 staff_space#, height#, height#); @@ -146,7 +146,7 @@ fet_beginchar( "Natural", "0", "natural") interstem + stemwidth = w; - stemwidth = 1.3 stafflinethickness; + stemwidth = 0.03 staff_space + stafflinethickness; z2 -z1 = (interstem, slope * interstem); xpart .5 [z2,z1] = xcenter ; @@ -228,10 +228,10 @@ def draw_meta_flat(expr xcenter, w, crook_fatness) = % this is a somewhat heuristic. We should probably make it % straight for low resolution (300 dpi and less). - top_stem_thick = round (2.2 stafflinethickness) + 0.74; + top_stem_thick = round (0.1 staff_space + 1.2 stafflinethickness) + 0.74; bottom_overshoot = stafflinethickness; - bottom_stem_thick = 1.2 stafflinethickness; + bottom_stem_thick =0.06 staff_space + 0.6 stafflinethickness; z1 = (0, 2 staff_space) + center - (0, stafflinethickness/2 + clearing); diff --git a/mf/slur.mf b/mf/slur.mf deleted file mode 100644 index 86a394ae0a..0000000000 --- a/mf/slur.mf +++ /dev/null @@ -1,31 +0,0 @@ - -staffsize# = 1pt#; -stafflinethickness# = staffsize#/10; -define_pixels (stafflinethickness, staffsize); - -input feta-sleur; - - - -% beginchar - -indent = 1.17 staffsize; -height = 6.15 staffsize; -len = 10 staffsize; - -path boogje; - - - -z1 = (0,0); -z2 = (indent, height); -z3 = (len - indent, height); -z4 = (len, 0); - -boogje=z1..controls z2 and z3..z4; -pickup pencircle scaled stafflinethickness; -draw boogje; -shipit; - - -bye diff --git a/stepmake/stepmake/metafont-rules.make b/stepmake/stepmake/metafont-rules.make index e71a9502bc..8f10f03530 100644 --- a/stepmake/stepmake/metafont-rules.make +++ b/stepmake/stepmake/metafont-rules.make @@ -3,7 +3,7 @@ # we want to see botched results as well. $(outdir)/%.dvi: %.mf - -$(METAFONT) "\nonstopmode; input $<;" + -$(METAFONT) "\scrollmode; input $<;" gftodvi $(basename $<) mv $(basename $<).dvi $(outdir) rm $(basename $<).*gf -- 2.39.2