summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHan-Wen Nienhuys <hanwen@xs4all.nl>1997-10-21 12:55:42 +0200
committerHan-Wen Nienhuys <hanwen@xs4all.nl>1997-10-21 12:55:42 +0200
commit2f558a5087e74382789fc16e34eff918a94987ae (patch)
tree9b1a964aa776f4694a6c7b67ec497193a8846ef5
parent757436ac5cf25caf3635a9b5418346e15c5c4b0c (diff)
release: 0.1.25
-rw-r--r--AUTHORS.text72
-rw-r--r--Documentation/AUTHORS.pod8
-rw-r--r--Documentation/gnu-music.pod31
-rw-r--r--Documentation/literature.pod8
-rw-r--r--Documentation/other-packages.pod11
-rw-r--r--INSTALL.text12
-rw-r--r--NEWS16
-rw-r--r--TODO5
-rw-r--r--VERSION4
-rw-r--r--bin/lilypython.py9
-rw-r--r--bin/makepatch.py (renamed from bin/make-patch.py)22
-rw-r--r--bin/rel.py5
-rw-r--r--bin/release.py19
-rw-r--r--bin/release.sh73
-rw-r--r--flower/TODO3
-rw-r--r--init/font-en-tja16.ly16
-rw-r--r--init/font-en-tja20.ly16
-rw-r--r--init/table16.ly13
-rw-r--r--init/table20.ly15
-rw-r--r--input/font.ly5
-rw-r--r--lily/VERSION5
-rw-r--r--lily/beam.cc51
-rw-r--r--lily/include/stem.hh7
-rw-r--r--lily/rest.cc5
-rw-r--r--lily/stem.cc139
-rw-r--r--make/Targets.make4
-rw-r--r--make/Variables.make2
-rw-r--r--make/lelievijver.lsm8
-rw-r--r--make/lilypond.lsm8
-rw-r--r--make/lilypond.spec4
-rw-r--r--mf/TODO2
-rw-r--r--mf/dimen.tex7
-rw-r--r--mf/feta-banier.mf194
-rw-r--r--mf/feta-eindelijk.mf28
-rw-r--r--mf/feta-generic.mf4
-rw-r--r--mf/feta-nummer.mf207
-rw-r--r--mf/feta-nummer10.mf14
-rw-r--r--mf/feta-orator.mf121
-rw-r--r--mf/feta-orator10.mf14
-rw-r--r--tex/font-en-tja16.tex8
-rw-r--r--tex/font-en-tja20.tex8
41 files changed, 652 insertions, 551 deletions
diff --git a/AUTHORS.text b/AUTHORS.text
index ac30e62162..c9ae0e9a5c 100644
--- a/AUTHORS.text
+++ b/AUTHORS.text
@@ -46,8 +46,11 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS
+o Anthony Fok <foka@gpu.srv.ualberta.ca>, debian
package: make/debian/*
- +o Franc,ois Pinard <pinard@iro.umontreal.ca>, Neil
- Jerram <nj104@cus.cam.ac.uk>. Documentation/Vocab*
+ +o Franc,ois Pinard <pinard@iro.umontreal.ca>,
+ Documentation/Vocab*, internationalization stuff
+
+ +o Neil Jerram <nj104@cus.cam.ac.uk>.
+ Documentation/Vocab*
Your name could be here! If you want to help, then take a
look at the SMALLISH PROJECTS section of in the file _T_O_D_O.
@@ -58,9 +61,72 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS
+21/Oct/97 LilyPond 0.1.25 1
+
+
+
+
+
+AUTHORS(1) LilyPond documentation AUTHORS(1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-10/Oct/97 LilyPond 0.1.24 1
+21/Oct/97 LilyPond 0.1.25 2
diff --git a/Documentation/AUTHORS.pod b/Documentation/AUTHORS.pod
index 1839dec915..f4cb0513fe 100644
--- a/Documentation/AUTHORS.pod
+++ b/Documentation/AUTHORS.pod
@@ -59,8 +59,12 @@ Anthony Fok <foka@gpu.srv.ualberta.ca>, debian package: make/debian/*
=item *
-Franc,ois Pinard <pinard@iro.umontreal.ca>, Neil Jerram
-<nj104@cus.cam.ac.uk>. Documentation/Vocab*
+Franc,ois Pinard <pinard@iro.umontreal.ca>, Documentation/Vocab*,
+internationalization stuff
+
+=item *
+
+Neil Jerram <nj104@cus.cam.ac.uk>. Documentation/Vocab*
=back
diff --git a/Documentation/gnu-music.pod b/Documentation/gnu-music.pod
index 3f3daf2efc..f13431ded6 100644
--- a/Documentation/gnu-music.pod
+++ b/Documentation/gnu-music.pod
@@ -86,14 +86,15 @@ of use and power.
=item A set of music fonts
-Preferably in Metafont, suited to both screen display and use on
-paper.
+In development, the Feta font.
=item A typesetting engine
+In development, included in LilyPond.
A system with rules on how to set properties of items to be printed
-(up/down directions, breaking, dimensions, etc) LilyPond provides one,
-but it is not (yet) suited to interactive typesetting
+(up/down directions, breaking, dimensions, etc)
+It should be suited to interactive typesetting (so, incremental
+algorithms are needed)
=item A display engine
@@ -103,13 +104,13 @@ Ideally the system should cooperate with the typesetting engine
=item An ASCII language
-In development, LilyPond has a language. (See over there for goals)
+In development, LilyPond has a language.
Having an ASCII format which enables urtext, and easy sharing (via
mail and news forums) encourages cooperation and exchange of music.
=item A printing engine
-Maybe to be merged with the display system.
+In development, included in LilyPond.
=item An input system
@@ -132,6 +133,11 @@ simplifies creating a collection of music
(difficult) A system to generate accompaniments, figured bass,
automatic accompaniment, etc.
+=item A performing system
+
+A system which can play credible performances of abstract music
+representations. LilyPond has a bare bones system, but it cannot
+(yet) be described as "credible".
=back
@@ -159,24 +165,11 @@ formats.
=back
-=head1 TASKS (SHORT TERM)
-
-=over 4
-
-=item *
-
-Think about interfaces for components.
-
-=item *
-
Find sponsors. This project will take a long time, and in its infant
stages, having a hard and small core which does a lot of work, is more
efficient than lots of people doing small subprojects. Finanicial
support would be desirable.
-=back
-
-
=head1 HISTORY
diff --git a/Documentation/literature.pod b/Documentation/literature.pod
index bbb68635ff..6d6094e1eb 100644
--- a/Documentation/literature.pod
+++ b/Documentation/literature.pod
@@ -18,9 +18,9 @@ EDV-gesteuerten Notensatz'', Schott-Verlag, Mainz 1988.ISBN 3-7957-2886-x.
[I. A very thorough overview of engraving practices of various
craftsmen. It includes detailed specs of characters, dimensions etc.
-II. a thorough overview of a (by now antiquated) automated system
-called Ikarus; EDV Means e(lektronischen) D(aten)v(erarbeitung),
-electronic data processing HWN]
+II. a thorough overview of a anonymous (by now antiquated) automated
+system. EDV Means e(lektronischen) D(aten)v(erarbeitung), electronic
+data processing HWN]
Maxwell Weaner and Walter Boelke, Standard Music Notation Practice,
revised edition by Arnold Broido and Daniel Dorff. Music Publisher's
@@ -234,6 +234,8 @@ some of the conventions and difficulties in printing music HWN]
The University of Colorado Music Engraving page.
http://obenamots.cc.colorado.edu/Musicpress/engraving.html
+[Webpages about engraving (designed with finale users in mind) (sic) HWN]
+
Anthony Donato. Preparing Music Manuscript. Englewood Cliffs:
Prentice-Hall, 1963.
diff --git a/Documentation/other-packages.pod b/Documentation/other-packages.pod
index 4ca3a2b004..24b9c5c926 100644
--- a/Documentation/other-packages.pod
+++ b/Documentation/other-packages.pod
@@ -117,9 +117,11 @@ Notation editor for W95 and Mac
Notation editor on Acorn machines. Their developers call it ``best
notation program available''.
-=item Ikarus,
+=item ? [``EDV-Notensatz'']
-URW's music-engraving system described by [Wanske]
+URW's music-engraving system described by [Wanske]. (Although URW
+used ~DM 1.000.000 while developing this, it didn't buy them a cute
+name.)
=item Logic,
@@ -165,6 +167,7 @@ A project at Ohio State university, which was discontinued in 1987.
=item Berlioz, http://www.?.fr/
-Dominique Montel (a professional music typesetter) is now working together with
-computer scientists on his own software for music publishing, called "Berlioz".
+Dominique Montel (a professional music typesetter) is now working
+together with computer scientists on his own software for music
+publishing, called "Berlioz".
diff --git a/INSTALL.text b/INSTALL.text
index fdf183ed07..2ba7e84cb0 100644
--- a/INSTALL.text
+++ b/INSTALL.text
@@ -61,7 +61,7 @@ RRRRUUUUNNNNNNNNIIIINNNNGGGG
-20/Oct/97 LilyPond 0.1.24 1
+20/Oct/97 LilyPond 0.1.25 1
@@ -127,7 +127,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a
-20/Oct/97 LilyPond 0.1.24 2
+20/Oct/97 LilyPond 0.1.25 2
@@ -193,7 +193,7 @@ INSTALL(1) LilyPond documentation INSTALL(1)
-20/Oct/97 LilyPond 0.1.24 3
+20/Oct/97 LilyPond 0.1.25 3
@@ -259,7 +259,7 @@ IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG
-20/Oct/97 LilyPond 0.1.24 4
+20/Oct/97 LilyPond 0.1.25 4
@@ -325,7 +325,7 @@ RRRREEEEDDDDHHHHAAAATTTT LLLLIIIINNNNUUUUXXXX
-20/Oct/97 LilyPond 0.1.24 5
+20/Oct/97 LilyPond 0.1.25 5
@@ -391,6 +391,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS
-20/Oct/97 LilyPond 0.1.24 6
+20/Oct/97 LilyPond 0.1.25 6
diff --git a/NEWS b/NEWS
index 97539c6c4e..74fe14bd87 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,18 @@
-pl 24.jcn2
- - feta-nummertjes: 0 1 2 4 7
+pl 25
+ - variable stemlength
+ - feta: 32nd, 64th flags
+ - font.ly
+ - dist & tarball made in out/
+ - rewrote release.sh in python
+ - notehead/stem attachment better.
+ - more Stem cleanage
+ - related Beam cleanage
+ - started numeral font (JCN)
+ - bf: whole rest outside staff.
+
+*********
+oct 20
pl 24
- internationalization preps (FP)
- rewrote make-patch in python
diff --git a/TODO b/TODO
index 96a9fa16a3..622775fc4d 100644
--- a/TODO
+++ b/TODO
@@ -20,8 +20,10 @@ grep for TODO and ugh/ugr
* Make general "spanning"-elements and "placer"-elements
- - naming Mozarella, Madeira, Muella, Feta?
+ - naming Mozarella, Madeira, Muella?
+
- bf: abbrevs over whole note
+
- scoping for properties
{ c4
@@ -76,6 +78,7 @@ PROJECTS
* \header
- write perl script for handling it into databases
- write TeX macros to generate titles
+ - adapt make-website to use \header info.
* Makefile stuff:
- have make dist produce tarball in out/ directory.
diff --git a/VERSION b/VERSION
index afec263f5a..95817462ad 100644
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
TOPLEVEL_MAJOR_VERSION = 0
TOPLEVEL_MINOR_VERSION = 1
-TOPLEVEL_PATCH_LEVEL = 24
-TOPLEVEL_MY_PATCH_LEVEL = .jcn2
+TOPLEVEL_PATCH_LEVEL = 25
+TOPLEVEL_MY_PATCH_LEVEL =
# use the above to send patches, always empty for released version:
diff --git a/bin/lilypython.py b/bin/lilypython.py
index 1b62c2833d..7b063437a1 100644
--- a/bin/lilypython.py
+++ b/bin/lilypython.py
@@ -56,6 +56,15 @@ def prev_version(tup):
return (tup[0], tup[1], tup[2] - 1, '');
+def dirname(v):
+ return 'lilypond-' + version_tuple_to_str(v)
+
+def tarball(v):
+ return dirname(v) + '.tar.gz'
+
+def released_tarball(v):
+ return lilydirs.release_dir + tarball(v)
+
def tuple_to_list(tup):
l=[]
for x in tup:
diff --git a/bin/make-patch.py b/bin/makepatch.py
index ff070acdf7..2763096eb7 100644
--- a/bin/make-patch.py
+++ b/bin/makepatch.py
@@ -23,11 +23,6 @@ def help():
)
-def dirname(v):
- return 'lilypond-' + version_tuple_to_str(v)
-
-def tarball(v):
- return lilydirs.release_dir + dirname(v) + '.tar.gz'
def untar(fn):
sys.stderr.write('untarring ' + fn)
@@ -40,7 +35,7 @@ header = 'Generated by make-patch, old = %s, new = %s\n\
\n\
usage \n\
\n\
- cd lilypond-source-dir; patch -E -p0 < patch-$new\n\
+ cd lilypond-source-dir; patch -E -p0 < %s\n\
\n\
Patches do not contain automatically generated files, \n\
i.e. you should rerun configure\n\n'
@@ -93,9 +88,10 @@ def remove_automatic(dirnames):
def makepatch(fv, tv, patfile_nm):
import tempfile
+ prev_cwd = os.getcwd();
os.chdir ('/tmp')
- untar(tarball(fv))
- untar(tarball(tv))
+ untar(released_tarball(fv))
+ untar(released_tarball(tv))
remove_automatic([dirname(fv), dirname(tv)])
os.chdir(dirname(tv))
@@ -104,10 +100,12 @@ def makepatch(fv, tv, patfile_nm):
patfile_nm = '../patch-%s' % version_tuple_to_str(tv)
f = open(patfile_nm, 'w')
- f.write(header % (version_tuple_to_str(fv), version_tuple_to_str(tv)))
+ f.write(header %\
+ (version_tuple_to_str(fv), version_tuple_to_str(tv), \
+ os.path.basename(patfile_nm)))
f.close()
- sys.stderr.write('diffing ... ')
+ sys.stderr.write('diffing to %s... ' % patfile_nm)
os.system('diff -urN ../%s . >> %s' % (dirname(fv), patfile_nm))
#os.system('gzip -9f %s' % patfile_nm)
os.chdir('/tmp')
@@ -115,6 +113,7 @@ def makepatch(fv, tv, patfile_nm):
sys.stderr.write('cleaning ... ')
os.system('rm -fr %s %s' % (dirname(tv), dirname(fv)))
sys.stderr.write('\n')
+ os.chdir(prev_cwd)
def main():
sys.stderr.write('This is make-patch version %s\n' % mp_version)
@@ -141,4 +140,5 @@ def main():
makepatch(options.from_version, options.to_version, outfn)
-main()
+if __name__ == '__main__':
+ main()
diff --git a/bin/rel.py b/bin/rel.py
deleted file mode 100644
index d0efcb8c55..0000000000
--- a/bin/rel.py
+++ /dev/null
@@ -1,5 +0,0 @@
-
-from lilypython import *
-
-
-os.system('make dist')
diff --git a/bin/release.py b/bin/release.py
new file mode 100644
index 0000000000..3e6026969f
--- /dev/null
+++ b/bin/release.py
@@ -0,0 +1,19 @@
+#!@PYTHON@
+
+from lilypython import *
+import makepatch
+
+
+os.chdir(lilydirs.topdir)
+os.system('make dist')
+cur_ver = lilydirs.version_tuple()
+
+os.rename('out/' + tarball(cur_ver), released_tarball(cur_ver))
+os.chdir('../test')
+os.system('rm ../test/*gz')
+os.link(released_tarball(cur_ver), tarball(cur_ver))
+
+
+makepatch.main()
+os.system('gzip -9 patch*')
+os.system('tar cf updeet *gz')
diff --git a/bin/release.sh b/bin/release.sh
deleted file mode 100644
index 6d64b34268..0000000000
--- a/bin/release.sh
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/bin/sh
-
-# script to automate releases
-
-grep -q '^TOP' VERSION
- res=$?
-if test ! -f VERSION || test $res != 0; then
- echo not in topleveldir
- exit 1
-fi
-
-function setversion() {
-eval `sed -n 's/^\([A-Z_]*\) *= *\(.*\)$/\1=\2/p' VERSION`
-
-MJ=$TOPLEVEL_MAJOR_VERSION
-MI=$TOPLEVEL_MINOR_VERSION
-PA=$TOPLEVEL_PATCH_LEVEL
-MP=$TOPLEVEL_MY_PATCH_LEVEL
-NEWVER=$MJ.$MI.$PA$MP
-if [ x$MP = x -o x$MP = xpre ]
-then
- LASTVER=$MJ.$MI.`expr $PA - 1`
-
- if [ -f $releasedir//lilypond-$LASTVER""pre.tar.gz ] ; then
- LASTVER="$LASTVER""pre"
- fi
-else
- LASTVER=$MJ.$MI.$PA
-fi
-
-echo
-echo "Current version ("`pwd`") is $NEWVER, Last version: $LASTVER"
-echo
-}
-
-heredir=`pwd`
-releasedir=`pwd`/../releases
-patchdir=`pwd`/../patches
-MAKE=${MAKE:-"make"}
-TAR=${TAR:-"tar"}
-
-
-$MAKE dist;
-setversion
-LILYVER=$NEWVER
-
-tarball=lilypond-$LILYVER.tar.gz
-patch=patch-$LILYVER.gz
-
-mv $tarball $releasedir/
-
-cd ../test
-python $heredir/bin/make-patch.py
-gzip -f9 patch-$NEWVER
-mv $patch $patchdir//
-
-RPMS=`find ~/rpms/ -name lilypond-$NEWVER'*'rpm`
-rm *.rpm {lilypond,patch}-*.gz
-
-if [ ! -z "$RPMS" ]; then
- ln $RPMS .
-fi
-
-ln $releasedir//$tarball .
-ln $patchdir//$patch .
-
-
-if [ ! -z "$RPMS" ]; then
- RPMS="lilypond-$LILYVER-1.i386.rpm lilypond-$LILYVER-1.src.rpm"
-fi
-$TAR cf updeet $tarball $patch $RPMS
-$TAR tfv updeet
-
diff --git a/flower/TODO b/flower/TODO
index 714f3ded6e..5468633cf7 100644
--- a/flower/TODO
+++ b/flower/TODO
@@ -1,4 +1,7 @@
+
+ * Unicode support in strings
+
* write a decent Dictionary
- write a String_hash template
- write a Pointer_hash template
diff --git a/init/font-en-tja16.ly b/init/font-en-tja16.ly
index 394441aecc..41e99c6833 100644
--- a/init/font-en-tja16.ly
+++ b/init/font-en-tja16.ly
@@ -1,5 +1,5 @@
% generated automatically by mf-to-table.py version 0.4
-% on Mon Oct 20 01:50:48 1997
+% on Mon Oct 20 23:14:01 1997
% Do not edit
% input from out/font-en-tja16.log
% name=\symboltables {
@@ -51,10 +51,14 @@
"pedalheel" "\\pedalheel" -2.00\pt 2.00\pt -2.00\pt 2.67\pt
"pedaltoe" "\\pedaltoe" -2.00\pt 2.00\pt -0.00\pt 6.00\pt
}
- "floogbars" = \table {
- "3u" "\\eighthflag" -0.20\pt 4.16\pt -12.83\pt 0.20\pt
- "3d" "\\deighthflag" -0.20\pt 4.60\pt -0.20\pt 12.83\pt
- "4u" "\\sixteenthflag" -0.20\pt 4.16\pt -13.00\pt 0.20\pt
- "4d" "\\dsixteenthflag" -0.20\pt 4.60\pt -0.20\pt 12.00\pt
+ "flags" = \table {
+ "u3" "\\eighthflag" -0.20\pt 4.16\pt -12.26\pt 0.20\pt
+ "d3" "\\deighthflag" -0.20\pt 4.60\pt -0.20\pt 11.66\pt
+ "u4" "\\sixteenthflag" -0.20\pt 4.16\pt -14.00\pt 0.20\pt
+ "d4" "\\dsixteenthflag" -0.20\pt 4.60\pt -0.20\pt 12.00\pt
+ "u5" "\\thirtysecondflag" -0.20\pt 4.16\pt -17.00\pt 0.20\pt
+ "d5" "\\dthirtysecondflag" -0.20\pt 4.16\pt -0.20\pt 15.40\pt
+ "u6" "\\sixtyfourthflag" -0.20\pt 4.16\pt -21.00\pt 0.20\pt
+ "d6" "\\dsixtyfourthflag" -0.20\pt 4.16\pt -0.20\pt 17.40\pt
}
% } % $name
diff --git a/init/font-en-tja20.ly b/init/font-en-tja20.ly
index fe8b274825..6b22684668 100644
--- a/init/font-en-tja20.ly
+++ b/init/font-en-tja20.ly
@@ -1,5 +1,5 @@
% generated automatically by mf-to-table.py version 0.4
-% on Mon Oct 20 01:50:55 1997
+% on Mon Oct 20 23:14:08 1997
% Do not edit
% input from out/font-en-tja20.log
% name=\symboltables {
@@ -51,10 +51,14 @@
"pedalheel" "\\pedalheel" -2.50\pt 2.50\pt -2.50\pt 3.33\pt
"pedaltoe" "\\pedaltoe" -2.50\pt 2.50\pt -0.00\pt 7.50\pt
}
- "floogbars" = \table {
- "3u" "\\eighthflag" -0.25\pt 5.20\pt -16.04\pt 0.25\pt
- "3d" "\\deighthflag" -0.25\pt 5.75\pt -0.25\pt 16.04\pt
- "4u" "\\sixteenthflag" -0.25\pt 5.20\pt -16.25\pt 0.25\pt
- "4d" "\\dsixteenthflag" -0.25\pt 5.75\pt -0.25\pt 15.00\pt
+ "flags" = \table {
+ "u3" "\\eighthflag" -0.25\pt 5.20\pt -15.33\pt 0.25\pt
+ "d3" "\\deighthflag" -0.25\pt 5.75\pt -0.25\pt 14.58\pt
+ "u4" "\\sixteenthflag" -0.25\pt 5.20\pt -17.50\pt 0.25\pt
+ "d4" "\\dsixteenthflag" -0.25\pt 5.75\pt -0.25\pt 15.00\pt
+ "u5" "\\thirtysecondflag" -0.25\pt 5.20\pt -21.25\pt 0.25\pt
+ "d5" "\\dthirtysecondflag" -0.25\pt 5.20\pt -0.25\pt 19.25\pt
+ "u6" "\\sixtyfourthflag" -0.25\pt 5.20\pt -26.25\pt 0.25\pt
+ "d6" "\\dsixtyfourthflag" -0.25\pt 5.20\pt -0.25\pt 21.75\pt
}
% } % $name
diff --git a/init/table16.ly b/init/table16.ly
index 4d80868a5b..daa17af924 100644
--- a/init/table16.ly
+++ b/init/table16.ly
@@ -103,19 +103,6 @@ table_sixteen=
}
- "flags" = \table {
- "u3" "\eighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "u4" "\sixteenthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "u5" "\\thirtysecondflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "u6" "\sixtyfourthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "u7" "\hundredtwentyeighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "d3" "\deighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "d4" "\dsixteenthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "d5" "\dthirtysecondflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "d6" "\dsixtyfourthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "d7" "\dhundredtwentyeighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- }
-
"beamslopes" = \table {
"slope" "\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt
"horizontal" "\rulesym{%}{%}"
diff --git a/init/table20.ly b/init/table20.ly
index dd0daaa11a..305b2c3572 100644
--- a/init/table20.ly
+++ b/init/table20.ly
@@ -90,20 +90,7 @@ table_twenty =
"decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -3.0\pt 3.0\pt
}
- "flags" = \table {
- "u3" "\eighthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt
- "u4" "\sixteenthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt
- "u5" "\\thirtysecondflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt
- "u6" "\sixtyfourthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt
- "u7" "\hundredtwentyeighthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt
- "d3" "\deighthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt
- "d4" "\dsixteenthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt
- "d5" "\dthirtysecondflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt
- "d6" "\dsixtyfourthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt
- "d7" "\dhundredtwentyeighthflag" 0.0\pt 5.0\pt 0.0\pt 0.0\pt
- }
-
- "beamslopes" = \table {
+ "beamslopes" = \table {
"slope" "\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt
"horizontal" "\rulesym{%}{%}"
}
diff --git a/input/font.ly b/input/font.ly
index 620c39b66e..5a57033f95 100644
--- a/input/font.ly
+++ b/input/font.ly
@@ -26,12 +26,13 @@ TestedFeatures = "This file tests the Feta music-font"
[c d e f] [as' ges' f' e']
[cis' dis' c' des'] [cisis' disis' ceses' deses'] |
r1 r2 r4 r8 r16 r32 r64 r128 r128 |
- \multi 2 < { \stemup r1} {\stemdown c''}>
+ \multi 2 < { \stemup r2 r2} {\stemdown c'' c''}>
\multi 2 < { \stemup c1 } {\stemdown r1}>
\stemboth
e8_. g'8-> e16^^ g'16_^
e32 _| g'32^| g''32-\ltoe g''32-\lheel
+ e64 g'64 c4... |
}
\paper{
gourlay_maxmeasures =5.;
@@ -41,7 +42,5 @@ TestedFeatures = "This file tests the Feta music-font"
gourlay_maxmeasures =5.;
\output "lelie20.tex";
}
-% oeps
-% \midi{ }
}
diff --git a/lily/VERSION b/lily/VERSION
index 9e2225975a..d657f9b2c7 100644
--- a/lily/VERSION
+++ b/lily/VERSION
@@ -1,7 +1,4 @@
MAJOR_VERSION = 0
MINOR_VERSION = 1
-PATCH_LEVEL = 24
-# use to send patches, always empty for released version:
-# include separator: ".postfix", "-pl" makes rpm barf
-
+PATCH_LEVEL = 25
MY_PATCH_LEVEL =
diff --git a/lily/beam.cc b/lily/beam.cc
index ea102e4457..a7cfd829ca 100644
--- a/lily/beam.cc
+++ b/lily/beam.cc
@@ -128,33 +128,36 @@ Beam::do_width() const
void
Beam::set_default_dir()
{
- int up = 0, down = 0;
- int up_count = 0, down_count = 0;
-
+ Drul_array<int> total;
+ total[UP] = total[DOWN] = 0;
+ Drul_array<int> count;
+ count[UP] = count[DOWN] = 0;
+ Direction d = DOWN;
+
for (int i=0; i <stems.size(); i++)
- {
- Stem *sl = stems[i];
- int cur_down = sl->get_center_distance_from_top();
- int cur_up = sl->get_center_distance_from_bottom();
- if (cur_down)
- {
- down += cur_down;
- down_count++;
- }
- if (cur_up)
+ do {
+ Stem *s = stems[i];
+ int current = s->dir_
+ ? (1 + d * s->dir_)/2
+ : s->get_center_distance(Direction(-d));
+
+ if (current)
{
- up += cur_up;
- up_count++;
+ total[d] += current;
+ count[d] ++;
}
- }
- if (!down)
- down_count = 1;
- if (!up)
- up_count = 1;
-
- // the following relation is equal to
- // up / up_count > down / down_count
- dir_ = (up * down_count > down * up_count) ? UP : DOWN;
+
+ } while ((d *= -1) != DOWN);
+
+ do {
+ if (!total[d])
+ count[d] = 1;
+ } while ((d *= -1) != DOWN);
+
+ /* the following relation is equal to
+ up / up_count > down / down_count
+ */
+ dir_ = (total[UP] * count[DOWN] > total[DOWN] * count[UP]) ? UP : DOWN;
for (int i=0; i <stems.size(); i++)
{
diff --git a/lily/include/stem.hh b/lily/include/stem.hh
index 3a034df85e..d150eb1e76 100644
--- a/lily/include/stem.hh
+++ b/lily/include/stem.hh
@@ -86,8 +86,8 @@ public:
void do_print() const;
void set_stemend (Real);
Direction get_default_dir();
- int get_center_distance_from_top();
- int get_center_distance_from_bottom();
+
+ int get_center_distance(Direction);
void set_default_dir();
void set_default_stemlen();
void set_default_extents();
@@ -101,8 +101,7 @@ public:
bool invisible_b() const;
/// heads that the stem encompasses (positions)
- int max_head_i() const;
- int min_head_i() const;
+ Interval_t<int> head_positions() const;
protected:
virtual void do_substitute_dependency (Score_elem*,Score_elem*);
virtual void do_pre_processing();
diff --git a/lily/rest.cc b/lily/rest.cc
index d186608b26..4cf872f613 100644
--- a/lily/rest.cc
+++ b/lily/rest.cc
@@ -19,6 +19,8 @@ Rest::do_add_processing ()
{
if (balltype_i_ != 0 && balltype_i_ != 1)
position_i_ -= 4;
+ else if (balltype_i_ == 0)
+ position_i_ += 2;
Rhythmic_head::do_add_processing ();
if (dots_l_)
@@ -34,7 +36,8 @@ Molecule *
Rest::brew_molecule_p () const
{
int staff_size_i_ = 8;
- bool streepjes_b = abs(position_i_) > staff_size_i_ /2 && (balltype_i_ == 0 || balltype_i_ == 1);
+ bool streepjes_b = abs(position_i_) > staff_size_i_ /2 &&
+ (balltype_i_ == 0 || balltype_i_ == 1);
Atom s(paper ()->lookup_l()->rest (balltype_i_, streepjes_b));
Molecule * m = new Molecule ( Atom (s));
diff --git a/lily/stem.cc b/lily/stem.cc
index 64b737b93f..f72d3068ef 100644
--- a/lily/stem.cc
+++ b/lily/stem.cc
@@ -43,23 +43,17 @@ Stem::Stem ()
beam_gap_i_ = 0;
}
-int
-Stem::min_head_i () const
-{
- int m = 1000;
- for (int i =0; i < head_l_arr_.size (); i++)
- m = m <? head_l_arr_[i]->position_i_;
- return m;
-}
-
-int
-Stem::max_head_i () const
+Interval_t<int>
+Stem::head_positions () const
{
- int m = -1000;
+ Interval_t<int> r;
for (int i =0; i < head_l_arr_.size (); i++)
- m = m >? head_l_arr_[i]->position_i_;
- return m;
-
+ {
+ int p = head_l_arr_[i]->position_i_;
+ r[BIGGER] = r[BIGGER] >? p;
+ r[SMALLER] = r[SMALLER] <? p;
+ }
+ return r;
}
void
@@ -81,13 +75,13 @@ Stem::stem_length_f () const
Real
Stem::stem_start_f () const
{
- return (dir_ < 0)? yextent_drul_[UP] : yextent_drul_[DOWN];
+ return yextent_drul_[Direction(-dir_)];
}
Real
Stem::stem_end_f () const
{
- return (dir_ < 0)? yextent_drul_[DOWN] : yextent_drul_[UP];
+ return yextent_drul_[dir_];
}
@@ -95,12 +89,12 @@ void
Stem::set_stemend (Real se)
{
// todo: margins
- if (! ((dir_ > 0 && se >= max_head_i ()) ||
- (se <= min_head_i () && dir_ <0)))
+ if (dir_ && dir_ * head_positions()[dir_] >= se*dir_)
warning (_("Weird stem size; check for narrow beams"));
- yextent_drul_[UP] = (dir_ < 0) ? max_head_i () : se;
- yextent_drul_[DOWN] = (dir_ < 0) ? se : min_head_i ();
+
+ yextent_drul_[dir_] = se;
+ yextent_drul_[Direction(-dir_)] = head_positions()[-dir_];
}
int
@@ -126,44 +120,25 @@ Stem::add (Rhythmic_head *n)
bool
Stem::invisible_b () const
{
-
return (!head_l_arr_.size () ||
head_l_arr_[0]->balltype_i_ <= 0);
-
-}
-
-// if dir_ is set we return fake values.
-int
-Stem::get_center_distance_from_top ()
-{
- if (dir_)
- return (dir_ > 0) ? 0 : 1;
-
- int staff_center = 0;
- int max = max_head_i () - staff_center;
- return max >? 0;
}
-// if dir_ is set we return fake values.
int
-Stem::get_center_distance_from_bottom ()
+Stem::get_center_distance (Direction d)
{
- if (dir_)
- return (dir_ > 0) ? 1 : 0;
-
int staff_center = 0;
- int min = staff_center - min_head_i ();
- return min >? 0;
+ int distance = d*(head_positions()[d] - staff_center);
+ return distance >? 0;
}
Direction
Stem::get_default_dir ()
{
- if (dir_)
- return dir_;
- return (get_center_distance_from_top () >=
- get_center_distance_from_bottom ()) ?
- (Direction)-1 : (Direction)1;
+ return (get_center_distance (UP) >=
+ get_center_distance (DOWN))
+ ? DOWN
+ : UP;
}
@@ -176,25 +151,37 @@ Stem::set_default_dir ()
void
Stem::set_default_stemlen ()
{
- if (!dir_)
- set_default_dir ();
-
-
- Real dy = paper ()->interbeam_f ();
Real len = STEMLEN;
+ Real dy = paper ()->interbeam_f ();
+
// ugh, should get nice *rule* for this
if (abbrev_flag_i_ > 1)
len += (abbrev_flag_i_ - 1)* dy / 2;
- set_stemend ((dir_ > 0) ? max_head_i () + len :
- min_head_i () - len);
+
+
+ if (!dir_)
+ set_default_dir ();
+
+ /* If the stem points in the "wrong" direction, it should be
+ shortened, according to [Roush & Gourlay]. Their suggestion to knock off
+ a whole staffspace is a bit drastical though.
+ */
+ else if (dir_ != get_default_dir ())
+ len -= 1.0;
+
+ if (flag_i_ >= 5)
+ len += 2.0;
+ if (flag_i_ >= 6)
+ len += 1.0;
+
+ set_stemend ((dir_ > 0) ? head_positions()[BIGGER] + len :
+ head_positions()[SMALLER] - len);
if (dir_ * stem_end_f () < 0)
{
set_stemend (0);
}
-
-
}
void
@@ -203,9 +190,10 @@ Stem::set_default_extents ()
if (!stem_length_f ())
set_default_stemlen ();
- set_stemend ((dir_< 0) ?
- max_head_i ()-stem_length_f (): min_head_i () + stem_length_f ());
-
+ /* set_stemend ((dir_< 0) ?
+ head_positions()[BIGGER]-stem_length_f ():
+ head_positions()[SMALLER] + stem_length_f ());
+ */
if (dir_ == UP)
stem_xdir_ = RIGHT;
if (invisible_b ())
@@ -302,10 +290,10 @@ Stem::abbrev_mol () const
Atom a (paper ()->lookup_l ()->beam (slope, w));
a.translate (Offset(- w / 2, stem_end_f () - (w / 2 * slope)));
// ugh
- if (!beams_i)
- a.translate_axis (dy + beamdy - dir_ * dy, Y_AXIS);
- else
- a.translate_axis (2 * beamdy - dir_ * (beamdy - dy), Y_AXIS);
+ if (!beams_i)
+ a.translate_axis (dy + beamdy - dir_ * dy, Y_AXIS);
+ else
+ a.translate_axis (2 * beamdy - dir_ * (beamdy - dy), Y_AXIS);
for (int i = 0; i < abbrev_flag_i_; i++)
{
@@ -317,29 +305,34 @@ Stem::abbrev_mol () const
return beams;
}
+const Real ANGLE = 20* (2.0*M_PI/360.0);
+
Molecule*
Stem::brew_molecule_p () const
{
Molecule *mol_p =new Molecule;
-
- Real bot = yextent_drul_[DOWN];
- Real top = yextent_drul_[UP];
-
- assert (bot!=top);
-
Paper_def *p =paper ();
-
+ Drul_array<Real> stem_y = yextent_drul_;
Real dy = p->internote_f ();
+
+
+ Real head_wid = 0;
+ if (head_l_arr_.size ())
+ head_wid = head_l_arr_[0]->width ().length ();
+ stem_y[Direction(-dir_)] += dir_ * head_wid * tan(ANGLE)/(2*dy);
+
if (!invisible_b ())
{
- Atom ss =p->lookup_l ()->stem (bot*dy,top*dy);
+ Atom ss =p->lookup_l ()->stem (stem_y[DOWN]*dy,
+ stem_y[UP]*dy);
mol_p->add (Atom (ss));
}
if (!beam_l_ &&abs (flag_i_) > 2)
{
Atom fl = p->lookup_l ()->flag (flag_i_, dir_);
- mol_p->add_at_edge (Y_AXIS, dir_, Molecule (Atom (fl)));
+ fl.translate_axis(stem_y[dir_]*dy, Y_AXIS);
+ mol_p->add(fl);
assert (!abbrev_flag_i_);
}
@@ -373,7 +366,7 @@ Stem::hpos_f () const
}
/*
-TODO: head_l_arr_/rest_l_arr_ in do_substitute_dependent ()
+ TODO: head_l_arr_/rest_l_arr_ in do_substitute_dependent ()
*/
void
Stem::do_substitute_dependency (Score_elem*o,Score_elem*n)
diff --git a/make/Targets.make b/make/Targets.make
index 8f41109188..aeb43521ac 100644
--- a/make/Targets.make
+++ b/make/Targets.make
@@ -128,7 +128,7 @@ dist:
$(MAKE) localdist
chmod -Rf a+rX $(distdir)
- (cd ./$(depth); $(TAR) cf - $(DIST_NAME) | gzip -9 > $(DIST_NAME).tar.gz)
+ (cd ./$(depth)/$(outdir); $(TAR) cf - $(DIST_NAME) | gzip -9 > $(DIST_NAME).tar.gz)
# should be trapped
rm -rf $(distdir)/
@@ -163,7 +163,7 @@ endif
moduledist:
-mkdir $(module-distdir)
$(MAKE) localmoduledist
- (cd ./$(depth); $(TAR) cfz $(MODULE_DIST_NAME).tar.gz $(MODULE_DIST_NAME))
+ (cd $(depth)/$(outdir); $(TAR) cfz $(MODULE_DIST_NAME).tar.gz $(MODULE_DIST_NAME))
rm -rf $(module-distdir)/
localmoduledist:
diff --git a/make/Variables.make b/make/Variables.make
index abcc2dde58..37b1127741 100644
--- a/make/Variables.make
+++ b/make/Variables.make
@@ -35,7 +35,7 @@ outdir=$(OUTDIR_NAME)
# derived names
lily_bindir = $(depth)/bin
-distdir = $(depth)/$(DIST_NAME)
+distdir = $(depth)/$(outdir)/$(DIST_NAME)
module-distdir = $(depth)/$(MODULE_DIST_NAME)
depdir = $(outdir)
diff --git a/make/lelievijver.lsm b/make/lelievijver.lsm
index a9d7d16bae..a4441e5010 100644
--- a/make/lelievijver.lsm
+++ b/make/lelievijver.lsm
@@ -1,7 +1,7 @@
Begin3
Titel: LilyPond
-Versie: 0.1.24
-Inschrijf datum: 20OCT97
+Versie: 0.1.25
+Inschrijf datum: 21OCT97
Beschrijving: LilyPond is de muziek typesetter van het GNU Project.
Het programma genereert muziek in zichtbare of
hoorbare vorm uit uit een muzikale definitie file:
@@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
jan@digicash.com (Jan Nieuwenhuizen)
Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
- 395k lilypond-0.1.24.tar.gz
+ 395k lilypond-0.1.25.tar.gz
Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
- 395k lilypond-0.1.24.tar.gz
+ 395k lilypond-0.1.25.tar.gz
Copi"eer politie: GPL
End
diff --git a/make/lilypond.lsm b/make/lilypond.lsm
index 95fbefe271..c29c89408d 100644
--- a/make/lilypond.lsm
+++ b/make/lilypond.lsm
@@ -1,7 +1,7 @@
Begin3
Title: LilyPond
-Version: 0.1.24
-Entered-date: 20OCT97
+Version: 0.1.25
+Entered-date: 21OCT97
Description: LilyPond is the GNU Project music typesetter. The program
generates visual or auditive output from a music
definition file: it can typeset formatted sheet music
@@ -14,8 +14,8 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys)
jan@digicash.com (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps
- 430k lilypond-0.1.24.tar.gz
+ 430k lilypond-0.1.25.tar.gz
Original-site: pcnov095.win.tue.nl /pub/lilypond/
- 430k lilypond-0.1.24.tar.gz
+ 430k lilypond-0.1.25.tar.gz
Copying-policy: GPL
End
diff --git a/make/lilypond.spec b/make/lilypond.spec
index 147b27640a..ac4318fd52 100644
--- a/make/lilypond.spec
+++ b/make/lilypond.spec
@@ -1,9 +1,9 @@
Name: lilypond
-Version: 0.1.24
+Version: 0.1.25
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.24.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.25.tar.gz
Summary: A preprocessor to make TeX typeset music.
URL: http://www.stack.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@stack.nl>
diff --git a/mf/TODO b/mf/TODO
index 08ed18eb44..5761f4c81d 100644
--- a/mf/TODO
+++ b/mf/TODO
@@ -4,7 +4,6 @@
- more symbols
* ledgerlines
* stem-notehead attachments.
- * flags
* clefs
* some scripts:
* piano pedals,
@@ -17,6 +16,7 @@
- normal(1/5staff) bold
- large(3/4staff) bold
+ - redo flags in a orderly manner; 128th flags
- include important spacing dims in fetalog
- lilyrules.mf for different rules (lines) ?
diff --git a/mf/dimen.tex b/mf/dimen.tex
index a596396e7a..44c59a4ef4 100644
--- a/mf/dimen.tex
+++ b/mf/dimen.tex
@@ -9,10 +9,8 @@
\font\slurs=xslhd16
\font\specfont=musixspx
\font\egler=opus16
-\font\nummertjes=feta-nummer10
-%\def\thefont{\egler}
+\def\thefont{\egler}
%\def\thefont{\specfont}
-\def\thefont{\nummertjes}
\def\mb#1{{\thefont\char#1}}
@@ -54,8 +52,7 @@
\newcount\n
\def\charn{\n=-1
-% \loop\ifnum\n<255\advance\n by1
- \loop\ifnum\n<10\advance\n by1
+ \loop\ifnum\n<255\advance\n by1
\doitem{\number\n}\endgraf\repeat}
diff --git a/mf/feta-banier.mf b/mf/feta-banier.mf
index 575c4943fc..8b6c0c79fe 100644
--- a/mf/feta-banier.mf
+++ b/mf/feta-banier.mf
@@ -1,7 +1,7 @@
% flags
%
-fet_begingroup("floogbars")
+fet_begingroup("flags")
% Flags pointing down overlap with the notehead (in x-direction), so
% the down-flag can be bigger
@@ -58,8 +58,7 @@ enddef;
% godbewaarme, wat een kutsymbolen
-fet_beginchar("8th Flag (up)", "3u", "eighthflag")
-
+fet_beginchar("8th Flag (up)", "u3", "eighthflag")
save flare,
hip_depth, hip_width,
foot_depth, foot_width;
@@ -68,7 +67,7 @@ fet_beginchar("8th Flag (up)", "3u", "eighthflag")
hip_depth# = 8/15 foot_depth#;
hip_width# = upflag_width# - hip_thickness#/2;
- foot_depth# = 15/7 interline#;
+ foot_depth# + flare# = 3 interline#;
foot_width# = .8 hip_width#;
set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2
@@ -87,7 +86,7 @@ fet_beginchar("8th Flag (up)", "3u", "eighthflag")
draw (0, 0) .. (0,-2 interline);
fet_endchar;
-fet_beginchar("8th Flag (down)", "3d", "deighthflag")
+fet_beginchar("8th Flag (down)", "d3", "deighthflag")
save flare,
hip_depth, hip_width,
foot_depth, foot_width;
@@ -96,8 +95,10 @@ fet_beginchar("8th Flag (down)", "3d", "deighthflag")
hip_depth# = 8/15 foot_depth#;
hip_width# = downflag_width# - hip_thickness#/2;
- foot_depth# = 15/7 interline#;
- foot_width# = .8 hip_width#;
+
+ % 2.9 -> don't intersect staffline at foot
+ foot_depth# + flare# = 2.85 interline#;
+ foot_width# = .82 hip_width#;
set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2
+ stemthickness#/2,
@@ -117,7 +118,7 @@ fet_beginchar("8th Flag (down)", "3d", "deighthflag")
fet_endchar;
-fet_beginchar("16th Flag (up)", "4u", "sixteenthflag")
+fet_beginchar("16th Flag (up)", "u4", "sixteenthflag")
save flare, flagspace,
hip_depth, hip_width,
foot_depth, foot_width;
@@ -126,14 +127,14 @@ fet_beginchar("16th Flag (up)", "4u", "sixteenthflag")
flagspace# = .85 interline#;
hip_depth# = 8/15 foot_depth#;
- flagspace# + flare# + foot_depth# = 3.25 interline#;
+ flagspace# + flare# + foot_depth# = 3.5 interline#;
hip_width# = upflag_width# - hip_thickness#/2;
foot_width# = .8 hip_width#;
set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2
+ stemthickness#/2,
- 3.25 interline#, stemthickness#/2)
+ 3.5 interline#, stemthickness#/2)
define_pixels(flagspace);
define_pixels(flare,
@@ -142,7 +143,7 @@ fet_beginchar("16th Flag (up)", "4u", "sixteenthflag")
draw_flag((stemthickness/2, 0),flare,
1.2 hip_depth, .97 hip_width, hip_thickness,
- foot_depth, .9 foot_width, foot_thickness, 0.37);
+ foot_depth, .9 foot_width, foot_thickness, 0.5);
draw_flag((stemthickness/2, -flagspace),flare,
hip_depth, hip_width, hip_thickness,
foot_depth, foot_width, foot_thickness, 0);
@@ -153,7 +154,7 @@ fet_beginchar("16th Flag (up)", "4u", "sixteenthflag")
fet_endchar;
-fet_beginchar("16th Flag (up)", "4d", "dsixteenthflag")
+fet_beginchar("16th Flag (down)", "d4", "dsixteenthflag")
save flare, flagspace,
hip_depth, hip_width,
foot_depth, foot_width;
@@ -179,7 +180,7 @@ fet_beginchar("16th Flag (up)", "4d", "dsixteenthflag")
draw_flag((stemthickness/2, 0),flare,
hip_depth, .97 hip_width, hip_thickness,
- 1.2 foot_depth, .95 foot_width, foot_thickness, 0.0);
+ 1.2 foot_depth, .95 foot_width, foot_thickness, 0.0);
draw_flag((stemthickness/2, -flagspace),flare,
hip_depth, hip_width, hip_thickness,
@@ -191,4 +192,169 @@ fet_beginchar("16th Flag (up)", "4d", "dsixteenthflag")
y_mirror_char;
fet_endchar;
-fet_endgroup("floogbars");
+fet_beginchar("32nd Flag (up)", "u5", "thirtysecondflag")
+ save flare, flagspace,
+ hip_depth, hip_width,
+ foot_depth, foot_width;
+
+ flare# = 0.85 interline#;
+ flagspace# = .87 interline#;
+ hip_depth# = 8/15 foot_depth#;
+
+ 2 flagspace# + flare# + foot_depth# = 4.25 interline#;
+
+ hip_width# = upflag_width# - hip_thickness#/2;
+ foot_width# = .8 hip_width#;
+
+ set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2
+ + stemthickness#/2,
+ 4.25 interline#, stemthickness#/2)
+
+ define_pixels(flagspace);
+ define_pixels(flare,
+ hip_depth, hip_width, hip_thickness,
+ foot_depth, foot_width, foot_thickness);
+
+ draw_flag((stemthickness/2, 0),flare,
+ 1.25 hip_depth, .95 hip_width, hip_thickness,
+ .85 foot_depth, 1.1 foot_width, foot_thickness, 0.0);
+ draw_flag((stemthickness/2, -flagspace),flare,
+ 1.2 hip_depth, .97 hip_width, hip_thickness,
+ foot_depth, .9 foot_width, foot_thickness, 0.37);
+ draw_flag((stemthickness/2, -2 flagspace),flare,
+ 1.1 hip_depth, hip_width, hip_thickness,
+ foot_depth, 1.15 foot_width, foot_thickness, 0);
+
+ pickup pencircle scaled stemthickness;
+ draw (0, 0) .. (0,-3 interline);
+
+fet_endchar;
+
+
+
+fet_beginchar("32nd Flag (up)", "d5", "dthirtysecondflag")
+ save flare, flagspace,
+ hip_depth, hip_width,
+ foot_depth, foot_width;
+
+ flare# = 0.85 interline#;
+ flagspace# = .85 interline#;
+ hip_depth# = .57 foot_depth#;
+ foot_width# = 1.0 hip_width#;
+
+ 2 flagspace# + flare# + foot_depth# = 3.85 interline#;
+ hip_width# = upflag_width# - hip_thickness#/2;
+
+
+ set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2
+ + stemthickness#/2,
+ 3.85 interline#, stemthickness#/2)
+
+ define_pixels(flagspace);
+ define_pixels(flare,
+ hip_depth, hip_width, hip_thickness,
+ foot_depth, foot_width, foot_thickness);
+
+ draw_flag((stemthickness/2, 0),flare,
+ 1.3 hip_depth, .93 hip_width, hip_thickness,
+ foot_depth, .9 foot_width, foot_thickness, 0.0);
+ draw_flag((stemthickness/2, -flagspace),flare,
+ 1.15 hip_depth, .97 hip_width, hip_thickness,
+ foot_depth, .95 foot_width, foot_thickness, 0.0);
+ draw_flag((stemthickness/2, -2 flagspace),flare,
+ 1.0 hip_depth, hip_width, .95 hip_thickness,
+ foot_depth, foot_width, .93 foot_thickness, 0);
+
+ pickup pencircle scaled stemthickness;
+ draw (0, 0) .. (0,-3 interline);
+ y_mirror_char;
+fet_endchar;
+
+fet_beginchar("64th Flag (up)", "u6", "sixtyfourthflag")
+ save flare, flagspace,
+ hip_depth, hip_width,
+ foot_depth, foot_width;
+
+ flare# = 0.85 interline#;
+ flagspace# = .9 interline#;
+ hip_depth# = 8/15 foot_depth#;
+
+ 3 flagspace# + flare# + foot_depth# = 5.25 interline#;
+
+ hip_width# = upflag_width# - hip_thickness#/2;
+ foot_width# = .8 hip_width#;
+
+ set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2
+ + stemthickness#/2,
+ 5.25 interline#, stemthickness#/2)
+
+ define_pixels(flagspace);
+ define_pixels(flare,
+ hip_depth, hip_width, hip_thickness,
+ foot_depth, foot_width, foot_thickness);
+
+ draw_flag((stemthickness/2, 0),flare,
+ 1.25 hip_depth, .95 hip_width, hip_thickness,
+ .85 foot_depth, 1.1 foot_width, foot_thickness, 0.0);
+ draw_flag((stemthickness/2, -flagspace),flare,
+ 1.2 hip_depth, .97 hip_width, hip_thickness,
+ foot_depth, .9 foot_width, foot_thickness, 0.37);
+ draw_flag((stemthickness/2, -2flagspace),flare,
+ 1.2 hip_depth, .97 hip_width, hip_thickness,
+ foot_depth, .9 foot_width, foot_thickness, 0.37);
+ draw_flag((stemthickness/2, -3 flagspace),flare,
+ 1.1 hip_depth, hip_width, hip_thickness,
+ foot_depth, 1.15 foot_width, foot_thickness, 0);
+
+ pickup pencircle scaled stemthickness;
+ draw (0, 0) .. (0,-5 interline);
+
+fet_endchar;
+
+
+fet_beginchar("64th Flag (down)", "d6", "dsixtyfourthflag")
+ save flare, flagspace,
+ hip_depth, hip_width,
+ foot_depth, foot_width;
+ save lastcut;
+ flare# = 0.85 interline#;
+ flagspace# = .9 interline#;
+ hip_depth# = .57 foot_depth#;
+ foot_width# = 1.0 hip_width#;
+
+ lastcut = .7;
+
+ 3 flagspace# + flare# + hip_depth# +
+ (foot_depth# - hip_depth#) * (1-lastcut) = 4.35 interline#;
+ hip_width# = upflag_width# - hip_thickness#/2;
+
+
+ set_char_box(stemthickness# /2, hip_width# + hip_thickness#/2
+ + stemthickness#/2,
+ 4.35 interline#, stemthickness#/2)
+
+ define_pixels(flagspace);
+ define_pixels(flare,
+ hip_depth, hip_width, hip_thickness,
+ foot_depth, foot_width, foot_thickness);
+
+ draw_flag((stemthickness/2, 0),flare,
+ 1.33 hip_depth, .92 hip_width, hip_thickness,
+ 1.15 foot_depth, .9 foot_width, foot_thickness, 0.0);
+ draw_flag((stemthickness/2, -flagspace),flare,
+ 1.15 hip_depth, .97 hip_width, hip_thickness,
+ 1.14 foot_depth, .92 foot_width, foot_thickness, 0.0);
+ draw_flag((stemthickness/2, -2 flagspace),flare,
+ 1.15 hip_depth, .97 hip_width, hip_thickness,
+ 1.12 foot_depth, .95 foot_width, foot_thickness, 0.0);
+ draw_flag((stemthickness/2, -3flagspace),flare,
+ 1.0 hip_depth, hip_width, .95 hip_thickness,
+ foot_depth, foot_width, .93 foot_thickness, lastcut);
+
+ pickup pencircle scaled stemthickness;
+ draw (0, 0) .. (0,-5 interline);
+ y_mirror_char;
+fet_endchar;
+
+
+fet_endgroup("flags");
diff --git a/mf/feta-eindelijk.mf b/mf/feta-eindelijk.mf
index b3cadcab90..d6d7cfcf54 100644
--- a/mf/feta-eindelijk.mf
+++ b/mf/feta-eindelijk.mf
@@ -8,11 +8,8 @@ fet_begingroup("rests");
begingroup
-med#:=1/33designsize;
thick#:=1/16designsize;
-define_blacker_pixels(med,thick);
-pen med_pen;
-med_pen:= pencircle scaled med;
+define_blacker_pixels(thick);
rthin:=1/8*interline;
% rthick:=2rthin;
@@ -59,9 +56,10 @@ def block_rest=
enddef;
fet_beginchar( "whole rest", "0", "wholerest");
-set_char_box(0, block_rest_x#, -interline# + block_rest_y#, interline# );
+ set_char_box(0, block_rest_x#,
+ block_rest_y#, 0);
block_rest;
- currentpicture := currentpicture shifted (0,interline - block_rest_y);
+ currentpicture := currentpicture shifted (0,- block_rest_y);
fet_endchar;
fet_beginchar("half rest", "1", "halfrest");
@@ -75,20 +73,26 @@ fet_endchar;
%
fet_beginchar( "whole rest (outside staff)", "0o", "outsidewholerest");
set_char_box(block_rest_y#, block_rest_x# + block_rest_y#,
- -interline# + block_rest_y#, interline#);
+ block_rest_y#, ledgerlinethickness#/2);
block_rest;
- currentpicture := currentpicture shifted (0,interline - block_rest_y);
+ currentpicture := currentpicture shifted (0, - block_rest_y);
pickup pencircle scaled ledgerlinethickness;
- draw (-block_rest_y, interline)
- .. (block_rest_x + block_rest_y, interline);
+
+ y5 = y6 = 0;
+ lft x5 = - b;
+ rt x6 = w;
+ draw z5 .. z6;
fet_endchar;
fet_beginchar("half rest (outside staff)", "1o", "outsidehalfrest");
set_char_box(block_rest_y#, block_rest_x#+ block_rest_y#,
- 0, block_rest_y#);
+ ledgerlinethickness#/2, block_rest_y#);
block_rest;
pickup pencircle scaled ledgerlinethickness;
- draw (-block_rest_y,0) .. (block_rest_x + block_rest_y,0);
+ y5 = y6 = 0;
+ lft x5 = - b;
+ rt x6 = w;
+ draw z5 .. z6;
fet_endchar;
fet_beginchar("Quarter rest","2","quartrest");
diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf
index 798782d5d4..4b99ef06d7 100644
--- a/mf/feta-generic.mf
+++ b/mf/feta-generic.mf
@@ -24,6 +24,6 @@ if test = 0:
input feta-schrift;
input feta-banier;
else:
- input feta-bolletjes;
- input feta-banier;
+% input feta-bolletjes; input feta-banier;
+ input feta-eindelijk;
fi
diff --git a/mf/feta-nummer.mf b/mf/feta-nummer.mf
deleted file mode 100644
index 577f09ff13..0000000000
--- a/mf/feta-nummer.mf
+++ /dev/null
@@ -1,207 +0,0 @@
-% feta-nummer.mf
-% part of LilyPond's pretty-but-neat music font
-
-fet_begingroup("nummer")
-
-height#:=designsize;
-%thick#:=height#/4;
-thick#:=height#/3.9;
-thin#:=thick#/4;
-hair#:=thin#/2;
-kuulleke#:=hair#;
-%kuulleke#:=0;
-
-define_pixels(height,thick,thin,hair);
-foot_top#:=2thin#;
-foot_width#:=2thick#+thin#;
-define_pixels(foot_top,foot_width);
-define_pixels(kuulleke);
-
-def draw_foot(expr xpos) =
- begingroup;
- clearxy;
- penpos1(thick,0);
- z1=(xpos,foot_top);
- penpos2(foot_width,0);
- z2=(x1,0);
- penpos3(hair,-90);
- z3r=z2r;
- penpos4(hair,90);
- z4l=z2l;
- z5=(x1,hair/2);
- fill z1..{right}z1r{down}..{right}z3l..z3r{left}..z5..{left}z4l..z4r{right}..{up}z1l{right}..z1..cycle;
- endgroup;
-enddef;
-
-fet_beginchar("Numeral 0", "0", "zero")
- set_char_box(0, 3thick#, 0, height#);
- penpos1(thin,90);
- z1r=(w/2,h);
- penpos2(thick,0);
- z2r=(w,h/2);
- penpos3(thin,-90);
- z3r=(w/2,0);
- penpos4(thick,180);
- z4r=(0,h/2);
- fill z1r..z2r..z3r..z4r..cycle;
- unfill z1l..tension1.2..z2l..tension1.2..z3l..tension1.2..z4l..tension1.2..cycle;
-fet_endchar;
-
-fet_beginchar("Numeral 1", "1", "one")
- set_char_box(0, 5/2thick#+thin#, 0, height#);
- save alpha; alpha=0;
- penpos1(thick,alpha);
- z1=(thick+thick/2,height);
- penpos2(hair,alpha+45);
- z2=z1l+(1/4sqrt(2)*hair)*dir(alpha-45);
- penpos3(hair,alpha-45);
- z3=z1r+(1/4sqrt(2)*hair)*dir(alpha-135);
- z4=z1+kuulleke*dir(alpha-90);
-
- penpos5(thick,0);
- z5=(x1,foot_top);
-
- z6=(0,h/2);
- save beta; beta=angle(z1l-z6);
- penpos7(thin,beta-90);
- z7l=z6;
- penpos8(thin/cosd(beta),-90);
- z8l=z1l;
- penpos9(hair,beta-90);
- z9r=z8r+(hair/cosd(beta))*(0,-1);
- save gamma; gamma=angle(length(z1r-z1),+2kuulleke);
- fill z2r{dir(alpha-gamma)}..z4..{dir(alpha+gamma)}z3l..z3r{down}..{down}z5r{left}..z5..{left}z5l{up}..{up}z2l..cycle;
- fill z7l{dir(beta)}..{dir(beta)}z1l..z2r..z9r{up}..z9l{dir(180+beta)}..{dir(180+beta)}z7r..cycle;
- penlabels(7,8,9);
-
- draw_foot(x1);
-fet_endchar;
-
-fet_beginchar("Numeral 2", "2", "two")
- set_char_box(0, 2thick#+3thin#, 0, height#);
- clearxy;
- save alpha; alpha=-50;
- save beta; beta=75;
- penpos1(thin,90+beta);
- z1=(0,0)+(1/2sqrt(2)*thin)*dir(45);
- penpos3(hair,90+beta);
- z3=(w,thick)+(1/2sqrt(2)*hair)*dir(-135);
- penpos2(3/4thick,90+alpha);
- x2-x1=x3-x2; y2=thick/2;
- penlabels(1,2,3);
-
- fill z1r{dir(beta)}..{dir(alpha)}z2r..{dir(beta)}z3r..z3l{dir(180+beta)}..{dir(180+alpha)}z2l..{dir(180+beta)}z1l..cycle;
-
- penpos4(thin,90);
- z4r=(w/2-thin-hair,2/5h);
- penpos5(thick-hair,0);
- z5r=(w-thin,(y4+y6)/2);
- penpos6(thin,90);
- z6r=(w/2-thin-hair,h);
- penlabels(4,5,6);
-% fill z1l{dir(beta)}..{dir(5)}z4l..{up}z5r..{left}z6r..z6l{right}..z5l{down}..z4r{dir(180+5)}..{dir(180+beta)}z1r..cycle;
- penpos7(thick,90);
- z7l=(thick/2,y5-hair);
- penpos8(thick,0);
- z8=z7;
- penlabels(7,8);
- fill z1l{dir(beta)}..{dir(20)}z4l..{up}z5r..{left}z6r..z8l{down}..z7l{right}..{up}z8r..tension0.75..z6l{right}..z5l{down}..z4r{dir(180+20)}..{dir(180+beta)}z1r..cycle;
-fet_endchar;
-
-fet_beginchar("Numeral 4", "4", "four")
- set_char_box(0, 5/2thick#+3thin#, 0, height#);
- save alpha; alpha=0;
- penpos1(3/2thick,alpha);
- z1r=(w-3thin,height);
- penpos2(hair,alpha+45);
- z2=z1l+(1/4sqrt(2)*hair)*dir(alpha-45);
- penpos3(hair,alpha-45);
- z3=z1r+(1/4sqrt(2)*hair)*dir(alpha-135);
- z4=z1+kuulleke*dir(alpha-90);
-
- z5=(thin,1/4height+thin);
- save beta; beta=angle(z3r-z5);
- penpos6(thin,-90);
- z6l=z5;
- penpos7(thin,-90);
- y7=y6; x7=w-1/2thin;
- penpos8(thin,-alpha);
- z8r=z5;
- save gamma; gamma=angle(length(z1r-z1),+2kuulleke);
- fill z2r{dir(alpha-gamma)}..z4..{dir(alpha+gamma)}z3l..z3r{dir(180+beta)}..{dir(180+beta)}z8r{right}..{right}z7l..z7r{left}..{left}z6r..z8l{dir(beta)}..{up}z2l..cycle;
- penlabels(1,2,3,4,5,6,7);
-
- clearxy;
-
- save alpha; alpha=beta;
- penpos1(thick/cosd(alpha),alpha);
- % ugh, must be just > foot_width/2!
- z1r=(w-3thin,height-(thin+hair)/cosd(alpha));
- penpos2(hair,alpha+45);
- z2=z1l+(1/4sqrt(2)*hair)*dir(alpha-45);
- penpos3(hair,alpha-45);
- z3=z1r+(1/4sqrt(2)*hair)*dir(alpha-135);
- z4=z1+kuulleke*dir(alpha-90);
-
- % ugh
- % the angle alpha may just let the hair penposes 3 and 4
- % stick-out to the right of the vertical...
-% penpos5(thick,0);
-% z5=(x1,foot_top);
- penpos5(whatever,0);
- x5r-x5l=x3r-x2l; x5r=x3r; y5=foot_top;
-
- save gamma; gamma=angle(length(z1r-z1),+2kuulleke);
- fill z2r{dir(alpha-gamma)}..z4..{dir(alpha+gamma)}z3l..z3r{down}..{down}z5r{left}..z5..{left}z5l{up}..{up}z2l..cycle;
- penlabels(1,2,3,4,5);
-
- draw_foot(x5);
-fet_endchar;
-
-fet_beginchar("Numeral 7", "7", "seven")
-% set_char_box(0, 5/2thick#+thin#, 0, height#);
- set_char_box(0, 5/2thick#+2thin#, 0, height#);
- save alpha; alpha=-180;
- penpos1(3/2thick,alpha);
- z1r=(thin,0);
- penpos2(hair,alpha+45);
- z2=z1l+(1/4sqrt(2)*hair)*dir(alpha-45);
- penpos3(hair,alpha-45);
- z3=z1r+(1/4sqrt(2)*hair)*dir(alpha-135);
- z4=z1+kuulleke*dir(alpha-90);
-
- save beta; beta=50;
- penpos5(thin,90+beta);
- z5=(w,h)+(1/2sqrt(2)*thin)*dir(-135);
-
- save gamma; gamma=angle(length(z1r-z1),+2kuulleke);
- save delta; delta=12;
- fill z2r{dir(alpha-gamma)}..z4..{dir(alpha+gamma)}z3l..z3r{dir(beta+delta)}..{dir(beta)}z5r..z5l{dir(180+beta)}..{dir(delta-90)}z2l..cycle;
- penlabels(1,2,3,4,5);
-
- clearxy;
- save alpha; alpha=-50;
- penpos1(2thin,90);
-% z1=(3/2thin,h-thick/2-thin);
- z1=(3/2thin,h-(thick+thin)/2);
- penpos3(thin,90+beta);
- z3=(w,h)+(1/2sqrt(2)*thin)*dir(-135);
- penpos2(3/4thick,90+alpha);
- x2-x1=x3-x2; y2=h-thick/2;
-
- penpos4(thin,0);
- z4l=(0,h-thin/2);
- penpos5(thin,0);
- z5l=(0,h/2+thin/2);
-
- penpos6(4thin,90);
- z6r=(thin,y1r+thin/2);
-
- fill z1r{dir(beta)}..{dir(alpha)}z2r..{dir(beta)}z3r..z3l{dir(180+beta)}..{dir(180+alpha)}z2l..{dir(180+beta)}z1l..z6l{down}..{down}z5r..z5l{up}..{up}z4l..z4r{down}..{down}z6r..{right}cycle;
- penlabels(1,2,3,4,5,6);
-
-
-fet_endchar;
-
-
-fet_endgroup("nummer")
diff --git a/mf/feta-nummer10.mf b/mf/feta-nummer10.mf
deleted file mode 100644
index 45d33f472b..0000000000
--- a/mf/feta-nummer10.mf
+++ /dev/null
@@ -1,14 +0,0 @@
-% feta-nummer10.mf
-% part of LilyPond's pretty-but-neat music font
-
-input autometric;
-fet_beginfont("feta-nummer", 10);
-
-mode_setup;
-
-input feta-nummer;
-
-fet_endfont("feta-nummer");
-
-end.
-
diff --git a/mf/feta-orator.mf b/mf/feta-orator.mf
new file mode 100644
index 0000000000..1448c8c2ac
--- /dev/null
+++ b/mf/feta-orator.mf
@@ -0,0 +1,121 @@
+% feta-orator.mf
+% part of LilyPond's pretty-but-neat music font
+
+fet_begingroup("orator")
+
+height#:=designsize;
+thick#:=height#/4;
+thin#:=thick#/4;
+hair#:=thin#/2;
+kuulleke#:=thin#;
+
+define_pixels(height,thick,thin,hair);
+foot_top#:=2thin#;
+foot_width#:=2thick#+thin#;
+define_pixels(foot_top,foot_width);
+define_pixels(kuulleke);
+
+def draw_foot(expr xpos) =
+ begingroup;
+ clearxy;
+ penpos1(thick,0);
+ z1=(xpos,foot_top);
+ penpos2(foot_width,0);
+ z2=(x1,0);
+ penpos3(hair,-90);
+ z3r=z2r;
+ penpos4(hair,90);
+ z4l=z2l;
+ z5=(x1,hair/2);
+ fill z1..{right}z1r{down}..{right}z3l..z3r{left}..z5..{left}z4l..z4r{right}..{up}z1l{right}..z1..cycle;
+ endgroup;
+enddef;
+
+fet_beginchar("Numeral 0", "0", "zero")
+ set_char_box(0, 3thick#, 0, height#);
+ penpos1(thin,90);
+ z1r=(w/2,h);
+ penpos2(thick,0);
+ z2r=(w,h/2);
+ penpos3(thin,-90);
+ z3r=(w/2,0);
+ penpos4(thick,180);
+ z4r=(0,h/2);
+ fill z1r..z2r..z3r..z4r..cycle;
+ unfill z1l..tension1.2..z2l..tension1.2..z3l..tension1.2..z4l..tension1.2..cycle;
+fet_endchar;
+
+fet_beginchar("Numeral 1", "1", "one")
+ set_char_box(0, 5/2thick#+thin#, 0, height#);
+ penpos1(thick,0);
+ z1=(thick+thick/2,height);
+ penpos2(hair,45);
+ z2=z1l+(1/4sqrt(2)*hair)*(1,-1);
+ penpos3(hair,-45);
+ z3=z1r+(1/4sqrt(2)*hair)*(-1,-1);
+ x4=x1; y4=y1-kuulleke;
+
+ penpos5(thick,0);
+ z5=(x1,foot_top);
+
+ z6=(0,h/2);
+ save alpha; alpha=angle(z1l-z6);
+ penpos7(thin,alpha-90);
+ z7l=z6;
+ penpos8(thin/cosd(alpha),-90);
+ z8l=z1l;
+ penpos9(hair,alpha-90);
+ z9r=z8r+(hair/cosd(alpha))*(0,-1);
+ fill z2r{(1,-1)}..z4..{(1,1)}z3l..z3r{down}..{down}z5r{left}..z5..{left}z5l{up}..{up}z2l..cycle;
+% fill z7l{dir(alpha)}..{dir(alpha)}z2l{down}..z9r{up}..z9l{dir(180+alpha)}..{dir(180+alpha)}z7r..cycle;
+ fill z7l{dir(alpha)}..{dir(alpha)}z1l..z2r..z9r{up}..z9l{dir(180+alpha)}..{dir(180+alpha)}z7r..cycle;
+ penlabels(7,8,9);
+
+ draw_foot(x1);
+fet_endchar;
+
+fet_beginchar("Numeral 4", "4", "four")
+ set_char_box(0, 5/2thick#+3thin#, 0, height#);
+ penpos1(3/2thick,0);
+ z1r=(w-3thin,height);
+ z2=(thin,1/4height+thin);
+ penpos3(hair,45);
+ z3=z1l+(1/4sqrt(2)*hair)*(1,-1);
+ penpos4(hair,-45);
+ z4=z1r+(1/4sqrt(2)*hair)*(-1,-1);
+ x5=x1; y5=y1-kuulleke;
+ save alpha; alpha=angle(z4r-z2);
+ penpos6(thin,-90);
+ z6l=z2;
+ penpos7(thin,-90);
+ y7=y6; x7=w-1/2thin;
+ penpos8(thin,-alpha);
+ z8r=z2;
+ fill z3r{(1,-1)}..z5..{(1,1)}z4l..z4r{dir(180+alpha)}..{dir(180+alpha)}z8r{right}..{right}z7l..z7r{left}..{left}z6r..z8l{dir(alpha)}..{up}z3l..cycle;
+ penlabels(1,2,3,4,5,6,7);
+
+ clearxy;
+ penpos1(thick/cosd(alpha),alpha);
+ % ugh, must be just > foot_width/2!
+ z1r=(w-3thin,height-(thin+hair)/cosd(alpha));
+ penpos2(hair,alpha+45);
+ z2=z1l+(1/4sqrt(2)*hair)*dir(alpha-45);
+ penpos3(hair,alpha-45);
+ z3=z1r+(1/4sqrt(2)*hair)*dir(alpha-135);
+ z4=z1+kuulleke*dir(alpha-90);
+
+ % ugh
+ % the angle alpha may just let the hair penposes 3 and 4
+ % stick-out to the right of the vertical...
+% penpos5(thick,0);
+% z5=(x1,foot_top);
+ penpos5(whatever,0);
+ x5r-x5l=x3r-x2l; x5r=x3r; y5=foot_top;
+
+ fill z2r{dir(alpha-45)}..z4..{dir(alpha+45)}z3l..z3r{down}..{down}z5r{left}..z5..{left}z5l{up}..{up}z2l..cycle;
+ penlabels(1,2,3,4,5);
+
+ draw_foot(x5);
+fet_endchar;
+
+fet_endgroup("orator")
diff --git a/mf/feta-orator10.mf b/mf/feta-orator10.mf
new file mode 100644
index 0000000000..c4c0ed0646
--- /dev/null
+++ b/mf/feta-orator10.mf
@@ -0,0 +1,14 @@
+% feta-orator20.mf
+% part of LilyPond's pretty-but-neat music font
+
+input autometric;
+fet_beginfont("feta-orator", 10);
+
+mode_setup;
+
+input feta-orator;
+
+fet_endfont("feta-orator");
+
+end.
+
diff --git a/tex/font-en-tja16.tex b/tex/font-en-tja16.tex
index d7c1698b2c..890c8c726f 100644
--- a/tex/font-en-tja16.tex
+++ b/tex/font-en-tja16.tex
@@ -1,5 +1,5 @@
% generated automatically by mf-to-table.py version 0.4
-% on Mon Oct 20 01:50:48 1997
+% on Mon Oct 20 23:14:01 1997
% Do not edit
% input from out/font-en-tja16.log
% name
@@ -51,9 +51,13 @@
\fetdef\pedalheel{36}
\fetdef\pedaltoe{37}
-% floogbars
+% flags
\fetdef\eighthflag{38}
\fetdef\deighthflag{39}
\fetdef\sixteenthflag{40}
\fetdef\dsixteenthflag{41}
+\fetdef\thirtysecondflag{42}
+\fetdef\dthirtysecondflag{43}
+\fetdef\sixtyfourthflag{44}
+\fetdef\dsixtyfourthflag{45}
diff --git a/tex/font-en-tja20.tex b/tex/font-en-tja20.tex
index 6e2125afd1..347abfb998 100644
--- a/tex/font-en-tja20.tex
+++ b/tex/font-en-tja20.tex
@@ -1,5 +1,5 @@
% generated automatically by mf-to-table.py version 0.4
-% on Mon Oct 20 01:50:55 1997
+% on Mon Oct 20 23:14:08 1997
% Do not edit
% input from out/font-en-tja20.log
% name
@@ -51,9 +51,13 @@
\fetdef\pedalheel{36}
\fetdef\pedaltoe{37}
-% floogbars
+% flags
\fetdef\eighthflag{38}
\fetdef\deighthflag{39}
\fetdef\sixteenthflag{40}
\fetdef\dsixteenthflag{41}
+\fetdef\thirtysecondflag{42}
+\fetdef\dthirtysecondflag{43}
+\fetdef\sixtyfourthflag{44}
+\fetdef\dsixtyfourthflag{45}