]> git.donarmstrong.com Git - lilypond.git/commitdiff
patch::: 0.1.16.jcn1: grotere bolletjes
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 23 Sep 1997 09:26:54 +0000 (11:26 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Tue, 23 Sep 1997 09:26:54 +0000 (11:26 +0200)
pl 16.jcn2
- mf-to-table.in: generate mozarella metric info tables
- autometric.mf: write metric info to mf logfile
- ital-r.mf, smaller ital-m.mf
- variable streepjes length (top/bottomlines); fixed (for 20pt?)
- streepjes twice as thick as staffrules
- even more pronounced bolletjes -- how 'bout this wendy?
- quarter and half note after drawings (a/b less distinct)

30 files changed:
NEWS
VERSION
bin/mf-to-table.in [new file with mode: 0644]
init/Makefile
init/dyn10.ly [new file with mode: 0644]
init/font-en-tja16.ly [new file with mode: 0644]
init/font-en-tja20.ly [new file with mode: 0644]
init/paper16.ly
init/paper20.ly
init/r20.ly [new file with mode: 0644]
init/table16.ly
init/table20.ly
input/font.ly
lily/include/lookup.hh
lily/lookup.cc
lily/notehead.cc
make/Toplevel.make.in
mf/Makefile
mf/TODO
mf/autometric.mf
mf/bolletjes.mf
mf/dyn.tex
mf/dyn10.mf
mf/font-en-tja16.mf
mf/font-en-tja20.mf
mf/ital-m.mf
mf/ital-r.mf [new file with mode: 0644]
tex/dyndefs.tex
tex/lilyponddefs.tex
tex/taupindefs.tex

diff --git a/NEWS b/NEWS
index e02e1d5a06c0eb6c38941eb228b4f17c059617c3..4525d720a2cb1d45b1457337af4044c518b80ec6 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,12 @@
+pl 16.jcn2
+       - mf-to-table.in: generate mozarella metric info tables
+       - autometric.mf: write metric info to mf logfile
+       - ital-r.mf, smaller ital-m.mf
+       - variable streepjes length (top/bottomlines); fixed (for 20pt?)
+       - streepjes twice as thick as staffrules
+       - even more pronounced bolletjes -- how 'bout this wendy?
+       - quarter and half note after drawings (a/b less distinct)
+
 pl 16
        - bf: doco about {Mus*,Opus}TeX
        - ; optional after \musicidentifier
@@ -12,7 +21,6 @@ pl 16
        - bf: 20 pt flags
        - bf: longarest 
        
-
 pl 15.jcn1
        - bf: typos whole and half notehead
        - de-uglyfied bolletjes.mf
diff --git a/VERSION b/VERSION
index 99ac08b1a143b242cc18988ec10b9221a346160b..93127672d7017cbcd71acbb21fea578542bae91a 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -3,4 +3,4 @@ TOPLEVEL_MINOR_VERSION = 1
 TOPLEVEL_PATCH_LEVEL = 16
 
 # use to send patches, always empty for released version:
-TOPLEVEL_MY_PATCH_LEVEL = 
+TOPLEVEL_MY_PATCH_LEVEL = .jcn1
diff --git a/bin/mf-to-table.in b/bin/mf-to-table.in
new file mode 100644 (file)
index 0000000..17a7c2f
--- /dev/null
@@ -0,0 +1,127 @@
+#!@PERL@ -w
+# -*-perl-*-
+
+=head1 TODO
+
+rename me!
+
+Ugh . Perl sux. Anybody for Python?
+    
+=cut    
+
+$mf_to_table_version = 0.1;
+
+use Getopt::Long;
+
+sub last_conversion
+{
+    my @v = &versions;
+    return pop @v;
+}
+sub identify
+{
+    
+    print STDERR "This is mf-to-table " . $mf_to_table_version . "\n";
+}
+  
+sub usage
+{
+    print STDERR "Usage: mf-to-table [options] LOG..\n"
+    . "Generate mozarella metrics table from preparated metafont log\n\n"
+    . "Options:\n"
+    . "  -h, --help             print this help\n"
+    . "  -o, --output=FILE      name output file\n"
+}
+
+sub make_table
+{
+    my $line;
+    my $indent = 0;
+    while ($line = <IN>) {
+       if ($line =~ /^@@/) {
+           $line =~ s/^@@(.*)@@/$1/;
+           chop ($line);
+           my @fields = split (/:/,$line);
+           my $label = $fields [0];
+           my $name = $fields [1];
+           print OUT "\t" x $indent;
+           if ($label eq "font") {
+               print OUT "% $name=\\symboltables {\n";
+               $indent++;
+           } elsif ($label eq "group") {
+               print OUT "\"$name\" = \\table {\n";
+               $indent++;
+           } elsif ($label eq "puorg") {
+               print OUT "}\n";
+               $indent--;
+           } elsif ($label eq "tnof") {
+               print OUT "%  } % $name\n";
+               $indent--;
+           } elsif ($label eq "char") {
+               my $c = $fields [2];
+               my $w = $fields [3];
+               my $h = $fields [4];
+               my $d = $fields [5];
+               my $id = $fields [6];
+               my $texstr = $fields [7];
+               print OUT sprintf( "\"%s\"\t\"\\%s\"\t%.2f\\pt\t%.2f\\pt\t%.2f\\pt\t%.2f\\pt\n", $id, $texstr, 0, $w, $h, $d );
+           } else {
+               print STDERR "mf-to-table: unknown label: \`$label\'\n";
+           }
+       }
+    }
+}
+      
+sub  set_files 
+{
+    $infile = "-";
+    $outfile = "-";
+    $outfile = $opt_output if (defined($opt_output));
+
+    if ($ARGV [0])  {
+       $infile = $ARGV[0];
+    } 
+    if (( ! -f $infile) && (! $infile =~ /\\.log$/s ) ){
+       $infile .= ".log";
+    }
+    print STDERR "Input ", (($infile eq "-") ?"STDIN" : $infile), " .. \n";
+}
+
+sub do_one_arg
+{
+    set_files;
+
+    die "can't open \`$infile\'" unless open IN,$infile ;
+    die "can't open \`$outfile\'" unless open OUT, ">$outfile";
+    print OUT "% generated at " . localtime() . " from $infile\n";
+    print OUT "% changes will be lost\n";
+    
+    make_table;
+
+    close IN;
+    close OUT;
+}
+
+## "main"
+
+identify;
+
+#GetOptions ("help", "output=s", "from=i", "to=i", "minor=i", "edit", "show-rules");
+GetOptions ("help", "output=s");
+
+if ($opt_help) {
+    usage();
+    $opt_help = 0;     # to extinguish typo check.
+    exit 0;
+}
+
+local ($infile,$outfile);
+my $processed_one=0;
+
+while (defined($ARGV[0])) {
+    do_one_arg;
+    shift @ARGV;
+    $processed_one = 1;
+}
+do_one_arg unless ($processed_one);
+
index fdab67ea61efc4f0fa8f06622a9e3f7dbe8a53ee..a04eed677504c2008205171b2e557a2e954c1c1a 100644 (file)
@@ -17,6 +17,23 @@ include ./$(depth)/make/Include.make
 INIFILES = $(wildcard *.ly)
 DISTFILES = Makefile $(INIFILES)
 
+## we probably can make tex/*defs.tex and init/*.ly in one go...
+## moved to mf/Makefile
+FONT_FILES = $(wildcard $(depth)/mf/*[0-9].mf)
+TABLES = $(patsubst $(depth)/mf/%.mf,%.ly,$(FONT_FILES))
+## 
+## all: $(TABLES)
+## 
+## $(outdir)/%.log: $(depth)/mf/%.mf
+##     mf $<
+##     mv $(@F) $@
+##     rm $(shell basename $< .mf).*gf
+## 
+## %.ly: $(outdir)/%.log
+##     mf-to-table -o $@ $<
+## 
+localclean:
+       rm -f $(TABLES)
 
 localinstall:
        $(INSTALL) -d $(datadir)/lilypond/init
diff --git a/init/dyn10.ly b/init/dyn10.ly
new file mode 100644 (file)
index 0000000..6819259
--- /dev/null
@@ -0,0 +1,4 @@
+% generated at Mon Sep 22 21:28:05 1997 from out/dyn10.log
+% changes will be lost
+% dyn=\symboltables {
+       %  } % dyn
diff --git a/init/font-en-tja16.ly b/init/font-en-tja16.ly
new file mode 100644 (file)
index 0000000..906985c
--- /dev/null
@@ -0,0 +1,11 @@
+% generated at Mon Sep 22 22:26:51 1997 from out/font-en-tja16.log
+% changes will be lost
+% font-en-tja=\symboltables {
+       "balls" = \table {
+               "0"     "\wholeball"    0.00\pt 8.64\pt 4.80\pt 0.00\pt
+               "1"     "\halfball"     0.00\pt 5.97\pt 4.80\pt 0.00\pt
+               "2"     "\quartball"    0.00\pt 5.88\pt 4.80\pt 0.00\pt
+               "-1"    "\breveball"    0.00\pt 9.60\pt 4.80\pt 0.00\pt
+               "-2"    "\longaball"    0.00\pt 9.60\pt 4.80\pt 0.00\pt
+               }
+       %  } % font-en-tja
diff --git a/init/font-en-tja20.ly b/init/font-en-tja20.ly
new file mode 100644 (file)
index 0000000..c5e308b
--- /dev/null
@@ -0,0 +1,11 @@
+% generated at Mon Sep 22 22:28:11 1997 from out/font-en-tja20.log
+% changes will be lost
+% font-en-tja=\symboltables {
+       "balls" = \table {
+               "0"     "\wholeball"    0.00\pt 10.44\pt        5.80\pt 0.00\pt
+               "1"     "\halfball"     0.00\pt 7.21\pt 5.80\pt 0.00\pt
+               "2"     "\quartball"    0.00\pt 7.10\pt 5.80\pt 0.00\pt
+               "-1"    "\breveball"    0.00\pt 11.60\pt        5.80\pt 0.00\pt
+               "-2"    "\longaball"    0.00\pt 11.60\pt        5.80\pt 0.00\pt
+               }
+       %  } % font-en-tja
index 17225ca0ebd87bed1a91302e4a494f4de7e2935e..854324b424cc20491a612063815c57775b0dc055 100644 (file)
@@ -16,8 +16,8 @@ paper_sixteen = \paper {
        rule_thickness = 0.4\pt;
        bar_size = 16.0 \pt;
        interline = 4.\pt;
-       notewidth = 5.45\pt; % ugh, see table16 for sizes
-       wholewidth = 8.0\pt;
+       notewidth = 5.93\pt; % ugh, see table16 for sizes
+       wholewidth = 8.64\pt;
        unitspace = 22.\pt;
        %geometric = 1.414;
        basicspace = 4.\pt;
index 7f21f0aa1754d11e0fe9af59d7e1afc7a977e016..fdfee8404b7128d3ced1daa9af09b348280cdef2 100644 (file)
@@ -7,8 +7,8 @@ paper_twenty = \paper {
        rule_thickness = 0.4\pt;
        bar_size = 20.0 \pt;
        interline = 5.\pt;
-       notewidth = 6.7\pt; % ugh see table20 for sizes
-       wholewidth = 10.0\pt;
+       notewidth = 7.15\pt; % ugh see table20 for sizes
+       wholewidth = 10.44\pt;
        unitspace = 22.\pt;
 %      basicspace = 4.\pt;
 %      geometric = 1.414;
diff --git a/init/r20.ly b/init/r20.ly
new file mode 100644 (file)
index 0000000..e935658
--- /dev/null
@@ -0,0 +1,7 @@
+% generated at Mon Sep 22 22:23:19 1997 from out/r20.log
+% changes will be lost
+% font-en-tja=\symboltables {
+       "rests" = \table {
+               "-2"    "\eighthrest"   0.00\pt 5.40\pt 17.55\pt        0.00\pt
+               }
+       %  } % font-en-tja
index 5097530ac834f83e2c120c3bc17dd9798e2c17ed..6785bf75697febf43ddf2ff83e6882da4489bef8 100644 (file)
@@ -75,18 +75,14 @@ table_sixteen=
        "tenor_change"  "\caltoclef"    0.0\pt  11.2\pt 0.0\pt  16.0\pt
      }
 
-     "balls" = \table {
-       "-2"    "\longaball"    0.0\pt  6.0\pt  -2.0\pt 2.0\pt
-       "-1"    "\breveball"    0.0\pt  6.0\pt  -2.0\pt 2.0\pt
-       "0"     "\wholeball"    0.0\pt  8.0\pt  0.0\pt  4.4\pt
-       "1"     "\halfball"     0.0\pt  5.4\pt  0.0\pt  4.4\pt
-       "2"     "\quartball"    0.0\pt  5.5\pt  0.0\pt  4.4\pt
-     }
+     % ugh what's our outdir called?
+     \include "font-en-tja16.ly"
 
      "slur" = \table {
        "whole" "\slurchar%{%}"
        "half"  "\hslurchar%{%}"
      }
+
      "accidentals" = \table {
        "-2"    "\flatflat"     0.0\pt  8.16\pt -2.5\pt 7.5\pt
        "-1"    "\flat"         0.0\pt  4.8\pt  -2.5\pt 7.5\pt
@@ -96,8 +92,8 @@ table_sixteen=
      }
 
      "streepjes" = \table {
-       "toplines"      "\toplines{%}"  -1.0\pt 7.0\pt  0.0\pt  0.0\pt
-       "botlines"      "\botlines{%}"  -1.0\pt 7.0\pt  0.0\pt  0.0\pt
+       "toplines"      "\toplines{%}{%}"       -1.0\pt 7.0\pt  0.0\pt  0.0\pt
+       "botlines"      "\botlines{%}{%}"       -1.0\pt 7.0\pt  0.0\pt  0.0\pt
      }
 
      "bars" = \table {
index dc32462e8b73f589457c83f1d8ae7d4837b5a42f..849e453c4fc7add5182a0e282ab6478311c5f6b5 100644 (file)
@@ -78,12 +78,8 @@ table_twenty =
        "tenor_change"  "\caltoclef"    0.0\pt  16.0\pt 0.0\pt  20.0\pt
     }
 
-    "balls" = \table {
-       "-1"    "\breveball"    0.0\pt  7.5\pt  -2.5\pt 2.5\pt
-       "0"     "\wholeball"    0.0\pt  10.2\pt 0.0\pt  5.4\pt
-       "1"     "\halfball"     0.0\pt  6.8\pt  0.0\pt  5.4\pt
-       "2"     "\quartball"    0.0\pt  6.6\pt  0.0\pt  5.4\pt
-    }
+    % ugh what's our outdir called?
+    \include "font-en-tja20.ly"
 
     "slur" = \table {
        "whole" "\slurchar%{%}" 0.0\pt  0.0\pt  0.0\pt  0.0\pt
@@ -99,8 +95,8 @@ table_twenty =
     }
 
     "streepjes" = \table {
-       "toplines"      "\toplines{%}"  -3.0\pt 9.0\pt  0.0\pt  0.0\pt
-       "botlines"      "\botlines{%}"  -3.0\pt 9.0\pt  0.0\pt  0.0\pt
+       "toplines"      "\toplines{%}{%}"       -3.0\pt 9.0\pt  0.0\pt  0.0\pt
+       "botlines"      "\botlines{%}{%}"       -3.0\pt 9.0\pt  0.0\pt  0.0\pt
     }
 
     "bars" = \table {
index 955c8d9b8f083b66cac4b38cc046c97e0fdeba23..4e3a499da1a39f50b12cc0547624a687d4031b9f 100644 (file)
@@ -10,11 +10,13 @@ TestedFeatures      font-en-tja
        \melodic{ 
                \octave c';
                \meter 4/4;
+               % \longa
+               % \breve % \brevis
                c1 g c' a'
                c2 g c' a'
                c4 g c' a'
                a\ppp a\pp a\p a\mp a\mf a\f a\ff a\fff
-               %a\fp a\sf a\sfz
+               a\fp a\sf a\sfz % a\fz a\rf
        }
        \paper{ 
            \paper_twenty
index f4696f9faae94e368fdce95d331c5b3bbd6c3328..96cd46e6b707186778e1407a22bd867629d4c8a3 100644 (file)
@@ -36,7 +36,7 @@ struct Lookup {
 
       pos == -3: below staff
       */
-    Atom streepjes (int pos) const;
+    Atom streepjes (int type, int pos) const;
 
     Atom vbrace (Real &dy) const;
     Atom meter (Array<Scalar>) const;
index a706a36bd88f8b49f3ba779a3accd32365a20fc0..ae35e4082ffb1075968eef87d33eef78ac8afd56 100644 (file)
@@ -150,7 +150,7 @@ Lookup::flag (int j, Direction d) const
 }
 
 Atom
-Lookup::streepjes (int i) const
+Lookup::streepjes (int type, int i) const
 {
   assert (i);
   
@@ -167,9 +167,16 @@ Lookup::streepjes (int i) const
       arg = i;
       idx = "toplines";
     }
+
+  // ugh
+  Real w = paper_l_->note_width ();
+  if (type <= 0)
+    w *= 1.46;
+
   Atom ret = (*symtables_)("streepjes")->lookup (idx);
   
   Array<String> a;
+  a.push (String (w) + "pt");
   a.push (arg);
   ret.tex_ = substitute_args (ret.tex_, a);
 
index 4d65dff62ea654f2eef62c8611b089a0e81114f4..97d69ec1ed5649be3608ec9b976671392f824778 100644 (file)
@@ -74,7 +74,7 @@ Note_head::brew_molecule_p() const
        ? -((-position_i_)/2)
        : (position_i_-staff_size_i_)/2;
        
-      Atom str = p->lookup_l()->streepjes (s);
+      Atom str = p->lookup_l()->streepjes (balltype_i_, s);
       Molecule sm;
       sm.add (Atom (str));
       if (position_i_ % 2)
index e472fde4112eb27999b55a8f9acfa4ac6b802def..5de434c16186931b906f3e3307f8d8107b3c2187 100644 (file)
@@ -27,8 +27,8 @@ include ./$(depth)/make/Variables.make
 
 # descent order into subdirectories:
 #
-SUBDIRS = flower lib lily mf mi2mu \
-       Documentation bin init input tex make
+SUBDIRS = bin flower lib lily mf mi2mu \
+       Documentation init input tex make
 #
 
 # list of distribution files:
index f3523f04c14d1249bce00ebb9bc1a5ac5b8a6a71..556d777dd776f1bb9ab9efc97d4d4d93fed7e616 100644 (file)
@@ -15,6 +15,24 @@ MFFILES = $(wildcard *.mf)
 EXTRA_DISTFILES = $(MFFILES) $(TEXFILES) TODO
 #
 
+FONT_FILES = $(wildcard *[0-9].mf)
+tableout = $(depth)/init
+TABLES = $(addprefix $(tableout)/, $(FONT_FILES:.mf=.ly))
+#
+
+all: $(TABLES)
+
+# localclean:
+#      rm -f $(TABLES)
+
+$(outdir)/%.log: %.mf
+       mf $<
+       mv $(@F) $@
+       rm $(shell basename $< .mf).*gf
+
+$(tableout)/%.ly: $(outdir)/%.log
+       mf-to-table -o $@ $<
+       
 localinstall:
        $(INSTALL) -d $(MFDIR)/lilypond
        $(INSTALL) -m 644 $(MFFILES) $(MFDIR)/lilypond/
@@ -22,3 +40,12 @@ localinstall:
 localuninstall:
        for i in $(MFFILES) ; do rm -f $(MFDIR)/lilypond/$$i; done
        -rmdir $(MFDIR)/lilypond/
+
+# dependencies:
+#
+$(tableout)/dyn10.ly: autometric.mf ital-f.mf ital-m.mf ital-p.mf ital-r.mf ital-s.mf ital-z.mf dyn10.mf
+$(tableout)/font-en-tja16.ly: autometric.mf bolletjes.mf font-en-tja16.mf
+$(tableout)/font-en-tja20.ly: autometric.mf bolletjes.mf font-en-tja20.mf
+#
+
+
diff --git a/mf/TODO b/mf/TODO
index 53d83a7a87d9def09f5b72573d772efc86cd8527..ac3f4a796aa10fdb8cc169f842d71a4d348e6f64 100644 (file)
--- a/mf/TODO
+++ b/mf/TODO
@@ -1,5 +1,4 @@
 
-       - add r to dynfont
        - move to OpusTeX fonts
        - make own font-en-tja{10,11,13,16,20} files
        - opustex/lilypond fonts from the same generic driver files
index ae9a8edc85bc5b0a844971118d4e6f4627dc9b81..6d87094155659cda2b5b1d26d8671b60641f126f 100644 (file)
@@ -1,13 +1,32 @@
-% metric.mf
+% autometric.mf
 % part of LilyPond's pretty-but-neat music font
 
+% font or database?
 def fet_beginfont(expr name,size) =
+       font_identifier:=name&decimal size;
+       font_size size;
        message "@@font:"&name&":"&decimal size&"@@";
        message "";
        enddef;
+
+def fet_endfont(expr name) =
+       message "@@tnof:"&name&"@@";
+       message "";
+       enddef;
+
+% group or table?
+def fet_begingroup(expr name) =
+       message "@@group:"&name&"@@";
+       message "";
+       enddef;
+
+def fet_endgroup(expr name) =
+       message "@@puorg:"&name&"@@";
+       message "";
+       enddef;
        
-def fet_beginchar(expr code,w,h,d,name) =
-       message "@@char:"&name&":"&decimal code&":"&decimal w&":"&decimal h&":"&decimal d&"@@";
+def fet_beginchar(expr code,w,h,d,name,id,texstr) =
+       message "@@char:"&name&":"&decimal code&":"&decimal w&":"&decimal h&":"&decimal d&":"&id&":"&texstr&"@@";
        beginchar(code,w,h,d) name;
        enddef;
 
index 849c9f9b6f7f68e22db91a8d00d15673b6061884..9d7052d0c23ed9dfe407625eefb53fed5a4d7477 100644 (file)
@@ -1,9 +1,12 @@
 % bolletjes.mf
 % part of LilyPond's pretty-but-neat music font
 % third try at bolletjes
-% most beautiful bolletjes are not circular, and not even symmetric.
+% most beautiful bolletjes are pronounced, not circular, 
+% and not even symmetric.
 
-interline#:=staffsize#/(stafflines-1)+stafflinethickness#;
+% interline#:=staffsize#/(stafflines-1)+stafflinethickness#;
+% even more pronounced (almost overdone), just like the original
+interline#:=staffsize#/(stafflines-1)+2stafflinethickness#;
 
 def test_grid =
 if test>1:
@@ -31,7 +34,7 @@ def begin_notehead =
        save b_h,a_w;
        enddef;
 
-def end_notehead(expr code,interline,name) =
+def end_notehead(expr code,interline,name,id,texstr) =
        save a,b,h,w,ai,bi;
        h#=interline;
        2b#=h#*b_h;
@@ -42,7 +45,7 @@ def end_notehead(expr code,interline,name) =
        define_pixels(a,b);
        define_pixels(w,h);
        define_pixels(ai,bi);
-       fet_beginchar(code,w#,h#,0,name);
+       fet_beginchar(code,w#,h#,0,name,id,texstr);
                path black,white;
                black=distorted_ellipse(a,b,a*err_y_a,0,super);
                white=distorted_ellipse(ai,bi,ai*err_y_ai,bi*err_x_bi,superi);
@@ -65,6 +68,8 @@ fi
                endgroup;
        enddef;
                
+% fet_begingroup("noteheads");
+fet_begingroup("balls");
 % whole note
 % Wanske, p.38
 % begin_notehead(incr code,interline#,"Whole notehead");
@@ -83,13 +88,13 @@ begin_notehead;
        superi:=0.69;
        b_h:=1; %no rotate-> no height correction
        a_w:=1; % no rotate-> no width correction
-       end_notehead(incr code,interline#,"Whole notehead");
+       end_notehead(incr code,interline#,"Whole notehead","0","wholeball");
 
 % half note
 % Wanske, p.39
 begin_notehead;
-       a_b:=1.49; % after text
-       a_b:=1.50; % after drawing
+       a_b:=1.49; % after text
+       a_b:=1.50; % after drawing
        err_y_a:=0.157;
        alpha:=34;
        super:=0.66;
@@ -101,13 +106,13 @@ begin_notehead;
        superi:=0.80;
        b_h:=0.935;
        a_w:=1.12;
-       end_notehead(incr code,interline#,"Half notehead");
+       end_notehead(incr code,interline#,"Half notehead","1","halfball");
 
 % quarter note
 % Wanske p.38
 begin_notehead;
-       a_b:=1.57; % after text
-       a_b:=1.54; % after drawing
+       a_b:=1.57; % after text
+       a_b:=1.54; % after drawing
        err_y_a:=0.044;
        alpha:=32;
        super:=0.707;
@@ -119,7 +124,46 @@ begin_notehead;
        superi:=0.707;
        b_h:=0.85;
        a_w:=1.09;
-       end_notehead(incr code,interline#,"Quarter notehead");
+       end_notehead(incr code,interline#,"Quarter notehead","2","quartball");
 
-end.
+% from MO*gen.mf
+lthick:=.4pt;
+pen line_pen;
+line_pen:= pencircle scaled lthick;
+
+picture save_pic;
+def callpic = currentpicture:= save_pic enddef;
+def savepic = save_pic:= currentpicture enddef;
+
+def add_mirror (expr pone, ptwo) =
+  addto currentpicture also currentpicture
+        reflectedabout (round(pone), round(ptwo))
+enddef;
+
+def fill_square (expr xwidth, ywidth, zshift) =
+  fill unitsquare xscaled xwidth yscaled ywidth shifted zshift
+enddef;
+
+% ugh
+nhh#:=interline#;
+nhw#:=6/5interline#;
+define_pixels(nhh,nhw);
+
+fet_beginchar(incr code,2interline#,interline#,0,"Brevis notehead","-1","breveball");
+       fill_square (5/4nhw, .25nhh, (0,.25nhh));
+       add_mirror (origin, right);
+       x1=x2=0; x3=x4=5/4nhw; y1=-y2=y3=-y4=.7nhh;
+       pickup line_pen;
+       draw z1--z2; draw z3--z4;
+       savepic;
+       endchar;
+
+fet_beginchar(incr code,2interline#,interline#,0,"Longa notehead","-2","longaball");
+       callpic;
+       pickup line_pen;
+       draw (5/4nhw,-.7nhh)--(5/4nhw,-1.7nhh);
+       endchar;
+
+% fet_endgroup("noteheads");
+fet_endgroup("balls");
 
index 10b1d534f01b1239820761f72823df008429b375..65538bcc478e6018dc99d03345d413768452ff6a 100644 (file)
@@ -34,5 +34,7 @@
 \hbox{\dynfp}
 \hbox{\dynsf}
 \hbox{\dynsfz}
+\hbox{\dynfz}
+\hbox{\dynrf}
 
 \bye
index 64ea7c7af28b4128489cdfd378d2204634a3aa36..2eb10e628c14cc083f2db1b4a704d3be027b87bc 100644 (file)
@@ -112,6 +112,9 @@ flare#:=52/36pt#;    % diameter of bulbs or breadth of terminals
 mode_setup;
 font_setup;
 
+input autometric;
+fet_beginfont("dyn", 10);
+
 num=-1;
 input ital-f;
 
@@ -128,8 +131,8 @@ font_setup;
 input ital-p;
 
 slant:=.28;      % tilt ratio $(\Delta x/\Delta y)$
-stem#:=30/36pt#;    % lowercase stem breadth
-ess#:=28/36pt#;      % breadth in middle of lowercase s
+stem#:=26/36pt#;    % lowercase stem breadth
+ess#:=24/36pt#;      % breadth in middle of lowercase s
 
 crisp#:=13/36pt#;    % diameter of serif corners
 tiny#:=13/36pt#;    % diameter of rounded corners
@@ -145,8 +148,11 @@ flare#:=42/36pt#;    % diameter of bulbs or breadth of terminals
 font_setup;
 
 input ital-m;
+input ital-r;
 input ital-s;
 input ital-z;
 
 font_slant slant; font_x_height x_height#;
-bye.
+
+fet_endfont("dyn");
+end.
index 9531e570e0cf9924a38a8711a8850f56ca4ab704..aa75cc4d160bef8cf9ec17743be7de74671a655b 100644 (file)
@@ -1,8 +1,13 @@
 % font-en-tja16.mf
 % part of LilyPond's pretty-but-neat music font
 
-mode_setup;
+% font_identifier:="font-en-tja16";
+% font_size 16pt#;
 
+input autometric;
+fet_beginfont("font-en-tja", 16);
+
+mode_setup;
 
 test:=0;
 
@@ -11,11 +16,9 @@ stafflines:=5;
 stafflinethickness#:=0.4pt#;
 code:=-1;
 
-input autometric;
-% fet_beginfont;
-fet_beginfont("font-en-tja", 16);
-
 input bolletjes;
 
+fet_endfont("font-en-tja");
+
 end.
 
index 79c33835db47901cdba32d348715e5d76d39891c..f7dcf17232a72006d05cfa06160fa2321c4adc34 100644 (file)
@@ -3,6 +3,9 @@
 
 mode_setup;
 
+input autometric;
+fet_beginfont("font-en-tja", 20);
+
 test:=0;
 
 staffsize#:=20pt#;
@@ -11,10 +14,9 @@ stafflines:=5;
 stafflinethickness#:=0.4pt#;
 code:=-1;
 
-input autometric;
-fet_beginfont("font-en-tja", 20);
-
 input bolletjes;
 
+fet_endfont("font-en-tja");
+
 end.
 
index c3d85636837170aaeba4398bde1e79a16eef3c1b..d132ad31c18781e36b9d0f684c6c54d8702ed7e3 100644 (file)
@@ -12,7 +12,8 @@
 % cmchar "Italic letter m";
 % beginchar("m",15u#,x_height#,0);
 \"Dynamic letter m";
-beginchar(incr num,15u#,x_height#,0);
+% beginchar(incr num,15u#,x_height#,0);
+beginchar(incr num,10u#,x_height#,0);
 italcorr 1/3x_height#*slant+.5hair#+.5u#;
 adjust_fit(if monospace:-1.5u#,-2u# else: 0,0 fi); pickup fine.nib;
 numeric shaved_stem; shaved_stem=mfudged.stem;
diff --git a/mf/ital-r.mf b/mf/ital-r.mf
new file mode 100644 (file)
index 0000000..607774e
--- /dev/null
@@ -0,0 +1,26 @@
+% ital-r.mf
+% from itall.mf
+%
+% Computer Modern Italic lower case:
+% This lowercase italic alphabet was prepared by D. E. Knuth in December, 1979,
+% inspired by the Monotype faces used in {\sl The Art of Computer Programming}.
+% The programs were revised for the new \MF\ conventions in 1985.
+
+% Character codes \0141 through \0172 are generated.
+% not
+
+% cmchar "Italic letter r";
+% beginchar("r",5.5u#+max(1.75u#,flare#),x_height#,0);
+\"Dynamic letter r";
+beginchar(incr num,5.5u#+max(1.75u#,flare#),x_height#,0);
+italcorr x_height#*slant;
+adjust_fit(if monospace:.25u#,.5u# else: 0,0 fi); pickup fine.nib;
+x0=0; x2=x3; pos3(stem,0); lft x3l=hround(2.5u-.5stem); y3-.5stem=-oo;
+hook_in(0,1,2);  % opening hook
+filldraw circ_stroke z3e--z2e;  % left stem
+pos3'(hair,180); z3'=z3; pos4(vair,90); pos5(hair,0); pos6(flare,0);
+x4=w-.5u-max(1.75u,flare); rt x5r=hround(r-.5u); top y4r=h+oo;
+filldraw stroke z3'e{up}...z4e{right};  % link
+y6+.5flare=vround(bot y4l-.03x_height); bulb(4,5,6);  % bulb
+math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#-.5u#);
+penlabels(0,1,2,3,4,5,6); endchar;
index b31a2303e98976de50c1705d2d0254a1bc4fd54a..790c19cda1baf066a375876d02c4b9efeed87a30 100644 (file)
@@ -7,8 +7,9 @@
 \def\dynnf{\dynfont\char1}
 \def\dynp{\dynfont\char2}
 \def\dynm{\dynfont\char3}
-\def\dyns{\dynfont\char4}
-\def\dynz{\dynfont\char5}
+\def\dynr{\dynfont\char4}
+\def\dyns{\dynfont\char5}
+\def\dynz{\dynfont\char6}
 
 \def\kdynf{\dynnf}
 \def\kdynp{\dynp\kern-.1ex}
@@ -24,4 +25,6 @@
 \def\dynfp{{\kdynf\dynp}}
 \def\dynsf{{\dyns\kern-.3ex\dynnf}}
 \def\dynsfz{{\dynsf\dynz}}
+\def\dynfz{{\dynf\dynz}}
+\def\dynrf{{\dynr\dynf}}
 
index 1094443b96b81159bacca3b0b3a57a1e1d3282a6..3d3d33237de85df6ed45f671502ef0373ebb40ed 100644 (file)
 \newdimen\noteheight
 \newdimen\staffrulethickness
 \newdimen\interstaffrule
+\newdimen\dist
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % set fonts and primary dimensions
+% ugh
 \def\musixtwentydefs{
         \balkheight=20pt
-        \notewidth=6.7pt
+        \notewidth=7.15pt
         \noteheight=5pt
         \staffrulethickness=0.4pt
         \musixtwentyfonts
@@ -73,7 +75,7 @@
 \def\musixsixteendefs{
         \balkheight=16pt
         \staffrulethickness=0.4pt
-        \notewidth=5.45pt
+        \notewidth=5.93pt
         \noteheight=4pt
         \musixsixteenfonts
         \font\textmusic=cmmi10
 %%
 % Ugh. Need to redo this. Wish we had PS.
 %
-\def\toplines#1{ % why space needed here?
-        \topalign{\hbox{\kern-\notewidth\lines{#1}{1.6\notewidth}{1.6\staffrulethickness}}}}
-
-\def\botlines#1{ % idem ditto
-        \botalign{\hbox{\kern-\notewidth\lines{#1}{1.6\notewidth}{1.6\staffrulethickness}}}}
+\def\toplines#1#2{ % why space needed here?
+       \dist#1
+       % ugh, lily still uses "notewith" for all heads
+        \topalign{\hbox{\kern-.50\notewidth\kern-.25\dist\lines{#2}{1.5\dist}{2\staffrulethickness}}}}
+
+\def\botlines#1#2{ % idem ditto
+       \dist#1
+        \botalign{\hbox{\kern-.50\notewidth\kern-.25\dist\lines{#2}{1.5\dist}{2\staffrulethickness}}}}
 
 %
 % a staffsymbol with #1 lines, width #2
index 769d2a48800e2fb29a55de08d307238f3b6da1fe..e7f24df6f914938dbd3a7239ab70684a531d6d14 100644 (file)
 % \musicdef\quartball{'007}
 % \musicdef\halfball{'010}
 % \musicdef\wholeball{'011}
+\musicdef\breveball{'040}
+\musicdef\longaball{'047}
 \fetdef\quartball{'002}
 \fetdef\halfball{'001}
 \fetdef\wholeball{'000}
-\musicdef\breveball{'040}
-\musicdef\longaball{'047}
+% \fetdef\breveball{'003}
+% \fetdef\longaball{'004}
 \musicdef\halfrest{'074}
 \musicdef\wholerest{'075}
 \musicdef\breverest{'072}