Hi!

According to the recent discussion about blot_diameter, I tried to fix
all font symbols that I contributed so far.  Still, I do not fully
understand the concept.  Does blot_diameter only apply to convex
edges?  Does it only apply to the outline of a symbol?  Does the
concept of blot_diameter imply that lines always must have a width of
at least blot_diameter?  What about penrazors, penstrokes and all the
other MetaFont constructs that typically produce sharp edges?

Anyway, while fixing the font, I also added some more characters to
the vaticana style note heads section -- most of them for
compatibility reasons with OpusTeX and commercial systems.  Thereby I
noticed that Lily does not like TeX fonts that contain more than 256
characters:

lilypond: ../flower/include/array.hh:149: int &
Array<int>::elem_ref(int) const: Assertion `i >=0&&i<size_' failed.

This happens as soon as starting to prepocess notehead elements.
Therefore I have currently commented out some of the new note heads in
feta-bolletjes.mf.

Here is a summary of the changes:

* Fixed some blot_diameter related flaws in some feta symbols
* Added some more vaticana/solesmes style font symbols
* Bugfix: renamed subbipunctum -> inclinatum
* Fixed a few typos in various .mf files

The attached patch is relative to my previous patch.  When applying to
original 1.5.28, the only conflict (if at all) should occur for
ancient-font.ly.  In this case, just drop the changes for this file
(it affects just a single line, anyway).

Greetings,
Juergen
diff -Naur lilypond-1.5.28.NEW/input/test/ancient-font.ly 
lilypond-1.5.28.NEW.1/input/test/ancient-font.ly
--- lilypond-1.5.28.NEW/input/test/ancient-font.ly      Mon Dec 31 20:08:27 2001
+++ lilypond-1.5.28.NEW.1/input/test/ancient-font.ly    Fri Jan 25 02:35:09 2002
@@ -41,7 +41,7 @@
 %      \property Staff.clefOctavation = #0 
        \clef "vaticana_do2"
 
-       \property Voice.NoteHead \override #'style = #'vaticana_subbipunctum
+       \property Voice.NoteHead \override #'style = #'vaticana_inclinatum
        a! b!
        \property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
        \property Voice.NoteHead \override #'style = #'vaticana_virga
diff -Naur lilypond-1.5.28.NEW/mf/feta-bolletjes.mf 
lilypond-1.5.28.NEW.1/mf/feta-bolletjes.mf
--- lilypond-1.5.28.NEW/mf/feta-bolletjes.mf    Wed Dec  5 18:54:28 2001
+++ lilypond-1.5.28.NEW.1/mf/feta-bolletjes.mf  Thu Jan 24 04:04:35 2002
@@ -5,6 +5,7 @@
 % 
 % (c) 1997--2001 Jan Nieuwenhuizen <[EMAIL PROTECTED]>
 % & Han-Wen Nienhuys <[EMAIL PROTECTED]>
+% & Juergen Reuter <[EMAIL PROTECTED]>
 % 
 
 
@@ -611,45 +612,15 @@
 %
 %
 %
-% EDITIO VATICANA
+% EDITIO VATICANA (including solesmes extensions)
 %
 %
 %
 
-% subbipunctum
-fet_beginchar("Ed. Vat. subbipunctum", "0vaticana_subbipunctum",
-       "vatsubbipunctumhead")
-       save b_h, a_w;
-       a_b := 1.54; % b_h*a_b/a_w = wd/ht
-       b_h := 0.85;
-       a_w := 1.09;
-
-       save a, beta, ht, wd;
-       ht# = noteheight#;
-       2beta# = ht# * b_h;
-       a# = beta# * a_b;
-       wd# = 2a# / a_w;
-       set_char_box(0.3wd#, 0.3wd#, 0.5 ht#, 0.5 ht#);
-       black_notehead_width# := wd#;
-
-       save za, alpha, size;
-       pair za;
-       define_pixels(ht, wd);
-       alpha = 35;
-       size = 0.45ht;
-       pickup pencircle
-               xscaled 0
-               yscaled size rotated -alpha;
-       za = (0, size) / 2 rotated alpha;
-       draw -za .. za;
-
-fet_endchar;
-
-
-% parametrized punctum
+% parameterized punctum
 def punctum_char (expr verbose_name, internal_name, mudela_name,
-       left_stem, right_stem,
-       straight, reverse_convexity, excentric, up_shift, mag) =
+                 left_stem, right_stem, linea, cavum,
+                 straight, auctum, direction_up, excentric, up_shift, mag) =
 
        fet_beginchar(verbose_name, internal_name, mudela_name)
                save b_h, a_w;
@@ -662,24 +633,37 @@
                2beta# = ht# * b_h;
                a# = beta# * a_b;
                wd# = 2a# / a_w;
-               set_char_box(0.25wd#, 0.25wd#, 0.5ht#, 0.5ht#);
+               set_char_box(0.50wd#, 0.10wd#, 0.5ht#, 0);
                black_notehead_width# := wd#;
 
-               save convexity;
+               % direction
+               save direction, direction_sign;
+               pair direction;
+               if direction_up:
+                       direction = up;
+                       direction_sign# = 1;
+               else:
+                       direction = down;
+                       direction_sign# = -1;
+               fi;
+
+               % convexity and excentricity
+               save u_convexity, u_excentricity;
                if straight:
-                       if reverse_convexity:
-                               convexity# = -0.02ht#;
-                       else:
-                               convexity# = +0.02ht#;
-                       fi;
+                       u_convexity# = -0.01ht#;
+                       u_excentricity# = 0.0ht#; % dummy
+               elseif auctum:
+                       u_convexity# = -0.03ht#;
+                       u_excentricity# = +0.25ht#;
                else:
-                       if reverse_convexity:
-                               convexity# = -0.05ht#;
-                       else:
-                               convexity# = +0.05ht#;
-                       fi;
+                       u_convexity# = -0.05ht#;
+                       u_excentricity# = 0.0ht#; % dummy
                fi;
+               save convexity, excentricity;
+               convexity# = direction_sign# * u_convexity#;
+               excentricity# = direction_sign# * u_excentricity#;
 
+               % y shift offset
                save yoffs;
                if up_shift:
                        yoffs# = 0.08ht#;
@@ -687,86 +671,218 @@
                        yoffs# = 0.00ht#;
                fi
 
-               define_pixels(ht, wd, convexity, yoffs);
+               define_pixels(convexity, excentricity, yoffs, ht, wd);
                pickup pencircle scaled stafflinethickness;
 
-               if excentric:
-                       z1 = (0.00wd, yoffs - 1.0convexity);
-                       z2 = (0.08wd, yoffs + 1.4convexity);
-                       z3 = (0.40wd, yoffs);
-                       penpos1(0.50ht, 90);
-                       penpos2(0.50ht, 90);
-                       penpos3(0.50ht, 90);
-                       if reverse_convexity:
-                               penstroke z1e{up} .. z2e{right} .. z3e;
-                       else:
-                               penstroke z1e{down} .. z2e{right} ..z3e;
-                       fi;
+               path p;
+               save height, yoffs_bt;
+               define_pixels (height, yoffs_bt);
+               height# = max (0.5ht# - stafflinethickness#, 0);
+               yoffs_bt# = yoffs# - (height# - stafflinethickness#)/2 -
+                           convexity#;
+               xpart z1a = xpart z1b;
+               xpart z2a = xpart z2b;
+               xpart z3a = xpart z3b;
+               ypart z1a + height = ypart z1b;
+               ypart z2a + height = ypart z2b;
+               ypart z3a + height = ypart z3b;
+
+               if auctum:
+                       z1a = (0.00wd + stafflinethickness/2, yoffs_bt);
+                       z2a = (0.20wd, yoffs_bt + 1.0*convexity);
+                       z3a = (0.40wd - stafflinethickness/2,
+                              yoffs_bt + 1.0*excentricity);
+                       p = z1a .. {right}z2a .. {direction}z3a --
+                           z3b{-direction} .. z2b{left} .. z1b -- cycle;
+               elseif excentric:
+                       z1a = (0.00wd + stafflinethickness/2,
+                              yoffs_bt - 1.0*convexity);
+                       z2a = (0.08wd, yoffs_bt + 1.4*convexity);
+                       z3a = (0.40wd - stafflinethickness/2, yoffs_bt);
+                       p = z1a{direction} .. z2a{right} .. z3a --
+                           z3b .. {left}z2b .. {-direction}z1b -- cycle;
                else:
-                       z1 = (0.00wd, yoffs);
-                       z2 = (0.20wd, yoffs + convexity);
-                       z3 = (0.40wd, yoffs);
-                       penpos1(0.50ht, 90);
-                       penpos2(0.50ht, 90);
-                       penpos3(0.50ht, 90);
-                       penstroke z1e .. z2e .. z3e;
+                       z1a = (0.00wd + stafflinethickness/2, yoffs_bt);
+                       z2a = (0.20wd, yoffs_bt + 1.0*convexity);
+                       z3a = (0.40wd - stafflinethickness/2, yoffs_bt);
+                       p = z1a .. z2a .. z3a --
+                           z3b .. z2b .. z1b -- cycle;
                fi;
 
+               if cavum:
+                       draw p;
+               else:
+                       filldraw p;
+               fi;
+
+
+               pickup pencircle scaled stafflinethickness;
+
                if left_stem:
-                       z5=(0.00wd + 0.5 stafflinethickness, yoffs);
-                       z6=(0.00wd + 0.5 stafflinethickness, yoffs - 1.5ht);
+                       z5=(0.00wd + stafflinethickness/2, yoffs);
+                       z6=(0.00wd + stafflinethickness/2, yoffs - 1.5ht);
                        draw z5 -- z6;
-               elseif right_stem:
-                       z5=(0.40wd - 0.25 stafflinethickness, yoffs);
-                       z6=(0.40wd - 0.25 stafflinethickness, yoffs - 1.5ht);
+               fi;
+
+               if right_stem:
+                       z5=(0.40wd - stafflinethickness/2, yoffs);
+                       z6=(0.40wd - stafflinethickness/2, yoffs - 1.5ht);
                        draw z5 -- z6;
                fi;
 
+               if linea:
+                       save linea_width, linea_height;
+                       linea_width# = stafflinethickness#;
+                       linea_height# = 0.85 ht#;
+                       define_pixels (linea_width, linea_height);
+                       draw_block ((-0.10wd - linea_width/2,
+                                    yoffs - linea_height/2),
+                                   (-0.10wd + linea_width/2,
+                                    yoffs + linea_height/2));
+                       draw_block ((+0.50wd - linea_width/2,
+                                    yoffs - linea_height/2),
+                                   (+0.50wd + linea_width/2,
+                                    yoffs + linea_height/2));
+               fi;
        fet_endchar;
 enddef;
 
+% parameterized punctum inclinatum
+def inclinatum_char(expr verbose_name, internal_name, mudela_name,
+                   small, stropha, auctum) =
+
+       fet_beginchar(verbose_name, internal_name, mudela_name)
+
+               save b_h, a_w;
+               a_b := 1.54; % b_h*a_b/a_w = wd/ht
+               b_h := 0.85;
+               a_w := 1.09;
+
+               save a, beta, ht, wd;
+               ht# = noteheight#;
+               2beta# = ht# * b_h;
+               a# = beta# * a_b;
+               wd# = 2a# / a_w;
+               set_char_box(0.3wd#, 0.3wd#, 0.5 ht#, 0.5 ht#);
+               black_notehead_width# := wd#;
+
+               save za, alpha, size;
+               pair za;
+               alpha = 35;
+               define_pixels(ht, wd);
+
+               if small:
+                       size# = 0.23ht#;
+               else:
+                       size# = 0.45ht#;
+               fi;
+
+               define_pixels(size);
+
+               pickup pencircle
+                       xscaled blot_diameter
+                       yscaled size rotated -alpha;
+               za = (0, size - blot_diameter/2) / 2 rotated alpha;
+               draw -za .. za;
+
+               if stropha:
+                       pickup pencircle
+                               xscaled (size/3)
+                               yscaled size rotated alpha;
+                       save za, off_angle; pair za;
+                       off_angle := 15;
+                       za = (0, -size) / 2 rotated -(alpha + off_angle);
+                       undraw za;
+               fi;
+
+               if auctum:
+                       pickup pencircle scaled stafflinethickness;
+                       save za, zb;
+                       pair za, zb;
+                       za = ((0, -size) rotated -alpha) +
+                            (0, stafflinethickness/2);
+                       xpart zb = 0;
+                       ypart zb = ypart za;
+                       draw za{(0,-1) rotated alpha} ..
+                            {(0,1) rotated -alpha}zb;
+               fi;
+       fet_endchar;
+enddef;
 
 % punctum
 punctum_char("Ed. Vat. punctum", "0vaticana_punctum", "vatpunctumhead",
-       false, false, false, false, false, false, 1.0);
+            false, false, false, false, false,
+            false, false, false, false, 1.0);
+
+% punctum cavum (for OpusTeX compatibility)
+%punctum_char("Ed. Vat. punctum cavum", "0vaticana_punctum_cavum",
+%           "vatpunctumcavumhead",
+%           false, false, false, true, false,
+%           false, false, false, false, 1.0);
+
+% linea punctum (for OpusTeX compatibility)
+%punctum_char("Ed. Vat. linea punctum", "0vaticana_linea_punctum",
+%           "vatlineapunctumhead",
+%           false, false, true, false, false,
+%           false, false, false, false, 1.0);
+
+% linea punctum cavum (for OpusTeX compatibility)
+%punctum_char("Ed. Vat. linea punctum cavum", "0vaticana_linea_punctum_cavum",
+%           "vatlineapunctumcavumhead",
+%           false, false, true, true, false,
+%           false, false, false, false, 1.0);
+
+% punctum inclinatum
+inclinatum_char("Ed. Vat. inclinatum", "0vaticana_inclinatum",
+               "vatinclinatumhead",
+               false, false, false);
 
 % virga (i.e. right stemmed punctum)
 punctum_char("Ed. Vat. virga", "0vaticana_virga", "vatvirgahead",
-       false, true, false, false, false, false, 1.0);
+            false, true, false, false, false,
+            false, false, false, false, 1.0);
 
 % left stemmed punctum as used in clivis (flexa) ligature
 punctum_char("Ed. Vat. reverse virga", "0vaticana_rvirga", "vatrvirgahead",
-       true, false, false, false, false, false, 1.0);
+            true, false, false, false, false,
+            false, false, false, false, 1.0);
 
 % pes lower punctum
 punctum_char("Ed. Vat. pes lower punctum", "0vaticana_lpes", "vatlpeshead",
-       false, false, true, true, false, false, 1.0);
+            false, false, false, false, true,
+            false, true, false, false, 1.0);
 
 % pes upper punctum
 punctum_char("Ed. Vat. pes upper punctum", "0vaticana_upes", "vatupeshead",
-       false, false, true, false, false, false, 1.0);
+            false, false, false, false, true,
+            false, false, false, false, 1.0);
 
 % pes upper punctum (shifted variation)
 %
 % Note: This note head is used instead of the regular pes upper
 % punctum to avoid collision with the lower punctum note of the pes when
 % the upper punctum sits directly on top of the lower punctum.
+%
 punctum_char("Ed. Vat. var pes upper punctum", "0vaticana_vupes",
-       "vatvupeshead",
-       false, false, true, false, false, true, 1.0);
+            "vatvupeshead",
+            false, false, false, false, true,
+            false, false, false, true, 1.0);
 
 % small punctum as used in epiphonus/cephalicus
 punctum_char("Ed. Vat. plica", "0vaticana_plica", "vatplicahead",
-       false, false, true, false, false, false, 0.5);
+            false, false, false, false, true,
+            false, false, false, false, 0.5);
 
 % excentric punctum as used in epiphonus
 punctum_char("Ed. Vat. epiphonus", "0vaticana_epiphonus", "vatepiphonushead",
-       false, false, false, true, true, false, 1.0);
+            false, false, false, false, false,
+            false, true, true, false, 1.0);
 
 % excentric punctum as used in cephalicus
 punctum_char("Ed. Vat. cephalicus", "0vaticana_cephalicus",
-       "vatcephalicushead",
-       false, false, false, false, true, false, 1.0);
+            "vatcephalicushead",
+            false, false, false, false, false,
+            false, false, true, false, 1.0);
 
 % quilisma
 fet_beginchar("Ed. Vat. quilisma", "0vaticana_quilisma", "vatquilismahead")
@@ -776,23 +892,84 @@
        a_w:=1.09;
 
        save a, beta, ht, wd;
-       ht# =noteheight#;
-       2beta#=ht#*b_h;
+       ht# = noteheight#;
+       2beta# = ht#*b_h;
        a# = beta#*a_b;
        wd# = 2a# / a_w;
-       set_char_box(0.1wd#, 0.4wd#, 0.5 ht#, 0.5 ht#);
+       set_char_box(0.4wd#, 0.00wd#, 0.5 ht#, 0.5 ht#);
        black_notehead_width# := wd#;
 
        define_pixels(ht, wd);
        pickup pencircle xscaled stafflinethickness yscaled 0.4ht;
-       z1=(0.00wd,-0.10ht);
-       z2=(0.00wd,+0.05ht);
-       z3=(0.15wd,-0.05ht);
-       z4=(0.15wd,+0.10ht);
-       z5=(0.30wd,+0.00ht);
-       z6=(0.30wd,+0.15ht);
-       draw z1 -- z2 -- z3 -- z4 -- z5 -- z6;
+       z1 = (0.00wd, -0.11ht);
+       z2 = (0.00wd, +0.06ht);
+       z3 = (0.10wd, -0.05ht);
+       z4 = (0.16wd, +0.11ht);
+       z5 = (0.24wd, -0.01ht);
+       z6 = (0.30wd, +0.15ht);
+       z7 = (0.40wd, +0.04ht);
+       z8 = (0.40wd, +0.21ht);
+       draw z1 -- z2 -- z3 -- z4 -- z5 -- z6 -- z7 -- z8;
+fet_endchar;
+
+% solesmes punctum inclinatum parvum
+%inclinatum_char("Solesmes punctum inclinatum parvum", "0solesmes_incl_parvum",
+%              "solinclparvumhead",
+%              true, false, false);
+
+% solesmes punctum auctum ascendens
+%punctum_char("Solesmes punctum auctum ascendens", "0solesmes_auct_asc",
+%           "solauctaschead",
+%           false, false, false, false, false,
+%           true, true, false, false, 1.0);
+
+% solesmes punctum auctum descendens
+%punctum_char("Solesmes punctum auctum descendens", "0solesmes_auct_desc",
+%           "solauctdeschead",
+%           false, false, false, false, false,
+%           true, false, false, false, 1.0);
+
+% solesmes punctum inclinatum auctum
+%inclinatum_char("Solesmes punctum incl. auctum", "0solesmes_incl_auctum",
+%              "solpunctuminclinatumauctumhead",
+%              false, false, true);
+
+% solesmes stropha
+%inclinatum_char("Solesmes stropha", "0solesmes_stropha",
+%              "solstrophahead",
+%              false, true, false);
+
+% solesmes stropha aucta
+%inclinatum_char("Solesmes stropha aucta", "0solesmes_stropha_aucta",
+%              "solstrophaauctahead",
+%              false, true, true);
+
+% solesmes oriscus
+fet_beginchar("Solesmes oriscus", "0solesmes_oriscus",
+       "soloriscushead")
+       save b_h, a_w;
+       a_b := 1.54; % b_h*a_b/a_w = wd/ht
+       b_h := 0.85;
+       a_w := 1.09;
+
+       save a, beta, ht, wd;
+       ht# = noteheight# * mag;
+       2beta# = ht# * b_h;
+       a# = beta# * a_b;
+       wd# = 2a# / a_w;
+       set_char_box(0.5wd#, 0.0wd#, 0.5ht#, 0.5ht#);
+       black_notehead_width# := wd#;
+
+       save convexity;
+       convexity# = +0.05ht#;
 
+       define_pixels(ht, wd, convexity);
+       pickup pencircle xscaled blot_diameter yscaled 0.50ht;
+       z1 = (0.00wd, -convexity);
+       z2 = (0.16wd, +convexity);
+       z3 = (0.33wd, -convexity);
+       z4 = (0.50wd, +convexity);
+       draw z1 .. z2 .. z3 .. z4;
 fet_endchar;
 
 %%%%%%%%
@@ -804,9 +981,9 @@
 %
 %
 
-% subbipunctum
-fet_beginchar("Ed. Med. subbipunctum", "0medicaea_subbipunctum",
-       "medsubbipunctumhead")
+% inclinatum
+fet_beginchar("Ed. Med. inclinatum", "0medicaea_inclinatum",
+       "medinclinatumhead")
        save b_h, a_w;
        a_b := 1.54; % b_h*a_b/a_w = wd/ht
        b_h := 0.85;
@@ -826,7 +1003,7 @@
        alpha = 35;
        size = 0.7ht;
        pickup pencircle
-               xscaled 0
+               xscaled blot_diameter
                yscaled size rotated -alpha;
        za = (0, size) / 2 rotated alpha;
        draw -za .. za;
@@ -846,24 +1023,25 @@
                black_notehead_width# := wd#;
 
                define_pixels(ht, wd);
-               pickup pencircle scaled stafflinethickness;
+               pickup pencircle
+                       xscaled blot_diameter
+                       yscaled 0.50ht;
+               z1 = (0.00wd + blot_diameter/2, 0);
+               z2 = (0.40wd - blot_diameter/2, 0);
+               draw z1 .. z2;
 
-                       z1 = (0.00wd, 0);
-                       z2 = (0.20wd, 0);
-                       z3 = (0.40wd, 0);
-                       penpos1(0.50ht, 90);
-                       penpos2(0.50ht, 90);
-                       penpos3(0.50ht, 90);
-                       penstroke z1e .. z2e .. z3e;
+               pickup pencircle
+                       xscaled stafflinethickness
+                       yscaled blot_diameter;
 
                if left_down_stem:
-                       z5=(0.00wd + 0.5 stafflinethickness, 0);
-                       z6=(0.00wd + 0.5 stafflinethickness, - 1.25ht);
-                       draw z5 -- z6;
+                       z4=(0.00wd + stafflinethickness/2, blot_diameter/2);
+                       z5=(0.00wd + stafflinethickness/2, - 1.25ht);
+                       draw z4 .. z5;
                elseif left_up_stem:
-                       z5=(0.00wd + 0.5 stafflinethickness, 0);
-                       z6=(0.00wd + 0.5 stafflinethickness, + 1.25ht);
-                       draw z5 -- z6;
+                       z4=(0.00wd + stafflinethickness/2, blot_diameter/2);
+                       z5=(0.00wd + stafflinethickness/2, + 1.25ht);
+                       draw z4 .. z5;
                fi;
 
        fet_endchar;
@@ -915,7 +1093,7 @@
                alpha = 55;
                size = 0.7ht;
                pickup pencircle
-                       xscaled 0
+                       xscaled blot_diameter
                        yscaled size rotated -alpha;
                za = (0, size) / 2 rotated alpha;
                draw -za .. za;
@@ -955,7 +1133,7 @@
        alpha = 35;
        size = 0.7ht;
        pickup pencircle
-               xscaled 0
+               xscaled blot_diameter
                yscaled size rotated -alpha;
        za = (size, 0);
        draw -za .. za;
diff -Naur lilypond-1.5.28.NEW/mf/feta-custodes.mf 
lilypond-1.5.28.NEW.1/mf/feta-custodes.mf
--- lilypond-1.5.28.NEW/mf/feta-custodes.mf     Wed Dec  5 18:54:28 2001
+++ lilypond-1.5.28.NEW.1/mf/feta-custodes.mf   Sun Jan 13 23:42:51 2002
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (C) 2000 Juergen Reuter <[EMAIL PROTECTED]>
+% (C) 2000, 2002 Juergen Reuter <[EMAIL PROTECTED]>
 % 
 
 save black_notehead_width;
@@ -102,17 +102,18 @@
        black_notehead_width# := wd#;
 
        define_pixels(ht, wd);
-       pickup pencircle scaled stafflinethickness;
 
-       z1 = (0.0wd, +0.0ht);
-       z2 = (1.0wd + 0.5stafflinethickness, +0.0ht);
-       penpos1(1.0ht, 90);
-       penpos2(1.0ht, 90);
-       penstroke z1e{z2 - z1} .. {right}z2e;
-
-       z3=(1.0wd, +0.0ht);
-       z4=(1.0wd, +1.0ht);
-       draw z3 -- z4;
+       % head
+       pickup pencircle xscaled blot_diameter yscaled 1.0ht;
+       z1 = (0.0wd, 0.0ht);
+       z2 = z1 + (1.0wd - blot_diameter/2, 0);
+       draw z1 .. z2;
+
+       % stem
+       pickup pencircle scaled stafflinethickness;
+       z3 = (1.0wd - stafflinethickness/2, 0.0ht);
+       z4 = z3 + (0, +1.0ht);
+       draw z3 .. z4;
 fet_endchar;
 
 
@@ -132,17 +133,18 @@
        black_notehead_width# := wd#;
 
        define_pixels(ht, wd);
-       pickup pencircle scaled stafflinethickness;
 
-       z1 = (0.0wd, +0.0ht);
-       z2 = (1.0wd + 0.5stafflinethickness, -0.0ht);
-       penpos1(1.0ht, 90);
-       penpos2(1.0ht, 90);
-       penstroke z1e{z2 - z1} .. {right}z2e;
-
-       z3=(1.0wd, -0.0ht);
-       z4=(1.0wd, -1.0ht);
-       draw z3 -- z4;
+       % head
+       pickup pencircle xscaled blot_diameter yscaled 1.0ht;
+       z1 = (0.0wd, 0.0ht);
+       z2 = z1 + (1.0wd - blot_diameter/2, 0);
+       draw z1 .. z2;
+
+       % stem
+       pickup pencircle scaled stafflinethickness;
+       z3 = (1.0wd - stafflinethickness/2, 0.0ht);
+       z4 = z3 + (0, -1.0ht);
+       draw z3 .. z4;
 fet_endchar;
 
 
diff -Naur lilypond-1.5.28.NEW/mf/feta-klef.mf lilypond-1.5.28.NEW.1/mf/feta-klef.mf
--- lilypond-1.5.28.NEW/mf/feta-klef.mf Wed Dec  5 18:54:30 2001
+++ lilypond-1.5.28.NEW.1/mf/feta-klef.mf       Sun Jan 13 23:14:23 2002
@@ -6,7 +6,7 @@
 % 
 % (c) 1997--2001 Han-Wen Nienhuys <[EMAIL PROTECTED]>,
 % Jan Nieuwenhuizen <[EMAIL PROTECTED]>,
-% Juergen Reuter <[EMAIL PROTECTED]>
+% Juergen Reuter <[EMAIL PROTECTED]>
 
 
 fet_begingroup("clefs");
@@ -597,16 +597,13 @@
        define_pixels(reduced_slt);
        define_pixels(stem_width);
 
-       penpos6(stem_width, 0);
-       penpos7(stem_width, 0);
-       z6l = exact_center;
-       z7l = z6l + (0, -2reduced_il);
-       fill z6l -- z7l -- z7r -- z6r -- cycle;
-       penpos8(stem_width, 0);
-       penpos9(stem_width, 0);
-       z8l = z6l + (-3reduced_slt, 0);
-       z9l = z8l + (0, -2reduced_il);
-       fill z8l -- z9l -- z9r -- z8r -- cycle;
+       pickup pencircle xscaled stem_width yscaled blot_diameter;
+       z6 = exact_center + (stem_width/2, 0);
+       z7 = z6 + (0, -2reduced_il);
+       z8 = z6 + (-3reduced_slt, 0);
+       z9 - z8 = z7 - z6;
+       draw z6 .. z7;
+       draw z8 .. z9;
 
        addto currentpicture also currentpicture
                yscaled -1 shifted (0, 2*(ypart exact_center));
@@ -650,20 +647,17 @@
        addto currentpicture also currentpicture
                yscaled -1 shifted (0, 2*(ypart exact_center) - interline);
 
-       penpos6(stem_width, 0);
-       penpos7(stem_width, 0);
-       z6l = exact_center + (0, 0);
-       z7l = z6l + (0, -2.2reduced_il);
-       fill z6l -- z7l -- z7r -- z6r -- cycle;
+       pickup pencircle xscaled stem_width yscaled blot_diameter;
+       z6 = exact_center + (stem_width/2, 0);
+       z7 = z6 + (0, -2.2reduced_il);
+       draw z6 .. z7;
 
        addto currentpicture also currentpicture 
                xscaled -1 shifted (2x4l,0);
 
-       penpos8(stem_width, 0);
-       penpos9(stem_width, 0);
-       z8l = exact_center + (0, 0);
-       z9l = z8l + (0, -3.2reduced_il);
-       fill z8l -- z9l -- z9r -- z8r -- cycle;
+       z8 = exact_center + (stem_width/2, 0);
+       z9 = z8 + (0, -3.2reduced_il);
+       draw z8 .. z9;
 
        addto currentpicture also currentpicture
                yscaled -1 shifted (0, 4*(ypart exact_center));
@@ -766,29 +760,30 @@
        addto currentpicture also currentpicture 
                xscaled -1 shifted (2x4l,0);
 
-       penpos6(stem_width, 0);
-       penpos7(stem_width, 0);
-       z6r = exact_center + (2x4l, 0);
-       z7r = z6r + (0, -4reduced_il);
-       fill z6l -- z7l -- z7r -- z6r -- cycle;
-
-       draw_diamond(exact_center +
-                    (1.6interline*reduction, interline/2), reduction);
-
-       % upper stem
-       penpos8(stem_width, 0);
-       penpos9(stem_width, 0);
-       z8l = exact_center + (1.6interline*reduction, interline*reduction);
-       z9l = z8l + (0, 1.5interline*reduction);
-       fill z8l -- z9l -- z9r -- z8r -- cycle;
-
-       draw_diamond(exact_center +
-                    (1.6interline*reduction, -interline/2), reduction);
-       penpos10(stem_width, 0);
-       penpos11(stem_width, 0);
-       z10r = exact_center + (1.6interline*reduction, -interline*reduction);
-       z11r = z10r + (0, -3.5interline*reduction);
-       fill z10l -- z11l -- z11r -- z10r -- cycle;
+
+       % brevis stem
+       pickup pencircle xscaled stem_width yscaled blot_diameter;
+       z6 = exact_center + (2x4l - stem_width/2, 0);
+       z7 = z6 + (0, -4reduced_il);
+       draw z6 .. z7;
+
+       % upper diamond
+       draw_diamond(exact_center + (1.6interline*reduction, interline/2),
+                    reduction);
+       pickup pencircle xscaled stem_width yscaled blot_diameter;
+       z8 = exact_center +
+            (1.6interline*reduction + stem_width/2, interline*reduction);
+       z9 = z8 + (0, 1.5interline*reduction);
+       draw z8 .. z9; % diamond stem
+
+       % lower diamond
+       draw_diamond(exact_center + (1.6interline*reduction, -interline/2),
+                    reduction);
+       pickup pencircle xscaled stem_width yscaled blot_diameter;
+       z10 = exact_center +
+             (1.6interline*reduction - stem_width/2, -interline*reduction);
+       z11 = z10 + (0, -3.5interline*reduction);
+       draw z10 .. z11; % diamond stem
 
        set_char_box(0, 3head_width#,
                     3.5noteheight#*reduction, 1.5noteheight#*reduction);
diff -Naur lilypond-1.5.28.NEW/mf/feta-params.mf 
lilypond-1.5.28.NEW.1/mf/feta-params.mf
--- lilypond-1.5.28.NEW/mf/feta-params.mf       Wed Dec  5 18:54:30 2001
+++ lilypond-1.5.28.NEW.1/mf/feta-params.mf     Sun Jan 13 22:13:57 2002
@@ -1,5 +1,8 @@
 
 stafflines = 5;
+% [reuter] URG!  This is not always true.  One of the effects of
+% keeping this a constant is that, for notation with less stafflines,
+% stafflinethickness gets too small.
 
 staff_space#:=staffsize#/(stafflines-1);
 
diff -Naur lilypond-1.5.28.NEW/mf/feta-test11.mf 
lilypond-1.5.28.NEW.1/mf/feta-test11.mf
--- lilypond-1.5.28.NEW/mf/feta-test11.mf       Wed Dec  5 18:54:30 2001
+++ lilypond-1.5.28.NEW.1/mf/feta-test11.mf     Sun Jan 13 22:19:18 2002
@@ -1,9 +1,9 @@
-% feta-test16
+% feta-test11
 % part of LilyPond's pretty-but-neat music font
 
 input feta-autometric;
-fet_beginfont("feta-test", 23);
-staffsize#:=23pt#;
+fet_beginfont("feta-test", 11);
+staffsize#:=11pt#;
 test:=1;
 
 % smoked cheese
diff -Naur lilypond-1.5.28.NEW/mf/feta-test13.mf 
lilypond-1.5.28.NEW.1/mf/feta-test13.mf
--- lilypond-1.5.28.NEW/mf/feta-test13.mf       Wed Dec  5 18:54:30 2001
+++ lilypond-1.5.28.NEW.1/mf/feta-test13.mf     Sun Jan 13 22:19:05 2002
@@ -1,4 +1,4 @@
-% feta-test16
+% feta-test13
 % part of LilyPond's pretty-but-neat music font
 
 input feta-autometric;
diff -Naur lilypond-1.5.28.NEW/mf/feta-test26.mf 
lilypond-1.5.28.NEW.1/mf/feta-test26.mf
--- lilypond-1.5.28.NEW/mf/feta-test26.mf       Wed Dec  5 18:54:30 2001
+++ lilypond-1.5.28.NEW.1/mf/feta-test26.mf     Sun Jan 13 22:18:29 2002
@@ -1,4 +1,4 @@
-% feta-test16
+% feta-test26
 % part of LilyPond's pretty-but-neat music font
 
 input feta-autometric;

Reply via email to