summaryrefslogtreecommitdiff
path: root/mf/parmesan-custodes.mf
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2007-04-28 11:31:40 +0200
committerWerner Lemberg <wl@gnu.org>2007-04-28 11:31:40 +0200
commit0448f091c41237d77ac744cb16bab452ecff2e9b (patch)
treefb0896668b077e82f5a420f34a1ba2b55a466a20 /mf/parmesan-custodes.mf
parent40d9301b4f80a99ae917929212a000a29a6eeb8b (diff)
Adapt parmesan-custodes.mf to mf2pt1.
Notable changes: Some stem lenghts have been fixed so that they always stay within the bounding box.
Diffstat (limited to 'mf/parmesan-custodes.mf')
-rw-r--r--mf/parmesan-custodes.mf415
1 files changed, 280 insertions, 135 deletions
diff --git a/mf/parmesan-custodes.mf b/mf/parmesan-custodes.mf
index f554eef047..1641ebeff0 100644
--- a/mf/parmesan-custodes.mf
+++ b/mf/parmesan-custodes.mf
@@ -35,13 +35,15 @@ fet_begingroup ("custodes")
%
save between_staff_lines, on_staff_line, anywhere;
-between_staff_lines = 0;
-on_staff_line = 1;
-anywhere = 2;
+
+between_staff_lines := 0;
+on_staff_line := 1;
+anywhere := 2;
save dir_up, dir_down;
-dir_up = 1;
-dir_down = -1;
+
+dir_up := 1;
+dir_down := -1;
%%%%%%%%
@@ -52,15 +54,16 @@ dir_down = -1;
%
% parameterized hufnagel custos
-def custos_hufnagel(expr verbose_name, internal_name,
- direction, staffline_adjustment) =
+def custos_hufnagel (expr verbose_name, internal_name,
+ direction, staffline_adjustment) =
- fet_beginchar(verbose_name, internal_name)
+ fet_beginchar (verbose_name, internal_name);
save alpha, dalpha, ht, wd, stem_ht, pen_size;
+
ht# = noteheight#;
- wd#/ht# = 0.6;
- alpha# = 35;
- dalpha# = direction*alpha#;
+ wd# / ht# = 0.6;
+ alpha = 35;
+ dalpha = direction * alpha;
if staffline_adjustment = between_staff_lines:
stem_ht# = 1.00 staff_space#;
@@ -69,59 +72,92 @@ def custos_hufnagel(expr verbose_name, internal_name,
else: % staffline_adjustment = anywhere
stem_ht# = 1.25 staff_space#;
fi;
- pen_size# = 0.5*sqrt(wd#*wd#+ht#*ht#);
- define_pixels(ht, wd, pen_size, stem_ht);
- pickup pencircle
- xscaled linethickness
- yscaled pen_size
- rotated -dalpha#;
+ pen_size# = 0.5 (wd# ++ ht#);
+
+ define_pixels (ht, wd, pen_size, stem_ht);
+
+ save ellipse, pat;
+ path ellipse, pat;
+
+ pickup pencircle xscaled linethickness
+ yscaled pen_size
+ rotated -dalpha;
+
+ ellipse := fullcircle xscaled linethickness
+ yscaled pen_size
+ rotated -dalpha;
if direction = dir_up:
- top y1 = ht/2;
- bot y2 = -ht/2;
+ top y1 = ht / 2;
+ bot y2 = -ht / 2;
else:
- bot y1 = -ht/2;
- top y2 = ht/2;
+ bot y1 = -ht / 2;
+ top y2 = ht / 2;
fi;
+
lft x1 = 0;
rt x2 = wd;
- y3 - y2 = direction*stem_ht;
- (y3 - y2) = (x3 - x2) * tand(90-dalpha#);
- draw z1 -- z2 -- z3;
+ y3 - y2 = direction * stem_ht;
+ (y3 - y2) = (x3 - x2) * tand (90 - dalpha);
+
+ fill get_subpath (ellipse, z1 - z2, z2 - z1, z1)
+ if direction > 0:
+ -- get_subpath (ellipse, z2 - z1, z3 - z2, z2)
+ else:
+ -- get_subpoint (ellipse, z2 - z1, z2)
+ -- get_subpoint (ellipse, z3 - z2, z2)
+ fi
+ -- get_subpath (ellipse, z3 - z2, z2 - z3, z3)
+ if direction > 0:
+ -- get_subpoint (ellipse, z2 - z3, z2)
+ -- get_subpoint (ellipse, z1 - z2, z2)
+ else:
+ -- get_subpath (ellipse, z2 - z3, z1 - z2, z2)
+ fi
+ -- cycle;
% The stem is intentionally outside of the char box.
if direction > 0:
- set_char_box(0, wd#, ht#/2, stem_ht#);
+ set_char_box (0, wd#, ht# / 2, stem_ht#);
else:
- set_char_box(0, wd#, stem_ht#, ht#/2);
+ set_char_box (0, wd#, stem_ht#, ht# / 2);
fi;
+
+ labels (1, 2, 3);
fet_endchar;
enddef;
+
% custos hufnagel, stem up, between staff lines
-custos_hufnagel("Custos Hufnagel", "hufnagel.u0",
- dir_up, between_staff_lines);
+custos_hufnagel ("Custos Hufnagel", "hufnagel.u0",
+ dir_up, between_staff_lines);
+
% custos hufnagel, stem up, on staff line
-custos_hufnagel("Custos Hufnagel", "hufnagel.u1",
- dir_up, on_staff_line);
+custos_hufnagel ("Custos Hufnagel", "hufnagel.u1",
+ dir_up, on_staff_line);
+
% custos hufnagel, stem up, anywhere
-custos_hufnagel("Custos Hufnagel", "hufnagel.u2",
- dir_up, anywhere);
+custos_hufnagel ("Custos Hufnagel", "hufnagel.u2",
+ dir_up, anywhere);
+
% custos hufnagel, stem down, between staff lines
-custos_hufnagel("Reverse Custos Hufnagel", "hufnagel.d0",
- dir_down, between_staff_lines);
+custos_hufnagel ("Reverse Custos Hufnagel", "hufnagel.d0",
+ dir_down, between_staff_lines);
+
% custos hufnagel, stem down, on staff line
-custos_hufnagel("Reverse Custos Hufnagel", "hufnagel.d1",
- dir_down, on_staff_line);
+custos_hufnagel ("Reverse Custos Hufnagel", "hufnagel.d1",
+ dir_down, on_staff_line);
+
% custos hufnagel, stem down, anywhere
-custos_hufnagel("Reverse Custos Hufnagel", "hufnagel.d2",
- dir_down, anywhere);
+custos_hufnagel ("Reverse Custos Hufnagel", "hufnagel.d2",
+ dir_down, anywhere);
+
%%%%%%%%
%
@@ -130,14 +166,13 @@ custos_hufnagel("Reverse Custos Hufnagel", "hufnagel.d2",
%
%
-def custos_medicaea(expr verbose_name, internal_name,
- direction, staffline_adjustment) =
-
- fet_beginchar(verbose_name, internal_name)
-
+def custos_medicaea (expr verbose_name, internal_name,
+ direction, staffline_adjustment) =
+ fet_beginchar (verbose_name, internal_name);
save ht, wd, stem_ht;
+
ht# = noteheight#;
- wd#/ht# = 0.25;
+ wd# / ht# = 0.25;
if staffline_adjustment = between_staff_lines:
stem_ht# = 1.00 staff_space#;
@@ -147,53 +182,82 @@ def custos_medicaea(expr verbose_name, internal_name,
stem_ht# = 1.25 staff_space#;
fi;
- define_pixels(ht, wd, stem_ht);
+ define_pixels (ht, wd, stem_ht);
+
+ save ellipse;
+ path ellipse;
+
+ pickup pencircle xscaled 0.6 linethickness
+ yscaled ht;
+
+ ellipse := fullcircle xscaled 0.6 linethickness
+ yscaled ht;
- pickup pencircle xscaled 0.6linethickness yscaled ht;
lft x1 = 0;
y1 = 0;
rt x2 = wd;
y2 = y1;
- draw z1 -- z2;
- pickup pencircle scaled 0.6linethickness;
+ fill get_subpath (ellipse, left, right, z1)
+ -- get_subpath (ellipse, right, left, z2)
+ -- cycle;
+
+ pickup pencircle scaled 0.6 linethickness;
+
rt x3 = wd;
y3 = 0;
x4 = x3;
- y4 = direction*stem_ht;
- draw z3 -- z4;
+ if direction > 0:
+ top y4 = stem_ht;
+ draw_rounded_block (bot lft z3, top rt z4,
+ 0.6 linethickness);
+ else:
+ bot y4 = -stem_ht;
+ draw_rounded_block (bot lft z4, top rt z3,
+ 0.6 linethickness);
+ fi;
+
if direction > 0:
- set_char_box(0, wd#, ht#/2, stem_ht#);
+ set_char_box (0, wd#, ht# / 2, stem_ht#);
else:
- set_char_box(0, wd#, stem_ht#, ht#/2);
+ set_char_box (0, wd#, stem_ht#, ht# / 2);
fi;
+
+ labels (1, 2, 3, 4);
fet_endchar;
enddef;
+
% custos medicaea, stem up, between staff lines
-custos_medicaea("Custos Med.", "medicaea.u0",
- dir_up, between_staff_lines);
+custos_medicaea ("Custos Med.", "medicaea.u0",
+ dir_up, between_staff_lines);
+
% custos medicaea, stem up, on staff line
-custos_medicaea("Custos Med.", "medicaea.u1",
- dir_up, on_staff_line);
+custos_medicaea ("Custos Med.", "medicaea.u1",
+ dir_up, on_staff_line);
+
% custos medicaea, stem up, anywhere
-custos_medicaea("Custos Med.", "medicaea.u2",
- dir_up, anywhere);
+custos_medicaea ("Custos Med.", "medicaea.u2",
+ dir_up, anywhere);
+
% custos medicaea, stem down, between staff lines
-custos_medicaea("Reverse Custos Med.", "medicaea.d0",
+custos_medicaea ("Reverse Custos Med.", "medicaea.d0",
dir_down, between_staff_lines);
+
% custos medicaea, stem down, on staff line
-custos_medicaea("Reverse Custos Med.", "medicaea.d1",
- dir_down, on_staff_line);
+custos_medicaea ("Reverse Custos Med.", "medicaea.d1",
+ dir_down, on_staff_line);
+
% custos medicaea, stem down, anywhere
-custos_medicaea("Reverse Custos Med.", "medicaea.d2",
- dir_down, anywhere);
+custos_medicaea ("Reverse Custos Med.", "medicaea.d2",
+ dir_down, anywhere);
+
%%%%%%%%
%
@@ -202,14 +266,14 @@ custos_medicaea("Reverse Custos Med.", "medicaea.d2",
%
%
-def custos_vaticana(expr verbose_name, internal_name,
- direction, staffline_adjustment) =
-
- fet_beginchar(verbose_name, internal_name)
+def custos_vaticana (expr verbose_name, internal_name,
+ direction, staffline_adjustment) =
+ fet_beginchar (verbose_name, internal_name);
save ht, wd, u_offs, l_offs, stem_size, stem_end;
save pen_ht, l_shift, curve_ht, bend_ht;
+
ht# = noteheight#;
- wd# = 0.24ht#;
+ wd# = 0.24 ht#;
if staffline_adjustment = between_staff_lines:
stem_size# = 1.00;
@@ -218,63 +282,89 @@ def custos_vaticana(expr verbose_name, internal_name,
else: % staffline_adjustment = anywhere
stem_size# = 1.25;
fi;
- curve_ht# = 0.6ht#;
- bend_ht# = 0.10ht#;
- l_shift# = 0.04ht#;
- u_offs# = +direction*0.5*(bend_ht#+l_shift#);
- l_offs# = -direction*0.5*(bend_ht#-l_shift#);
- stem_end# = direction*stem_size#*staff_space#;
- pen_ht# = curve_ht#-l_shift#;
- define_pixels(u_offs, l_offs, stem_end, ht, wd, pen_ht);
+ curve_ht# = 0.6 ht#;
+ bend_ht# = 0.10 ht#;
+ l_shift# = 0.04 ht#;
+ u_offs# = +direction * 0.5 * (bend_ht# + l_shift#);
+ l_offs# = -direction * 0.5 * (bend_ht# - l_shift#);
+ stem_end# = direction * stem_size# * staff_space#;
+ pen_ht# = curve_ht# - l_shift#;
+
+ define_pixels (u_offs, l_offs, stem_end, ht, wd, pen_ht);
+
+ pickup pencircle scaled 0.6 linethickness;
- pickup pencircle scaled 0.6linethickness;
z1 = (0, u_offs);
- z2 = (0.7wd, l_offs);
+ z2 = (0.7 wd, l_offs);
z3 = (wd, l_offs);
- penpos1(pen_ht, 90);
- penpos2(pen_ht, 90);
- penpos3(pen_ht, 90);
- penstroke z1e{z2 - z1} .. {right}z2e .. z3e;
+
+ penpos1 (pen_ht, 90);
+ penpos2 (pen_ht, 90);
+ penpos3 (pen_ht, 90);
+
+ penstroke z1e{z2 - z1}
+ .. {right}z2e
+ .. z3e;
rt x4 = wd;
- bot y4 = 0;
x5 = x4;
- top y5 = stem_end;
- draw z4 -- z5;
if direction > 0:
- set_char_box(0, wd#, -l_offs#+0.5pen_ht#, stem_end#);
+ y4 = y3r;
+ top y5 = stem_end;
+ draw_rounded_block (bot lft z4, top rt z5,
+ 0.6 linethickness);
+ else:
+ y4 = y3l;
+ bot y5 = stem_end;
+ draw_rounded_block (bot lft z5, top rt z4,
+ 0.6 linethickness);
+ fi;
+
+ if direction > 0:
+ set_char_box (0, wd#,
+ -l_offs# + 0.5 pen_ht#, stem_end#);
else:
- set_char_box(0, wd#, -stem_end#, +l_offs#+0.5pen_ht#);
+ set_char_box (0, wd#,
+ -stem_end#, +l_offs# + 0.5 pen_ht#);
fi;
+ penlabels (1, 2, 3);
+ labels (4, 5);
fet_endchar;
enddef;
+
% custos vaticana, stem up, between staff lines
-custos_vaticana("Custos Ed. Vat.", "vaticana.u0",
- dir_up, between_staff_lines);
+custos_vaticana ("Custos Ed. Vat.", "vaticana.u0",
+ dir_up, between_staff_lines);
+
% custos vaticana, stem up, on staff line
-custos_vaticana("Custos Ed. Vat.", "vaticana.u1",
- dir_up, on_staff_line);
+custos_vaticana ("Custos Ed. Vat.", "vaticana.u1",
+ dir_up, on_staff_line);
+
% custos vaticana, stem up, anywhere
-custos_vaticana("Custos Ed. Vat.", "vaticana.u2",
- dir_up, anywhere);
+custos_vaticana ("Custos Ed. Vat.", "vaticana.u2",
+ dir_up, anywhere);
+
% custos vaticana, stem down, between staff lines
-custos_vaticana("Reverse Custos Ed. Vat.", "vaticana.d0",
- dir_down, between_staff_lines);
+custos_vaticana ("Reverse Custos Ed. Vat.", "vaticana.d0",
+ dir_down, between_staff_lines);
+
% custos vaticana, stem down, on_staff_line
-custos_vaticana("Reverse Custos Ed. Vat.", "vaticana.d1",
- dir_down, on_staff_line);
+custos_vaticana ("Reverse Custos Ed. Vat.", "vaticana.d1",
+ dir_down, on_staff_line);
+
% custos vaticana, stem down, anywhere
-custos_vaticana("Reverse Custos Ed. Vat.", "vaticana.d2",
- dir_down, anywhere);
+custos_vaticana ("Reverse Custos Ed. Vat.", "vaticana.d2",
+ dir_down, anywhere);
+
%%%%%%%%
%
@@ -283,15 +373,15 @@ custos_vaticana("Reverse Custos Ed. Vat.", "vaticana.d2",
%
%
-def custos_mensural(expr verbose_name, internal_name,
- direction, staffline_adjustment) =
-
- fet_beginchar(verbose_name, internal_name)
+def custos_mensural (expr verbose_name, internal_name,
+ direction, staffline_adjustment) =
+ fet_beginchar (verbose_name, internal_name);
save alpha, dalpha, ht, wd, stem_ht;
+
ht# = noteheight#;
- wd#/ht# = 1.2;
- alpha# = 35;
- dalpha# = direction*alpha#;
+ wd# / ht# = 1.2;
+ alpha = 35;
+ dalpha = direction * alpha;
if staffline_adjustment = between_staff_lines:
stem_ht# = 1.00 staff_space#;
@@ -301,57 +391,112 @@ def custos_mensural(expr verbose_name, internal_name,
stem_ht# = 1.25 staff_space#;
fi;
- define_pixels(ht, wd, stem_ht);
- pickup pencircle
- xscaled linethickness
- yscaled 0.4ht
- rotated -dalpha#;
+ define_pixels (ht, wd, stem_ht);
+
+ save ellipse;
+ path ellipse;
+
+ pickup pencircle xscaled linethickness
+ yscaled 0.4ht
+ rotated -dalpha;
+
+ ellipse := fullcircle xscaled linethickness
+ yscaled 0.4ht
+ rotated -dalpha;
if direction > 0:
- bot y1 = bot y3 = bot y5 = -direction*0.33ht;
- top y2 = top y4 = +direction*0.33ht;
+ bot y1 = bot y3 = bot y5 = -direction * 0.33 ht;
+ top y2 = top y4 = +direction * 0.33 ht;
else:
- top y1 = top y3 = top y5 = -direction*0.33ht;
- bot y2 = bot y4 = +direction*0.33ht;
+ top y1 = top y3 = top y5 = -direction * 0.33 ht;
+ bot y2 = bot y4 = +direction * 0.33 ht;
fi;
- lft x1 = 0.0wd; lft x2 = 0.2wd; lft x3 = 0.4wd;
- lft x4 = 0.6wd; lft x5 = 0.8wd;
- y6 - y5 = direction*stem_ht;
- (y6 - y5) = (x6 - x5) * tand(90-dalpha#);
- draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
+ lft x1 = 0.0 wd;
+ lft x2 = 0.2 wd;
+ lft x3 = 0.4 wd;
+ lft x4 = 0.6 wd;
+ lft x5 = 0.8 wd;
+
+ y6 - y5 = direction * stem_ht;
+ y6 - y5 = (x6 - x5) * tand (90 - dalpha);
+
+ if direction > 0:
+ fill get_subpath (ellipse, z1 - z2, z2 - z1, z1)
+ -- get_subpoint (ellipse, z2 - z1, z2)
+ -- get_subpoint (ellipse, z3 - z2, z2)
+ -- get_subpath (ellipse, z3 - z2, z4 - z3, z3)
+ -- get_subpoint (ellipse, z4 - z3, z4)
+ -- get_subpoint (ellipse, z5 - z4, z4)
+ -- get_subpath (ellipse, z5 - z4, z6 - z5, z5)
+ -- get_subpath (ellipse, z6 - z5, z5 - z6, z6)
+ -- get_subpoint (ellipse, z5 - z6, z5)
+ -- get_subpoint (ellipse, z4 - z5, z5)
+ -- get_subpath (ellipse, z4 - z5, z3 - z4, z4)
+ -- get_subpoint (ellipse, z3 - z4, z3)
+ -- get_subpoint (ellipse, z2 - z3, z3)
+ -- get_subpath (ellipse, z2 - z3, z1 - z2, z2)
+ -- cycle;
+ else:
+ fill get_subpath (ellipse, z1 - z2, z2 - z1, z1)
+ -- get_subpath (ellipse, z2 -z1, z3 - z2, z2)
+ -- get_subpoint (ellipse, z3 - z2, z3)
+ -- get_subpoint (ellipse, z4 - z3, z3)
+ -- get_subpath (ellipse, z4 -z3, z5 - z4, z4)
+ -- get_subpoint (ellipse, z5 - z4, z5)
+ -- get_subpoint (ellipse, z6 - z5, z5)
+ -- get_subpath (ellipse, z6 - z5, z5 - z6, z6)
+ -- get_subpath (ellipse, z5 - z6, z4 - z5, z5)
+ -- get_subpoint (ellipse, z4 - z5, z4)
+ -- get_subpoint (ellipse, z3 - z4, z4)
+ -- get_subpath (ellipse, z3 - z4, z2 - z3, z3)
+ -- get_subpoint (ellipse, z2 - z3, z2)
+ -- get_subpoint (ellipse, z1 - z2, z2)
+ -- cycle;
+ fi;
% The stem is intentionally outside of the char box.
if direction > 0:
- set_char_box(0, wd#, +direction*0.33ht#, stem_ht#);
+ set_char_box (0, wd#,
+ +direction * 0.33 ht#, stem_ht#);
else:
- set_char_box(0, wd#, stem_ht#, -direction*0.33ht#);
+ set_char_box (0, wd#,
+ stem_ht#, -direction * 0.33 ht#);
fi;
+
+ labels (1, 2, 3, 4, 5, 6);
fet_endchar;
enddef;
+
% custos mensural, stem up, between staff lines
-custos_mensural("Custos Mensural", "mensural.u0",
- dir_up, between_staff_lines);
+custos_mensural ("Custos Mensural", "mensural.u0",
+ dir_up, between_staff_lines);
+
% custos mensural, stem up, on staff line
-custos_mensural("Custos Mensural", "mensural.u1",
- dir_up, on_staff_line);
+custos_mensural ("Custos Mensural", "mensural.u1",
+ dir_up, on_staff_line);
+
% custos mensural, stem up, anywhere
-custos_mensural("Custos Mensural", "mensural.u2",
- dir_up, anywhere);
+custos_mensural ("Custos Mensural", "mensural.u2",
+ dir_up, anywhere);
+
% custos mensural, stem down, between staff lines
-custos_mensural("Reverse Custos Mensural", "mensural.d0",
- dir_down, between_staff_lines);
+custos_mensural ("Reverse Custos Mensural", "mensural.d0",
+ dir_down, between_staff_lines);
+
% custos mensural, stem down, on staff line
-custos_mensural("Reverse Custos Mensural", "mensural.d1",
- dir_down, on_staff_line);
+custos_mensural ("Reverse Custos Mensural", "mensural.d1",
+ dir_down, on_staff_line);
+
% custos mensural, stem down, anywhere
-custos_mensural("Reverse Custos Mensural", "mensural.d2",
- dir_down, anywhere);
+custos_mensural ("Reverse Custos Mensural", "mensural.d2",
+ dir_down, anywhere);
+
-fet_endgroup ("custodes")
+fet_endgroup ("custodes");