% flags % fet_begingroup("flags") save outer_path; path outer_path; % Flags pointing down overlap with the notehead (in x-direction), so % the down-flag can be bigger upflag_width# = .750 black_notehead_width# + stemthickness#/2; downflag_width# = .833 black_notehead_width# + stemthickness#/2; right_upflag_space# = .2 upflag_width#; right_downflag_space# = .2 downflag_width#; % % Flags pointing down cannot overlap with the notehead in y-direction, % so they have less slant. % Because of optical illusion, the utmost flag (bottom for % down-pointing, top for up-pointing) should be smaller than the other % flags. Adobe Sonata doesn't do this correctly. (Instead they have % an extension flag, which looks less elegant) % save hip_thickness, foot_thickness; hip_thickness# = 1.3 stemthickness#; foot_thickness# = hip_thickness#; % % Inspired by Adobe Sonata and [Wanske] % for example, see POSTSCRIPT Language -- program design, % page 119, and [Wanske], p 41,42 % def draw_flag(expr center, flare, dims, hip_depth, foot_wid, hip_thickness, foot_thickness)= clearxy; penpos1(flare, 90); penpos2(whatever, 0); x2r - x2l = hip_thickness; penpos3(foot_thickness, 0) ; z1r = center; z2r = center + (xpart dims, -ypart(dims) * hip_depth); z3r = center + (xpart(dims) * foot_wid, -ypart dims); outer_path := z3r{curl 0} .. z2r{up} .. {up}z1r; penlabels(1, 2, 3); fill z1l{curl 0} ..tension 1.1 .. z2l{down} .. {curl 0} simple_serif(z3l, z3r, 80) & outer_path & z1r -- cycle; enddef; % % TODO: calc intersectpoint % TODO: calc incision_depth % def add_flag(expr yoff, flare, hip_wid_multiplier, hip_dep_multiplier, intersectpoint, hip_thickness, foot_thickness) = begingroup save prev_center, prev_xextreme, prev_yextreme; save rel_foot, ip, center, incision_depth; save prev_hipwid, prev_footdep, prev_hipdep, wid, dep, hip_dep; save hip_dep_ratio, foot_wid_ratio; pair prev_center, center, foot, prev_xextreme, prev_yextreme; pair ip, rel_foot; incision_depth = 1.013; prev_center = point 2 of outer_path; prev_xextreme = point 1 of outer_path; prev_yextreme = point 0 of outer_path; prev_hipwid = xpart (prev_xextreme - prev_center); prev_footdep = -ypart (prev_yextreme - prev_center); prev_hipdep = -ypart(prev_xextreme - prev_center); ip = point intersectpoint of outer_path; wid = prev_hipwid * hip_wid_multiplier; hip_dep = prev_hipdep * hip_dep_multiplier; center = prev_center + (0,yoff); rel_foot = incision_depth [(wid, hip_dep), ip - center]; dep = -ypart(rel_foot); foot_wid_ratio = xpart(rel_foot ) / wid; hip_dep_ratio = hip_dep / dep; draw_flag(center, flare, (wid, dep), hip_dep_ratio, foot_wid_ratio, hip_thickness, foot_thickness); endgroup enddef; fet_beginchar("8th Flag (up)", "u3", "eighthflag") save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio; flare# = 1.0 staff_space#; hip_depth_ratio = .72; foot_width_ratio = .8; hip_width# = upflag_width# - hip_thickness#/2; foot_depth# = 3 staff_space#; set_char_box(stemthickness# /2, hip_width# + stemthickness#/2 + right_upflag_space#, foot_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, foot_depth, foot_thickness); draw_flag((stemthickness/2,0), flare, (hip_width, foot_depth), hip_depth_ratio, foot_width_ratio, hip_thickness, foot_thickness); pickup pencircle scaled stemthickness; draw (0, 0) .. (0,-2 staff_space); fet_endchar; fet_beginchar("16th Flag (up)", "u4", "sixteenthflag") save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio; save flagspace, total_depth, flag_count; total_depth# = 3.5 staff_space#; flag_count = 2; flare# = .85 staff_space#; flagspace# = .85 staff_space#; hip_depth_ratio = .72 ; hip_width# = upflag_width# - hip_thickness#/2; flagspace# + foot_depth# = total_depth#; foot_width_ratio = .8; set_char_box(stemthickness# /2, hip_width# + stemthickness#/2 + right_upflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, flagspace, foot_depth, foot_thickness); draw_flag((stemthickness/2,- flagspace), flare, (hip_width, foot_depth), hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness); add_flag(flagspace, flare, .97, 1.00, 1.25, hip_thickness, foot_thickness); pickup pencircle scaled stemthickness; draw (0, 0) .. (0,-2 staff_space); fet_endchar; fet_beginchar("32nd Flag (up)", "u5", "thirtysecondflag") save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio; save flagspace, total_depth, flag_count; flag_count = 3; total_depth#=4.25 staff_space#; flare# = .85 staff_space#; flagspace# = .87 staff_space#; hip_depth_ratio = .72 ; hip_width# = upflag_width# - hip_thickness#/2; (flag_count-1) * flagspace# + foot_depth# = total_depth#; foot_width_ratio = .8; set_char_box(stemthickness# /2, hip_width# + stemthickness#/2 + right_upflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, flagspace, foot_depth, foot_thickness); draw_flag((stemthickness/2,- 2 flagspace), flare, (hip_width, foot_depth), hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness); add_flag(flagspace, flare, .97, 1.00, 1.25, hip_thickness, foot_thickness); add_flag(flagspace, flare, .95, 1.05, 1.25, hip_thickness, foot_thickness); pickup pencircle scaled stemthickness; draw (0, 0) .. (0,-2 staff_space); fet_endchar; fet_beginchar("64th Flag (up)", "u6", "sixtyfourthflag") save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio; save flagspace, total_depth, flag_count; flag_count = 4; flare# = .85 staff_space#; flagspace# = .9 staff_space#; hip_depth_ratio = .72 ; hip_width# = upflag_width# - hip_thickness#/2; total_depth# = 5.25 staff_space#; (flag_count-1) * flagspace# + foot_depth# = total_depth#; foot_width_ratio = .8; set_char_box(stemthickness# /2, hip_width# + stemthickness#/2 + right_upflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, flagspace, foot_depth, foot_thickness); draw_flag((stemthickness/2,- (flag_count-1)* flagspace), flare, (hip_width, foot_depth), hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness); add_flag(flagspace, flare, .97, 1.00, 1.3, hip_thickness, foot_thickness); add_flag(flagspace, flare, 1.00, 1.00, 1.25, hip_thickness, foot_thickness); add_flag(flagspace, flare, .95, 1.05, 1.25, hip_thickness, foot_thickness); pickup pencircle scaled stemthickness; draw (0, 0) .. (0,-2 staff_space); fet_endchar; fet_beginchar("8th (down)", "d3", "deighthflag") save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio; save flagspace, total_depth, flag_count; flag_count = 1; flare# = .99 staff_space#; flagspace# = .9 staff_space#; hip_depth_ratio = .72 ; hip_width# = downflag_width# - hip_thickness#/2; total_depth# = 2.85 staff_space#; (flag_count-1) * flagspace# + foot_depth# = total_depth#; foot_width_ratio = .8; set_char_box(stemthickness# /2, hip_width# + stemthickness#/2 + right_downflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, flagspace, foot_depth, foot_thickness); draw_flag((stemthickness/2,- (flag_count-1) *flagspace), flare, (hip_width, foot_depth), hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness); %%%%%%%% % % % % Mensural Notation % % % def draw_mensural_outermost_flag_i = define_pixels(stafflinethickness, staff_space) pickup pencircle xscaled 1.00 stafflinethickness yscaled 0.22 staff_space rotated -35; save za, zb, zc, zd, ze; pair za, zb, zc, zd, ze; za = (+0.00 staff_space, -0.00 staff_space); zb = (+0.15 staff_space, -0.00 staff_space); zc = (+0.45 staff_space, -0.35 staff_space); zd = (+0.45 staff_space, -0.85 staff_space); ze = (+0.00 staff_space, -2.00 staff_space); draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze; enddef; def draw_mensural_outermost_flag_ii = define_pixels(stafflinethickness, staff_space) pickup pencircle xscaled 1.00 stafflinethickness yscaled 0.22 staff_space rotated -35; save za, zb, zc, zd, ze; pair za, zb, zc, zd, ze; za = (+0.00 staff_space, -0.00 staff_space); zb = (+0.15 staff_space, -0.00 staff_space); zc = (+0.20 staff_space, -0.05 staff_space); zd = (+0.20 staff_space, -1.15 staff_space); ze = (+0.00 staff_space, -1.40 staff_space); draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze; enddef; def draw_mensural_inner_flag(expr il_shift) = define_pixels(stafflinethickness, staff_space) pickup pencircle xscaled 1.00 stafflinethickness yscaled 0.22 staff_space rotated -35; save zs, za, zb, zc, zd; pair zs, za, zb, zc, zd; zs = (0, -il_shift * staff_space); za = zs + (+0.00 staff_space, -0.10 staff_space); zb = zs + (+0.33 staff_space, -0.30 staff_space); zc = zs + (+0.33 staff_space, -0.70 staff_space); zd = zs + (+0.00 staff_space, -0.90 staff_space); draw za{2,1} .. zb .. zc .. {-2,-1}zd; enddef; fet_beginchar("8th Mensural Flag (up)", "mensuralu03", "menseighthflag") set_char_box(0, 0.60 staff_space#, 2.00 staff_space#, 0) draw_mensural_outermost_flag_i fet_endchar; fet_beginchar("8th Mensural Flag (up)", "mensuralu13", "mens1eighthflag") set_char_box(0, 0.60 staff_space#, 1.50 staff_space#, 0) draw_mensural_outermost_flag_ii fet_endchar; fet_beginchar("8th Mensural Flag (down)", "mensurald03", "mensdeighthflag") set_char_box(0.60 staff_space#, 0, 0, 2.00 staff_space#) draw_mensural_outermost_flag_i currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("8th Mensural Flag (down)", "mensurald13", "mensd1eighthflag") set_char_box(0.60 staff_space#, 0, 0, 1.50 staff_space#) draw_mensural_outermost_flag_ii currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("16th Mensural Flag (up)", "mensuralu04", "menssixteenthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_i draw_mensural_inner_flag(2.0) fet_endchar; fet_beginchar("16th Mensural Flag (up)", "mensuralu14", "mens1sixteenthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_ii draw_mensural_inner_flag(1.5) fet_endchar; fet_beginchar("16th Mensural Flag (down)", "mensurald04", "mensdsixteenthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_i draw_mensural_inner_flag(2.0) currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("16th Mensural Flag (down)", "mensurald14", "mensd1sixteenthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_ii draw_mensural_inner_flag(1.5) currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("32th Mensural Flag (up)", "mensuralu05", "mensthirtysecondflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_i draw_mensural_inner_flag(2.0) draw_mensural_inner_flag(3.0) fet_endchar; fet_beginchar("32th Mensural Flag (up)", "mensuralu15", "mens1thirtysecondflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_ii draw_mensural_inner_flag(1.5) draw_mensural_inner_flag(2.5) fet_endchar; fet_beginchar("32th Mensural Flag (down)", "mensurald05", "mensdthirtysecondflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_i draw_mensural_inner_flag(2.0) draw_mensural_inner_flag(3.0) currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("32th Mensural Flag (down)", "mensurald15", "mensd1thirtysecondflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_ii draw_mensural_inner_flag(1.5) draw_mensural_inner_flag(2.5) currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("64th Mensural Flag (up)", "mensuralu06", "menssixtyfourthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_i draw_mensural_inner_flag(1.5) draw_mensural_inner_flag(2.5) draw_mensural_inner_flag(3.5) fet_endchar; fet_beginchar("64th Mensural Flag (up)", "mensuralu16", "mens1sixtyfourthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_ii draw_mensural_inner_flag(1.17) draw_mensural_inner_flag(2.08) draw_mensural_inner_flag(3.00) fet_endchar; fet_beginchar("64th Mensural Flag (down)", "mensurald06", "mensdsixtyfourthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_i draw_mensural_inner_flag(1.5) draw_mensural_inner_flag(2.5) draw_mensural_inner_flag(3.5) currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("64th Mensural Flag (down)", "mensurald16", "mensd1sixtyfourthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_ii draw_mensural_inner_flag(1.17) draw_mensural_inner_flag(2.08) draw_mensural_inner_flag(3.00) currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; %%%%%%%% % % % % Single Stroke for Short Appogiatura % % % fet_beginchar("grace dash (up)", "ugrace", "gracedash") save flare, hip_depth_ratio, hip_width, foot_depth; flare# = 1.0 staff_space#; hip_depth_ratio = .72; hip_width# = upflag_width# - hip_thickness#/2; foot_depth# = 3 staff_space#; define_pixels(flare, hip_width, hip_thickness, foot_depth, foot_thickness); set_char_box(hip_width# * hip_depth_ratio, hip_width# + stemthickness#/2 + right_upflag_space#, foot_depth# * hip_depth_ratio, -flare#) pickup pencircle scaled 1.5 stemthickness; draw (-b ,-d) .. (w, h); fet_endchar; pickup pencircle scaled stemthickness; draw (0, 0) .. (0,-2 staff_space); y_mirror_char; fet_endchar; fet_beginchar("16th (down)", "d4", "dsixteenthflag") save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio; save flagspace, total_depth, flag_count; flag_count = 2; flare# = .8 staff_space#; flagspace# = .9 staff_space#; hip_depth_ratio = .85 ; hip_width# = downflag_width# - hip_thickness#/2; total_depth# = 3.0 staff_space#; (flag_count-1) * flagspace# + foot_depth# = total_depth#; foot_width_ratio = .95; set_char_box(stemthickness# /2, hip_width# + stemthickness#/2 + right_downflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, flagspace, foot_depth, foot_thickness); draw_flag((stemthickness/2,- (flag_count-1) *flagspace), flare, (hip_width, foot_depth), hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness); add_flag(flagspace, flare, .95, 1.00, 1.25, hip_thickness, foot_thickness); pickup pencircle scaled stemthickness; draw (0, 0) .. (0,-2 staff_space); y_mirror_char; fet_endchar; fet_beginchar("32nd (down)", "d5", "dthirtysecondflag") save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio; save flagspace, total_depth, flag_count; flag_count = 3; flare# = .84 staff_space#; flagspace# = .9 staff_space#; hip_depth_ratio = .85 ; hip_width# = downflag_width# - hip_thickness#/2; total_depth# = 3.85 staff_space#; (flag_count-1) * flagspace# + foot_depth# = total_depth#; foot_width_ratio = .95; set_char_box(stemthickness# /2, hip_width# + stemthickness#/2 + right_downflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, flagspace, foot_depth, foot_thickness); draw_flag((stemthickness/2,- (flag_count-1) *flagspace), flare, (hip_width, foot_depth), hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness); add_flag(flagspace, flare, .97, 1.00, 1.25, hip_thickness, foot_thickness); add_flag(flagspace, flare, .95, 1.05, 1.25, hip_thickness, foot_thickness); pickup pencircle scaled stemthickness; draw (0, 0) .. (0,-2 staff_space); y_mirror_char; fet_endchar; fet_beginchar("64th (down)", "d6", "dsixtyfourthflag") save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio; save flagspace, total_depth, flag_count; flag_count = 4; flare# = .8 staff_space#; flagspace# = .9 staff_space#; hip_depth_ratio = .85 ; hip_width# = downflag_width# - hip_thickness#/2; total_depth# = 4.35 staff_space#; (flag_count-1) * flagspace# + foot_depth# = total_depth#; foot_width_ratio = .98; set_char_box(stemthickness# /2, hip_width# + stemthickness#/2 + right_downflag_space#, total_depth# + foot_thickness#/2, stemthickness#/2) define_pixels(flare, hip_width, hip_thickness, flagspace, foot_depth, foot_thickness); draw_flag((stemthickness/2,- (flag_count-1) *flagspace), flare, (hip_width, foot_depth), hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness); add_flag(flagspace, flare, .97, 1.20, 1.175, hip_thickness, foot_thickness); add_flag(flagspace, flare, .97, 1.10, 1.175, hip_thickness, foot_thickness); add_flag(.98 flagspace, flare, .91, 1.05, 1.2, hip_thickness, foot_thickness); pickup pencircle scaled stemthickness; draw (0, 0) .. (0,-2 staff_space); y_mirror_char; fet_endchar; %%%%%%%% % % % % Mensural Notation % % % def draw_mensural_outermost_flag_i = define_pixels(stafflinethickness, staff_space) pickup pencircle xscaled 1.00 stafflinethickness yscaled 0.22 staff_space rotated -35; save za, zb, zc, zd, ze; pair za, zb, zc, zd, ze; za = (+0.00 staff_space, -0.00 staff_space); zb = (+0.15 staff_space, -0.00 staff_space); zc = (+0.45 staff_space, -0.35 staff_space); zd = (+0.45 staff_space, -0.85 staff_space); ze = (+0.00 staff_space, -2.00 staff_space); draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze; enddef; def draw_mensural_outermost_flag_ii = define_pixels(stafflinethickness, staff_space) pickup pencircle xscaled 1.00 stafflinethickness yscaled 0.22 staff_space rotated -35; save za, zb, zc, zd, ze; pair za, zb, zc, zd, ze; za = (+0.00 staff_space, -0.00 staff_space); zb = (+0.15 staff_space, -0.00 staff_space); zc = (+0.20 staff_space, -0.05 staff_space); zd = (+0.20 staff_space, -1.15 staff_space); ze = (+0.00 staff_space, -1.40 staff_space); draw za .. zb -- zc{zc-zb} .. {ze-zd}zd -- ze; enddef; def draw_mensural_inner_flag(expr il_shift) = define_pixels(stafflinethickness, staff_space) pickup pencircle xscaled 1.00 stafflinethickness yscaled 0.22 staff_space rotated -35; save zs, za, zb, zc, zd; pair zs, za, zb, zc, zd; zs = (0, -il_shift * staff_space); za = zs + (+0.00 staff_space, -0.10 staff_space); zb = zs + (+0.33 staff_space, -0.30 staff_space); zc = zs + (+0.33 staff_space, -0.70 staff_space); zd = zs + (+0.00 staff_space, -0.90 staff_space); draw za{2,1} .. zb .. zc .. {-2,-1}zd; enddef; fet_beginchar("8th Mensural Flag (up)", "mensuralu03", "menseighthflag") set_char_box(0, 0.60 staff_space#, 2.00 staff_space#, 0) draw_mensural_outermost_flag_i fet_endchar; fet_beginchar("8th Mensural Flag (up)", "mensuralu13", "mens1eighthflag") set_char_box(0, 0.60 staff_space#, 1.50 staff_space#, 0) draw_mensural_outermost_flag_ii fet_endchar; fet_beginchar("8th Mensural Flag (down)", "mensurald03", "mensdeighthflag") set_char_box(0.60 staff_space#, 0, 0, 2.00 staff_space#) draw_mensural_outermost_flag_i currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("8th Mensural Flag (down)", "mensurald13", "mensd1eighthflag") set_char_box(0.60 staff_space#, 0, 0, 1.50 staff_space#) draw_mensural_outermost_flag_ii currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("16th Mensural Flag (up)", "mensuralu04", "menssixteenthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_i draw_mensural_inner_flag(2.0) fet_endchar; fet_beginchar("16th Mensural Flag (up)", "mensuralu14", "mens1sixteenthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_ii draw_mensural_inner_flag(1.5) fet_endchar; fet_beginchar("16th Mensural Flag (down)", "mensurald04", "mensdsixteenthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_i draw_mensural_inner_flag(2.0) currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("16th Mensural Flag (down)", "mensurald14", "mensd1sixteenthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_ii draw_mensural_inner_flag(1.5) currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("32th Mensural Flag (up)", "mensuralu05", "mensthirtysecondflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_i draw_mensural_inner_flag(2.0) draw_mensural_inner_flag(3.0) fet_endchar; fet_beginchar("32th Mensural Flag (up)", "mensuralu15", "mens1thirtysecondflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_ii draw_mensural_inner_flag(1.5) draw_mensural_inner_flag(2.5) fet_endchar; fet_beginchar("32th Mensural Flag (down)", "mensurald05", "mensdthirtysecondflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_i draw_mensural_inner_flag(2.0) draw_mensural_inner_flag(3.0) currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("32th Mensural Flag (down)", "mensurald15", "mensd1thirtysecondflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_ii draw_mensural_inner_flag(1.5) draw_mensural_inner_flag(2.5) currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("64th Mensural Flag (up)", "mensuralu06", "menssixtyfourthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_i draw_mensural_inner_flag(1.5) draw_mensural_inner_flag(2.5) draw_mensural_inner_flag(3.5) fet_endchar; fet_beginchar("64th Mensural Flag (up)", "mensuralu16", "mens1sixtyfourthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_ii draw_mensural_inner_flag(1.17) draw_mensural_inner_flag(2.08) draw_mensural_inner_flag(3.00) fet_endchar; fet_beginchar("64th Mensural Flag (down)", "mensurald06", "mensdsixtyfourthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_i draw_mensural_inner_flag(1.5) draw_mensural_inner_flag(2.5) draw_mensural_inner_flag(3.5) currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; fet_beginchar("64th Mensural Flag (down)", "mensurald16", "mensd1sixtyfourthflag") set_char_box(0, 0.60 staff_space#, 3.00 staff_space#, 0) draw_mensural_outermost_flag_ii draw_mensural_inner_flag(1.17) draw_mensural_inner_flag(2.08) draw_mensural_inner_flag(3.00) currentpicture := currentpicture xscaled -1 yscaled -1; fet_endchar; %%%%%%%% % % % % Single Stroke for Short Appogiatura % % % fet_beginchar("grace dash (up)", "ugrace", "gracedash") save flare, hip_depth_ratio, hip_width, foot_depth; flare# = 1.0 staff_space#; hip_depth_ratio = .72; hip_width# = upflag_width# - hip_thickness#/2; foot_depth# = 3 staff_space#; define_pixels(flare, hip_width, hip_thickness, foot_depth, foot_thickness); set_char_box(hip_width# * hip_depth_ratio, hip_width# + stemthickness#/2 + right_upflag_space#, foot_depth# * hip_depth_ratio, -flare#) pickup pencircle scaled 1.5 stemthickness; draw (-b ,-d) .. (w, h); fet_endchar; fet_beginchar("grace dash (down)", "dgrace", "dgracedash") save flare, hip_depth_ratio, hip_width, foot_depth; save flagspace, total_depth, flag_count; flag_count = 1; flare# = .99 staff_space#; flagspace# = .9 staff_space#; hip_depth_ratio = .72 ; hip_width# = downflag_width# - hip_thickness#/2; total_depth# = 2.85 staff_space#; (flag_count-1) * flagspace# + foot_depth# = total_depth#; foot_width_ratio = .8; define_pixels(flare, hip_width, hip_thickness, flagspace, foot_depth); set_char_box(hip_width# * hip_depth_ratio, hip_width# + stemthickness#/2 + right_downflag_space#, foot_depth# * hip_depth_ratio, -flare#) pickup pencircle scaled 1.5 stemthickness; draw (-b, -d) .. (w,h); y_mirror_char; fet_endchar; % ustem? % % % Stem characters so we can compose metronome markings with Feta % entirely. % fet_beginchar("stem (up)", "stem", "stem") set_char_box(stemthickness#/2, stemthickness#/2, 0, 3.5staff_space#); pickup pencircle scaled stemthickness; draw (0, 0.2staff_space) .. (0, 3.5staff_space); fet_endchar; % do we want this? fet_beginchar("stem (down)", "dstem", "dstem") set_char_box(stemthickness#/2, stemthickness#/2, 3.5staff_space#, 0); pickup pencircle scaled stemthickness; draw (0, -0.2staff_space) .. (0, -3.5staff_space); fet_endchar; fet_endgroup("flags");