Doc: revert bad fix for 617.
[lilypond/mpolesky.git] / mf / parmesan-scripts.mf
blob7b4e2d164cf709e7ddf83c79d9799d35dbaa51fc
1 % Feta (not the Font-En-Tja) music font --  ancient script symbols
2 % This file is part of LilyPond, the GNU music typesetter.
4 % Copyright (C) 2002--2010 Juergen Reuter <reuter@ipd.uka.de>
5
7 % LilyPond is free software: you can redistribute it and/or modify
8 % it under the terms of the GNU General Public License as published by
9 % the Free Software Foundation, either version 3 of the License, or
10 % (at your option) any later version.
12 % LilyPond is distributed in the hope that it will be useful,
13 % but WITHOUT ANY WARRANTY; without even the implied warranty of
14 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 % GNU General Public License for more details.
17 % You should have received a copy of the GNU General Public License
18 % along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
20 fet_begingroup ("scripts");
22 fet_beginchar ("ictus", "ictus");
23         save ht, wd;
24         ht# = .35 staff_space#;
25         wd# = linethickness#;
27         define_pixels (wd, ht);
29         save ellipse, T;
30         path ellipse;
31         transform T;
33         T := identity xscaled wd
34                       yscaled blot_diameter;
35         pickup pencircle transformed T;
36         ellipse := fullcircle transformed T;
38         set_char_box (wd# / 2, wd# / 2, ht# / 2, ht# / 2);
40         x1 = 0;
41         top y1 = ht / 2;
42         x2 = 0;
43         bot y2 = -ht / 2;
45         fill get_subpath (ellipse, up, down, z1)
46              -- get_subpath (ellipse, down, up, z2)
47              -- cycle;
49         labels (1, 2);
50 fet_endchar;
53 def draw_accentus =
54         save thick, thin, ht, wd;
56         thin# = 1 linethickness#;
57         thick# = 1.2 linethickness#;
58         ht# = .35 staff_space#;
59         wd# = .25 staff_space#;
61         define_pixels (wd, ht, thin, thick);
63         z1 = z2 = (-wd / 2 + thin / 2, -ht / 2 + thin / 2);
64         z3 = z4 = (wd / 2 - thick / 2, ht / 2 - thick / 2);
66         penpos1 (thin, angle (z1 - z3));
67         penpos2 (thin, angle (z1 - z3) + 90);
68         penpos3 (thick, angle (z3 - z1) + 90);
69         penpos4 (thick, angle (z3 - z1));
71         fill z1r
72              .. z2r
73              -- z3l
74              .. z4r
75              .. z3r
76              -- z2l
77              .. cycle;
79         set_char_box (wd#/2, wd#/2, ht#/2, ht#/2);
80 enddef;
83 fet_beginchar ("accentus up", "uaccentus");
84         draw_accentus;
85         penlabels (1, 2, 3, 4);
86 fet_endchar;
89 fet_beginchar ("accentus down", "daccentus");
90         draw_accentus;
91         y_mirror_char;
92 fet_endchar;
95 def draw_half_circle (expr diam) =
96         save diameter, thick;
98         diameter# = diam;
100         define_pixels (diameter);
102         thick = 0.6 linethickness;
104         penpos1 (thick, 0);
105         penpos2 (thick, -90);
106         penpos3 (thick, -180);
108         z1r = (diameter / 2, 0);
109         z2r = (0, -diameter / 2);
110         z3r = (-diameter / 2, 0);
111         
112         penstroke z1e{down}
113                   .. z2e{left}
114                   .. z3e{up};
115 enddef;
118 fet_beginchar ("half circle", "usemicirculus");
119         draw_half_circle (5/16 staff_space#);
121         currentpicture := currentpicture yscaled -1;
123         set_char_box (diameter# / 2, diameter# / 2,
124                       0, diameter# / 2);
125 fet_endchar;
128 fet_beginchar ("half circle", "dsemicirculus");
129         draw_half_circle (5/16 staff_space#);
131         set_char_box (diameter# / 2, diameter# / 2,
132                       diameter# / 2, 0);
134         penlabels (1, 2, 3);
135 fet_endchar;
138 fet_beginchar ("circle", "circulus");
139         save diameter, thick;
141         diameter# = 5/16 staff_space#;
143         define_pixels (diameter);
145         thick = 0.6 linethickness;
147         fill fullcircle scaled diameter;
148         unfill fullcircle scaled (diameter - 2 thick);
150         set_char_box (diameter# / 2, diameter# / 2,
151                       diameter# / 2, diameter# / 2);
152 fet_endchar;
155 fet_beginchar ("augmentum", "augmentum");
156         save diameter;
158         diameter# = 0.25 staff_space#;
160         define_pixels (diameter);
162         pickup pencircle scaled diameter;
164         drawdot (0, 0);
166         set_char_box (diameter# / 2, diameter# / 2,
167                       diameter# / 2, diameter# / 2);
168 fet_endchar;
171 def draw_signum_congruentiae =
172         set_char_box (0.50 staff_space# + 1.5 linethickness#,
173                       0.50 staff_space# + 1.5 linethickness#,
174                       2.5 linethickness#,
175                       2.00 staff_space# + 3.5 linethickness#);
177         save ellipse, pat;
178         path ellipse, pat;
180         ellipse := fullcircle xscaled 1.0 linethickness
181                               yscaled 5.0 linethickness
182                               rotated -35;
184         z1 = (+0.50 staff_space, +2.00 staff_space);
185         z2 = (+0.00 staff_space, +2.00 staff_space);
186         z3 = (-0.50 staff_space, +1.50 staff_space);
187         z4 = (-0.25 staff_space, +1.00 staff_space);
188         z5 = (+0.10 staff_space, +0.80 staff_space);
189         z6 = (+0.00 staff_space, +0.00 staff_space);
191         pat := z1{-1, +1}
192                .. z2
193                .. z3
194                .. z4
195                .. z5
196                .. z6;
198         % we avoid cusps originally present in `draw pat'
199         fill get_subpath (ellipse,
200                           -direction 0 of pat, direction 0 of pat, z1)
201              .. get_subpoint (ellipse, direction 1 of pat, z2)
202                   {direction 1 of pat}
203              .. get_subpoint (ellipse, direction 2 of pat, z3)
204                   {direction 2 of pat}
205              .. get_subpoint (ellipse, direction 3 of pat, z4)
206                   {direction 3 of pat}
207              .. get_subpoint (ellipse, direction 4 of pat, z5)
208                   {direction 4 of pat}
209              .. get_subpath (ellipse,
210                              direction 4.8 of pat, -direction 5 of pat, z6)
211              .. get_subpoint (ellipse, -direction 4 of pat, z5)
212                   {-direction 4 of pat}
213              .. get_subpoint (ellipse, -direction 3 of pat, z4)
214                   {-direction 3 of pat}
215              .. get_subpoint (ellipse, -direction 2.5 of pat, point 2.5 of pat)
216              .. get_subpoint (ellipse, -direction 1 of pat, z2)
217                   {-direction 1 of pat}
218              .. cycle;
220         pickup pencircle scaled 3.0 linethickness;
222         z7 = (-0.5 staff_space, +0.0 staff_space);
223         z8 = (+0.5 staff_space, +0.0 staff_space);
225         drawdot z7;
226         drawdot z8;
227 enddef;
230 fet_beginchar ("signum congruentiae up", "usignumcongruentiae");
231         draw_signum_congruentiae;
232         labels (1, 2, 3, 4, 5, 6, 7, 8);
233 fet_endchar;
236 fet_beginchar ("signum congruentiae down", "dsignumcongruentiae");
237         draw_signum_congruentiae;
238         xy_mirror_char;
239 fet_endchar;
242 fet_endgroup ("scripts");