X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=mf%2Fparmesan-clefs.mf;h=34a09cf20bc40d7b0def688c2af66fc54731362f;hb=e4f4c55529f6fd7e5f6276400e55ca517d6db210;hp=3181eaa935a16c1e5467d46f717ec7fe785038d0;hpb=be8e0ed9c4d9bf06fb150e1f0d3cfe1518dfc3a7;p=lilypond.git diff --git a/mf/parmesan-clefs.mf b/mf/parmesan-clefs.mf index 3181eaa935..34a09cf20b 100644 --- a/mf/parmesan-clefs.mf +++ b/mf/parmesan-clefs.mf @@ -1,10 +1,21 @@ -% -%-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 +% Copyright (C) 2001--2012 Juergen Reuter % +% +% 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 . fet_begingroup ("clefs"); @@ -61,14 +72,14 @@ def draw_vaticana_do_clef (expr exact_center, reduction) = 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; @@ -137,14 +148,14 @@ def draw_vaticana_fa_clef (expr exact_center, reduction) = 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); @@ -232,14 +243,14 @@ def draw_medicaea_do_clef (expr exact_center, reduction) = 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); @@ -304,26 +315,25 @@ def draw_medicaea_fa_clef (expr exact_center, reduction) = 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) @@ -617,14 +627,14 @@ def draw_neomensural_c_clef (expr exact_center, reduction) = 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; @@ -710,14 +720,14 @@ def draw_petrucci_c_clef (expr exact_center, flare_align, reduction) = 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; @@ -864,14 +874,14 @@ def draw_mensural_c_clef (expr exact_center, reduction) = 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; @@ -947,16 +957,15 @@ def draw_diamond (expr exact_center, reduction) = 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; @@ -1033,16 +1042,17 @@ def draw_petrucci_f_clef (expr exact_center, reduction) = 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); @@ -1128,16 +1138,15 @@ def draw_mensural_f_clef (expr exact_center, reduction) = 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); @@ -1237,16 +1246,15 @@ def draw_petrucci_g_clef (expr exact_center, reduction) = 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); @@ -1313,13 +1321,11 @@ def draw_petrucci_g_clef (expr exact_center, reduction) = (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); @@ -1515,16 +1521,15 @@ def draw_hufnagel_do_clef (expr exact_center, reduction) = 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); @@ -1591,10 +1596,6 @@ def draw_hufnagel_fa_clef (expr exact_center, reduction) = 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; @@ -1602,12 +1603,15 @@ def draw_hufnagel_fa_clef (expr exact_center, reduction) = 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); @@ -1697,4 +1701,61 @@ fet_beginchar ("Hufnagel do/fa clef", "hufnagel.do.fa_change"); fet_endchar; +%%%%%%%% +%% +%% Medieval East-Slavic (Kievan) Notation clefs +%% Code by Aleksandr Andreev +%% +%%%%%%%% + +def draw_kievan_do_clef = + z1 = (1.108 staff_space, 0.554 staff_space); + z2 = (1.063 staff_space, -0.122 staff_space); + z3 = (1.467 staff_space, -1.621 staff_space); + z4 = (1.002 staff_space, -2.253 staff_space); + + y5 = y3; + x4 - x5 = x3 - x4; + + z6 = (0.917 staff_space, -0.383 staff_space); + z7 = (0.012 staff_space, -0.448 staff_space); + z8 = (0, -0.167 staff_space); + z9 = (0.057 staff_space, 0.464 staff_space); + z10 = (0.994 staff_space, 0.387 staff_space); + z11 = (1.023 staff_space, 0.554 staff_space); + + fill z1 + .. z2{down} + .. z3 + -- z4 + -- z5 + .. {up}z6 + & z6{left} + .. z7 + & z7 + .. z8{up} + .. z9 + & z9 + .. {right}z10 + & z10 + .. z11 + -- cycle; + + set_char_box (0, 1.5 staff_space#, + 2.25 staff_space#, 0.55 staff_space#); +enddef; + + +fet_beginchar ("Kievan tsefaut clef", "kievan.do"); + % This draws the Tse-Fa-Ut clef; it is a variant alto clef that + % always occurs on the third line of the staff. + draw_kievan_do_clef; +fet_endchar; + + +fet_beginchar ("Kievan tsefaut clef", "kievan.do_change"); + % This is the same thing as a do clef? + draw_kievan_do_clef; +fet_endchar; + fet_endgroup ("clefs");