From ac618734a373960abd700156b4a4aceb12354e68 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Tue, 23 Sep 1997 11:26:54 +0200 Subject: [PATCH] patch::: 0.1.16.jcn1: grotere bolletjes 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) --- NEWS | 10 +++- VERSION | 2 +- bin/mf-to-table.in | 127 +++++++++++++++++++++++++++++++++++++++++ init/Makefile | 17 ++++++ init/dyn10.ly | 4 ++ init/font-en-tja16.ly | 11 ++++ init/font-en-tja20.ly | 11 ++++ init/paper16.ly | 4 +- init/paper20.ly | 4 +- init/r20.ly | 7 +++ init/table16.ly | 14 ++--- init/table20.ly | 12 ++-- input/font.ly | 4 +- lily/include/lookup.hh | 2 +- lily/lookup.cc | 9 ++- lily/notehead.cc | 2 +- make/Toplevel.make.in | 4 +- mf/Makefile | 27 +++++++++ mf/TODO | 1 - mf/autometric.mf | 25 +++++++- mf/bolletjes.mf | 68 ++++++++++++++++++---- mf/dyn.tex | 2 + mf/dyn10.mf | 12 +++- mf/font-en-tja16.mf | 13 +++-- mf/font-en-tja20.mf | 8 ++- mf/ital-m.mf | 3 +- mf/ital-r.mf | 26 +++++++++ tex/dyndefs.tex | 7 ++- tex/lilyponddefs.tex | 19 +++--- tex/taupindefs.tex | 6 +- 30 files changed, 393 insertions(+), 68 deletions(-) create mode 100644 bin/mf-to-table.in create mode 100644 init/dyn10.ly create mode 100644 init/font-en-tja16.ly create mode 100644 init/font-en-tja20.ly create mode 100644 init/r20.ly create mode 100644 mf/ital-r.mf diff --git a/NEWS b/NEWS index e02e1d5a06..4525d720a2 100644 --- 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 99ac08b1a1..93127672d7 100644 --- 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 index 0000000000..17a7c2f7a8 --- /dev/null +++ b/bin/mf-to-table.in @@ -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 = ) { + 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); + diff --git a/init/Makefile b/init/Makefile index fdab67ea61..a04eed6775 100644 --- a/init/Makefile +++ b/init/Makefile @@ -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 index 0000000000..6819259da4 --- /dev/null +++ b/init/dyn10.ly @@ -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 index 0000000000..906985ce02 --- /dev/null +++ b/init/font-en-tja16.ly @@ -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 index 0000000000..c5e308b694 --- /dev/null +++ b/init/font-en-tja20.ly @@ -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 diff --git a/init/paper16.ly b/init/paper16.ly index 17225ca0eb..854324b424 100644 --- a/init/paper16.ly +++ b/init/paper16.ly @@ -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; diff --git a/init/paper20.ly b/init/paper20.ly index 7f21f0aa17..fdfee8404b 100644 --- a/init/paper20.ly +++ b/init/paper20.ly @@ -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 index 0000000000..e935658170 --- /dev/null +++ b/init/r20.ly @@ -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 diff --git a/init/table16.ly b/init/table16.ly index 5097530ac8..6785bf7569 100644 --- a/init/table16.ly +++ b/init/table16.ly @@ -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 { diff --git a/init/table20.ly b/init/table20.ly index dc32462e8b..849e453c4f 100644 --- a/init/table20.ly +++ b/init/table20.ly @@ -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 { diff --git a/input/font.ly b/input/font.ly index 955c8d9b8f..4e3a499da1 100644 --- a/input/font.ly +++ b/input/font.ly @@ -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 diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index f4696f9faa..96cd46e6b7 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -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) const; diff --git a/lily/lookup.cc b/lily/lookup.cc index a706a36bd8..ae35e4082f 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -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 a; + a.push (String (w) + "pt"); a.push (arg); ret.tex_ = substitute_args (ret.tex_, a); diff --git a/lily/notehead.cc b/lily/notehead.cc index 4d65dff62e..97d69ec1ed 100644 --- a/lily/notehead.cc +++ b/lily/notehead.cc @@ -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) diff --git a/make/Toplevel.make.in b/make/Toplevel.make.in index e472fde411..5de434c161 100644 --- a/make/Toplevel.make.in +++ b/make/Toplevel.make.in @@ -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: diff --git a/mf/Makefile b/mf/Makefile index f3523f04c1..556d777dd7 100644 --- a/mf/Makefile +++ b/mf/Makefile @@ -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 53d83a7a87..ac3f4a796a 100644 --- 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 diff --git a/mf/autometric.mf b/mf/autometric.mf index ae9a8edc85..6d87094155 100644 --- a/mf/autometric.mf +++ b/mf/autometric.mf @@ -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; diff --git a/mf/bolletjes.mf b/mf/bolletjes.mf index 849c9f9b6f..9d7052d0c2 100644 --- a/mf/bolletjes.mf +++ b/mf/bolletjes.mf @@ -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"); diff --git a/mf/dyn.tex b/mf/dyn.tex index 10b1d534f0..65538bcc47 100644 --- a/mf/dyn.tex +++ b/mf/dyn.tex @@ -34,5 +34,7 @@ \hbox{\dynfp} \hbox{\dynsf} \hbox{\dynsfz} +\hbox{\dynfz} +\hbox{\dynrf} \bye diff --git a/mf/dyn10.mf b/mf/dyn10.mf index 64ea7c7af2..2eb10e628c 100644 --- a/mf/dyn10.mf +++ b/mf/dyn10.mf @@ -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. diff --git a/mf/font-en-tja16.mf b/mf/font-en-tja16.mf index 9531e570e0..aa75cc4d16 100644 --- a/mf/font-en-tja16.mf +++ b/mf/font-en-tja16.mf @@ -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. diff --git a/mf/font-en-tja20.mf b/mf/font-en-tja20.mf index 79c33835db..f7dcf17232 100644 --- a/mf/font-en-tja20.mf +++ b/mf/font-en-tja20.mf @@ -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. diff --git a/mf/ital-m.mf b/mf/ital-m.mf index c3d8563683..d132ad31c1 100644 --- a/mf/ital-m.mf +++ b/mf/ital-m.mf @@ -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 index 0000000000..607774e2be --- /dev/null +++ b/mf/ital-r.mf @@ -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; diff --git a/tex/dyndefs.tex b/tex/dyndefs.tex index b31a2303e9..790c19cda1 100644 --- a/tex/dyndefs.tex +++ b/tex/dyndefs.tex @@ -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}} diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index 1094443b96..3d3d33237d 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -57,12 +57,14 @@ \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 @@ -180,11 +182,14 @@ %% % 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 diff --git a/tex/taupindefs.tex b/tex/taupindefs.tex index 769d2a4880..e7f24df6f9 100644 --- a/tex/taupindefs.tex +++ b/tex/taupindefs.tex @@ -45,11 +45,13 @@ % \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} -- 2.39.5