From 1f26019306244be29e4e9f2f0a0e2026f7a21e4c Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sun, 5 May 2002 19:06:06 +0200 Subject: [PATCH] release: 1.4.13 ============ * Backport feta-nummer and feta-din. * Oops. Included '|' rule in parser.yy twice. * Generate PDF for examples and manuals. * scripts/lilypond-book.py: Import from HEAD. * scripts/ly2dvi.py: fix by Mats. Try to import pre if available. * Documentation/user/lilypond-book.itely: * scripts/lilypond-book.py: Add options [no]indent, linewidth and noinline. * configure: Regenerate. * aclocal.m4: Add --enable/disable-optimising option. * Documentation/windows/setup.hint (requires): Add gsview dependency. * Documentation/windows/installing.texi: Suggest gswin32c (console program) for getting the version. Layout fixes. * Documentation/user/tutorial.itely (Running LilyPond): Backport windows doco fix. * Documentation/windows/gs-profile.sh: * Documentation/windows/gsview-profile.sh: Remove. * lilypond-indent.el: New file, from HEAD. Fixes lilypond-mode. 1.4.12. --- CHANGES | 26 + Documentation/GNUmakefile | 6 +- Documentation/index.texi | 12 +- Documentation/user/GNUmakefile | 4 +- Documentation/user/tutorial.itely | 20 +- Documentation/windows/gs-profile.sh | 0 Documentation/windows/gsview-profile.sh | 0 Documentation/windows/installing.texi | 23 +- Documentation/windows/setup.hint | 2 +- GNUmakefile.in | 10 +- INSTALL.txt | 75 ++- VERSION | 4 +- aclocal.m4 | 4 + buildscripts/GNUmakefile | 0 buildscripts/clean-fonts.sh | 0 buildscripts/help2man.pl | 0 buildscripts/lilypond-login.sh | 10 +- buildscripts/lilypond-profile.sh | 3 +- buildscripts/mf-to-table.py | 0 buildscripts/mf-to-xpms.sh | 0 buildscripts/mutopia-index.py | 1 + buildscripts/ps-to-gifs.sh | 0 buildscripts/ps-to-pfa.py | 0 buildscripts/ps-to-pngs.sh | 0 configure | 285 ++++----- debian/postinst | 0 debian/postrm | 0 debian/rules | 0 lily/parser.yy | 6 - lily/symbol-cache.cc | 77 --- ly/dynamic-scripts.ly | 2 +- make/lilypond-vars.make | 3 +- make/ly-rules.make | 5 + make/mutopia-targets.make | 2 +- make/mutopia-vars.make | 1 + make/out/lilypond.lsm | 8 +- make/out/lilypond.redhat.spec | 4 +- make/out/lilypond.suse.spec | 4 +- mf/GNUmakefile | 15 +- mf/cmbase.mf | 697 -------------------- mf/feta-din-code.mf | 814 ++++++++++++++++++++---- mf/feta-din.mf | 14 +- mf/feta-nummer-code.mf | 274 ++++++-- mf/feta-nummer.mf | 20 +- mf/feta-nummer10.mf | 2 +- mf/feta-nummer12.mf | 2 + mf/feta-nummer16.mf | 2 + mf/feta-nummer20.mf | 2 + mf/feta-nummer23.mf | 2 + mf/feta-nummer26.mf | 2 + scripts/lilypond-book.py | 144 +++-- scripts/ly2dvi.py | 13 + stepmake/AUTHORS.txt | 24 - stepmake/INSTALL.txt | 174 ----- stepmake/bin/config.guess | 0 stepmake/bin/config.sub | 0 stepmake/bin/packagepython.py | 42 +- stepmake/make/out/stepmake.lsm | 2 +- 58 files changed, 1376 insertions(+), 1466 deletions(-) delete mode 100644 Documentation/windows/gs-profile.sh delete mode 100644 Documentation/windows/gsview-profile.sh mode change 100755 => 100644 buildscripts/GNUmakefile mode change 100755 => 100644 buildscripts/clean-fonts.sh mode change 100755 => 100644 buildscripts/help2man.pl mode change 100755 => 100644 buildscripts/lilypond-login.sh mode change 100755 => 100644 buildscripts/lilypond-profile.sh mode change 100755 => 100644 buildscripts/mf-to-table.py mode change 100755 => 100644 buildscripts/mf-to-xpms.sh mode change 100755 => 100644 buildscripts/mutopia-index.py mode change 100755 => 100644 buildscripts/ps-to-gifs.sh mode change 100755 => 100644 buildscripts/ps-to-pfa.py mode change 100755 => 100644 buildscripts/ps-to-pngs.sh mode change 100755 => 100644 debian/postinst mode change 100755 => 100644 debian/postrm mode change 100755 => 100644 debian/rules delete mode 100644 mf/cmbase.mf create mode 100644 mf/feta-nummer12.mf create mode 100644 mf/feta-nummer16.mf create mode 100644 mf/feta-nummer20.mf create mode 100644 mf/feta-nummer23.mf create mode 100644 mf/feta-nummer26.mf delete mode 100644 stepmake/AUTHORS.txt delete mode 100644 stepmake/INSTALL.txt mode change 100644 => 100755 stepmake/bin/config.guess mode change 100644 => 100755 stepmake/bin/config.sub diff --git a/CHANGES b/CHANGES index c48e091365..e8261e6be5 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,32 @@ lilypond_1_4 ============ +* Backport feta-nummer and feta-din. + +* Oops. Included '|' rule in parser.yy twice. + +* Generate PDF for examples and manuals. + +* scripts/lilypond-book.py: Import from HEAD. + +* scripts/ly2dvi.py: fix by Mats. Try to import pre if available. + +* Documentation/user/lilypond-book.itely: +* scripts/lilypond-book.py: Add options [no]indent, linewidth and + noinline. + +* configure: Regenerate. + +* aclocal.m4: Add --enable/disable-optimising option. + +* Documentation/windows/setup.hint (requires): Add gsview dependency. + +* Documentation/windows/installing.texi: Suggest gswin32c (console +program) for getting the version. Layout fixes. + +* Documentation/user/tutorial.itely (Running LilyPond): Backport +windows doco fix. + * Documentation/windows/gs-profile.sh: * Documentation/windows/gsview-profile.sh: Remove. diff --git a/Documentation/GNUmakefile b/Documentation/GNUmakefile index 0dd22f2f2e..40462e49fb 100644 --- a/Documentation/GNUmakefile +++ b/Documentation/GNUmakefile @@ -16,7 +16,11 @@ test-reg: rm -f out-www/regression-test.html out-www/regression-test.texi $(MAKE) out=www out-www/regression-test.html -local-WWW: copy-for-me txt-to-html $(outdir)/regression-test.ps.gz $(outdir)/regression-test.html footify +PS_FILES=$(outdir)/regression-test.ps +PDF_FILES=$(PS_FILES:.ps=.pdf) +PS_GZ_FILES=$(PS_FILES:.ps=.ps.gz) + +local-WWW: copy-for-me txt-to-html $(outdir)/regression-test.html footify $(PDF_FILES) $(PS_GZ_FILES) copy-for-me: $(foreach a, $(README_TOP_FILES), cp ../$(a) $(outdir)/$(a).txt && ) true diff --git a/Documentation/index.texi b/Documentation/index.texi index 288aa16015..c445f14b7e 100644 --- a/Documentation/index.texi +++ b/Documentation/index.texi @@ -90,13 +90,17 @@ the mailing lists. The reference manual. @item @uref{../user/out-www/lilypond/lilypond.html,lilypond} The complete -user manual, (in @uref{../user/out-www/lilypond.ps.gz,PostScript}). This +user manual, (in @uref{../user/out-www/lilypond.ps.gz,PostScript} +and in @uref{../user/out-www/lilypond.pdf,PDF}). This manual contains among others the tutorial, the reference manual. @c glossary maybe for new users? @item @uref{../user/out-www/glossary.html,glossary} A glossary of musical terms, including translations. (in -@uref{../user/out-www/glossary.ps.gz,Postscript}) Read this if you're not +@uref{../user/out-www/glossary.ps.gz,Postscript} +and +@uref{../user/out-www/glossary.pdf,PDF} +) Read this if you're not familiar with English terms for notation. @item @uref{../user/out-www/lilypond-internals/lilypond-internals.html,lilypond-internals} @@ -118,7 +122,9 @@ want to fine-tune output, you need the information in this document. @itemize @bullet @item @uref{../out-www/regression-test.html,regression-test} A large document that tests all kinds of features (in -@uref{../out-www/regression-test.ps.gz,Postscript}). +@uref{../out-www/regression-test.ps.gz,Postscript} +and in +@uref{../out-www/regression-test.pdf,PDF}). @item @uref{http://www2.iro.umontreal.ca/~pinard/po/registry.cgi?domain=lilypond">Translations,lilypond textual domain diff --git a/Documentation/user/GNUmakefile b/Documentation/user/GNUmakefile index 566c3b2c1c..71e1de2aa1 100644 --- a/Documentation/user/GNUmakefile +++ b/Documentation/user/GNUmakefile @@ -13,7 +13,7 @@ EXTRA_DIST_FILES= $(LATEX_FILES) $(wildcard *.itexi *.itely) HTML_FILES = $(addprefix $(outdir)/, $(TELY_FILES:.tely=.html)) PS_FILES = $(DVI_FILES:.dvi=.ps) - +PDF_FILES=$(DVI_FILES:.dvi=.pdf) PS_GZ_FILES= $(addsuffix .gz, $(PS_FILES)) INFO_FILES = $(addprefix $(outdir)/, lilypond.info lilypond-internals.info) @@ -85,7 +85,7 @@ deep-symlinks: endif -local-WWW: $(HTML_FILES) $(datafiles) $(PS_GZ_FILES) $(DEEP_HTML_FILES) info-dir +local-WWW: $(HTML_FILES) $(datafiles) $(PDF_FILES) $(PS_GZ_FILES) $(DEEP_HTML_FILES) info-dir local-WWW-clean: deep-WWW-clean diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index bbc3d20133..f4bd519369 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -831,12 +831,20 @@ at @uref{http://www.ghostscript.com}. @cindex PostScript @unnumberedsubsec Windows users -Windows users start the terminal by clicking on the LilyPond icon. -Notepad is sufficient for editing the LilyPond file. Viewing the PS file -can be done with @code{gsview32 test.ps}. Viewing DVI files can be done -with @code{yap test.dvi}. The "print" button in Yap will print files. -You can also print from the command line by executing @code{gsview32 /s -test.ps} +Windows users start the terminal by clicking on the LilyPond or Cygwin +icon. Notepad is sufficient for editing the LilyPond file. Viewing +the PS file can be done with: +@quotation +@example +@code{gsview32 test.ps} +@end example +@end quotation +You can also print from the command line by executing: +@quotation +@example +@code{gsview32 /s test.ps} +@end example +@end quotation @node The first real tune diff --git a/Documentation/windows/gs-profile.sh b/Documentation/windows/gs-profile.sh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Documentation/windows/gsview-profile.sh b/Documentation/windows/gsview-profile.sh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Documentation/windows/installing.texi b/Documentation/windows/installing.texi index 232fd67d4e..2d507514b2 100644 --- a/Documentation/windows/installing.texi +++ b/Documentation/windows/installing.texi @@ -63,29 +63,37 @@ Options: @end quotation Then, prepare a file called @file{foo.ly}, by issuing +@quotation @example notepad foo.ly @end example +@end quotation Enter the following into the file +@quotation @example \score @{ \notes @{ c4 ( ) c4 @} @} @end example +@end quotation Close the file and save it. Run the following command a few times (at least three times) until it says @code{PS output to `foo.ps', DVI output to `foo.dvi'}. +@quotation @example ly2dvi -P foo @end example +@end quotation You can now view the file using the following command +@quotation @example gsview32 foo.ps @end example +@end quotation If this works, then you can head to the @uref{../../user/out-www/lilypond/Tutorial.html,Tutorial} to start using @@ -123,31 +131,27 @@ bugreport. A bugreport includes system) @item All version numbers of relevant software you run. Specifically, we want to see the output of the following commands: +@quotation @example python --version lilypond --version ly2dvi --version - gswin32 --version + gswin32c --version @end example +@end quotation @item If ly2dvi fails, then please run it as follows and include the output in the +@quotation @example ly2dvi --verbose MY-FILE @end example +@end quotation @end itemize You can also check out @uref{http://lilypond.org/wiki/?TroubleshootingWindows} for more instructions on how to make a bug report. - -@c -@c IGNORE. -@c -@c -@c -@c -@c @ignore @subsection Additional software @@ -171,7 +175,6 @@ part of Cygwin and much more robust for use with LilyPond than MiKTeX. See @file{/usr/doc/Cygwin/tetex-beta-20001218.README} and @file{/usr/doc/Cygwin/texmf-20000804-2.README} for details. - @item Ghostview. You can use GSView-2.6. This old package has two advantages. It has diff --git a/Documentation/windows/setup.hint b/Documentation/windows/setup.hint index 3be206b333..f77436c562 100644 --- a/Documentation/windows/setup.hint +++ b/Documentation/windows/setup.hint @@ -1,6 +1,6 @@ sdesc: "A program for printing sheet music" category: Publishing -requires: ash bash guile python tetex-beta texmf-tiny +requires: ash bash guile gsview python tetex-beta texmf-tiny #suggests: rxvt xdvi texmf-base ldesc: "A program for printing sheet music. LilyPond is a music typesetter. It produces beautiful sheet music diff --git a/GNUmakefile.in b/GNUmakefile.in index 36f11dfcf5..1c8931dd27 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -41,10 +41,13 @@ fonts: doc: lily fonts $(MAKE) -C Documentation -web-doc: +web-doc: pfa-fonts $(MAKE) out=www -C Documentation WWW $(MAKE) footify +pfa-fonts: + $(MAKE) MAKE_PFA_FILES=1 -C mf + # KPATHSEA=0: Hack for compiling without kpathsea -- not recommended my_tfm_path = $(TFM_PATH) /tmp /tmp /tmp /tmp /tmp /tmp @@ -60,12 +63,12 @@ TOP_HTMLS = index.html short-examples.html long-examples.html index: web-doc -short-examples: +short-examples: pfa-fonts $(MAKE) out=www -C input WWW $(PYTHON) $(buildscript-dir)/mutopia-index.py -o short-examples.html input/ -long-examples: +long-examples: pfa-fonts $(MAKE) out=www -C mutopia WWW $(PYTHON) $(buildscript-dir)/mutopia-index.py -o long-examples.html mutopia/ @@ -86,6 +89,7 @@ top-web: -not -name '*.pg' -not -name '*.tmp' -not -name '*.toc' \ -not -name '*.fns' -not -name '*.cps' -not -name '*.nexi' \ -not -name '*.texi' -not -name '*.texidoc' -not -name '*.tp' \ + -not -name '*.pdfps' -not -name '*.eps.bbox' \ -not -name '*.log' -not -name 'out-www' -not -name '*.dep' \ > $(outdir)/weblist ls *.png *.html >> $(outdir)/weblist diff --git a/INSTALL.txt b/INSTALL.txt index c82132525f..751393665d 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -15,7 +15,7 @@ INSTALL - compiling and installing GNU LilyPond Compilation Running requirements Website requirements - Building LilyPond + Building LilyPond Configuring for multiple platforms Emacs mode Compiling for distributions @@ -25,6 +25,7 @@ INSTALL - compiling and installing GNU LilyPond Slackware Mandrake Debian GNU/Linux + MacOS X Problems Debian GNU/Linux unstable gcc-3.0 Linux-2.4.0, Guile-1.4 -with-threads @@ -94,10 +95,10 @@ Upgrading xdelta (ftp://ftp.xcf.berkeley.edu/pub/xdelta/). This is much safer than using patches, and is the recommended way. - The following command produces `lilypond-1.4.3.tar.gz' from - `lilypond-1.4.2.tar.gz' identical (up to compression dates) to the - .3 on the FTP site. - xdelta patch lilypond-1.4.2-1.4.3.xd lilypond-1.4.2.tar.gz + The following command produces `lilypond-1.4.11.tar.gz' from + `lilypond-1.4.10.tar.gz' identical (up to compression dates) to + the .11 on the FTP site. + xdelta patch lilypond-1.4.10-1.4.11.xd lilypond-1.4.10.tar.gz Requirements ============ @@ -110,7 +111,8 @@ Compilation * A reasonably new C++ compiler: EGCS 1.1, GCC 2.95.2 or newer. Check out the gcc site (ftp://ftp.gnu.org/gnu/gcc/). - * Python 1.5, Check out the python website (http://www.python.org). + * Python 1.5 or 2.1 Check out the python website + (http://www.python.org/). * GUILE 1.3.4 or newer, check out the GUILE webpage (http://www.gnu.org/software/guile/guile.html). Version 1.4 is @@ -224,8 +226,8 @@ issuing (ftp://texinfo.org/texinfo/pretests/texinfo-4.0b.tar.gz) or texinfo-4.0b (ftp://alpha.gnu.org/gnu/texinfo-4.0b.tar.gz) -Building LilyPond -================== +Building LilyPond +================= to install GNU LilyPond, type: gunzip -c lilypond-x.y.z | tar xf - @@ -320,10 +322,10 @@ LinuxPPC SuSE ---- - Some SUSE RPMS should available from + Some SuSE RPMS should available from `ftp://ftp.lilypond.org/pub/LilyPond/binaries/SuSE'. - You can also compile a RPM for SUSE yourself. A spec file is in + You can also compile a RPM for SuSE yourself. A spec file is in `make/out/lilypond.suse.spec', see the instructions for building the Red Hat RPM. @@ -337,7 +339,7 @@ Slackware No precompiled packages for Slackware are available. Problems have been reported with Slackware 7.0; apparently, it ships -with a faulty compiler. Do not compile LilyPond with -O2 on this +with a faulty compiler. Do not compile LilyPond with -O2 on this platform. Mandrake @@ -394,12 +396,12 @@ the .deb by doing, for example: $ su - root # dpkg --purge lilypond lilypond1.3 # exit - $ tar xzf lilypond-1.4.3.tar.gz - $ cd lilypond-1.4.3 - $ dch -p -v 1.4.3-0.local.1 "Local build." + $ tar xzf lilypond-1.4.11.tar.gz + $ cd lilypond-1.4.11 + $ dch -p -v 1.4.11-0.local.1 "Local build." $ debuild -B $ su - root - # dpkg -i ../lilypond_1.4.3*.deb + # dpkg -i ../lilypond_1.4.11*.deb # exit $ @@ -427,7 +429,7 @@ in addition to the those needed for running: * gs, netpbm - * pnmtopng (only in Debian 2.2; pnmtopng has been merged with netpbm + * pnmtopng (only in Debian 2.2: pnmtopng has been merged with netpbm in Debian testing/unstable.) Most of these are listed on the `Build-Depends' line in the @@ -442,11 +444,11 @@ by running \`apt-get' as root before building the package: tetex-extra flex bison texinfo groff gs \ netpbm pnmtopng m4 gettext - For Debian in development ("unstable", the future 2.3 or 3.0): + For Debian in development ("unstable", the future Debian 3.0): apt-get install binutils cpp gcc libc6-dev \ g++ libstdc++2.10-dev \ - python-base libguile-dev tetex-bin libkpathsea-dev \ + python libguile-dev tetex-bin libkpathsea-dev \ tetex-extra flex bison texinfo bibtex2html groff gs \ netpbm m4 gettext @@ -455,6 +457,43 @@ interfere with your build, you may want to do this before the build too: dpkg --purge lilypond lilypond1.3 +MacOS X +------- + + LilyPond has been built on Darwin, to be precise, on: + Darwin buoux.aspiratie.nl 5.3 Darwin Kernel Version 5.3: Thu Jan 24 + 22:06:02 PST 2002; root:xnu/xnu-201.19.obj~1/RELEASE_PPC Power Macintosh powerpc + + using: + + Apple Computer, Inc. version gcc-932.1, based on gcc version 2.95.2 19991024 (release) + + To make sure you have all packages needed to build LilyPond +installed, run as root: + + apt-get install bash python guile debianutils flex bison texinfo \ + ghostscript6 netpbm m4 gettext + + and: + + fink install tetex + + For more information about `apt-get' and `fink', see +fink.sourceforge.net (http://fink.sf.net). + + Then, configure, patch, make and install LilyPond using these +commands: + + CC="cc -I/sw/include" CXX="c++ -I/sw/include" LDFLAGS="-L/sw/lib" \ + ./configure --prefix=/sw + make -C lily out/parser.hh out/parser.cc out/config.h + patch -p0 < darwin.patch + make -C lily out/parser.o + make DEPENDENCIES_OUTPUT=/dev/null all + make install + + For installing, you must be root, of course. + Problems ======== diff --git a/VERSION b/VERSION index e9a8965cf7..b32adc53a5 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=4 -PATCH_LEVEL=12 -MY_PATCH_LEVEL=jcn2 +PATCH_LEVEL=13 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/aclocal.m4 b/aclocal.m4 index 6ac10571c0..082312d741 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -33,6 +33,10 @@ AC_DEFUN(AC_STEPMAKE_COMPILE, [ [ --enable-debugging compile with debugging info. Default: on], [debug_b=$enableval]) + AC_ARG_ENABLE(optimising, + [ --enable-optimising compile with optimising. Default: on], + [optimise_b=$enableval]) + AC_ARG_ENABLE(profiling, [ --enable-profiling compile with gprof support. Default: off], [profile_b=$enableval]) diff --git a/buildscripts/GNUmakefile b/buildscripts/GNUmakefile old mode 100755 new mode 100644 diff --git a/buildscripts/clean-fonts.sh b/buildscripts/clean-fonts.sh old mode 100755 new mode 100644 diff --git a/buildscripts/help2man.pl b/buildscripts/help2man.pl old mode 100755 new mode 100644 diff --git a/buildscripts/lilypond-login.sh b/buildscripts/lilypond-login.sh old mode 100755 new mode 100644 index ec2dac64df..ded4d57a6d --- a/buildscripts/lilypond-login.sh +++ b/buildscripts/lilypond-login.sh @@ -9,7 +9,6 @@ set datadir="@datadir@" setenv GS_FONTPATH "$datadir/afm:@datadir@/pfa:$GS_FONTPATH" setenv GS_LIB "$datadir/ps:$GS_LIB" - # setenv LILYPONDPREFIX "$datadir" # bit silly. for ly2dvi, overrules compiled-in datadir... @@ -29,8 +28,15 @@ endif if ($?TFMFONTS) then setenv TFMFONTS "$datadir/tfm:$TFMFONTS" else - setenv TFMFONTS "$datadir/tfm:" + setenv TFMFONTS "$datadir/tfm::" endif +if ($?DVIPSHEADERS) then + setenv DVIPSHEADERS "$datadir/pfa:$DVIPSHEADERS" +else + setenv DVIPSHEADERS "$datadir/pfa::" +endif + + diff --git a/buildscripts/lilypond-profile.sh b/buildscripts/lilypond-profile.sh old mode 100755 new mode 100644 index e23206fe27..c243d0f66a --- a/buildscripts/lilypond-profile.sh +++ b/buildscripts/lilypond-profile.sh @@ -27,11 +27,12 @@ GS_LIB="$datadir/ps:"${GS_LIB:=""} MFINPUTS="$datadir/mf:"${MFINPUTS:=":"} TEXINPUTS="$datadir/tex:$datadir/ps:"${TEXINPUTS:=":"} TFMFONTS="$datadir/tfm:"${TFMFONTS:=":"} +DVIPSHEADERS="$datadir/pfa:"${DVIPSHEADERS:=":"} # LILYPONDPREFIX="$datadir" # export LILYPONDPREFIX -export MFINPUTS TEXINPUTS TFMFONTS GS_LIB GS_FONTPATH +export DVIPSHEADERS MFINPUTS TEXINPUTS TFMFONTS GS_LIB GS_FONTPATH diff --git a/buildscripts/mf-to-table.py b/buildscripts/mf-to-table.py old mode 100755 new mode 100644 diff --git a/buildscripts/mf-to-xpms.sh b/buildscripts/mf-to-xpms.sh old mode 100755 new mode 100644 diff --git a/buildscripts/mutopia-index.py b/buildscripts/mutopia-index.py old mode 100755 new mode 100644 index 794e59929e..999d0af00c --- a/buildscripts/mutopia-index.py +++ b/buildscripts/mutopia-index.py @@ -163,6 +163,7 @@ def gen_list(inputs, filename): break list_item(f, 'See a picture of page %d' % pageno, 'png') list_item(base + '.ps.gz', 'Print ', 'gzipped PostScript') + list_item(base + '.pdf', 'Print ', 'PDF') list_item(base + '.midi', 'Listen', 'MIDI') list.write ("\n"); diff --git a/buildscripts/ps-to-gifs.sh b/buildscripts/ps-to-gifs.sh old mode 100755 new mode 100644 diff --git a/buildscripts/ps-to-pfa.py b/buildscripts/ps-to-pfa.py old mode 100755 new mode 100644 diff --git a/buildscripts/ps-to-pngs.sh b/buildscripts/ps-to-pngs.sh old mode 100755 new mode 100644 diff --git a/configure b/configure index 0e09423923..c3c59f65fd 100755 --- a/configure +++ b/configure @@ -71,6 +71,8 @@ ac_help="$ac_help --enable-checking set runtime checks (assert calls). Default: on" ac_help="$ac_help --enable-debugging compile with debugging info. Default: on" +ac_help="$ac_help + --enable-optimising compile with optimising. Default: on" ac_help="$ac_help --enable-profiling compile with gprof support. Default: off" ac_help="$ac_help @@ -626,12 +628,12 @@ fi fi echo $ac_n "checking Package""... $ac_c" 1>&6 -echo "configure:630: checking Package" >&5 +echo "configure:632: checking Package" >&5 if test "x$PACKAGE" = "xSTEPMAKE"; then echo "$ac_t""Stepmake package!" 1>&6 echo $ac_n "checking builddir""... $ac_c" 1>&6 -echo "configure:635: checking builddir" >&5 +echo "configure:637: checking builddir" >&5 if test "$srcdir" = "."; then builddir=. else @@ -669,7 +671,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. echo "$ac_t""$PACKAGE" 1>&6 echo $ac_n "checking builddir""... $ac_c" 1>&6 -echo "configure:673: checking builddir" >&5 +echo "configure:675: checking builddir" >&5 if test "$srcdir" = "."; then builddir=. srcdir_build=no @@ -689,7 +691,7 @@ echo "configure:673: checking builddir" >&5 fi echo $ac_n "checking for stepmake""... $ac_c" 1>&6 -echo "configure:693: checking for stepmake" >&5 +echo "configure:695: checking for stepmake" >&5 # Check for installed stepmake if test -d $stepmake; then echo "$ac_t""$stepmake" 1>&6 @@ -811,7 +813,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:815: checking host system type" >&5 +echo "configure:817: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -836,7 +838,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:840: checking for $ac_word" >&5 +echo "configure:842: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -871,7 +873,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:875: checking for $ac_word" >&5 +echo "configure:877: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -908,7 +910,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:912: checking for $ac_word" >&5 +echo "configure:914: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -943,7 +945,7 @@ test -n "$TAR" || TAR="error" # Extract the first word of "bash", so it can be a program name with args. set dummy bash; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:947: checking for $ac_word" >&5 +echo "configure:949: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -983,7 +985,7 @@ fi # Extract the first word of "bash", so it can be a program name with args. set dummy bash; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:987: checking for $ac_word" >&5 +echo "configure:989: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_SHELL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1020,7 +1022,7 @@ fi # Extract the first word of "bash", so it can be a program name with args. set dummy bash; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1024: checking for $ac_word" >&5 +echo "configure:1026: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1061,7 +1063,7 @@ fi # Extract the first word of "${PYTHON:-python}", so it can be a program name with args. set dummy ${PYTHON:-python}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1065: checking for $ac_word" >&5 +echo "configure:1067: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1227,6 +1229,13 @@ if test "${enable_debugging+set}" = set; then fi + # Check whether --enable-optimising or --disable-optimising was given. +if test "${enable_optimising+set}" = set; then + enableval="$enable_optimising" + optimise_b=$enableval +fi + + # Check whether --enable-profiling or --disable-profiling was given. if test "${enable_profiling+set}" = set; then enableval="$enable_profiling" @@ -1262,7 +1271,7 @@ EOF # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1266: checking for $ac_word" >&5 +echo "configure:1275: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1292,7 +1301,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1296: checking for $ac_word" >&5 +echo "configure:1305: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1343,7 +1352,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1347: checking for $ac_word" >&5 +echo "configure:1356: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1375,7 +1384,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1379: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1388: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1386,12 +1395,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 1390 "configure" +#line 1399 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1395: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1417,12 +1426,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1421: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1430: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1426: checking whether we are using GNU C" >&5 +echo "configure:1435: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1431,7 +1440,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1435: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1444: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1450,7 +1459,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1454: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1463: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1488,7 +1497,7 @@ fi CPPFLAGS=${CPPFLAGS:-""} echo $ac_n "checking for IEEE-conformance compiler flags""... $ac_c" 1>&6 -echo "configure:1492: checking for IEEE-conformance compiler flags" >&5 +echo "configure:1501: checking for IEEE-conformance compiler flags" >&5 save_cflags="$CFLAGS" case "$host" in alpha*-*-*) @@ -1510,7 +1519,7 @@ echo "configure:1492: checking for IEEE-conformance compiler flags" >&5 # AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h) echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1514: checking how to run the C preprocessor" >&5 +echo "configure:1523: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1525,13 +1534,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1535: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1544: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1542,13 +1551,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1552: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1561: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1559,13 +1568,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1569: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1578: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1593,17 +1602,17 @@ for ac_hdr in assert.h sys/stat.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1597: checking for $ac_hdr" >&5 +echo "configure:1606: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1607: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1616: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1630,12 +1639,12 @@ fi done echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6 -echo "configure:1634: checking whether stat file-mode macros are broken" >&5 +echo "configure:1643: checking whether stat file-mode macros are broken" >&5 if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1693,7 +1702,7 @@ EOF echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 -echo "configure:1697: checking how to run the C++ preprocessor" >&5 +echo "configure:1706: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1706,12 +1715,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1715: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1724: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1748,7 +1757,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1752: checking for $ac_word" >&5 +echo "configure:1761: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1780,7 +1789,7 @@ test -n "$CXX" || CXX="gcc" echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1784: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 +echo "configure:1793: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1791,12 +1800,12 @@ cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext << EOF -#line 1795 "configure" +#line 1804 "configure" #include "confdefs.h" int main(){return(0);} EOF -if { (eval echo configure:1800: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1822,12 +1831,12 @@ if test $ac_cv_prog_cxx_works = no; then { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1826: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1835: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 -echo "configure:1831: checking whether we are using GNU C++" >&5 +echo "configure:1840: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1836,7 +1845,7 @@ else yes; #endif EOF -if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1840: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no @@ -1855,7 +1864,7 @@ ac_test_CXXFLAGS="${CXXFLAGS+set}" ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 -echo "configure:1859: checking whether ${CXX-g++} accepts -g" >&5 +echo "configure:1868: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1886,71 +1895,20 @@ else fi fi -for ac_declaration in \ - ''\ - '#include ' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat > conftest.$ac_ext < -$ac_declaration -int main() { -exit (42); -; return 0; } -EOF -if { (eval echo configure:1908: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - continue -fi -rm -f conftest* - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - break -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -done -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - - ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6 -echo "configure:1944: checking for FlexLexer.h" >&5 +echo "configure:1902: checking for FlexLexer.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1954: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1912: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1987,7 +1945,7 @@ fi echo $ac_n "checking "g++ version"""... $ac_c" 1>&6 -echo "configure:1991: checking "g++ version"" >&5 +echo "configure:1949: checking "g++ version"" >&5 cxx_version=`$CXX --version` echo "$ac_t"""$cxx_version"" 1>&6 # urg, egcs: how to check for egcs >= 1.1? @@ -2005,12 +1963,12 @@ echo "configure:1991: checking "g++ version"" >&5 echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6 -echo "configure:2009: checking whether explicit instantiation is needed" >&5 +echo "configure:1967: checking whether explicit instantiation is needed" >&5 if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < struct foo { static int baz; }; @@ -2020,7 +1978,7 @@ int main() { return foo::baz; ; return 0; } EOF -if { (eval echo configure:2024: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lily_cv_need_explicit_instantiation=no else @@ -2047,7 +2005,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2051: checking for $ac_word" >&5 +echo "configure:2009: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2090,7 +2048,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2094: checking for $ac_word" >&5 +echo "configure:2052: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2125,7 +2083,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2129: checking for $ac_word" >&5 +echo "configure:2087: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2193,7 +2151,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2197: checking for $ac_word" >&5 +echo "configure:2155: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2226,7 +2184,7 @@ test -n "$AR" || AR="error" # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2230: checking for $ac_word" >&5 +echo "configure:2188: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2281,7 +2239,7 @@ fi echo $ac_n "checking language""... $ac_c" 1>&6 -echo "configure:2285: checking language" >&5 +echo "configure:2243: checking language" >&5 case "$language" in En* | en* | Am* | am* | US* | us*) lang=English;; @@ -2317,7 +2275,7 @@ EOF echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 -echo "configure:2321: checking for gettext in -lintl" >&5 +echo "configure:2279: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2325,7 +2283,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2369,12 +2327,12 @@ fi for ac_func in gettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2373: checking for $ac_func" >&5 +echo "configure:2331: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2432,7 +2390,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2436: checking for $ac_word" >&5 +echo "configure:2394: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2463,7 +2421,7 @@ done test -n "$MSGFMT" || MSGFMT="\$(SHELL) \$(step-bindir)/fake-msgfmt.sh " echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&6 -echo "configure:2467: checking whether msgfmt accepts -o" >&5 +echo "configure:2425: checking whether msgfmt accepts -o" >&5 msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`" if test "$msgfmt_output" = ""; then echo "$ac_t""yes" 1>&6 @@ -2491,7 +2449,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2495: checking for $ac_word" >&5 +echo "configure:2453: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_METAFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2527,7 +2485,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2531: checking for $ac_word" >&5 +echo "configure:2489: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2565,7 +2523,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2569: checking for $ac_word" >&5 +echo "configure:2527: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_METAPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2601,7 +2559,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2605: checking for $ac_word" >&5 +echo "configure:2563: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2640,7 +2598,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2644: checking for $ac_word" >&5 +echo "configure:2602: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_INIMETAFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2676,7 +2634,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2680: checking for $ac_word" >&5 +echo "configure:2638: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_INIMFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2714,7 +2672,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2718: checking for $ac_word" >&5 +echo "configure:2676: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_INIMETAPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2750,7 +2708,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2754: checking for $ac_word" >&5 +echo "configure:2712: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_INIMPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2784,7 +2742,7 @@ test -n "$INIMPOST" || INIMPOST="-echo no inimp or inimpost" fi echo $ac_n "checking for working metafont mode""... $ac_c" 1>&6 -echo "configure:2788: checking for working metafont mode" >&5 +echo "configure:2746: checking for working metafont mode" >&5 modelist='ljfour lj4 lj3 lj2 ljet laserjet' for MFMODE in $modelist; do $METAFONT "\mode:=$MFMODE; mode_setup; end." > /dev/null 2>&1 @@ -2795,7 +2753,7 @@ echo "configure:2788: checking for working metafont mode" >&5 echo "$ac_t""$MFMODE" 1>&6 echo $ac_n "checking for mfplain.mp""... $ac_c" 1>&6 -echo "configure:2799: checking for mfplain.mp" >&5 +echo "configure:2757: checking for mfplain.mp" >&5 # # For now let people define these in their environments # @@ -2803,7 +2761,7 @@ echo "configure:2799: checking for mfplain.mp" >&5 echo "$ac_t""$MFPLAIN_MP" 1>&6 echo $ac_n "checking for inimetapost flags""... $ac_c" 1>&6 -echo "configure:2807: checking for inimetapost flags" >&5 +echo "configure:2765: checking for inimetapost flags" >&5 if test ${INIMETAPOST} = "inimp" ; then : ${INIMETAPOST_FLAGS=''} else @@ -2836,7 +2794,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2840: checking for $ac_word" >&5 +echo "configure:2798: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_KPSEWHICH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2867,7 +2825,7 @@ done test -n "$KPSEWHICH" || KPSEWHICH="no" echo $ac_n "checking for tfm path""... $ac_c" 1>&6 -echo "configure:2871: checking for tfm path" >&5 +echo "configure:2829: checking for tfm path" >&5 TFM_FONTS="cmr msam" @@ -2895,13 +2853,13 @@ echo "configure:2871: checking for tfm path" >&5 ## First, let's just see if we can find Guile at all. echo $ac_n "checking "for guile-config"""... $ac_c" 1>&6 -echo "configure:2899: checking "for guile-config"" >&5 +echo "configure:2857: checking "for guile-config"" >&5 for guile_config in guile-config $target-guile-config $build-guile-config; do echo "$ac_t"""$guile_config"" 1>&6 if ! $guile_config --version > /dev/null 2>&1 ; then echo "configure: warning: "cannot execute $guile_config"" 1>&2 echo $ac_n "checking "if we are cross compiling"""... $ac_c" 1>&6 -echo "configure:2905: checking "if we are cross compiling"" >&5 +echo "configure:2863: checking "if we are cross compiling"" >&5 guile_config=error else break @@ -2912,7 +2870,7 @@ echo "configure:2905: checking "if we are cross compiling"" >&5 exit 1 fi echo $ac_n "checking "Guile version"""... $ac_c" 1>&6 -echo "configure:2916: checking "Guile version"" >&5 +echo "configure:2874: checking "Guile version"" >&5 need_guile_version="1.3.4" need_guile_version_numeric=100304 guile_version=`$guile_config --version 2>&1 | awk '{print $NF}'` @@ -2933,7 +2891,7 @@ else {last =0}} ## The GUILE_FLAGS macro. echo $ac_n "checking for Guile""... $ac_c" 1>&6 -echo "configure:2937: checking for Guile" >&5 +echo "configure:2895: checking for Guile" >&5 if ! $guile_config link > /dev/null ; then echo "$ac_t"""cannot execute $guile_config"" 1>&6 { echo "configure: error: "cannot find guile-config; is Guile installed?"" 1>&2; exit 1; } @@ -2948,7 +2906,7 @@ echo "configure:2937: checking for Guile" >&5 # Extract the first word of "guile", so it can be a program name with args. set dummy guile; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2952: checking for $ac_word" >&5 +echo "configure:2910: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GUILE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3009,17 +2967,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3013: checking for $ac_hdr" >&5 +echo "configure:2971: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3023: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2981: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3046,7 +3004,7 @@ fi done echo $ac_n "checking for kpse_find_file in -lkpathsea""... $ac_c" 1>&6 -echo "configure:3050: checking for kpse_find_file in -lkpathsea" >&5 +echo "configure:3008: checking for kpse_find_file in -lkpathsea" >&5 ac_lib_var=`echo kpathsea'_'kpse_find_file | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3054,7 +3012,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lkpathsea $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3098,12 +3056,12 @@ fi for ac_func in kpse_find_file do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3102: checking for $ac_func" >&5 +echo "configure:3060: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3156,7 +3114,7 @@ done fi echo $ac_n "checking whether to use kpathsea""... $ac_c" 1>&6 -echo "configure:3160: checking whether to use kpathsea" >&5 +echo "configure:3118: checking whether to use kpathsea" >&5 if test "$kpathsea_b" != no; then echo "$ac_t""yes" 1>&6 KPATHSEA=1 @@ -3177,7 +3135,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3181: checking for $ac_word" >&5 +echo "configure:3139: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BIBTEX2HTML'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3218,7 +3176,7 @@ test -n "$BIBTEX2HTML" || BIBTEX2HTML="error" echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:3222: checking for 8-bit clean memcmp" >&5 +echo "configure:3180: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3226,8 +3184,11 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -3254,12 +3215,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:3258: checking for vprintf" >&5 +echo "configure:3219: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -3309,12 +3270,12 @@ fi if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:3313: checking for _doprnt" >&5 +echo "configure:3274: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -3367,12 +3328,12 @@ fi for ac_func in memmem snprintf vsnprintf gettext isinf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3371: checking for $ac_func" >&5 +echo "configure:3332: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3438,7 +3399,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3442: checking for $ac_word" >&5 +echo "configure:3403: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3470,7 +3431,7 @@ test -n "$MAKEINFO" || MAKEINFO="error" if test "$MAKEINFO" != "error"; then echo $ac_n "checking whether makeinfo can split html by @node""... $ac_c" 1>&6 -echo "configure:3474: checking whether makeinfo can split html by @node" >&5 +echo "configure:3435: checking whether makeinfo can split html by @node" >&5 mkdir -p out makeinfo --html --output=out/split <&6 -echo "configure:3502: checking for $ac_word" >&5 +echo "configure:3463: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else diff --git a/debian/postinst b/debian/postinst old mode 100755 new mode 100644 diff --git a/debian/postrm b/debian/postrm old mode 100755 new mode 100644 diff --git a/debian/rules b/debian/rules old mode 100755 new mode 100644 diff --git a/lily/parser.yy b/lily/parser.yy index 4803c2eae5..55ef527c1e 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -1072,12 +1072,6 @@ command_element: $$ = new Music (gh_list (gh_cons (ly_symbol2scm ("name"), ly_symbol2scm ("separator")), SCM_UNDEFINED)); $$->set_spot (THIS->here_input ()); } - | '|' { - - extern Music * get_barcheck(); - $$ = get_barcheck (); - $$->set_spot (THIS->here_input ()); - } | '|' { extern Music * get_barcheck(); $$ = get_barcheck (); diff --git a/lily/symbol-cache.cc b/lily/symbol-cache.cc index d247ccd3d5..e69de29bb2 100644 --- a/lily/symbol-cache.cc +++ b/lily/symbol-cache.cc @@ -1,77 +0,0 @@ -/* - symbol-cache.cc -- implement a cache for literal symbols, eg - symbol ("foo-bar") - - - source file of the GNU LilyPond music typesetter - - (c) 2000--2001 Han-Wen Nienhuys - - */ - -#include -#include "lily-guile.hh" - -#if 0 - -typedef map Literal_symbol_map; -Literal_symbol_map literal_map; - - -SCM -symbol (const char*s) -{ - Literal_symbol_map::const_iterator i = literal_map.find (s); - if (i != literal_map.end ()) - return (*i).second; - - SCM sym = gh_symbol2scm ((char*)s); - scm_permanent_object (sym); - literal_map[s] = sym; - return sym; -} - - -/* - This is a gory trick to cache the value gh_symbol2scm (), without - cluttering up the C code with snarf macros. - - You should *ONLY* use symbol () for arguments that are literal - strings! - - without (wtk1-fugue2) - - real 0m20.157s - user 0m19.800s - sys 0m0.140s - - with: (per file.) - - real 0m19.284s - user 0m18.630s - sys 0m0.190s - - - global with STL map - - real 0m20.616s - user 0m19.360s - sys 0m0.080s - - global with binsearch. - - real 0m19.352s - user 0m18.710s - sys 0m0.230s - - local binsearch - - user 18.8 - - local with binsearch, and other optimizations. - - 17.7 -*/ -#endif - - diff --git a/ly/dynamic-scripts.ly b/ly/dynamic-scripts.ly index 0f2f3e6b24..80eabb0adc 100644 --- a/ly/dynamic-scripts.ly +++ b/ly/dynamic-scripts.ly @@ -10,7 +10,7 @@ pp = \dynamicscript #"pp" p = \dynamicscript #"p" mp = \dynamicscript #"mp" mf = \dynamicscript #"mf" -f = \dynamicscript #"e" % see feta-din layout +f = \dynamicscript #"f" ff = \dynamicscript #"ff" fff = \dynamicscript #"fff" ffff = \dynamicscript #"ffff" diff --git a/make/lilypond-vars.make b/make/lilypond-vars.make index 01f6ec105e..0744ffe3c8 100644 --- a/make/lilypond-vars.make +++ b/make/lilypond-vars.make @@ -1,6 +1,7 @@ export PATH:=$(topdir)/lily/out:$(topdir)/buildscripts/out:$(PATH) - +export TEXCONFIG:=$(topdir)/mf/out:$(TEXCONFIG) +export TEXPSHEADERS:=$(topdir)/mf/out::$(TEXPSHEADERS) export MFINPUTS:=$(topdir)/mf/:$(MFINPUTS):: export TEXINPUTS:=$(topdir)/mf/out/:$(topdir)/tex/:$(topdir)/ps/:$(TEXINPUTS):$(pwd):: export LILYINCLUDE:=$(topdir)/ps:$(topdir)/scm:$(topdir)/ly:$(topdir)/mf/out::$(TEX_TFMDIR):$(LILYINCLUDE) diff --git a/make/ly-rules.make b/make/ly-rules.make index 4c238e1fb6..e534f4a521 100644 --- a/make/ly-rules.make +++ b/make/ly-rules.make @@ -43,3 +43,8 @@ $(outdir)/%.tex: $(outdir)/%.ly $(outdir)/%-book.ps: $(outdir)/%.ps psbook $< $<.tmp pstops '2:0L@.7(21cm,0)+1L@.7(21cm,14.85cm)' $<.tmp $@ + + +$(outdir)/%.pdf: $(outdir)/%.dvi + dvips -Ppdf -G0 -u$(topdir)/mf/out/lilypond.map -o $@.pdfps $< + ps2pdf $@.pdfps $@ diff --git a/make/mutopia-targets.make b/make/mutopia-targets.make index 1b041638a4..a17d04dcbb 100644 --- a/make/mutopia-targets.make +++ b/make/mutopia-targets.make @@ -10,7 +10,7 @@ include $(stepdir)/www-targets.make all: $(OUT_FILES) -local-WWW: $(ly_examples) $(ps_examples) $(png_examples) $(dvi_examples) +local-WWW: $(ly_examples) $(ps_examples) $(pdf_examples) $(png_examples) $(dvi_examples) tar: mkdir -p $(outdir)/$(tarball) diff --git a/make/mutopia-vars.make b/make/mutopia-vars.make index 7e2362e634..5591727b13 100644 --- a/make/mutopia-vars.make +++ b/make/mutopia-vars.make @@ -13,6 +13,7 @@ EXTRA_DIST_FILES += $(LY_FILES) $(M4_FILES) $(LYM4_FILES) ly_examples=$(addprefix $(outdir)/, $(addsuffix .ly.txt, $(examples))) ps_examples=$(addprefix $(outdir)/, $(addsuffix .ps.gz, $(examples))) +pdf_examples=$(addprefix $(outdir)/, $(addsuffix .pdf, $(examples))) dvi_examples=$(addprefix $(outdir)/, $(addsuffix .dvi, $(examples))) gif_examples=$(addprefix $(outdir)/, $(addsuffix .gif, $(examples))) png_examples=$(addprefix $(outdir)/, $(addsuffix .png, $(examples))) diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 5df075e20e..faa8af758c 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.4.12 -Entered-date: 04MRT02 +Version: 1.4.13 +Entered-date: 05MEI02 Description: @BLURB@ Keywords: music notation typesetting midi fonts engraving Author: hanwen@cs.uu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 1000k lilypond-1.4.12.tar.gz + 1000k lilypond-1.4.13.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.4.12.tar.gz + 1000k lilypond-1.4.13.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.redhat.spec b/make/out/lilypond.redhat.spec index ee8cd7c287..d1f85aae86 100644 --- a/make/out/lilypond.redhat.spec +++ b/make/out/lilypond.redhat.spec @@ -1,11 +1,11 @@ %define info yes Name: lilypond -Version: 1.4.12 +Version: 1.4.13 Release: 1 License: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.4.12.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.4.13.tar.gz Summary: Create and print music notation URL: http://www.cs.uu.nl/~hanwen/lilypond BuildRoot: /tmp/lilypond-install diff --git a/make/out/lilypond.suse.spec b/make/out/lilypond.suse.spec index d900a53ee3..5202f9212c 100644 --- a/make/out/lilypond.suse.spec +++ b/make/out/lilypond.suse.spec @@ -14,11 +14,11 @@ Distribution: SuSE Linux 7.0 (i386) Name: lilypond -Version: 1.4.12 +Version: 1.4.13 Release: 2 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.4.12.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.4.13.tar.gz # music notation software for.. ? Summary: A program for printing sheet music. URL: http://www.lilypond.org/ diff --git a/mf/GNUmakefile b/mf/GNUmakefile index 9af2a11212..c745a00539 100644 --- a/mf/GNUmakefile +++ b/mf/GNUmakefile @@ -35,7 +35,7 @@ ALL_GEN_FILES= $(TFM_FILES) $(TEXTABLES) $(AFM_FILES) $(TFM_FILES) $(LOG_FILES) INSTALLATION_DIR=$(datadir)/mf/ INSTALLATION_FILES=$(MF_FILES) $(AF_FILES) -INSTALLATION_OUT_SUFFIXES=1 2 3 4 +INSTALLATION_OUT_SUFFIXES=1 2 3 4 5 INSTALLATION_OUT_DIR1=$(datadir)/tex INSTALLATION_OUT_FILES1=$(TEXTABLES) @@ -53,17 +53,26 @@ INSTALLATION_OUT_FILES3=$(TFM_FILES) # making pfas takes a lot of CPU time. Let's skip it for now. +PFA_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.pfa)) + ifdef MAKE_PFA_FILES -PFA_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.pfa)) -ALL_GEN_FILES += $(PFA_FILES) +ALL_GEN_FILES += $(PFA_FILES) $(outdir)/lilypond.map INSTALLATION_OUT_DIR4=$(datadir)/pfa INSTALLATION_OUT_FILES4=$(PFA_FILES) +INSTALLATION_OUT_DIR5=$(datadir)/dvips/ +INSTALLATION_OUT_FILES5=$(outdir)/lilypond.map + pfa: $(PFA_FILES) endif +$(outdir)/lilypond.map: + echo $(FONT_FILES:.mf=) | tr ' ' '\n' | \ + sed 's/\(.*\)/\1 \1 <\1.pfa/' > $@ + + export MFINPUTS:=.:$(MFINPUTS) default: $(ALL_GEN_FILES) diff --git a/mf/cmbase.mf b/mf/cmbase.mf deleted file mode 100644 index 22c4a27c04..0000000000 --- a/mf/cmbase.mf +++ /dev/null @@ -1,697 +0,0 @@ -% The base file for Computer Modern (a supplement to {\tt plain.mf}) - -cmbase:=1; % when |cmbase| is known, this file has been input - -let cmchar=\; % `|cmchar|' should precede each character -let generate=input; % `|generate|' should follow the parameters - -autorounding:=0; smoothing:=0; % we do our own rounding -def autorounded = interim autorounding:=2 enddef; - -newinternal slant,fudge,math_spread,superness,superpull,beak_darkness,ligs; -boolean square_dots,hefty,serifs, - monospace,variant_g,low_asterisk,math_fitting; - -boolean dark,dark.dark,skewed,skewed.skewed; % for fast option testing -dark=skewed=false; dark.dark=skewed.skewed=true; - -vardef Vround primary y = y_:=vround y; - if y_y@2: y@2:=y@1; fi - else: y@2=max(y$-bracket_height,y$$); - bot y@1+slab=top y@0-eps=tiny.top y$; downward=z$$-z$; - if y@1x@2-eps: x@3:=x@2-eps; fi fi - pair corner; ypart corner=y@1; corner=z@2+whatever*downward; - filldraw z@2{z$-z$$} - ...darkness[corner,.5[z@1,z@2] ]{z@1-z@2} - ...{jut,0}z@1--z@0--(x$,y@0)--z@3--cycle; % the serif - labels (@1,@2); enddef; - -def dish_serif(suffix $,$$,@)(expr left_darkness,left_jut) - (suffix @@)(expr right_darkness,right_jut) suffix modifier = - serif($,$$,@,left_darkness,-left_jut) modifier; - serif($,$$,@@,right_darkness,right_jut) modifier; - if dish>0: pickup tiny.nib; numeric dish_out,dish_in; - if y$0: erase fill z@1--top z@1 - --(x@2r,top y@1)--z@2r--cycle; fi % erase excess at top - filldraw z@1--z@2r--z@2l{right} - ...darkness[(x@0,y@2l),.5[z@2l,z@0] ]{z@0-z@2l} - ...{down}z@0--(x@1,y@0)--cycle; % sloped serif - labels(@0,@1,@2); enddef; - -vardef sloped_serif.r(suffix $,$$,@)(expr darkness,jut,drop) = - pickup crisp.nib; pos@2(slab,-90); - rt x@0=tiny.rt x$r; lft x@1=tiny.lft x$l; bot y@1=tiny.bot y$l; - rt x@2=rt x@0+jut; y@2r=y@1+drop; - y@0=min(y@2l+bracket,y$$)+eps; -if drop>0: erase fill z@1--bot z@1 - --(x@2r,bot y@1)--z@2r--cycle; fi % erase excess at bottom - filldraw z@1--z@2r--z@2l{left} - ...darkness[(x@0,y@2l),.5[z@2l,z@0] ]{z@0-z@2l} - ...{up}z@0--(x@1,y@0)--cycle; % sloped serif - labels(@0,@1,@2); enddef; - -vardef term.l(suffix $,$$)(expr d,t,s)= % ``robust'' sans-serif terminal - path p_; p_=z$l{d}..tension t..z$$l; - pair d_; d_=(x$$l-x$l,s*(y$$l-y$l)); - if (abs angle direction 1 of p_ < abs angle d_)<>(x$l(x$ry$: bot else: top fi\\ y_=y$; - (from_x,y_)=whatever[z.from,z$]; - sharpness[z$,(from_x,y_)]{z$-z.from} - ...{z$$-z$}z$+sharpness*length(z$-(from_x,y_))*unitvector(z$$-z$) enddef; - -vardef diag_out(suffix $)(expr sharpness)(suffix $$,to) = - pickup tiny.nib; save to_x,y_; - if y.to>y$: bot else: top fi\\ y_=y$; - (to_x,y_)=whatever[z$$,z.to]; - z$$-sharpness*length(z$$-(to_x,y_))*unitvector(z$$-z$){z$$-z$} - ...{z.to-z$$}sharpness[z$$,(to_x,y_)] enddef; - -vardef diag_end(suffix from,$)(expr sharpness_in,sharpness_out)(suffix $$,to)= - save from_x,to_x,y_,x_,xx_; - if y.from>y$: tiny.bot else: tiny.top fi\\ y_=y$; % we assume that |y$=y$$| - (from_x,y_)=whatever[z.from,z$]; (to_x,y_)=whatever[z$$,z.to]; - if x$$>x$: x_=x$+sharpness_in*length(z$-(from_x,y_)); - xx_=x$$-sharpness_out*length(z$$-(to_x,y_)); - if xx_x_: xx_:=x_:=.5[xx_,x_]; fi fi - sharpness_in[z$,(from_x,y_)]{z$-z.from} - ...{z$$-z$}(x_,y$)..(xx_,y$){z$$-z$} - ...{z.to-z$$}sharpness_out[z$$,(to_x,y_)] enddef; -%%% at from to %%%% restore normal formatting - -vardef special_diag_end(suffix $$,$,@,@@) = % for top middle of w's - if x@r<=x$r: diag_end($$r,$r,1,1,@l,@@l) - else: z0=whatever[z$$l,z$l]=whatever[z@l,z@@l]; - diag_end($$r,$r,1,1,$l,0)--z0 fi enddef; - -def prime_points_inside(suffix $,$$) = - theta_:=angle(z$r-z$l); - penpos$'(whatever,theta_); - if y$$>y$: z$'=(0,pen_top) rotated theta_ + whatever[z$l,z$r]; - theta_:=angle(z$$-z$)-90; - else: z$'=(0,pen_bot) rotated theta_ + whatever[z$l,z$r]; - theta_:=angle(z$$-z$)+90; fi - z$'l+(pen_lft,0) rotated theta_=z$l+whatever*(z$-z$$); - z$'r+(pen_rt,0) rotated theta_=z$r+whatever*(z$-z$$); - enddef; - -def ellipse_set(suffix $,@,@@,$$) = % given |z$,x@,z$$|, find |y@| and |z@@| -% such that the path |z${x@-x$,0}..z@{0,y@-y$}..{z$$-z@@}z@@| -% is consistent with an ellipse -% and such that the line |z@@--z$$| has a given |slope| - alpha_:=slope*(x@-x$); beta_:=y$$-y$-slope*(x$$-x$); - gamma_:=alpha_/beta_; - y@-y$=.5(beta_-alpha_*gamma_); - x@@-x$=-2gamma_*(x@-x$)/(1+gamma_*gamma_); - y@@-y$$=slope*(x@@-x$$) enddef; - -vardef diag_ratio(expr a,b,y,c) = % assuming that $a>\vert b/y\vert$, -% compute the value $\alpha=(x\6{++}y)/y$ such that $ax+b\alpha=c$ - numeric a_,b_,c_; b_=b/y; c_=c/y; a_=a*a-b_*b_; - (a*(c_++sqrt a_)-b_*c_)/a_ enddef; - -def f_stroke(suffix $,$$,@,left_serif,right_serif)(expr left_jut,right_jut)= - pickup tiny.nib; bot y$=0; - penpos@0(x$r-x$l,0); x@0l=x$l; top y@0=x_height; - filldraw stroke z$e--z@0e; % stem - pickup fine.nib; pos@0'(x$r-x$l-(hround stem_corr)+tiny,180); - y@0'=y@0; lft x@0'r=tiny.lft x$l; - penpos@1(x@0'l-x@0'r,180); x@1=x@0'; y@1+.5vair=.5[x_height,h]; - pos@2(vair,90); top y@2r=h+oo; - if serifs: x@2=.6[x@1,x$$r]; (x@,y@2r)=whatever[z@2l,z@1l]; - x@2r:=min(x@,.5[x@2,x$$r]); pos@3(hair,0); bulb(@2,@3,$$); % bulb - filldraw stroke z@0'e--z@1e & super_arc.e(@1,@2); % arc - dish_serif($,@0,left_serif,1/3,left_jut,right_serif,1/3,right_jut); % serif - else: x@2=.6[x@1,x$$]; y@1l:=1/3[y@1l,y@2l]; - filldraw stroke z@0'e--z@1e & super_arc.e(@1,@2) - & term.e(@2,$$,right,.9,4); fi % arc and terminal - penlabels(@0,@1,@2); enddef; - -def h_stroke(suffix $,@,@@,$$) = - penpos$$(x@@r-x@@l,0); x$$=x@@; bot y$$=0; - y@@=1/3[bar_height,x_height]; - penpos$''(x$r-x$l,0); x$''=x$; y$''=1/8[bar_height,x_height]; - filldraw stroke z$''e--z$e; % thicken the lower left stem - penpos@0(min(rt x$r-lft x$l,thin_join)-fine,180); pickup fine.nib; - rt x@0l=tiny.rt x$r; y@0=y$''; - pos@1(vair,90); pos@@'(x@@r-x@@l+tiny,0); z@@'=z@@; - x@1=.5[rt x@0l,rt x@@'r]; top y@1r=x_height+oo; - (x@,y@1l)=whatever[z@1r,z@0l]; x@1l:=x@; - filldraw stroke z@0e{up}...{right}z@1e - &{{interim superness:=hein_super; super_arc.e(@1,@@')}}; % arch - pickup tiny.nib; filldraw stroke z@@e--z$$e; % right stem - labels(@0); penlabels(@1); enddef; - -def hook_out(suffix $,$$,$$$)suffix modifier= % |x$| and |x$$$| (only) are known - pos$(stem,0); pos$$(vair,90); - x$$$:=hround(x$$$+.5hair-eps)-.5hair; pos$$$(hair,180); - y$=1/4x_height; bot y$$l=-oo; y$$$=1/3x_height; - if skewed.modifier: x$$=x$+1.25u; - filldraw stroke z$e{-u,-x_height}...z$$e{right}...{up}z$$$e; % hook - else: x$$=x$+1.5u; - filldraw stroke z$e{down}...z$$e{right} - ...{x$$$-(x$+2.5u),x_height}z$$$e; fi enddef; % hook - -def hook_in(suffix $,$$,$$$)suffix modifier= % |x$| and |x$$$| (only) are known - x$:=hround(x$-.5hair)+.5hair; pos$(hair,180); - pos$$(vair,90); pos$$$(stem,0); - y$=2/3x_height; top y$$r=x_height+oo; y$$$=3/4x_height; - if skewed.modifier: x$$=x$$$-1.25u; - filldraw stroke z$e{up}...z$$e{right}...{-u,-x_height}z$$$e; % hook - else: x$$=x$$$-1.5u; - filldraw stroke z$e{x$$$-2.5u-x$,x_height} - ...z$$e{right}...{down}z$$$e; fi enddef; % hook - -def ital_arch(suffix $,$$,$$$) = % |z$| and |z$$$| (only) are known - pos$'(hair,180); z$'=z$; - pos$$(vair,90); pos$$$(stem,0); - {{interim superness := more_super; x$$=.6[x$,x$$$]; - top y$$r=x_height+oo; y$$$=.65x_height; - filldraw stroke z$'e{up}...super_arc.e($$,$$$);}} enddef; % stroke - -def compute_spread(expr normal_spread,big_spread)= - spread#:=math_spread[normal_spread,big_spread]; - spread:=2ceiling(spread#*hppp/2)+eps; enddef; - -def v_center(expr h_sharp) = - .5h_sharp+math_axis#, .5h_sharp-math_axis# enddef; - -def circle_points = - x4=x8=.5[x2,x6]; x1=x3=superness[x4,x2]; x5=x7=superness[x4,x6]; - y2=y6=.5[y4,y8]; y1=y7=superness[y2,y8]; y3=y5=superness[y2,y4]; - enddef; -def draw_circle = - draw z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left} - ...z5{z6-z4}...z6{up}...z7{z8-z6}...cycle enddef; - -def left_paren(expr min_breadth, max_breadth) = - pickup fine.nib; pos1(hround min_breadth,0); - pos2(hround max_breadth,0); pos3(hround min_breadth,0); - rt x1r=rt x3r=hround(w-1.25u+.5min_breadth); lft x2l=hround 1.25u; - top y1=h; y2=.5[y1,y3]; bot y3=1-d; - filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e - ...{3(x3e-x2e),y3-y2}z3e; % arc - penlabels(1,2,3); enddef; - -def right_paren(expr min_breadth, max_breadth) = - pickup fine.nib; pos1(hround min_breadth,0); - pos2(hround max_breadth,0); pos3(hround min_breadth,0); - lft x1l=lft x3l=hround(1.25u-.5min_breadth); rt x2r=hround(w-1.25u); - top y1=h; y2=.5[y1,y3]; bot y3=1-d; - filldraw stroke z1e{3(x2e-x1e),y2-y1}...z2e - ...{3(x3e-x2e),y3-y2}z3e; % arc - penlabels(1,2,3); enddef; - -def left_bracket(expr breadth,do_top,do_bot) = - pickup crisp.nib; - numeric thickness; thickness=hround breadth; - pos1(thickness,0); pos2(thickness,0); - top y1=h; bot y2=1-d; lft x1l=lft x2l=hround(2.5u-.5thickness); - filldraw stroke z1e--z2e; % stem - pos3(thickness,90); pos4(thickness,90); - pos5(thickness,90); pos6(thickness,90); - x3=x5=x1l; rt x4=rt x6=hround(w-.75u+.5thickness); - y3r=y4r=y1; y5l=y6l=y2; - if do_top: filldraw stroke z3e--z4e; fi % upper bar - if do_bot: filldraw stroke z5e--z6e; fi % lower bar - penlabels(1,2,3,4,5,6); enddef; - -def right_bracket(expr breadth,do_top,do_bot) = - pickup crisp.nib; - numeric thickness; thickness=hround breadth; - pos1(thickness,0); pos2(thickness,0); - top y1=h; bot y2=1-d; rt x1r=rt x2r=hround(w-2.5u+.5thickness); - filldraw stroke z1e--z2e; % stem - pos3(thickness,90); pos4(thickness,90); - pos5(thickness,90); pos6(thickness,90); - x3=x5=x1r; lft x4=lft x6=hround(.75u-.5thickness); - y3r=y4r=y1; y5l=y6l=y2; - if do_top: filldraw stroke z3e--z4e; fi % upper bar - if do_bot: filldraw stroke z5e--z6e; fi % lower bar - penlabels(1,2,3,4,5,6); enddef; - -def left_curly(expr min_breadth, max_breadth) = - pickup fine.nib; - forsuffixes $=1,1',4,4',7,7': pos$(hround min_breadth,0); endfor - forsuffixes $=2,3,5,6: pos$(hround max_breadth,0); endfor - x2=x3=x5=x6; x1=x1'=x7=x7'=w-x4=w-x4'; - lft x4l=hround(1.5u-.5min_breadth); lft x2l=hround(.5w-.5max_breadth); - top y1=h; bot y7=1-d; .5[y4,y4']=.5[y1,y7]=.5[y2,y6]=.5[y3,y5]; - y1-y2=y3-y4=(y1-y4)/4; - y1-y1'=y4-y4'=y7'-y7=vround(min_breadth-fine); - filldraw z1l{3(x2l-x1l),y2-y1}...z2l---z3l...{3(x4l-x3l),y4-y3}z4l - --z4'l{3(x5l-x4l),y5-y4'}...z5l---z6l...{3(x7l-x6l),y7-y6}z7l - --z7r--z7'r{3(x6r-x7r),y6-y7'}...z6r---z5r - ...{3(x4r-x5r),.5[y4,y4']-y5}.5[z4r,z4'r]{3(x3r-x4r),y3-.5[y4,y4']} - ...z3r---z2r...{3(x1r-x2r),y1'-y2}z1'r--z1r--cycle; % stroke - penlabels(1,2,3,4,5,6,7); enddef; - -def right_curly(expr min_breadth, max_breadth) = - pickup fine.nib; - forsuffixes $=1,1',4,4',7,7': pos$(hround min_breadth,0); endfor - forsuffixes $=2,3,5,6: pos$(hround max_breadth,0); endfor - x2=x3=x5=x6; x1=x1'=x7=x7'=w-x4=w-x4'; - lft x1l=hround(1.5u-.5min_breadth); lft x2l=hround(.5w-.5max_breadth); - top y1=h; bot y7=1-d; .5[y4,y4']=.5[y1,y7]=.5[y2,y6]=.5[y3,y5]; - y1-y2=y3-y4=(y1-y4)/4; - y1-y1'=y4-y4'=y7'-y7=vround(min_breadth-fine); - filldraw z1r{3(x2r-x1r),y2-y1}...z2r---z3r...{3(x4r-x3r),y4-y3}z4r - --z4'r{3(x5r-x4r),y5-y4'}...z5r---z6r...{3(x7r-x6r),y7-y6}z7r - --z7l--z7'l{3(x6l-x7l),y6-y7'}...z6l---z5l - ...{3(x4l-x5l),.5[y4,y4']-y5}.5[z4l,z4'l]{3(x3l-x4l),y3-.5[y4,y4']} - ...z3l---z2l...{3(x1l-x2l),y1'-y2}z1'l--z1l--cycle; % stroke - penlabels(1,2,3,4,5,6,7); enddef; - -def left_angle(expr breadth) = - pickup pencircle scaled breadth; - x1=x3=good.x(w-u)+eps; lft x2=hround u-eps; - top y1=h+eps; .5[y1,y3]=y2=good.y .5[-d+eps,h]; - draw z1--z2--z3; % diagonals - labels(1,2,3); enddef; - -def right_angle(expr breadth) = - pickup pencircle scaled breadth; - x1=x3=good.x u-eps; rt x2=hround(w-u)+eps; - top y1=h+eps; .5[y1,y3]=y2=good.y .5[-d+eps,h]; - draw z1--z2--z3; % diagonals - labels(1,2,3); enddef; - -def big_slash(expr breadth) = - adjust_fit(-letter_fit#,-letter_fit#); pickup pencircle scaled breadth; - rt x1=hround(w-u); lft x2=hround u; top y1=h+eps; bot y2=1-d-eps; - draw z1--z2; % diagonal - labels(1,2); enddef; - -def big_blash(expr breadth) = - adjust_fit(-letter_fit#,-letter_fit#); pickup pencircle scaled breadth; - lft x1=hround u; rt x2=hround(w-u); top y1=h+eps; bot y2=1-d-eps; - draw z1--z2; % diagonal - labels(1,2); enddef; - -def big_sqrt = - adjust_fit(0,-letter_fit#); pickup rule.nib; - x1=good.x 4/9w; x2=good.x(w+.5); bot y1=-d; bot y2=0; - draw z1--z2; % diagonal - pickup crisp.nib; pos3(max(curve,rule_thickness),0); - x3l=1.5[x2,x1]; y3=.5[y1,y2]; - pos4(rule_thickness,0); x4=x1; bot y4=-d; - pos5(vair,-45); x5l=good.x(x3l-u); z5l=whatever[z3r,z2]; - z6=z5r+whatever*(z2-z3r)=whatever[z3l,z4l]; - z7=whatever[z1,z2]=z3r+whatever*(z4l-z3l); - filldraw z5r--z6--z4l--z4--z7--z3r--z5l--cycle; % left diagonal and serif - penlabels(1,2,3,4,5,6,7); enddef; - -def big_hat = - adjust_fit(0,0); - pickup crisp.nib; pos2(.6[vair,curve],90); top y2r=h+o; x2=.5w; - x1=w-x3=good.x -eps; y1=y3=.5[x_height,y2]; - pos1(hair,angle(z2-z1)+90); pos3(hair,angle(z3-z2)+90); - filldraw stroke z1e--z2e--z3e; % diagonals - penlabels(1,2,3); enddef; - -def big_tilde = - adjust_fit(0,0); pickup crisp.nib; - numeric theta; theta=angle(1/6(w-vair),1/4(h-x_height)); - numeric mid_width; mid_width=.4[vair,stem]; - pos1(vair,theta+90); pos2(vair,theta+90); - pos3(vair,theta+90); pos4(vair,theta+90); - z2-z1=z4-z3=(mid_width-crisp)*dir theta; - lft x1r=w-rt x4l=0; top y4r=h; - bot y1l=vround(bot y1l+min(2/3[x_height,h],y3l-.25vair)-top y1r); - pair delta; ypart delta=3(y3l-y1l); delta=whatever*dir theta; - filldraw z1l..controls(z1l+delta)and(z3l-delta)..z3l..z4l - --z4r..controls(z4r-delta)and(z2r+delta)..z2r..z1r--cycle; % stroke - penlabels(1,2,3,4); enddef; - -def beginarithchar(expr c) = % ensure consistent dimensions for $+$, $-$, etc. - if monospace: beginchar(c,14u#,27/7u#+math_axis#,27/7u#-math_axis#); - else: beginchar(c,14u#,6u#+math_axis#,6u#-math_axis#); fi - italcorr math_axis#*slant-.5u#; - adjust_fit(0,0); enddef; - -newinternal l,r,shrink_fit; % adjustments to spacing - -def do_expansion(expr expansion_factor) = - forsuffixes $=u,jut,cap_jut,beak_jut,apex_corr: - $:=$.#*expansion_factor*hppp; endfor -enddef; - -def normal_adjust_fit(expr left_adjustment,right_adjustment) = - numeric charwd_in; charwd_in=charwd; - l:=-hround(left_adjustment*hppp)-letter_fit; - interim xoffset:=-l; - charwd:=charwd+2letter_fit#+left_adjustment+right_adjustment; - r:=l+hround(charwd*hppp)-shrink_fit; - w:=r-hround(right_adjustment*hppp)-letter_fit; - do_expansion(w/(charwd_in*hppp)); - enddef; - -def mono_adjust_fit(expr left_adjustment,right_adjustment) = - numeric charwd_in; charwd_in=charwd; - numeric expansion_factor; - mono_charwd#=2letter_fit# - +expansion_factor*(charwd+left_adjustment+right_adjustment); - l:=-hround(left_adjustment*expansion_factor*hppp)-letter_fit; - interim xoffset:=-l; - r:=l+mono_charwd-shrink_fit; - w:=r-hround(right_adjustment*expansion_factor*hppp)-letter_fit; - charwd:=mono_charwd#; charic:=mono_charic#; - do_expansion(w/(charwd_in*hppp)); - enddef; - -extra_endchar:=extra_endchar&"r:=r+shrink_fit;w:=r-l;"; - -def ignore_math_fit(expr left_adjustment,right_adjustment) = enddef; -def do_math_fit(expr left_adjustment,right_adjustment) = - l:=l-hround(left_adjustment*hppp); interim xoffset:=-l; - charwd:=charwd+left_adjustment+right_adjustment; - r:=l+hround(charwd*hppp)-shrink_fit; - charic:=charic-right_adjustment; - if charic<0: charic:=0; fi enddef; -def zero_width = charwd:=0; r:=l-shrink_fit enddef; -def change_width = if not monospace: % change width by $\pm1$ - if r+shrink_fit-l=floor(charwd*hppp): w:=w+1; r:=r+1; - else: w:=w-1; r:=r-1; fi fi enddef; -def center_on(expr x) = if not monospace: % change width for symmetric fit - r:=r+2x-w; w:=2x; fi enddef; -def padded expr del_sharp = - charht:=charht+del_sharp; chardp:=chardp+del_sharp enddef; - -def font_setup = - if monospace: let adjust_fit=mono_adjust_fit; - def mfudged=fudged enddef; - mono_charic#:=body_height#*slant; - if mono_charic#<0: mono_charic#:=0; fi - mono_charwd#:=9u#; define_whole_pixels(mono_charwd); - else: let adjust_fit=normal_adjust_fit; - def mfudged= enddef; fi - if math_fitting: let math_fit=do_math_fit - else: let math_fit=ignore_math_fit fi; - define_pixels(u,width_adj,serif_fit,cap_serif_fit,jut,cap_jut,beak, - bar_height,dish,bracket,beak_jut,stem_corr,vair_corr,apex_corr); - define_blacker_pixels(notch_cut,cap_notch_cut); - forsuffixes $=notch_cut,cap_notch_cut: if $<3: $:=3; fi endfor - define_whole_pixels(letter_fit,fine,crisp,tiny); - define_whole_vertical_pixels(body_height,asc_height, - cap_height,fig_height,x_height,comma_depth,desc_depth,serif_drop); - define_whole_blacker_pixels(thin_join,hair,stem,curve,flare, - dot_size,cap_hair,cap_stem,cap_curve); - define_whole_vertical_blacker_pixels(vair,bar,slab,cap_bar,cap_band); - define_corrected_pixels(o,apex_o); - forsuffixes $=hair,stem,cap_stem: - fudged$.#:=fudge*$.#; fudged$:=hround(fudged$.#*hppp+blacker); - forever: exitif fudged$>.9fudge*$; fudged$:=fudged$+1; endfor endfor - rule_thickness:=ceiling(rule_thickness#*hppp); - heavy_rule_thickness:=ceiling(3rule_thickness#*hppp); - oo:=vround(.5o#*hppp*o_correction)+eps; - apex_oo:=vround(.5apex_o#*hppp*o_correction)+eps; - lowres_fix(stem,curve,flare) 1.3; - lowres_fix(stem,curve) 1.2; - lowres_fix(cap_stem,cap_curve) 1.2; - lowres_fix(hair,cap_hair) 1.2; - lowres_fix(cap_band,cap_bar,bar,slab) 1.2; - stem':=hround(stem-stem_corr); cap_stem':=hround(cap_stem-stem_corr); - vair':=vround(vair+vair_corr); - vstem:=vround .8[vair,stem]; cap_vstem:=vround .8[vair,cap_stem]; - ess:=(ess#/stem#)*stem; cap_ess:=(cap_ess#/cap_stem#)*cap_stem; - dw:=(curve#-stem#)*hppp; bold:=curve#*hppp+blacker; - dh#:=.6designsize; - stem_shift#:=if serifs: 2stem_corr# else: 0 fi; - more_super:=max(superness,sqrt .77superness); - hein_super:=max(superness,sqrt .81225258superness); % that's $2^{-.3}$ - clear_pen_memory; - if fine=0: fine:=1; fi - forsuffixes $=fine,crisp,tiny: -%%% fine $ %%%% temporary formatting convention for MFT - if $>fudged.hair: $:=fudged.hair; fi - $.breadth:=$; - pickup if $=0: nullpen else: pencircle scaled $; $:=$-eps fi; - $.nib:=savepen; breadth_[$.nib]:=$; - forsuffixes $$=lft,rt,top,bot: shiftdef($.$$,$$ 0); endfor endfor -%%% @ $ %%%% restore ordinary formatting for $ - min_Vround:=max(fine.breadth,crisp.breadth,tiny.breadth); - if min_Vround0: - rule((r+charic*pt,h.o_),(r+charic*pt,.5h.o_)); fi % italic correction - enddef; -def maketicks(text rule) = - for y=0,h.o_,-d.o_: - rule((l,y),(l+10,y)); rule((r-10,y),(r,y)); endfor % horizontals - for x=l,r: - rule((x,10-d.o_),(x,-d.o_)); rule((x,h.o_-10),(x,h.o_)); endfor % verticals - if charic<>0: - rule((r+charic*pt,h.o_-10),(r+charic*pt,h.o_)); fi % italic correction - enddef; -rulepen:=pensquare; - -vardef stroke text t = - forsuffixes e = l,r: path_.e:=t; endfor - if cycle path_.l: - errmessage "Beware: `stroke' isn't intended for cycles"; fi - path_.l -- reverse path_.r -- cycle enddef; - -vardef circ_stroke text t = - forsuffixes e = l,r: path_.e:=t; endfor - if cycle path_.l: - errmessage "Beware: `stroke' isn't intended for cycles"; fi - path_.l -- reverse path_.r .. cycle enddef; - -vardef super_arc.r(suffix $,$$) = % outside of super-ellipse - pair center,corner; - if y$=y$r: center=(x$$r,y$r); corner=(x$r,y$$r); - else: center=(x$r,y$$r); corner=(x$$r,y$r); fi - z$.r{corner-z$.r}...superness[center,corner]{z$$.r-z$.r} - ...{z$$.r-corner}z$$.r enddef; - -vardef super_arc.l(suffix $,$$) = % inside of super-ellipse - pair center,corner; - if y$=y$r: center=(x$$l,y$l); corner=(x$l,y$$l); - else: center=(x$l,y$$l); corner=(x$$l,y$l); fi - z$l{corner-z$l}...superness[center,corner]{z$$l-z$l} - ...{z$$l-corner}z$$l enddef; - -vardef pulled_super_arc.r(suffix $,$$)(expr superpull) = - pair center,corner; - if y$=y$r: center=(x$$r,y$r); corner=(x$r,y$$r); - else: center=(x$r,y$$r); corner=(x$$r,y$r); fi - z$r{corner-z$r}...superness[center,corner]{z$$r-z$r} - ...{z$$r-corner}z$$r enddef; - -vardef pulled_super_arc.l(suffix $,$$)(expr superpull) = - pair center,corner,outer_point; - if y$=y$r: center=(x$$l,y$l); corner=(x$l,y$$l); - outer_point=superness[(x$$r,y$r),(x$r,y$$r)]; - else: center=(x$l,y$$l); corner=(x$$l,y$l); - outer_point=superness[(x$r,y$$r),(x$$r,y$r)]; fi - z$l{corner-z$l} - ...superpull[superness[center,corner],outer_point]{z$$l-z$l} - ...{z$$l-corner}z$$l enddef; - -vardef pulled_arc@#(suffix $,$$) = - pulled_super_arc@#($,$$)(superpull) enddef; - -vardef serif_arc(suffix $,$$) = - z${x$$-x$,0}...(.75[x$,x$$],.25[y$,y$$]){z$$-z$}...{0,y$$-y$}z$$ enddef; - -vardef penpos@#(expr b,d) = - if known b: if b<=0: errmessage "bad penpos"; fi fi - (x@#r-x@#l,y@#r-y@#l)=(b,0) rotated d; - x@#=.5(x@#l+x@#r); y@#=.5(y@#l+y@#r) enddef; - -newinternal currentbreadth; -vardef pos@#(expr b,d) = - if known b: if b<=currentbreadth: errmessage "bad pos"; fi fi - (x@#r-x@#l,y@#r-y@#l)=(b-currentbreadth,0) rotated d; - x@#=.5(x@#l+x@#r); y@#=.5(y@#l+y@#r) enddef; -def numeric_pickup_ primary q = - currentpen:=pen_[q]; - pen_lft:=pen_lft_[q]; pen_rt:=pen_rt_[q]; - pen_top:=pen_top_[q]; pen_bot:=pen_bot_[q]; - currentpen_path:=pen_path_[q]; - if known breadth_[q]: currentbreadth:=breadth_[q]; fi enddef; - -vardef ic# = charic enddef; -vardef h# = charht enddef; -vardef w# = charwd enddef; -vardef d# = chardp enddef; - -let {{=begingroup; let }}=endgroup; -def .... = .. tension atleast .9 .. enddef; -def less_tense = save ...; let ...=.... enddef; -def ?? = hide(showvariable x,y) enddef; - -let semi_ =;; let colon_ = :; let endchar_ = endchar; -def iff expr b = if b:let next_=use_it else:let next_=lose_it fi; next_ enddef; -def use_it = let : = restore_colon; enddef; -def restore_colon = let : = colon_; enddef; -def lose_it = let endchar=fi; inner cmchar; let ;=fix_ semi_ if false enddef; -def fix_=let ;=semi_; let endchar=endchar_; outer cmchar; enddef; -def always_iff = let : = endgroup; killboolean enddef; -def killboolean text t = use_it enddef; -outer cmchar; diff --git a/mf/feta-din-code.mf b/mf/feta-din-code.mf index ed795cb4e8..e457b64ad2 100644 --- a/mf/feta-din-code.mf +++ b/mf/feta-din-code.mf @@ -1,179 +1,725 @@ -% feta-din.mf + +save serif_thick; +serif_thick# = 1.1 stafflinethickness#; +define_blacker_pixels (serif_thick); +med_thick = round (1.5 stafflinethickness); +bottom_blot = 1.3 serif_thick; + + + +% +% Couldn't find many z examples. This one is losely inspired +% by a sfz from Mueller etuden fuer Horn (Edition Hofmeister.) +% + +code := 121; +fet_beginchar ("dynamic z", "z", "dynz"); + set_char_box (0, .98 ex#, 0, 0.9 ex#); + + save thin_thick, top_narrow, over_shoot; + save bot_thick; + + thin_thick = serif_thick; + top_narrow = thin_thick; + top_overshoot = .8 serif_thick; + top_thick = .3 h ; + bot_thick = .2 ex; + bot_overshoot = serif_thick; + + x0 = + top_narrow; + y0 = .9 [y1r, y1l]; + y1l = .72 h; + x1r = .34 ex; + x2 = .66 ex; + y2 = y1r - top_overshoot; + + + y3 = h - .7 thin_thick; + x3 = w - .6 top_narrow - .5 thin_thick; + + y4 = .5 thin_thick; + x4 = .5 thin_thick; + + x5l =.25 ex; + y5l = .4 bot_overshoot; + y6l = -bot_overshoot; + x6 = w - 3 top_narrow; + x7 = w; + y7 = .82 [y8r, y6r]; + x8r = w - .35 top_narrow; + x9 = w; + y8r = .45 h; + + penpos1(top_thick, 80); + penpos3 (thin_thick, angle(z3-z4) + 90); + penpos4(thin_thick, angle (z3-z4) + 90); + penpos5(bot_thick, 70); + penpos6(3/2 bot_thick, 70); + penpos8 (thin_thick, 20); + + penlabels(range 0 thru 9); + + save p,q,r; + path p,q,r; + + p := z0{down} + .. z1l{dir(10)} + + .. simple_serif (z3l, z3r, 90) .. z2{left} .. z1r{left} + .. tension 1.2 + .. cycle; + q := z3l -- z3r -- z4r -- z4l -- cycle; + r := simple_serif (z4r, z4l, 90) .. z5l{right} + .. z6l{right} + .. z7{up} + .. simple_serif (z8r, z8l, 90) + .. z6r{left} .. z5r{left} .. cycle; + pickup pencircle scaled 1; +% draw p ; draw q ; draw r ; + + fill p; fill q; fill r; + +fet_endchar; + + +% forte f, grabbed from Ed Breitkopf Mozart horn concerto 3. +% +% NOTES: +% +% * the bulbs are open. +% +% * blotting around the serif % -% from cmbxti10.mf % -% feta dynamics -% too easy now to use this copy from cm, but we might want to do ourselves % -% 16pt staff: \font\dynfont=feta-din10 scaled \magstep1 -% 20pt staff: \font\dynfont=feta-din10 scaled \magstep2 +% TODO: insert blots around the serif +% +% +% +slant_angle = 20; + + +code := 101; +fet_beginchar("dynamic f", "f", "dynf"); + set_char_box (0, 1.1 ex#, descender#, ex# + ascender#); + + save left_angle, right_angle; + save serif_length, serif_excentricity; + save f_thick; + save bulb_thick, bulb_diam, fill_up; + save p; + path p; + bulb_diam = 7.5 / 40 ex; + bulb_thick = 8.5/40 ex; + fill_up = 1.5 serif_thick; + save slant; + left_angle = slant_angle - 6; + right_angle = slant_angle - 3; + f_thick = 7/16 ex; + serif_length = 0.96 ex; + serif_excentricity = 0.01 ex; + + + % z1 is the "base point" + z1 = (0.2 ex, - serif_thick); + y2 = y1 + ex; + z2l = z1 + whatever*dir (90 - left_angle); + penpos2 (f_thick, 0); + + y3l = y1 + ex + ascender; + x3l = x1 + 1 ex; + penpos3 (med_thick, -90); + penpos4 (bulb_thick, -20); + z3r = whatever [z4r,z4l]; + + x4l - x3l = 1/10 ex; + + penpos5(bulb_thick, -45); + x5r = 0.1 [x4l, x4r]; + y5l = y4l - bulb_diam; + + z6 = z2r + whatever* dir (90 - right_angle); + y6 = y1 + 3/8 ex; + + x7 = x1 - 1/4 ex; + y7r = y1 -descender; + penpos7(med_thick, -90); + + penpos8 (bulb_thick, 160); + x8l = x7l - 1/10 ex; + z7l = whatever [z8r,z8l]; + + penpos9 (bulb_thick, 135); + x9r = 0.1 [x8l, x8r]; + y9l = y8l + bulb_diam; + labels(1,6,9); + penlabels(2, 3,4,5, 7, 8,9); + + p := z1 --- z2l + .. tension 1.1 + .. z3l{right} .. z4r{down} + .. z5r{left} .. z5l{up} + .. tension 0.8 + .. z4l{up} .. z3r{left} + .. tension 1.1 + .. z2r --- z6 .. tension 1.25 .. z7r{left} + .. z8r{up} .. z9r{right} .. z9l{down} .. tension 0.8 + .. z8l{down} .. z7l{right} .. cycle; + pickup pencircle scaled 1; + fill p; +% draw p; + +% +% todo round for pixels... +% + pickup pencircle scaled round (1.4 serif_thick); + (rt x13) - (lft x14) = serif_length; + y13 = y14; + y14 = y2; + 0.5 [x13, x14] = x2 + serif_excentricity; + + draw z13 .. z14; + + penlabels(16); + labels(13,14,15); +fet_endchar; + % -% Computer Modern Bold Extended Text Italic 10 point +% Notes: +% +% - The S is trapezoidal (i.e. narrower at the top) % -% font_identifier:="CMBXTI"; font_size 10pt#; +% - The white space is differently shaped at the top (the bulb's inner +% curve is filled up.) % +% - less heavy than the f and p signs. +% + + +code := 114; +fet_beginchar("dynamic s", "s", "dyns"); + set_char_box (0, 17/24 ex#, 0, 1 ex#); + + save left_angle, right_angle; + save s_thick, s_thin; + save base_point; + save bulb_diam, bulb_len; + save over_shoot; + over_shoot = 0; % .2 serif_thick; + pair base_point; + + bulb_diam = 11/70 ex; + bulb_len = 1.0 bulb_diam; + left_angle = slant_angle - 2; + right_angle = slant_angle -11; + + s_thick = 16/70 ex; + s_thin = serif_thick; + + base_point = (0,0); + + penpos1 (bulb_diam, -45); + z1 = 0.35 [z2l,z2r] + bulb_len * dir(45); + penpos2 (bulb_diam, -25); + y2l = 0.845 [y7r, y3r]; + + z2l = base_point + whatever * dir (90-left_angle); + penpos3 (s_thin, 100); + x3l = 1/2 w ; + y3l = ypart base_point - over_shoot ; + + penpos4 (s_thick, 25); + ypart z4l = ypart z1r; + z4r = base_point + (w,0) + whatever *dir(90-right_angle); + penpos5 (s_thick, 40); + z5 = z3l + whatever * dir (90-right_angle); + y5 = ypart (0.48 [z7r, z3r]); + + + penpos6 (s_thick, 25); + z6l = base_point + whatever *dir(90-left_angle); + y6r = y9l; + + penpos7 (.9 s_thin, 110); + z7l = 0.45 [z6r, z8l] + whatever * dir (90-left_angle); + y7r = h + over_shoot; + + penpos8 (.9 bulb_diam, -25); + z8 = .6 [z4l,z4r] + whatever *dir(90-right_angle); + + y8r = ypart (0.23 [z7r, z3r]); + + penpos9 (.9 bulb_diam, -45); + z9 = .4 [z8r,z8l] + .9 bulb_len * dir (-135); + + penlabels(1,2,3,4,5,6,7,8,9); + + labels(12); + save p; + path p; + p := z2l{down} .. z3l{right} .. z4r{up} + .. z5r + .. z6r{up} + .. z7l{right} + %.. z8l{down} + ..z9l{down} + .. z9r{right} .. z7r{left} + .. z6l{down} + .. z5l + .. z4l{down} + .. z3r{left} + .. z2r{up} .. z1r{up} + .. z1l{left} .. cycle; + pickup pencircle scaled 1; + fill p; +fet_endchar; -input cmbase; + +% +% piano p, grabbed from Ed Breitkopf Mozart horn concerto 3. +% +% Notes: +% +% * there is no dishing in the serif (but we do it anyway) +% +% * The cheek is a little fatter than the stem +% +% * The slant is extreme: 20 degrees +% +% * the twiddle (what'sitcalled) is a slightly darker than the serif +% +% * The hole in the cheek has a straight right side. +% +% * Corners are filled up. % -% We bluntly multiply by font-size / 10pt#, -% before we did plain scaling anyway. % -M:=design_size/10; +save slant; +slant := ypart (dir(slant_angle)); +currenttransform := currenttransform slanted slant; + +code := 111; + + +fet_beginchar("dynamic p", "p", "dynp") + % + % TODO w really is 13/12 ex + % but should do kerning + set_char_box (0, 15/12 ex#, descender#, 1.0 ex#); + + save twiddle_thick, stem_thick, cheek_thick; + save updir, fill_up; + save serif, dishing_angle, p, q; + save cheek_medium, left_serif_protude, right_serif_protude; + save lower_overshoot; + + pair updir; + path serif,q,p; + save my_slant_angle; + my_slant_angle = 0; + updir := dir (90 - my_slant_angle ); + twiddle_thick = med_thick; + cheek_medium = 1/6 ex; + + dishing_angle = 5; + fill_up := 1.5 serif_thick; + straigh_len = 0.5 ex; + lower_overshoot := .3 serif_thick; + + stem_thick = 2/6 ex; + cheek_thick = 13/32 ex; + cheek_width = 0.72 ex; + left_serif_protude = 18/60 ex; + right_serif_protude= 15/60 ex; + + penpos1 (twiddle_thick, -slant - 5); + penpos2 (cheek_medium, 90 - slant ); + penpos3 (cheek_medium, 90 - slant); + + x4r - x4l = cheek_thick; + penpos4 (whatever, 0); + penpos5 (whatever, -38); + penpos6 (stem_thick, 0); + penpos17 (straigh_len, 90 -slant); + whatever [z17l, z17r] = z4l; + y17 = 7/16 ex; + + x6l = 0; + y6l = - descender + serif_thick/2; + z1l = z6l - whatever *dir (90 - my_slant_angle + 20 ); + y1r = 0.5 ex; + y2r = ex; + z7 = whatever * updir + z6l; + y7 = 43/60 ex; + + z2l = whatever *updir + 0.3 [z7, z1r]; + y8 = ypart (0.9 [z7, z2l]); + z8 = 2/3 [z6l, z6r] + whatever * updir; + + + y3r = ex; + z3l = 0.58 [(stem_thick, -descender), (stem_thick + cheek_width - cheek_thick, -descender)] + whatever * updir; + y4r = .38 ex; + z4r = whatever*updir + (stem_thick+ cheek_width, -descender); + + z5l = whatever*updir + z3l; + y5r = -lower_overshoot; + y5l = y5r + cheek_medium * ypart dir(55); + + z9 = z6r + whatever*updir; + y9 = .2 [y5l, y5r]; + + p := + z2r{right} .. {dir( -60)}z8 & z8{dir 35} .. z3r{right} + .. z4r{-updir} + .. tension 1.1 + .. z5r{left} .. z9 + & z9 -- z6r -- z6l -- z7{updir} + .. z2l{left} .. tension 1.2 .. + % z1r & z1r -- z1l & z1l + simple_serif (z1r, z1l, -90) + .. cycle; + + + save blot_t, corner_t; + + blot_t := 0.13; + corner_t := xpart (p intersectiontimes z9); + + z19 = point corner_t - 2 blot_t of p; + z20 = point corner_t + blot_t of p; + labels(19,20); + + save blot_path; + path blot_path; + + pickup pencircle scaled 1; + + fill z19{up} .. {right}z20{updir} .. z19{-(direction corner_t - 2 blot_t of p)} .. cycle; + + pickup pencircle scaled 1; + fill p; + + y12 = 0.5 ex; + z12 = z6r + whatever*updir; + + save inner_tension; + inner_tension = 1.4; + q := + z17l .. tension 1.5 .. z17r .. z3l{left}.. tension 1.05 .. z12{-updir} .. tension 1.05 .. z5l{right} .. cycle; + unfill q; + penlabels (1, 2, 3, 4, 5, 6, 17); + + + + + pickup pencircle scaled serif_thick; + lft x11 = -left_serif_protude; + rt x10 = stem_thick+ right_serif_protude; + bot y10 = bot y11 = -descender; + + + serif := simple_serif (z10, z11, dishing_angle); + draw serif; + + labels(7,8, 9, 10, 11,12); + + + z13 = point 0.05 of serif; + z14 = point 0.85 of serif; + z15 = z6l + updir * fill_up +( serif_thick/2, 0); + z16 = z6r + updir * 1.2fill_up- +( serif_thick/2, 0); + labels(13,14, 15, 16); +% pickup pencircle scaled 1; + draw z13{direction 0.05 of serif} .. z16{updir}; + draw z14{-(direction 0.85 of serif)} .. z15{updir}; +fet_endchar; -u#:=M*21.2/36pt#; % unit width -width_adj#:=M*11/36pt#; % width adjustment for certain characters -serif_fit#:=M*0pt#; % extra sidebar near lowercase serifs -cap_serif_fit#:=M*7/36pt#; % extra sidebar near uppercase serifs -letter_fit#:=M*11/36pt#; % extra space added to all sidebars +% +% NOTES: +% +% * right stem is fatter and more straight than the left 2 two stems. +% +% * The twiddle at the left is similar to the p twiddle +% +% * The bottoms of the stems are blotted. +% -body_height#:=M*270/36pt#; % height of tallest characters -asc_height#:=M*250/36pt#; % height of lowercase ascenders -cap_height#:=M*247/36pt#; % height of caps -fig_height#:=M*232/36pt#; % height of numerals -x_height#:=M*160/36pt#; % height of lowercase without ascenders -math_axis#:=M*90/36pt#; % axis of symmetry for math symbols -bar_height#:=M*85/36pt#; % height of crossbar in lowercase e -comma_depth#:=M*70/36pt#; % depth of comma below baseline -desc_depth#:=M*70/36pt#; % depth of lowercase descenders +% +% +% This is cut & paste programming. Somehow 3 i shapes in two chars (p and m) +% Doesn't seem worth the trouble of writing a macro. +% +code := 108; + +fet_beginchar("dynamic m", "m", "dynm"); + set_char_box (0, 1.5 ex#, 0, 1.0 ex#); + + % should share code with p for twiddle. + + save i_thick, i_angle, i_twiddle_thick, + i_twiddle_start_angle, i_twiddle_start_y, + i_left_space; + save p; + save idir, center, right_ending; + save overshoot; + pair center, idir, right_ending; + + path p; + + overshoot = .25 serif_thick; + i_thick := 21 / 80 ex; + i_angle := 0; + idir := dir(90- i_angle); + + i_left_space = 16/80 ex; + i_twiddle_thick = 1.2 serif_thick; + i_twiddle_start_y = 8/16 ex; + i_twiddle_start_angle = 0; + center =(0,0); + + penpos1 (i_twiddle_thick, -i_twiddle_start_angle); + y1 = i_twiddle_start_y; + z1r = center - (i_left_space,0) + whatever * idir; + + y3 = 0.5 bottom_blot + ypart center; + penpos3(i_thick, 0); + z3l = center + whatever * idir; + y4 = ypart center; + penpos4 (i_thick - bottom_blot, 0); + z4 - z3 = whatever * idir; + + y2l = 1 ex + overshoot; + z2l = .08 [z3l, z3r] + whatever * idir; + z2r = 5/8 [z1r, z3l] + whatever * idir; + y2r = y5l + 1/9 ex; + z2 = 1/2 [z2l, z2r] ; + penpos5(i_thick, 0); + z5 = z4 + whatever * idir; + y5 = 55 / 80 ex; + + p := simple_serif (z1l, z1r, 90) .. tension 1.2 .. z2r{right} .. z5l --- z3l + .. z4l --- z4r .. z3r --- z5r .. tension 1.2 .. z2l{left} .. cycle; + + fill p; + right_ending := z5r; + penlabels (1, 2, 3 , 4,5); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + clearxy; + + i_angle := -3.2; + idir := dir(90 - i_angle); + i_left_space := 14/80 ex; + + + z1r = right_ending; + z5l = right_ending + (i_left_space,0); + penpos1(serif_thick, - i_twiddle_start_angle); + + y3 = .5 bottom_blot + ypart center; + penpos3(i_thick, 0); + z3l = z5l + whatever * idir; + y4 = ypart center; + penpos4(i_thick - bottom_blot, 0); + z4 - z3 = whatever * idir; + + y2l = 1 ex+ overshoot; + + z2l = .08 [z3l, z3r] + whatever * idir; + z2r = 5/8 [z1r, z3l] + whatever * idir; + y2r = y5l + 1/9 ex; + z2 = 1/2 [z2l, z2r] ; + penpos5(i_thick, 0); + + p := simple_serif (z1l, z1r, 90) .. tension 1.05 .. z2r{right} .. z5l --- z3l + .. z4l --- z4r .. z3r --- z5r .. tension 1.2 .. z2l{left} .. cycle; + + fill p; + right_ending := z5r; + penlabels (1, 2, 3 , 4,5); + clearxy; +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + i_thick := 23 / 80 ex; + i_angle := -6; + i_left_space := 14/80 ex; + + + idir := dir(90- i_angle); + z1r = right_ending; + z5l = right_ending + (i_left_space,0); + penpos5 (whatever, 10); + penpos3 (whatever, 20); + + y7 = 0; + penpos7(i_thick ,0); + + penpos1(serif_thick, - i_twiddle_start_angle); + + z3l = z7l + whatever * idir; + z3r = z7r + whatever * idir; + z5l = z7l + whatever * idir; + z5r = z7r + whatever * idir; + + save end_twiddle_angle; + end_twiddle_angle := 35; + penpos6(serif_thick, - end_twiddle_angle); + y6l = 23/80 ex + ypart center; + z6l = 1.6 [z3l, z3r] + whatever * idir; + + + + y3l = 1/8 ex + ypart center; + y2l = 1 ex+ overshoot; + z2l = .08 [z3l, z3r] + whatever * idir; + z2r = 5/8 [z1r, z3l] + whatever * idir; + y2r = y5l + 1/9 ex; + z2 = 1/2 [z2l, z2r] ; + z8 = z7 - (0, 1 overshoot); + + p := simple_serif (z1l, z1r, 90) .. tension 1.05 + .. z2r{right} .. z5l --- z3l + .. z8{right} + .. simple_serif(z6r, z6l, 90) + .. tension 0.85 + .. z3r --- z5r + .. tension 1.2 + .. z2l{left} .. cycle; + +% pickup pencircle scaled 1; +% draw p; + fill p; + right_ending := z5r; + penlabels (1, 2, 3 , 4,5,6,7, 8); + clearxy; -crisp#:=M*13/36pt#; % diameter of serif corners -tiny#:=M*13/36pt#; % diameter of rounded corners -fine#:=M*10/36pt#; % diameter of sharply rounded corners -thin_join#:=M*10/36pt#; % width of extrafine details -hair#:=M*20/36pt#; % lowercase hairline breadth -stem#:=M*38/36pt#; % lowercase stem breadth -curve#:=M*43/36pt#; % lowercase curve breadth -ess#:=M*35/36pt#; % breadth in middle of lowercase s -flare#:=M*42/36pt#; % diameter of bulbs or breadth of terminals -dot_size#:=M*53/36pt#; % diameter of dots -cap_hair#:=M*22/36pt#; % uppercase hairline breadth -cap_stem#:=M*49/36pt#; % uppercase stem breadth -cap_curve#:=M*52/36pt#; % uppercase curve breadth -cap_ess#:=M*50/36pt#; % breadth in middle of uppercase s -rule_thickness#:=M*.6pt#; % thickness of lines in math symbols +fet_endchar; -dish#:=M*1/36pt#; % amount erased at top or bottom of serifs -bracket#:=M*10/36pt#; % vertical distance from serif base to tangent -jut#:=M*27/36pt#; % protrusion of lowercase serifs -cap_jut#:=M*39/36pt#; % protrusion of uppercase serifs -beak_jut#:=M*10/36pt#; % horizontal protrusion of beak serifs -beak#:=M*70/36pt#; % vertical protrusion of beak serifs -vair#:=M*13/36pt#; % vertical diameter of hairlines -notch_cut#:=M*10pt#; % maximum breadth above or below notches -bar#:=M*17/36pt#; % lowercase bar thickness -slab#:=M*17/36pt#; % serif and arm thickness -cap_bar#:=M*17/36pt#; % uppercase bar thickness -cap_band#:=M*17/36pt#; % uppercase thickness above/below lobes -cap_notch_cut#:=M*10pt#; % max breadth above/below uppercase notches -serif_drop#:=M*3/36pt#; % vertical drop of sloped serifs -stem_corr#:=M*2/36pt#; % for small refinements of stem breadth -vair_corr#:=M*1.5/36pt#; % for small refinements of hairline height -apex_corr#:=M*0pt#; % extra width at diagonal junctions -o#:=M*6/36pt#; % amount of overshoot for curves -apex_o#:=M*6/36pt#; % amount of overshoot for diagonal junctions +code := 113; -slant:=.25; % tilt ratio $(\Delta x/\Delta y)$ -fudge:=1; % factor applied to weights of heavy characters -math_spread:=.5; % extra openness of math symbols -superness:=8/11; % parameter for superellipses -superpull:=1/8; % extra openness inside bowls -beak_darkness:=.4; % fraction of triangle inside beak serifs -ligs:=2; % level of ligatures to be included -square_dots:=false; % should dots be square? -hefty:=false; % should we try hard not to be overweight? -serifs:=true; % should serifs and bulbs be attached? -monospace:=false; % should all characters have the same width? -variant_g:=true; % should an italic-style g be used? -low_asterisk:=false; % should the asterisk be centered at the axis? -math_fitting:=false; % should math-mode spacing be used? +currenttransform := identity slanted ypart(dir(15)); +fet_beginchar("dynamic r", "r", "dynr"); + set_char_box (0, .75 ex#, 0, 1ex#); + save base_point, stem_thick, bulb_diam; + save twiddle_thick, attach_len, overshoot, taille; + stem_thick =.26 ex; + bulb_diam = .30 ex; + twiddle_thick= 1.1 serif_thick; + overshoot = .5 serif_thick; + taille = -0.3 serif_thick; -% "f" obviously has a _lot_ bigger slant than "p" (see Wanske p.239) -% however; perhaps we need two f symbols: -% - a super-slanted one used in "f" "mf" "sfz" "sf", and -% - a more normal-slanted in "ff" "fff" "fp" "fp" (see Wanske p.241) -% -% looking at professionally typeset music reveals that typesetters -% are somewhat unsure about slanting in "mf", "fp", "sfz" + pair base_point; + base_point = (0,0); -% "f" and "p" (in any combination) are a lot (factor two) fatter than -% "s", "m", and "z". sometimes the "m" and "z" are a bit fatter than -% "s". + x1l = 0; + y1l = .5 bottom_blot; -slant:=.68; % tilt ratio $(\Delta x/\Delta y)$ -crisp#:=M*19/36pt#; % diameter of serif corners -tiny#:=M*19/36pt#; % diameter of rounded corners -fine#:=M*20/36pt#; % diameter of sharply rounded corners -thin_join#:=M*20/36pt#; % width of extrafine details -stem#:=M*72/36pt#; % lowercase stem breadth -flare#:=M*52/36pt#; % diameter of bulbs or breadth of terminals + penpos10(stem_thick - bottom_blot, 0); + y10 = 0; + x10 = x1; -mode_setup; -font_setup; + penpos1 (stem_thick, 0); + y2l - y1l = 36/47 ex; + x2l = x1l; + penpos2 (stem_thick, 0); -num=-1; -xbar:=M*u; + y3 = .77 ex; + x3r = x2l - .2 ex; + penpos3(twiddle_thick, -20); -save fcode; + x9 = 0.15 [x1r, x1l] ; + y9 = y4l - .12 ex ; -fcode = 101; -input feta-ital-f; + x4l = -0.1 [x1l, x1r]; + y4l = ex + overshoot; -bar#:=M*17/36pt#; % lowercase bar thickness -slant:=.38; % tilt ratio $(\Delta x/\Delta y)$ -stem#:=M*58/36pt#; % lowercase stem breadth -font_setup; -xbar:=M*.4u; + x4r = 0.62 [x3r, x2l]; + y4r = 0.5 [y4l, y2l]; -save fcode; + penpos5(whatever, -74); + y5l - y5r = bulb_diam; + y5l = ex + overshoot; + x5 = x2r + attach_len; + attach_len + bulb_diam/2 + stem_thick = w; -fcode = 102; + z6 = z5; + penpos6 (bulb_diam, 0); +% z7 = z6l + taille* dir(180); -input feta-ital-f; -stem#:=M*54/36pt#; % lowercase stem breadth -hair#:=M*12/36pt#; % lowercase hairline breadth -vair#:=M*7/36pt#; % vertical diameter of hairlines + save alpha; + alpha := 35; + z7 = z6 + .4 * bulb_diam * dir (-90 -alpha); + z8 = 9/10 [z1r, z2r]; -font_setup; -input feta-ital-p; + save p; + path p; + + p := z1r .. z10r --- z10l .. z1l + --- z2l + .. z4r{left} + .. tension 1.2 + .. {down}simple_serif(z3r, z3l,-90){up} + .. tension 0.95 + .. z4l + .. z9 + & z9{curl 0} + .. z5l + .. z6r{dir(-80)} + .. z5r{left} + .. z7 + .. z6l + .. tension 1.2 + .. z8 --- cycle; + pickup pencircle scaled 1; + draw p; + fill p; + penlabels (1,2,3, 4,5,6,7,8, 9, 10); +fet_endchar ; + + + + + +%%% KERNING + +ligtable "m" : "p" kern 0.2 ex#, "f" kern -0.1 ex#; +ligtable "f" : "f" kern -0.13 ex#; +ligtable "r" : "f" kern 0.1 ex#; -slant:=.28; % tilt ratio $(\Delta x/\Delta y)$ -stem#:=M*32/36pt#; % lowercase stem breadth -ess#:=M*28/36pt#; % breadth in middle of lowercase s -hair#:=M*14/36pt#; % lowercase hairline breadth -vair#:=M*9/36pt#; % vertical diameter of hairlines -flare#:=M*36/36pt#; % diameter of bulbs or breadth of terminals -crisp#:=M*13/36pt#; % diameter of serif corners -tiny#:=M*13/36pt#; % diameter of rounded corners -fine#:=M*10/36pt#; % diameter of sharply rounded corners -thin_join#:=M*10/36pt#; % width of extrafine details -curve#:=M*43/36pt#; % lowercase curve breadth -% Chester, Breitkopf suggest smaller sizes of these other chars, -% using the x-height as reference point. -x_height#:=M*135/36pt#; % height of lowercase without ascenders -font_setup; -input feta-ital-m; -input feta-ital-r; -input feta-ital-s; -input feta-ital-z; -font_slant slant; -font_x_height x_height#; -font_quad 18u#; % to have a working em unit -%%fet_endfont("feta-din"); + + +%% notes from old dyn code. + +% "f" obviously has a _lot_ bigger slant than "p" (see Wanske p.239) +% however; perhaps we need two f symbols: +% - a super-slanted one used in "f" "mf" "sfz" "sf", and +% - a more normal-slanted in "ff" "fff" "fp" "fp" (see Wanske p.241) +% +% looking at professionally typeset music reveals that typesetters +% are somewhat unsure about slanting in "mf", "fp", "sfz" + +% "f" and "p" (in any combination) are a lot (factor two) fatter than +% "s", "m", and "z". sometimes the "m" and "z" are a bit fatter than +% "s". + + +% Chester, Breitkopf suggest smaller sizes of these other chars, +% using the x-height as reference point. diff --git a/mf/feta-din.mf b/mf/feta-din.mf index c314f4468d..00d7211031 100644 --- a/mf/feta-din.mf +++ b/mf/feta-din.mf @@ -5,13 +5,21 @@ test:=0; input feta-autometric; input feta-macros; -input feta-params; +% input feta-params; +mode_setup; + +ex# := (design_size / 2.4)* pt#; +descender# := 0.5 ex#; +ascender# := 0.72 ex#; +staffspace# := 1.75 / 2.0 * ex#; +stafflinethickness# := staffspace# / 10; + +define_pixels (staffspace, stafflinethickness, ex, descender, ascender); fet_beginfont("feta-din", design_size); -%mode_setup; input feta-din-code; -fet_endfont("feta-nummer"); +fet_endfont("feta-din"); end. diff --git a/mf/feta-nummer-code.mf b/mf/feta-nummer-code.mf index 1cd8e52acc..28bd3b7a0d 100644 --- a/mf/feta-nummer-code.mf +++ b/mf/feta-nummer-code.mf @@ -4,7 +4,18 @@ % % source file of the Feta (not the Font-En-Tja) music font % -% (c) 1997--2001 Jan Nieuwenhuizen +% (c) 1997--2002 Jan Nieuwenhuizen + +% +% These numbers were taken from a part that that the EJE violas played +% 1997 -- Probably Mendelssohn's ouverture Heimkehr aus der Fremde. +% + +% +% TODO all the invocation of flare_path are weird -- +% the horizontal tangents should be more at the center of the +% glyph. +% fet_begingroup("number") @@ -12,6 +23,66 @@ define_pixels(height,thick,thick,thin,hair,flare); define_pixels(foot_top,foot_width); define_pixels(kuulleke); +% +% Yet Another Bulb Routine with smooth inside curve. +% +% alpha = start direction. +% beta = which side to turn to. +% flare = diameter of the bulb +% line = diameter of line attachment +% direction = is ink on left or right side (1 or -1) +% + +% +% move_away_to = amount left (for 2) +% turn_to = amount down (for 2 ) +% +def number_flare_path(expr pos,alpha,beta,line,flare, + + move_away_to, + turn_to, taille, taille_ratio, + direction) = + begingroup; + clearxy; + +% z5 = z2 + 0.43* flare *dir (alpha - 1.5 beta); + + z4 = (0.75 - taille) [z2r, z2l] + whatever* dir (alpha - beta) ; + z4 = (taille_ratio * taille) [z3l, z3r] + whatever* dir(alpha); + penpos1(line,180+beta+alpha); + z1r=pos; + + z2r = z1r + move_away_to *dir (alpha) + (line + turn_to) * dir(alpha+beta); + z3r = 0.5 [z2l,z2r] + 0.5 *flare *dir(alpha + beta); + + penpos2(flare, alpha ); + penpos3(flare, alpha + beta); + penlabels(1, 2, 3, 4, 5); + pickup pencircle; + + save p; + path p; + p := z1r{dir(alpha)} + .. z2r{dir(180+alpha-beta)} + .. z3r{dir(alpha+180)} + .. z2l{dir(alpha-beta)} + + +%%% Two versions of the curve: one with z4, the other with z5. +% .. z5{dir(alpha- beta/2 )} + ..z4{dir(180+alpha+beta)} + ..z1l{dir(alpha+180)}; +% draw p ; + if direction = 1: + p + else: + reverse p + fi + endgroup + enddef; + + + def calc_kuulleke(expr w,alpha) = begingroup; save beta; beta=(alpha-90)/2; @@ -48,7 +119,7 @@ def draw_foot(expr xpos) = enddef; def draw_six = - set_char_box(0, 2/3height#*widen, 0, height#); + set_char_box(0, .68 height#*widen, 0, height#); message "w:"&decimal w; message "h:"&decimal h; @@ -57,26 +128,45 @@ def draw_six = penpos2(hair,90); z2=(w/2,y1); - penpos3(7/8thick,0); + + penpos3 (15/16 thick,0); % yup, should use the path fract [] "everywhere" - z3r=(w,1/2[0,y1]); + x3r=w; + y3r = .5 [y4r, y2r]; penpos4(hair,-90); z4r=(x2,0); - penpos5(7/8thick,180); - z5r=(0,y1); penpos6(hair,90); - z6r=(w-flare,h); - penpos7(7/8thick,180); - z7r=(0,h/2); - penpos10(7/8thick,180); + x6r = .56 w; + y6r = h; + penpos7(thick,180); + + x7r=0; + y7r = .50 h; + + penpos10(thick,180); z10r=(0,y3); penlabels(1,2,3,4,5,6,7,8,9,10,11); - save t; t=tense; - fill z7{right}..z2r{right}..tension t..z3r{down} - ..tension t..z4r{left} - ..tension t..z7r{up}..tension t..z6r{right} - ..z6l{left}..tension t..z7l{down}..z10l{up}..cycle; - draw_flare(z6r,0,-90,hair,flare); + + + save outer_t; outer_t= 0.88; + save t ; t := tense; + fill +% draw + z7{right}..z2r{right} + ..tension outer_t + ..z3r{down} + ..tension outer_t + ..z4r{left} +% ..tension t + ..z7r{up} +% .. flare_path (z6r,0,-90,hair,flare, 1) + .. number_flare_path (z6r, 0,-90,hair,flare, + w - x6r -hair/2, .16 h, 0.05, 2.5, 1) + +% ..tension t + ..z7l{down} + .. {down}z10l -- cycle; + unfill z2l{right}..tension t..z3l{down}..tension t ..z4l{left}..tension t..z10l{up}..tension t..cycle; enddef; @@ -85,6 +175,10 @@ save dot_diam; dot_diam# = 7/8flare#; define_pixels(dot_diam); +code := 32; +fet_beginchar("Space", "space", "space") + set_char_box(0, space#, 0,height#); +fet_endchar; code := 43; % , = 44 @@ -125,8 +219,7 @@ fet_endchar; code := 47; % 0 = 48 fet_beginchar("Numeral 0", "0", "zero") -% set_char_box(0, 4/5height#*widen, 0, height#); - set_char_box(0, 11/15height#*widen, 0, height#); + set_char_box(0, 11/15height# * widen, 0, height#); message "w:"&decimal w; message "h:"&decimal h; penpos1(thin,90); @@ -177,36 +270,51 @@ fet_beginchar("Numeral 1", "1", "one") fet_endchar; fet_beginchar("Numeral 2", "2", "two") - set_char_box(0, 11/15height#*widen, 0, height#); + set_char_box(0, 22/30 height#*widen, 0, height#); message "w:"&decimal w; message "h:"&decimal h; clearxy; save alpha; alpha=-45*widen; save beta; beta=85; save gamma; gamma=beta-10; + save flare_start_distance; + + flare_start = 0.25 ; save theta; theta=20/widen; penpos1(hair,90+beta); z1=(0,0)+(1/2sqrt(2)*hair)*dir(45); penpos3(hair,90+gamma); z3=(w,thick)+(1/2sqrt(2)*hair)*dir(-135); - penpos2(thick,90+alpha); - x2-x1=x3-x2; y2=11/16thick/widen; - fill z1r{dir(beta)}..{dir(alpha)}z2r..{dir(gamma)}z3r - ..z3l{dir(180+gamma)}..{dir(180+alpha)}z2l + penpos2(thick, 90+alpha -15); + x2-x1=x3-x2; + y2=10/16 thick/widen; + fill z1r{dir(beta)}.. tension 0.9 .. {dir(alpha + 10)}z2r..{dir(gamma)}z3r + ..z3l{dir(180+gamma)}..{dir(180+alpha - 5)}z2l ..{dir(180+beta)}z1l..cycle; penpos4(thick,0); - z4r=(w-thin/2,.72h); - penpos5(thin,90); - z5r=(1/2hair+flare,h); + z4r=(w-thin/2, .71 h); + penpos5(hair,90); + y5r = h; + x5r = 9/20 w ; + penlabels(1,2,3,4); penlabels(5,6); save t; t=tense; - fill z1l{dir(beta)}..tension t..z4r{up} - ..tension t..z5r{left}..z5l{right} - ..z4l{down}..tension t + + save p; + path p ; + p := z1l{dir(beta)}..tension t..z4r{up} + .. number_flare_path(z5r,180,90,hair, 1.05 flare, + x5r - 1/2 hair, + .21 h, 0.006, 0.4, 1) + .. z4l{down}..tension t ..{dir(180+beta)}z1r..cycle; - draw_flare(z5r,180,90,thin,flare); + + pickup pencircle scaled 1; +% draw p; + fill p; + fet_endchar; fet_beginchar("Numeral 3", "3", "three") @@ -214,32 +322,66 @@ fet_beginchar("Numeral 3", "3", "three") message "w:"&decimal w; message "h:"&decimal h; penpos1(hair,-90); - z1l=(17/16thick,h); + +% flare_start = 0.25 ; + x1l = 36/80 w; + y1l = h; + +% z1l=(17/16thick,h); penpos2(7/8thick,180); - z2l=(w-thick/8,3/4h+thick/16); + x2l= w-thick/8; + y2l = 3/4h + thick* 3/32; penpos3(thin,90); z3=(w/2,h/2+1/8thick); penpos4(thin,90); z4=(5/8thick+1/2thin,y3); penpos5(thick,0); - z5r=(w,1/4h+thick/16); + x5r=w; + y5r = 17/64 h + thick/16; + penpos6(hair,-90); - z6r=(9/8thick,0); + + x6r= 37/80 w; + y6r = 0; penpos7(3/2thin,90); - z7=(x5,y3); + x7 = .83 w ; + y7 = y3; penlabels(1,2,3,4,5,6,7); save alpha; alpha=25; save t; t=tense; - fill z1l{right}..tension t..z2l{down}..z7r{dir(180+alpha)} - ..z7l{dir(-alpha)}..z5r{down}..tension t..z6r{left} - ..z6l{right}..tension t..z5l{up} - ..tension t..z3l{left}..z4l{left} - ..z4r{right}..z3r{right}..tension t..z2r{up} - ..tension t..z1r{left}..cycle; - draw_flare(z1l,180,90,hair,7/8flare); - draw_flare(z6r,180,-90,hair,flare); + save outer_t; outer_t := 0.93; + pickup pencircle scaled 1; + +% draw + fill + number_flare_path (z1l, 180, 90, hair, 7/8 flare, x1l - .5 hair, + .16 h, 0.06, 1.5, -1) + ..tension outer_t + .. z2l{down} + .. tension outer_t + ..z7r{dir(180+alpha)} + ..z7l{dir(-alpha)} + .. tension outer_t + ..z5r{down} + .. tension outer_t + .. number_flare_path (z6r, 180, -90, hair, flare, x6l, + .18 h, 0.06, 1.5, 1) + + .. z5l{up} + ..tension t + ..z3l{left} + ..z4l{left} + ..z4r{right} + ..z3r{right} + ..tension t + ..z2r{up} + ..tension t + .. cycle +; fet_endchar; + + fet_beginchar("Numeral 4", "4", "four") set_char_box(0, 4/5height#*widen, 0, height#); message "w:"&decimal w; @@ -283,10 +425,11 @@ fet_beginchar("Numeral 4", "4", "four") fet_endchar; fet_beginchar("Numeral 5", "5", "five") - set_char_box(0, 7/10height#*widen, 0, height#); + set_char_box(0, 27/40 height#*widen, 0, height#); message "w:"&decimal w; message "h:"&decimal h; calc_kuulleke(w-thin,0); + z1=(w/2+1/8thick,h); save alpha; alpha=0; penpos5(thin,0); @@ -303,19 +446,35 @@ fet_beginchar("Numeral 5", "5", "five") penpos8(thin,90); z8l=(x7r,y7r-1/16thick); penpos9(thin,90); - z9=(x11+3/16thick,10/16[y5,y7]); + + + y9=10/16[y5,y7]; + x9 = .36 [x8r, x10r] ; + penpos10(thick,0); - z10r=(w,1/2[y9r,y11r]); + x10r = w+ hair/2; + y10r = 1/2[y9r,y11r]; penpos11(hair,-90); - z11r=(9/8thick,0); - penlabels(8,9,10,11); + y11r = 0; + x11r = .7 [0, x10l]; + + penlabels(8,9,10,11, 12); save beta; beta=45; - save t; t=tense; - fill z8r{dir(beta)}..z9r{right}..tension t..z10r{down} - ..tension t..z11r{left} - ..z11l{right}..tension t..z10l{up}..tension t + + save inner_t, outer_t; + inner_t= 1.0; + outer_t= .85; + fill z8r{dir(beta)}..z9r{right} + ..tension outer_t + ..z10r{down} + .. number_flare_path (z11r, 180, -90, hair, flare, x11l, + .18 h, 0.06, 1.5, 1) + ..z11l{right} + ..tension inner_t + ..z10l{up} + ..tension inner_t ..z9l{left}..z8l{dir(180+beta+10)}..cycle; - draw_flare(z11r,180,-90,hair,flare); + fet_endchar; fet_beginchar("Numeral 6", "6", "six") @@ -384,21 +543,22 @@ fet_beginchar("Numeral 8", "8", "eight") save alpha; alpha=60; save beta; beta=alpha-15; z1=(w/2,h/2+thick/8); - penpos2(hair,90+180+beta); + penpos2(14/8 thin,0); z2=(w/3,h/2+thin); penpos3(3/2thin,0); z3l=(0,h/4+thin/2); penpos4(hair,90); - z4l=(x1,0); + + z4l=(x1 ,0); penpos5(thick,90+90+alpha); z5=z1+w/4*dir(alpha-90); penpos6(thick,90+90+alpha); z6=z1+(w/4-thin/2)*dir(90+alpha); penpos7(hair,90); - z7r=(x1,h); + z7r= (x1 + .02 w ,h); penpos8(3/2thin,0); z8r=(w-thin/2,3/4h+thin/2); - penpos9(hair,90+180+beta); + penpos9( 13/8 thin,0); z9=(2/3w,h/2); penlabels(1,2,3,4,5,6,7,8,9); save t; t=tense; diff --git a/mf/feta-nummer.mf b/mf/feta-nummer.mf index 898364cd23..bdefb06809 100644 --- a/mf/feta-nummer.mf +++ b/mf/feta-nummer.mf @@ -7,24 +7,38 @@ input feta-autometric; input feta-macros; input feta-params; + + + %blot_diameter# = .4pt#; fet_beginfont("feta-nummer", design_size); mode_setup; height#:=designsize; +space# := design_size/2; font_x_height height#; +font_normal_space space#; + + +% +% DOCME! +%ugh. b and h are reused. +% save b,h; 4h+b=1.15; 10h+b=1; fatten:=designsize*h+b; + save b,h; 4h+b=1.05; 10h+b=1; widen:=designsize*h+b; + tense=0.85; thick#:=7/30height#*fatten; -thin#:=thick#/4*fatten; -hair#:=blot_diameter#; -flare#:=9/8thick#/fatten; +thin#:=thick#/4*fatten + max(.1 (height# / 10 - 1), 0); +hair#:= sqrt(.8 * blot_diameter#* thin#) ; +flare#:=9/8 thick# + .75 (height# / 10 - 1); + save b,h; 4h+b=1/8; 10h+b=1/6; kuulleke#:=thick#*designsize*h+b; foot_top#:=thick#; diff --git a/mf/feta-nummer10.mf b/mf/feta-nummer10.mf index 884ca5c30a..2c6e8f5338 100644 --- a/mf/feta-nummer10.mf +++ b/mf/feta-nummer10.mf @@ -2,7 +2,7 @@ % part of LilyPond's pretty-but-neat music font design_size:=10; % feta20 = 20pt - +% mode := smoke; input feta-nummer; end. diff --git a/mf/feta-nummer12.mf b/mf/feta-nummer12.mf new file mode 100644 index 0000000000..c3e868d31e --- /dev/null +++ b/mf/feta-nummer12.mf @@ -0,0 +1,2 @@ +design_size := 12; +input feta-nummer; diff --git a/mf/feta-nummer16.mf b/mf/feta-nummer16.mf new file mode 100644 index 0000000000..92423b0058 --- /dev/null +++ b/mf/feta-nummer16.mf @@ -0,0 +1,2 @@ +design_size := 16; +input feta-nummer; diff --git a/mf/feta-nummer20.mf b/mf/feta-nummer20.mf new file mode 100644 index 0000000000..8ddfd9e16a --- /dev/null +++ b/mf/feta-nummer20.mf @@ -0,0 +1,2 @@ +design_size := 20.74; +input feta-nummer; diff --git a/mf/feta-nummer23.mf b/mf/feta-nummer23.mf new file mode 100644 index 0000000000..d3241514f3 --- /dev/null +++ b/mf/feta-nummer23.mf @@ -0,0 +1,2 @@ +design_size := 23; +input feta-nummer; diff --git a/mf/feta-nummer26.mf b/mf/feta-nummer26.mf new file mode 100644 index 0000000000..a9308dd0ba --- /dev/null +++ b/mf/feta-nummer26.mf @@ -0,0 +1,2 @@ +design_size := 26; +input feta-nummer; diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py index cf10c42f20..3aa25bbcfe 100644 --- a/scripts/lilypond-book.py +++ b/scripts/lilypond-book.py @@ -40,16 +40,29 @@ import os import stat import string -import re + + import getopt import sys import __main__ import operator +# Handle bug in Python 1.6-2.1 +# +# there are recursion limits for some patterns in Python 1.6 til 2.1. +# fix this by importing pre instead. Fix by Mats. + +# todo: should check Python version first. +try: + import pre + re = pre + del pre +except ImportError: + import re program_version = '@TOPLEVEL_VERSION@' if program_version == '@' + 'TOPLEVEL_VERSION' + '@': - program_version = '1.5.18' + program_version = '1.4.12' # if set, LILYPONDPREFIX must take prevalence # if datadir is not set, we're doing a build and LILYPONDPREFIX @@ -153,20 +166,16 @@ class LatexPaper: self.__body = None def set_geo_option(self, name, value): - if type(value) == type(""): - m = re.match ("([0-9.]+)(cm|in|pt|mm|em|ex)",value) - if m: - unit = m.group (2) - num = string.atof(m.group (1)) - conv = dimension_conversion_dict[m.group(2)] - - value = conv(num) + if type(value) == type([]): + value = map(conv_dimen_to_float, value) + else: + value = conv_dimen_to_float(value) if name == 'body' or name == 'text': - if type(value) == type(""): - self.m_geo_textwidth = value - else: + if type(value) == type([]): self.m_geo_textwidth = value[0] + else: + self.m_geo_textwidth = value self.__body = 1 elif name == 'portrait': self.m_geo_landscape = 0 @@ -180,12 +189,12 @@ class LatexPaper: self.m_geo_x_marginparsep = value self.m_geo_includemp = 1 elif name == 'scale': - if type(value) == type(""): - self.m_geo_width = self.get_paperwidth() * float(value) + if type(value) == type([]): + self.m_geo_width = self.get_paperwidth() * value[0] else: - self.m_geo_width = self.get_paperwidth() * float(value[0]) + self.m_geo_width = self.get_paperwidth() * value elif name == 'hscale': - self.m_geo_width = self.get_paperwidth() * float(value) + self.m_geo_width = self.get_paperwidth() * value elif name == 'left' or name == 'lmargin': self.m_geo_lmargin = value elif name == 'right' or name == 'rmargin': @@ -198,25 +207,25 @@ class LatexPaper: if value[2] not in ('*', ''): self.m_geo_rmargin = value[2] elif name == 'hmargin': - if type(value) == type(""): - self.m_geo_lmargin = value - self.m_geo_rmargin = value - else: + if type(value) == type([]): self.m_geo_lmargin = value[0] self.m_geo_rmargin = value[1] - elif name == 'margin':#ugh there is a bug about this option in - # the geometry documentation - if type(value) == type(""): + else: self.m_geo_lmargin = value self.m_geo_rmargin = value - else: + elif name == 'margin':#ugh there is a bug about this option in + # the geometry documentation + if type(value) == type([]): self.m_geo_lmargin = value[0] self.m_geo_rmargin = value[0] - elif name == 'total': - if type(value) == type(""): - self.m_geo_width = value else: + self.m_geo_lmargin = value + self.m_geo_rmargin = value + elif name == 'total': + if type(value) == type([]): self.m_geo_width = value[0] + else: + self.m_geo_width = value elif name == 'width' or name == 'totalwidth': self.m_geo_width = value elif name == 'paper' or name == 'papername': @@ -225,8 +234,7 @@ class LatexPaper: self.m_papersize = name else: pass - # what is _set_dimen ?? /MB - #self._set_dimen('m_geo_'+name, value) + def __setattr__(self, name, value): if type(value) == type("") and \ dimension_conversion_dict.has_key (value[-2:]): @@ -344,6 +352,23 @@ dimension_conversion_dict ={ 'pt': pt2pt } +# Convert numeric values, with or without specific dimension, to floats. +# Keep other strings +def conv_dimen_to_float(value): + if type(value) == type(""): + m = re.match ("([0-9.]+)(cm|in|pt|mm|em|ex)",value) + if m: + unit = m.group (2) + num = string.atof(m.group (1)) + conv = dimension_conversion_dict[m.group(2)] + + value = conv(num) + + elif re.match ("^[0-9.]+$",value): + value = float(value) + + return value + # latex linewidths: # indices are no. of columns, papersize, fontsize @@ -399,15 +424,21 @@ output_dict= { \verb+%s+:''', 'output-lilypond': r"""\begin[%s]{lilypond} %s -\end{lilypond}""", - 'output-verbatim': "\\begin{verbatim}%s\\end{verbatim}", +\end{lilypond} +""", + 'output-verbatim': r'''\begin{verbatim}%s\end{verbatim}%% +''', 'output-default-post': "\\def\postLilypondExample{}\n", 'output-default-pre': "\\def\preLilypondExample{}\n", 'usepackage-graphics': '\\usepackage{graphics}\n', 'output-eps': '\\noindent\\parbox{\\lilypondepswidth{%(fn)s.eps}}{\includegraphics{%(fn)s.eps}}', + 'output-noinline': r''' +%% generated: %(fn)s.eps +''', 'output-tex': '{\\preLilypondExample \\input %(fn)s.tex \\postLilypondExample\n}', 'pagebreak': r'\pagebreak', }, + 'texi' : {'output-lilypond': """@lilypond[%s] %s @end lilypond @@ -418,6 +449,9 @@ output_dict= { 'output-lilypond-fragment': """@lilypond[%s] \context Staff\context Voice{ %s } @end lilypond """, + 'output-noinline': r''' +@c generated: %(fn)s.png +''', 'pagebreak': None, 'output-verbatim': r"""@example %s @@ -455,6 +489,11 @@ def output_verbatim (body): return get_output ('output-verbatim') % body +#warning: this uses extended regular expressions. Tread with care. + +# legenda (?P name parameter +# *? match non-greedily. + re_dict = { 'latex': {'input': r'(?m)^[^%\n]*?(?P\\mbinput{?([^}\t \n}]*))', 'include': r'(?m)^[^%\n]*?(?P\\mbinclude{(?P[^}]+)})', @@ -558,6 +597,8 @@ def compose_full_body (body, opts): Add stuff to BODY using OPTS as options.""" music_size = default_music_fontsize latex_size = default_text_fontsize + indent = '' + linewidth = '' for o in opts: if g_force_lilypond_fontsize: music_size = g_force_lilypond_fontsize @@ -569,6 +610,16 @@ def compose_full_body (body, opts): m = re.match ('latexfontsize=([0-9]+)pt', o) if m: latex_size = string.atoi (m.group (1)) + + m = re.match ('indent=([-.0-9]+)(cm|in|mm|pt)', o) + if m: + f = float (m.group (1)) + indent = 'indent = %f\\%s' % (f, m.group (2)) + + m = re.match ('linewidth=([-.0-9]+)(cm|in|mm|pt)', o) + if m: + f = float (m.group (1)) + linewidth = 'linewidth = %f\\%s' % (f, m.group (2)) if re.search ('\\\\score', body): is_fragment = 0 @@ -581,10 +632,15 @@ def compose_full_body (body, opts): if is_fragment and not 'multiline' in opts: opts.append('singleline') + if 'singleline' in opts: - l = -1.0; - else: - l = __main__.paperguru.get_linewidth() + linewidth = 'linewidth = -1.0' + elif not linewidth: + l = __main__.paperguru.get_linewidth () + linewidth = 'linewidth = %f\pt' % l + + if 'noindent' in opts: + indent = 'indent = 0.0\mm' for o in opts: m= re.search ('relative(.*)', o) @@ -605,20 +661,23 @@ def compose_full_body (body, opts): body = '\\relative %s { %s }' %(pitch, body) if is_fragment: - body = r"""\score { + body = r'''\score { \notes { %s } \paper { } -}""" % body +}''' % body opts = uniq (opts) optstring = string.join (opts, ' ') optstring = re.sub ('\n', ' ', optstring) - body = r""" + body = r''' %% Generated automatically by: lilypond-book.py %% options are %s \include "paper%d.ly" -\paper { linewidth = %f \pt } -""" % (optstring, music_size, l) + body +\paper { + %s + %s +} +''' % (optstring, music_size, linewidth, indent) + body # ughUGH not original options return body @@ -954,7 +1013,10 @@ def schedule_lilypond_block (chunk): m = re.search ('intertext="(.*?)"', o) if m: newbody = newbody + m.group (1) + "\n\n" - if format == 'latex': + + if 'noinline' in opts: + s = 'output-noinline' + elif format == 'latex': if 'eps' in opts: s = 'output-eps' else: diff --git a/scripts/ly2dvi.py b/scripts/ly2dvi.py index f00531f78c..a883199cf1 100644 --- a/scripts/ly2dvi.py +++ b/scripts/ly2dvi.py @@ -70,6 +70,19 @@ import operator import tempfile import traceback +# Handle bug in Python 1.6-2.1 +# +# there are recursion limits for some patterns in Python 1.6 til 2.1. +# fix this by importing pre instead. Fix by Mats. + +# todo: should check Python version first. +try: + import pre + re = pre + del pre +except ImportError: + import re + ################################################################ # lilylib.py -- options and stuff diff --git a/stepmake/AUTHORS.txt b/stepmake/AUTHORS.txt deleted file mode 100644 index a7bed18d26..0000000000 --- a/stepmake/AUTHORS.txt +++ /dev/null @@ -1,24 +0,0 @@ - -NAME - -AUTHORS - who did what on StepMake? - -DESCRIPTION - -This file lists authors of StepMake, and what they wrote. - -AUTHORS - -o Jan Nieuwenhuizen , - http://www.xs4all.nl/~jantien - - Main author. -o Han-Wen Nienhuys , - http://www.cs.uu.nl/people/hanwen - - Main author. - -CONTRIBUTORS - -o Jeffrey B. Reed , - Windows-nt fixes. diff --git a/stepmake/INSTALL.txt b/stepmake/INSTALL.txt deleted file mode 100644 index a0e5f7708a..0000000000 --- a/stepmake/INSTALL.txt +++ /dev/null @@ -1,174 +0,0 @@ - -NAME - -INSTALL - installing StepMake - -DESCRIPTION - -This page documents installation and usage of StepMake - -ABSTRACT - -StepMake is a drop-in package that takes care of generic Makefile and -packaging/distribution issues. It enables you to write only the simplest of -Makefile snippets, while providing a series powerful make targets. Features -include speed, wildcarding, out/ dir build, stateless Makefiles and package -clustering. It includes some handy scripts for making (package-)diffs and -patches, making binary distributions etc. - -To use StepMake with your package, you do something remotely like: - - tar xzf releases/stepmake-0.1.23 - cd package-x.x.x/ # package to be StepMake-ised - ./../stepmake-0.1.23/bin/stepmakeise.sh - -You'll have to customize at least the files: - - ./VERSION . - ./configure.in - -to your package's needs. You might want to take a look at: - - ./make/Toplevel.make.in - ./config.hh.in - ./config.make.in - -Also, you should put a Makefile in every subdirectory of your -package. These makefiles generally are quite simple, e.g. this -is a the makefile for an include directory of LilyPond: - - # lily/include/Makefile - - depth = ../.. - include $(depth)/make/Stepmake.make - -it will identify all .h, .hh, ... files and take care of distributing -them. - -There's a make/Template.make that you can use as an example. -See also the Makefiles in the LilyPond or Yodl package. - -Once included in your package, StepMake (or in fact, any -StepMake-ised package) behaves as a normal subdirectory; -make commands such as 'make dist' recurse into the stepmake tree -(For a list of available targets, type make help after -configuring). -Stepmake (and any changes made) will be distributed with the main -pacakage. However, StepMake doesn't lose its independency, change -to the stepmake directory, and it'll behave as a main package. -You shouldn't version directory names of subpackages, otherwise -you'll see that package twice in each patch when you upgrade. - -PREREQUISITES - -To use StepMake with a package you need: - -o A GNU system: StepMake is known to work on these GNU systems: Linux - (PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and Solaris. - If you have the Cygnus WINDOWS32 port of the GNU utils, it will even - work in Windows NT/95, but we don't promise to support it. -o GNU make -o GNU autoconf - -RECOMMENDED - -Although not strictly necessary, these are recommended to have. - -o Python -o Yodl. All documentation will be in Yodl. (1.22.jcn3) -o GNU find - -INTERNALS - -Over time, we put a lot of effort in the configure, make, distribute -system (CMDS) for LilyPond. Some months ago, we realised it was not -standard GNU --- we require GNU make for building, and Python for extra -scripting. In an effort to be more GNU, we tried automake, but after two -weeks we realised the costs were too high for us and we reverted to our -own system (see automake.urgh). Not long after that i was confronted -with two other packages that lacked a decent CMDS. I realised that Lily's -would be perfect, it's modular and easy. The only problem was to make a -clean cut between generic and Lily specific stuff. The result was -StepMake: a bunch of generic makefiles, found in: - - stepmake/stepmake/*.make - -eneric helper scripts: - - stepmake/bin/*.sh - stepmake/bin/*.py - -and modular configure functions: - - stepmake/configure.in - stepmake/aclocal.m4 - stepmake/config.hh.in - stepmake/config.make.in - -Of course, every package has its own configure- and make peculiarities. -The best way to create the configure scripts is to copy them from -stepmake (Actually, stepmake/bin/stepmakeise.sh will do -that for you.) into you package's toplevel directory. For most -packages, you'll only have to comment in/out some functions in -configure.in. - -Package specific makefiles go in: - - make/Targets.make - make/Rulese.make - make/Substitute.make - -and are included by the generic StepMake makefiles. - -MAINTAINING - -If you want to make and manage (binary) distributions, create and apply -patches, you'll need some framework that's outside of the package's -sourcetree. -For a number of simple maintenance tasks, StepMake will therefore assume -the following directory structure: - - doos/ # gnu/windows32 build and binary releases - harmonia -> harmonia-x.y.z - harmonia-x.y.z/ - lilypond -> lilypond-x.y.z # symlink to development directory - lilypond-x.y.z/ # current development - patches/ # patches between different releases - RedHat/BUILD # RedHat build and binary releases - RedHat/RPMS - RedHat/SPECS - releases/ # .tar.gz releases - test/ # tarballs and diffs from current version - yodl -> yodl-1.30.17 - yodl-1.30.17 - -with prefix $HOME/usr/src -and (for building rpms only) in $HOME/.rpmrc: - - topdir: /home/fred/usr/src/RedHat - -Check and update the layout with the command: - - ./stepmake/bin/stepdirs.sh - -SEE ALSO - -../PATCHES.txt - -CONFIGURING - -Stepmake comes with a number of precooked configure functions for -general needs, such as AC_STEPMAKE_COMPILE for simple C development -and AC_STEPMAKE_CXX for C++. - -See configure.in and comment in/out the functions that your package -needs. For specific needs, you can write your own autoconf code, -see info autoconf. - -AUTHORS - -Jan Nieuwenhuizen - -Han-Wen Nienhuys - -Have fun! diff --git a/stepmake/bin/config.guess b/stepmake/bin/config.guess old mode 100644 new mode 100755 diff --git a/stepmake/bin/config.sub b/stepmake/bin/config.sub old mode 100644 new mode 100755 diff --git a/stepmake/bin/packagepython.py b/stepmake/bin/packagepython.py index 9fb12ff074..86fc71969c 100755 --- a/stepmake/bin/packagepython.py +++ b/stepmake/bin/packagepython.py @@ -10,15 +10,14 @@ # (c) 1997--1998 Han-Wen Nienhuys # Jan Nieuwenhuizen -import regex -import regsub +import re import string import sys import os import getopt -make_assign_re = regex.compile('^\([A-Z_]*\)=\(.*\)$') +make_assign_re = re.compile ('^([A-Z_]*)=(.*)$') def read_makefile (fn): file = open (fn) @@ -29,9 +28,10 @@ def read_makefile (fn): make_dict = {} for l in lines: - if make_assign_re.search(l) <> -1: - nm = make_assign_re.group(1) - val = make_assign_re.group(2) + m = make_assign_re.search (l) + if m: + nm = m.group (1) + val = m.group (2) make_dict[nm] = val return make_dict @@ -39,7 +39,7 @@ class Package: def __init__ (self, dirname): dict = read_makefile (dirname + '/VERSION') version_list = [] - for x in [ 'MAJOR_VERSION', 'MINOR_VERSION', 'PATCH_LEVEL']: + for x in [ 'MAJOR_VERSION', 'MINOR_VERSION', 'PATCH_LEVEL']: version_list.append (string.atoi (dict[x])) version_list.append (dict['MY_PATCH_LEVEL']) self.topdir = dirname @@ -80,10 +80,9 @@ def full_version_tup(tup): break return tuple(t) -def split_my_patchlevel(str): - return (regsub.sub('[0-9]*$', '', str), - string.atoi(regsub.sub('[^0-9]*', '', str))) - +def split_my_patchlevel (str): + m = re.match ('(.*?)([0-9]*)$', str) + return (m.group (1), string.atoi (m.group (2))) def next_version(tup): l = list(full_version_tup (tup)) @@ -103,7 +102,7 @@ def prev_version(tup): l = list(full_version_tup (tup)) t3name=t3num='' if l[3]: - (t3name,t3num)= split_my_patchlevel (l[3]) + (t3name, t3num) = split_my_patchlevel (l[3]) if t3num and t3num - 1 > 0: t3num = '%d' %(t3num - 1) else: @@ -129,24 +128,21 @@ def version_str_to_tuple(str): mypatch = string.join (t[3:], '.') return (string.atoi(t[0]), string.atoi(t[1]), string.atoi(t[2]), mypatch) -def version_compare (tupl, tupr): - tupl = full_version_tup (tupl) - tupr = full_version_tup (tupr) +def version_compare (ltup, rtup): + rtup = full_version_tup (ltup) + rtup = full_version_tup (rtup) for i in (0,1,2): - if tupl[i] - tupr[i]: return tupl[i] - tupr[i] - if tupl[3] and tupr[3]: - lname = regsub.sub('[0-9]*$', '', tupl[3]) - lnum = string.atoi(regsub.sub('[^0-9]*', '', tupl[3])) - rname = regsub.sub('[0-9]*$', '', tupr[3]) - rnum = string.atoi(regsub.sub('[^0-9]*', '', tupr[3])) + if ltup[i] - rtup[i]: return ltup[i] - rtup[i] + if ltup[3] and rtup[3]: + (lname, lnum) = split_my_patchlevel (ltup[i]) + (rname, rnum) = split_my_patchlevel (rtup[3]) if lname != rname: raise 'ambiguous' return sign (lnum - rnum) - if tupl[3]: + if ltup[3]: return 1 else: return -1 - if __name__ == '__main__': p = Package ('.') diff --git a/stepmake/make/out/stepmake.lsm b/stepmake/make/out/stepmake.lsm index 0f70c05204..5672671732 100644 --- a/stepmake/make/out/stepmake.lsm +++ b/stepmake/make/out/stepmake.lsm @@ -1,7 +1,7 @@ Begin3 Title: StepMake Version: 0.1.81 -Entered-date: 22MAR00 +Entered-date: 05MEI02 Description: Keywords: music notation typesetting midi fonts engraving Author: janneke@gnu.org (Jan Nieuwenhuizen) -- 2.39.5