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--2012 Juergen Reuter <reuter@ipd.uka.de>
7 % The LilyPond font 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, or under the SIL Open Font License.
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");
24 ht# = .35 staff_space#;
27 define_pixels (wd, ht);
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);
45 fill get_subpath (ellipse, up, down, z1)
46 -- get_subpath (ellipse, down, up, z2)
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));
79 set_char_box (wd#/2, wd#/2, ht#/2, ht#/2);
83 fet_beginchar ("accentus up", "uaccentus");
85 penlabels (1, 2, 3, 4);
89 fet_beginchar ("accentus down", "daccentus");
95 def draw_half_circle (expr diam) =
100 define_pixels (diameter);
102 thick = 0.6 linethickness;
105 penpos2 (thick, -90);
106 penpos3 (thick, -180);
108 z1r = (diameter / 2, 0);
109 z2r = (0, -diameter / 2);
110 z3r = (-diameter / 2, 0);
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,
128 fet_beginchar ("half circle", "dsemicirculus");
129 draw_half_circle (5/16 staff_space#);
131 set_char_box (diameter# / 2, diameter# / 2,
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);
155 fet_beginchar ("augmentum", "augmentum");
158 diameter# = 0.25 staff_space#;
160 define_pixels (diameter);
162 pickup pencircle scaled diameter;
166 set_char_box (diameter# / 2, diameter# / 2,
167 diameter# / 2, diameter# / 2);
171 def draw_signum_congruentiae =
172 set_char_box (0.50 staff_space# + 1.5 linethickness#,
173 0.50 staff_space# + 1.5 linethickness#,
175 2.00 staff_space# + 3.5 linethickness#);
180 ellipse := fullcircle xscaled 1.0 linethickness
181 yscaled 5.0 linethickness
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);
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)
203 .. get_subpoint (ellipse, direction 2 of pat, z3)
205 .. get_subpoint (ellipse, direction 3 of pat, z4)
207 .. get_subpoint (ellipse, direction 4 of pat, z5)
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}
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);
230 fet_beginchar ("signum congruentiae up", "usignumcongruentiae");
231 draw_signum_congruentiae;
232 labels (1, 2, 3, 4, 5, 6, 7, 8);
236 fet_beginchar ("signum congruentiae down", "dsignumcongruentiae");
237 draw_signum_congruentiae;
244 %%%% Code for Kievan Notation
249 fet_beginchar ("Kievan end of piece (slash)", "barline.kievan");
250 % This draws the end of piece figure.
251 % This figure is placed at the end of the musical piece,
254 save hair_thickness, thick_thickness, width, depth, height, padding;
255 hair# = 1.9 linethickness#;
256 thick# = 6.0 linethickness#;
257 width# = 1.0 staff_space#;
258 height# + depth# = 4 staff_space#;
259 depth# = height# + hair#;
260 padding# = .2 staff_space#;
262 set_char_box (0, width# + 3 padding#, depth#, height# + staff_space#);
263 define_pixels (hair, thick, width, padding, depth, height);
266 y1 - y3r = depth + height + linethickness / 2;
269 = (width / 2 + padding, hair / 8);
270 z5 = (x2 - .17 staff_space, 9/10 [y2, y1]);
271 z7 - z6 = (.5 staff_space, -.2 staff_space);
272 .4 [z6, z7] = 7/6 [z2, z1];
280 penpos7 (.5 thick, -120);
282 penlabels (1, 2, 3, 4, 5, 6, 7);
293 .. simple_serif (z7r, z7l, 80)
300 fet_endgroup ("scripts");