% Feta (not the Font-En-Tja) music font -- ancient note heads
% This file is part of LilyPond, the GNU music typesetter.
%
-% Copyright (C) 2001--2012 Juergen Reuter <reuter@ipd.uka.de>
+% Copyright (C) 2001--2015 Juergen Reuter <reuter@ipd.uka.de>
%
% Neo-mensural heads originally by
% Christian Mondrup and Mats Bengtsson
%
-% LilyPond is free software: you can redistribute it and/or modify
+% The LilyPond font 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.
+% (at your option) any later version, or under the SIL Open Font License.
%
% LilyPond is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
enddef;
-def draw_neomensural_black_head (expr width, height) =
+def draw_neomensural_black_head (expr width, height, concaveness) =
save head_width, head_height, stem_width;
save ne, nw, ne_dist, nw_dist;
pair ne, nw, ne_dist, nw_dist;
ne_dist := (nw rotated -90) * blot_diameter / 2;
fill lft z1
- .. (z1 + nw_dist)
- -- (z2 + nw_dist)
+ .. (z1 + nw_dist){ ne rotated -concaveness }
+ .. { ne rotated concaveness }(z2 + nw_dist)
.. top z2
- .. (z2 + ne_dist)
- -- (z3 + ne_dist)
+ .. (z2 + ne_dist){ nw rotated (180 - concaveness) }
+ .. { nw rotated (180 + concaveness) }(z3 + ne_dist)
.. rt z3
- .. (z3 - nw_dist)
- -- (z4 - nw_dist)
+ .. (z3 - nw_dist){ ne rotated (180 - concaveness) }
+ .. { ne rotated (180 + concaveness) }(z4 - nw_dist)
.. bot z4
- .. (z4 - ne_dist)
- -- (z1 - ne_dist)
+ .. (z4 - ne_dist){ nw rotated -concaveness }
+ .. { nw rotated concaveness }(z1 - ne_dist)
.. cycle;
labels (1, 2, 3, 4);
enddef;
-def draw_neomensural_open_head (expr width, height)=
- draw_neomensural_black_head (width, height);
+def draw_neomensural_open_head (expr width, height, concaveness)=
+ draw_neomensural_black_head (width, height, concaveness);
save headNW, headSW, stem_width;
nm_height := noteheight#;
nm_width := staff_space#;
fet_beginchar ("Neo-mensural semibrevis head", "s0neomensural");
- draw_neomensural_open_head (nm_width, nm_height);
+ draw_neomensural_open_head (nm_width, nm_height, 0);
fet_endchar;
fet_beginchar ("Neo-mensural minima head", "s1neomensural");
- draw_neomensural_open_head (nm_width, nm_height);
+ draw_neomensural_open_head (nm_width, nm_height, 0);
fet_endchar;
fet_beginchar ("Neo-mensural semiminima head", "s2neomensural");
- draw_neomensural_black_head (nm_width, nm_height);
+ draw_neomensural_black_head (nm_width, nm_height, 0);
fet_endchar;
%%%%%%%%
%
fet_beginchar ("Harmonic notehead (Neo-mensural open)", "s0harmonic");
- draw_neomensural_open_head (1.3 staff_space#, 1.3 noteheight#);
+ draw_neomensural_open_head (1.3 staff_space#, 1.3 noteheight#, 5);
charwx := head_width#;
charwy := 0;
fet_endchar;
fet_beginchar ("Harmonic notehead (Neo-mensural black)", "s2harmonic");
- draw_neomensural_black_head (1.3 staff_space#, 1.3 noteheight#);
+ draw_neomensural_black_head (1.3 staff_space#, 1.3 noteheight#, 5);
charwx := head_width#;
charwy := 0;
fet_endchar;
petrucci_width := .72 petrucci_height;
fet_beginchar ("Petrucci semibrevis head", "s0petrucci");
- draw_neomensural_open_head (petrucci_width, petrucci_height);
+ draw_neomensural_open_head (petrucci_width, petrucci_height, 0);
fet_endchar;
fet_beginchar ("Petrucci minima head", "s1petrucci");
- draw_neomensural_open_head (petrucci_width, petrucci_height);
+ draw_neomensural_open_head (petrucci_width, petrucci_height, 0);
fet_endchar;
fet_beginchar ("Petrucci semiminima head", "s2petrucci");
- draw_neomensural_black_head (petrucci_width, petrucci_height);
+ draw_neomensural_black_head (petrucci_width, petrucci_height, 0);
fet_endchar;
%
fet_beginchar ("Petrucci colored semibrevis head", "s0blackpetrucci");
- draw_neomensural_black_head (petrucci_width, petrucci_height);
+ draw_neomensural_black_head (petrucci_width, petrucci_height, 0);
fet_endchar;
fet_beginchar ("Petrucci colored minima head", "s1blackpetrucci");
- draw_neomensural_black_head (petrucci_width, petrucci_height);
+ draw_neomensural_black_head (petrucci_width, petrucci_height, 0);
fet_endchar;
fet_beginchar ("Petrucci colored semiminima head", "s2blackpetrucci");
- draw_neomensural_black_head (petrucci_width, petrucci_height);
+ draw_neomensural_black_head (petrucci_width, petrucci_height, 0);
fet_endchar;
%%%%%%%%%%%%
-fet_beginchar ("kievan final note", "sM2kievan");
+fet_beginchar ("Kievan final note", "sM2kievan");
% This draws the Final Note.
% It is the last note of a piece of music
% equivalent to having a whole note and fermata in CMN.
path p;
p := (0, blank_space)
-- (0, staff_space - blank_space)
- -- (note_width, staff_space - blank_space)
- -- (note_width, blank_space)
+ -- (note_width + 0.5 vert_bar_thickness,
+ staff_space - blank_space)
+ -- (note_width + 0.5 vert_bar_thickness, blank_space)
-- cycle;
fill p;
fill p reflectedabout ((0, 0), (1, 0));
fet_endchar;
-fet_beginchar ("kievan recitative mark", "sM1kievan");
+fet_beginchar ("Kievan recitative mark", "sM1kievan");
inner_width# := 4 * staff_space#;
vert_bar_thickness# := 2 * stafflinethickness#;
vert_bar_height# := staff_space# - stafflinethickness#;
define_blacker_pixels (vert_bar_thickness);
path p;
- p := (3 * vert_bar_thickness, blank_space)
- -- (3 * vert_bar_thickness, vert_bar_height - blank_space)
- -- (3 * vert_bar_thickness + inner_width,
+ p := (2.5 * vert_bar_thickness, blank_space)
+ -- (2.5 * vert_bar_thickness, vert_bar_height - blank_space)
+ -- (3.5 * vert_bar_thickness + inner_width,
vert_bar_height - blank_space)
- -- (3 * vert_bar_thickness + inner_width, blank_space)
+ -- (3.5 * vert_bar_thickness + inner_width, blank_space)
-- cycle;
fill p;
fill p reflectedabout ((0, 0), (1, 0));
fill z1{dir 8.6}
.. z2
.. z3
- & z3 .. z4 .. z5
- & z5 -- z6
- & z6 .. z7 .. z8
- & z8{left} .. z9
- & z9 .. z10 ... {dir 75}cycle;
+ & z3
+ .. z4
+ .. z5
+ -- z6
+ .. z7
+ .. z8
+ & z8{left}
+ .. z9
+ & z9
+ .. z10
+ ... {dir 75}cycle;
set_char_box (0, 1.02 staff_space#,
2.50 staff_space#, 0.40 staff_space#);
fill z1{dir -6.9}
.. z2
.. z3
- & z3 .. z4 .. z5
- & z5 -- z6
- & z6 .. z7 .. z8
- & z8{left} .. z9
- & z9 .. z10 ... {dir -76.9}cycle;
+ & z3
+ .. z4
+ .. z5
+ -- z6
+ .. z7
+ .. z8
+ & z8{left}
+ .. z9
+ & z9
+ .. z10
+ ... {dir -76.9}cycle;
set_char_box (0, 1.02 staff_space#,
0.40 staff_space#, 2.6 staff_space#);
fill z1
.. z2{down}
.. z3
- & z3 -- z4
- & z4 .. z5{up} .. z6
- & z6 .. z7{left} .. z8
- & z8 -- z9
- & z9 .. {right}z10
- & z10{up} .. z11
- & z11 -- cycle;
+ -- z4
+ .. z5{up}
+ .. z6
+ & z6
+ .. z7{left}
+ .. z8
+ -- z9
+ .. {right}z10
+ & z10{up}
+ .. z11
+ -- cycle;
set_char_box (0, 1.06 staff_space#,
1.6 staff_space#, 1.0 staff_space#);
fill z1
.. z2{down}
.. z3
- & z3 -- z4
- & z4 .. z5{up} .. z6
- & z6 .. z7{left} .. z8
- & z8 -- z9
- & z9 .. z10{right}
- & z10 .. z11 .. z12
- & z12 -- cycle;
+ -- z4
+ .. z5{up}
+ .. z6
+ & z6
+ .. z7{left}
+ .. z8
+ -- z9
+ .. z10{right}
+ & z10
+ .. z11
+ .. z12
+ -- cycle;
set_char_box (0, 1.1 staff_space#,
1.0 staff_space#, 1.4 staff_space#);
fill z1{right}
.. z2
- & z2 -- z3
- & z3{right} .. z4
- & z4 .. z5{down} .. z6
- & z6 -- z7
- & z7 .. z8{up} .. z9
- & z9 .. {left}z10
- & z10{dir 78.7} .. z11
- & z11 .. {left}z12
- & z12{dir 78.7} .. {dir 62}cycle;
+ -- z3{right}
+ .. z4
+ & z4
+ .. z5{down}
+ .. z6
+ -- z7
+ .. z8{up}
+ .. z9
+ & z9
+ .. {left}z10
+ & z10{dir 78.7}
+ .. z11
+ & z11
+ .. {left}z12
+ & z12{dir 78.7}
+ .. {dir 62}cycle;
set_char_box (0, 1.25 staff_space#,
3.0 staff_space#, 0.5 staff_space#);
fill z1{dir -6.9}
.. z2
.. z3
- & z3 .. z4 .. z5
- & z5 -- z6
- & z6 .. z7 .. z8
- & z8{left} .. z9
- & z9 .. z10 ... {dir -76.9}cycle;
+ & z3
+ .. z4
+ .. z5
+ -- z6
+ .. z7
+ .. z8
+ & z8{left}
+ .. z9
+ & z9
+ .. z10
+ ... {dir -76.9}cycle;
% now, draw the stem
z11 = (0.033 staff_space, 2.823 staff_space);
fill z11
-- z12
- & z12 .. z13{down} .. z14
- & z14 -- z15
- & z15 .. z16 .. z17{up} .. cycle;
+ .. z13{down}
+ .. z14
+ -- z15
+ .. z16
+ .. z17{up}
+ .. cycle;
set_char_box (0, 1.0 staff_space#,
0.4 staff_space#, 2.9 staff_space#);