-% -%-Fundamental-%- -*-Metafont-*-
-% parmesan-clefs.mf -- implement ancient clefs
-%
-% source file of LilyPond's pretty-but-neat music font
+% Feta (not the Font-En-Tja) music font -- ancient clefs
+% This file is part of LilyPond, the GNU music typesetter.
%
-% (c) 2001--2006 Juergen Reuter <reuter@ipd.uka.de>
+% Copyright (C) 2001--2010 Juergen Reuter <reuter@ipd.uka.de>
%
+%
+% LilyPond 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.
+%
+% 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 <http://www.gnu.org/licenses/>.
fet_begingroup ("clefs");
define_pixels (reduced_il);
- save pat, ellipse, clef;
+ save pat, ellipse, clef, T;
path pat, ellipse, clef;
+ transform T;
- pickup pencircle xscaled 0.6 linethickness
- yscaled 0.6 reduced_il;
-
- ellipse := reverse fullcircle xscaled 0.6 linethickness
- yscaled 0.6 reduced_il;
+ T := identity xscaled 0.6 linethickness
+ yscaled 0.6 reduced_il;
+ pickup pencircle transformed T;
+ ellipse := reverse fullcircle transformed T;
save xoffs, yoffs;
define_pixels (reduced_il, xoffs, yoffs);
% left-handed punctum
- pickup pencircle xscaled 0.6 linethickness
- yscaled 0.5 reduced_il;
-
- save ellipse, pat;
+ save ellipse, pat, T;
path ellipse, pat;
+ transform T;
- ellipse := reverse fullcircle xscaled 0.6 linethickness
- yscaled 0.5 reduced_il;
+ T := identity xscaled 0.6 linethickness
+ yscaled 0.5 reduced_il;
+ pickup pencircle transformed T;
+ ellipse := reverse fullcircle transformed T;
lft z21 = (xoffs + 0.00 reduced_il, yoffs + 0.00 reduced_il);
z22 = (xoffs + 0.25 reduced_il, yoffs + 0.05 reduced_il);
define_pixels (xoffs, yoffs);
% flags
- pickup pencircle xscaled reduced_slt
- yscaled flag_height;
-
- save ellipse;
+ save ellipse, T;
path ellipse;
+ transform T;
- ellipse := reverse fullcircle xscaled reduced_slt
- yscaled flag_height;
+ T := identity xscaled reduced_slt
+ yscaled flag_height;
+ pickup pencircle transformed T;
+ ellipse := reverse fullcircle transformed T;
xoffs = lft x1 = rt x2 - reduced_il;
y1 = yoffs + 0.5 (reduced_il - flag_height - staff_space);
define_pixels (xoffs, yoffs);
% stem
- pickup pencircle scaled linethickness;
+ pickup pencircle scaled reduced_slt;
x11 = x12 = xoffs + 0.4 reduced_il;
y11 = yoffs = bot y12 + 1.5 reduced_il;
- draw_rounded_block (bot lft z12, top rt z11, linethickness);
+ draw_rounded_block (bot lft z12, top rt z11, reduced_slt);
% left-handed punctum
-
- pickup pencircle xscaled reduced_slt
- yscaled reduced_il;
-
- save ellipse;
+ save ellipse, T;
path ellipse;
+ transform T;
- ellipse := reverse fullcircle xscaled reduced_slt
- yscaled reduced_il;
+ T := identity xscaled reduced_slt
+ yscaled reduced_il;
+ pickup pencircle transformed T;
+ ellipse := reverse fullcircle transformed T;
lft z13 = (xoffs, yoffs);
- rt z14 = z11 + (linethickness / 2, 0);
+ rt z14 = z11 + (reduced_slt / 2, 0);
fill get_subpath (ellipse, left, right, z13)
-- get_subpath (ellipse, right, left, z14)
define_pixels (xoffs, yoffs);
- pickup pencircle xscaled stem_width
- yscaled blot_diameter;
-
- save ellipse, pat;
+ save ellipse, pat, T;
path ellipse, pat;
+ transform T;
- ellipse := fullcircle xscaled stem_width
- yscaled blot_diameter;
+ T := identity xscaled stem_width
+ yscaled blot_diameter;
+ pickup pencircle transformed T;
+ ellipse := fullcircle transformed T;
lft x11 = lft x12 = xoffs;
top y12 - bot y11 = 4 reduced_il;
define_pixels (xoffs, yoffs);
- pickup pencircle xscaled 1.4 linethickness
- yscaled blot_diameter;
-
- save ellipse;
+ save ellipse, T;
path ellipse;
+ transform T;
- ellipse := fullcircle xscaled 1.4 linethickness
- yscaled blot_diameter;
+ T := identity xscaled 1.4 linethickness
+ yscaled blot_diameter;
+ pickup pencircle transformed T;
+ ellipse := fullcircle transformed T;
lft x11 = lft x13 = xoffs;
top y11 = yoffs + left_height;
define_pixels (xoffs, yoffs);
- pickup pencircle xscaled 1.4 linethickness
- yscaled blot_diameter;
-
- save ellipse;
+ save ellipse, T;
path ellipse;
+ transform T;
- ellipse := fullcircle xscaled 1.4 linethickness
- yscaled blot_diameter;
+ T := identity xscaled 1.4 linethickness
+ yscaled blot_diameter;
+ pickup pencircle transformed T;
+ ellipse := fullcircle transformed T;
lft x11 = lft x13 = xoffs;
top y11 = yoffs + 2.2 half_reduced_il;
define_pixels (xoffs, yoffs);
- pickup pencircle xscaled beamheight
- yscaled stem_width
- rotated 45;
-
- save ellipse;
+ save ellipse, T;
path ellipse;
+ transform T;
- ellipse := reverse fullcircle xscaled beamheight
- yscaled stem_width
- rotated 45;
+ T := identity xscaled beamheight
+ yscaled stem_width
+ rotated 45;
+ pickup pencircle transformed T;
+ ellipse := reverse fullcircle transformed T;
x21 := xoffs - rh_width / 2;
y21 := yoffs;
define_pixels (xoffs, yoffs);
% brevis stem
- pickup pencircle xscaled stem_width
- yscaled blot_diameter;
-
- save ellipse;
+ save ellipse, T;
path ellipse;
+ transform T;
- ellipse := fullcircle xscaled stem_width
- yscaled blot_diameter;
+ T := identity xscaled stem_width
+ yscaled blot_diameter;
+ pickup pencircle transformed T;
+ ellipse := fullcircle transformed T;
- rt z8 = (xoffs + reduced_il, yoffs - 4 reduced_slt);
+ rt x8 = xoffs + reduced_il;
+ y8 = y3;
rt z9 = (xoffs + reduced_il, yoffs - 4 reduced_il);
penpos8 (stem_width, 0);
define_pixels (xoffs, yoffs);
- pickup pencircle xscaled 0.2 width
- yscaled stem_width
- rotated 45;
-
- save ellipse;
+ save ellipse, T;
path ellipse;
+ transform T;
- ellipse := fullcircle xscaled 0.2 width
- yscaled stem_width
- rotated 45;
+ T := identity xscaled 0.2 width
+ yscaled stem_width
+ rotated 45;
+ pickup pencircle transformed T;
+ ellipse := fullcircle transformed T;
% half circle
lft z10 = (0, 0);
define_pixels (xoffs, yoffs);
- pickup pencircle xscaled 0.50 reduced_slt
- yscaled 0.22 reduced_il
- rotated -35;
-
- save ellipse, paths, sub_path, outlines, sub_outlines;
+ save ellipse, paths, sub_path, outlines, sub_outlines, T;
path ellipse, paths[], sub_path, outlines[], sub_outlines[];
+ transform T;
- ellipse := fullcircle xscaled 0.5 reduced_slt
- yscaled 0.22 reduced_il
- rotated -35;
+ T := identity xscaled 0.5 reduced_slt
+ yscaled 0.22 reduced_il
+ rotated -35;
+ pickup pencircle transformed T;
+ ellipse := fullcircle transformed T;
lft z1 = (xoffs + 0.80 reduced_il, yoffs + 0.00 reduced_il);
lft z2 = (xoffs + 1.00 reduced_il, yoffs + 1.20 reduced_il);
lft z10 = (xoffs + 0.20 reduced_il, yoffs + 0.60 reduced_il);
paths1 := z1{-1, 2}
- .. z2
- .. z3
- .. z4
- .. z5
- .. z6
- .. z7
- .. z8
- .. z9
- .. z10;
+ .. z2
+ .. z3
+ .. z4
+ .. z5
+ .. z6
+ .. z7
+ .. z8
+ .. z9
+ .. z10;
save dirs, s;
pair dirs[];
(times42, times24) = sub_outlines4 intersectiontimes sub_outlines2;
(times43, times34) = sub_outlines4 intersectiontimes sub_outlines3;
- pickup pencircle xscaled 0.75 reduced_slt
- yscaled 0.33 reduced_il
- rotated -35;
-
- ellipse := fullcircle xscaled 0.75 reduced_slt
- yscaled 0.33 reduced_il
- rotated -35;
+ T := identity xscaled 0.75 reduced_slt
+ yscaled 0.33 reduced_il
+ rotated -35;
+ pickup pencircle transformed T;
+ ellipse := fullcircle transformed T;
lft z21 = (xoffs + 1.05 reduced_il, yoffs + 0.45 reduced_il);
lft z22 = (xoffs + 0.55 reduced_il, yoffs + 0.45 reduced_il);
& subpath (0, times1 - s / 4) of sub_outlines1
-- cycle;
+
% we approximate `draw paths2'
for i = 1 step s until (length paths2 - s):
dirs[i + 20] := direction (i - 1) of paths2;
endfor;
- fill get_subpath (ellipse, -dirs21, dirs21, z21)
- for i = (1 + s) step s until (length paths2 - s):
- .. get_subpoint (ellipse, dirs[i + 20],
- point (i - 1) of paths2)
- endfor
- .. get_subpath (ellipse, up, z26 - z25, z25)
- -- get_subpath (ellipse, z26 - z25, z25 - z26, z26)
- -- get_subpoint (ellipse, z25 - z26, z25)
- -- get_subpoint (ellipse, down, z25)
- for i = (length paths2 - s) step -s until (t4 + 1):
- .. get_subpoint (ellipse, -dirs[i + 20],
- point (i - 1) of paths2)
- endfor
- .. get_subpoint (ellipse, -direction t4 of paths2,
- point t4 of paths2)
- -- get_subpoint (ellipse, -direction t3 of paths2,
- point t3 of paths2)
- for i = (floor (t3 / s) * s + 1) step -s until (t2 + 1):
- .. get_subpoint (ellipse, -dirs[i + 20],
- point (i - 1) of paths2)
- endfor
- .. get_subpoint (ellipse, -direction t2 of paths2,
- point t2 of paths2)
- -- get_subpoint (ellipse, -direction t1 of paths2,
- point t1 of paths2)
- for i = (floor (t1 / s) * s + 1) step -s until (1 + s):
- .. get_subpoint (ellipse, -dirs[i + 20],
- point (i - 1) of paths2)
- endfor
+ sub_outlines21 := get_subpath (ellipse, -dirs21, dirs21, z21)
+ for i = (1 + s) step s until (length paths2 - s):
+ .. get_subpoint (ellipse, dirs[i + 20],
+ point (i - 1) of paths2)
+ endfor
+ .. get_subpath (ellipse, up, z26 - z25, z25);
+ sub_outlines22 := get_subpath (ellipse, z26 - z25, z25 - z26, z26)
+ -- get_subpoint (ellipse, z25 - z26, z25);
+ sub_outlines23 := get_subpoint (ellipse, down, z25)
+ for i = (length paths2 - s) step -s until (t4 + 1):
+ .. get_subpoint (ellipse, -dirs[i + 20],
+ point (i - 1) of paths2)
+ endfor
+ .. get_subpoint (ellipse, -direction t4 of paths2,
+ point t4 of paths2);
+ sub_outlines24 := get_subpoint (ellipse, -direction t3 of paths2,
+ point t3 of paths2)
+ for i = (floor (t3 / s) * s + 1) step -s until (t2 + 1):
+ .. get_subpoint (ellipse, -dirs[i + 20],
+ point (i - 1) of paths2)
+ endfor
+ .. get_subpoint (ellipse, -direction t2 of paths2,
+ point t2 of paths2);
+ sub_outlines25 := get_subpoint (ellipse, -direction t1 of paths2,
+ point t1 of paths2)
+ for i = (floor (t1 / s) * s + 1) step -s until (1 + s):
+ .. get_subpoint (ellipse, -dirs[i + 20],
+ point (i - 1) of paths2)
+ endfor;
+
+ (times2223, times2322) = sub_outlines22 intersectiontimes sub_outlines23;
+ (times2324, times2423) = sub_outlines23 intersectiontimes sub_outlines24;
+ (times2425, times2524) = sub_outlines24 intersectiontimes sub_outlines25;
+
+ fill sub_outlines21
+ -- subpath (0, times2223) of sub_outlines22
+ -- subpath (times2322, times2324) of sub_outlines23
+ -- subpath (times2423, times2425) of sub_outlines24
+ -- subpath (times2524, infinity) of sub_outlines25
.. cycle;
labels (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
define_pixels (xoffs, yoffs);
- pickup pencircle xscaled (0.60 reduced_il)
- yscaled (0.10 reduced_il)
- rotated 40;
-
- save ellipse, pat;
+ save ellipse, pat, T;
path ellipse, pat;
+ transform T;
- ellipse := fullcircle xscaled (0.60 reduced_il)
- yscaled (0.10 reduced_il)
- rotated 40;
+ T := identity xscaled 0.6 reduced_il
+ yscaled 0.1 reduced_il
+ rotated 40;
+ pickup pencircle transformed T;
+ ellipse := fullcircle transformed T;
z1 = (xoffs + 0.90 reduced_il, yoffs + .45 reduced_il);
z2 = (xoffs + 0.80 reduced_il, yoffs + .45 reduced_il);
1.15 reduced_il# - ypart exact_center,
1.00 reduced_il# + ypart exact_center);
- pickup pencircle xscaled (0.60 reduced_il)
- yscaled (0.10 reduced_il)
- rotated 40;
-
save xoffs, yoffs;
xoffs# = xpart exact_center;
define_pixels (xoffs, yoffs);
- save ellipse, pat;
+ save ellipse, pat, T;
path ellipse, pat;
+ transform T;
- ellipse := fullcircle xscaled (0.60 reduced_il)
- yscaled (0.10 reduced_il)
- rotated 40;
+ T := identity xscaled 0.6 reduced_il
+ yscaled 0.1 reduced_il
+ rotated 40;
+ pickup pencircle transformed T;
+ ellipse := fullcircle transformed T;
z11 = (xoffs + 0.90 reduced_il, yoffs + 0.70 reduced_il);
z12 = (xoffs + 0.80 reduced_il, yoffs + 0.70 reduced_il);