From e166ef4d795f43bcdff1f04162d17c2d8c7a9302 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Mon, 18 Feb 2002 00:26:18 +0100 Subject: [PATCH] release: 1.5.31 --- ChangeLog | 32 ++ Documentation/topdocs/INSTALL.texi | 20 +- Documentation/user/refman.itely | 16 +- INSTALL.txt | 20 +- VERSION | 4 +- aclocal.m4 | 32 -- buildscripts/clean-fonts.sh | 0 configure | 288 +++---------- input/bugs/spacing-clash.ly | 19 - input/bugs/spacing-clefs.ly | 21 - input/regression/font-magnification.ly | 22 + lily/font-interface.cc | 93 ++--- lily/grob.cc | 26 +- lily/include/molecule.hh | 1 - lily/line-of-score.cc | 1 - lily/new-spacing-spanner.cc | 546 ------------------------- lily/note-head.cc | 49 ++- lily/text-item.cc | 37 +- lily/third-try.cc | 27 +- lily/tuplet-bracket.cc | 9 +- make/out/lilypond.lsm | 8 +- make/out/lilypond.mandrake.spec | 2 +- make/out/lilypond.redhat.spec | 4 +- make/out/lilypond.suse.spec | 4 +- mf/GNUmakefile | 10 +- scm/grob-description.scm | 2 + scm/grob-property-description.scm | 6 +- scm/interface-description.scm | 3 + scripts/lilypond-book.py | 2 +- stepmake/aclocal.m4 | 32 -- 30 files changed, 276 insertions(+), 1060 deletions(-) mode change 100755 => 100644 buildscripts/clean-fonts.sh delete mode 100644 input/bugs/spacing-clash.ly delete mode 100644 input/bugs/spacing-clefs.ly create mode 100644 input/regression/font-magnification.ly delete mode 100644 lily/new-spacing-spanner.cc diff --git a/ChangeLog b/ChangeLog index e360df2c7e..611b422778 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,35 @@ + +2002-02-18 Han-Wen + + * VERSION: 1.5.31 released + + * lily/new-spacing-spanner.cc: remove file. + + * lily/third-try.cc (do_measure): only take spacings into account + if they pertain to the column pair under consideration. This fixes + spacing bug when mixing eighths triplets and normal eighths. + + * lily/note-head.cc (brew_molecule): revert ledger change: ledger + lines don't take up space anymore. Document why in note-head.cc + comment. + +2002-02-17 Han-Wen + + * lily/font-interface.cc (get_font): reinstate + #'font-magnification. See input/regression/font-magnification.ly + (get_font): Change the definition of #'font-name grob property. + + * lily/grob.cc (get_uncached_molecule): output origin for grobs + that have a #'cause field. + +2002-02-12 Han-Wen Nienhuys + + * Documentation/topdocs/INSTALL.texi: remove type3 stuff. + + * mf/GNUmakefile: remove metapost stuff + + * stepmake/aclocal.m4: remove metapost detection stuff. + 2002-02-11 Jan Nieuwenhuizen * mf/GNUmakefile (FET_FILES): diff --git a/Documentation/topdocs/INSTALL.texi b/Documentation/topdocs/INSTALL.texi index 27ddf6868b..ac353fb528 100644 --- a/Documentation/topdocs/INSTALL.texi +++ b/Documentation/topdocs/INSTALL.texi @@ -119,10 +119,10 @@ You need the following packages to compile Lilypond. @item A reasonably new version of the GNU C++ compiler: EGCS 1.1, GCC 2.95.2 or newer. Check out @uref{ftp://ftp.gnu.org/gnu/gcc/, the gcc site}. -@item Python (version 1.5 or newer; not 2.1.x) +@item Python (version 1.5 or newer; not 2.1.x) Check out @uref{http://www.python.org, the python website}. -@item GUILE 1.4 or newer, check out +@item GUILE 1.4 or newer, check out @uref{http://www.gnu.org/software/guile/guile.html,the GUILE webpage}. Version 1.4 is recommended for better performance. @@ -171,20 +171,8 @@ configure something like: @item pktrace, [OPTIONAL], needed for generating PostScript Type1 -fonts. Get it from @uref{http://www.cs.uu.nl/~hanwen/pktrace/} - -@item autotrace-0.27a, [OPTIONAL], needed for generating PostScript Type1 -fonts. @uref{http://autotrace.sourceforge.net}. - -@item MetaPost [OPTIONAL] needed for generating PostScript Type3 fonts. Please -note that tetex-0.4pl8 (included with Red Hat 5.x) does not include -@file{mfplain.mp}, which is needed for producing the scalable font -files. - -If you don't have MetaPost and don't want to use PostScript output, then -edit @file{mf/GNUmakefile}, removing the line saying @code{PFA_FILES=}. - - +fonts. Get it from @uref{http://www.cs.uu.nl/~hanwen/pktrace/}. You +will need to install some additional packages to get pktrace to work. @end itemize diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index cd67604188..90c34f36a3 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -3139,8 +3139,10 @@ Type1 usually come as ``one design fits all sizes''. @code{cmti}, etc. Setting this overrides font-family, font-shape and font-series. + @end table + The font is selected by taking the first font that satisfies all qualifiers specified. You can override any of these fields through @code{\override} and @code{\revert}. The special value @code{*} matches @@ -3163,14 +3165,20 @@ and @code{dynamic}. The style sheets and tables for selecting fonts are located in @file{scm/font.scm}. Refer to this file for more information. + +Setting @code{font-name} overrides all other qualifiers. The value for +this property should be a string, the file name of the font. You may use +this to use special fonts, which are not a part of the style sheet, or +which have special encodings. + +The size of the font may be set with the grob property +@code{font-magnification}. It is the size of font, relative to its +standard size. For example, @code{1.0} is normal size. + @refbugs Relative size is not linked to any real size. -There is no mechanism to select magnification of particular fonts, -meaning that you don't have access to continuously scaled fonts. You -can scale the entire output, of course, see @ref{Output scaling}. - There is no style sheet provided for other fonts besides the @TeX{} family. diff --git a/INSTALL.txt b/INSTALL.txt index 058e0d97e7..55ae543309 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -126,8 +126,9 @@ Compilation You need the following packages to compile Lilypond. - * 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/). + * A reasonably new version of the GNU C++ compiler: EGCS 1.1, GCC + 2.95.2 or newer. Check out the gcc site + (ftp://ftp.gnu.org/gnu/gcc/). * Python (version 1.5 or newer; not 2.1.x) Check out the python website (http://www.python.org). @@ -176,19 +177,8 @@ Compilation ./configure --without-kpathsea --enable-tfm-path=/usr/share/texmf/fonts/tfm/public/cm/:/usr/share/texmf/fonts/tfm/ams/symbols * pktrace, [OPTIONAL], needed for generating PostScript Type1 fonts. - Get it from `http://www.cs.uu.nl/~hanwen/pktrace/' - - * autotrace-0.27a, [OPTIONAL], needed for generating PostScript Type1 - fonts. `http://autotrace.sourceforge.net'. - - * MetaPost [OPTIONAL] needed for generating PostScript Type3 fonts. - Please note that tetex-0.4pl8 (included with Red Hat 5.x) does not - include `mfplain.mp', which is needed for producing the scalable - font files. - - If you don't have MetaPost and don't want to use PostScript - output, then edit `mf/GNUmakefile', removing the line saying - `PFA_FILES='. + Get it from `http://www.cs.uu.nl/~hanwen/pktrace/'. You will + need to install some additional packages to get pktrace to work. Running requirements diff --git a/VERSION b/VERSION index 74b784a2a9..72be86c85d 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=5 -PATCH_LEVEL=30 -MY_PATCH_LEVEL=uu1.jcn1 +PATCH_LEVEL=31 +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 0c3c31bd78..d00052343c 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -695,25 +695,12 @@ AC_DEFUN(AC_STEPMAKE_TEXMF, [ METAFONT=$MFONT fi - AC_CHECK_PROGS(METAPOST, mp, no) - if test "x$METAPOST" = "xno"; then - AC_CHECK_PROGS(MPOST, mpost, -echo no mp or mpost) - - METAPOST=$MPOST - fi - AC_CHECK_PROGS(INIMETAFONT, inimf, no) if test "x$INIMETAFONT" = "xno"; then AC_CHECK_PROGS(INIMFONT, inimfont, -echo no inimf or inimfont) INIMETAFONT=$INIMFONT fi - AC_CHECK_PROGS(INIMETAPOST, inimp, no) - if test "x$INIMETAPOST" = "xno"; then - AC_CHECK_PROGS(INIMPOST, inimpost, -echo no inimp or inimpost) - INIMETAPOST=$INIMPOST - fi - AC_MSG_CHECKING(for working metafont mode) modelist='ljfour lj4 lj3 lj2 ljet laserjet' for MFMODE in $modelist; do @@ -724,30 +711,11 @@ AC_DEFUN(AC_STEPMAKE_TEXMF, [ done AC_MSG_RESULT($MFMODE) - AC_MSG_CHECKING(for mfplain.mp) - # - # For now let people define these in their environments - # - : ${MFPLAIN_MP=`kpsewhich --format mp mfplain.mp`} - AC_MSG_RESULT($MFPLAIN_MP) - - AC_MSG_CHECKING(for inimetapost flags) - if test ${INIMETAPOST} = "inimp" ; then - : ${INIMETAPOST_FLAGS=''} - else - : ${INIMETAPOST_FLAGS='-interaction=nonstopmode'} - fi - AC_MSG_RESULT($INIMETAPOST_FLAGS) - rm -f mfput.* AC_SUBST(METAFONT) - AC_SUBST(METAPOST) AC_SUBST(MFMODE) AC_SUBST(INIMETAFONT) - AC_SUBST(INIMETAPOST) - AC_SUBST(MFPLAIN_MP) - AC_SUBST(INIMETAPOST_FLAGS) ]) AC_DEFUN(AC_STEPMAKE_WARN, [ diff --git a/buildscripts/clean-fonts.sh b/buildscripts/clean-fonts.sh old mode 100755 new mode 100644 diff --git a/configure b/configure index 421625432f..3936dbd1d3 100755 --- a/configure +++ b/configure @@ -2177,11 +2177,13 @@ test -n "$FLEX" || FLEX="error" fi + +## Urg. We should fix this configure test. -- so clumsy if test $BISON != "error"; then - bison_version=`$BISON --version | sed 's/^.*version 1.//g'` - if test `echo $bison_version | sed 's/\..*$//g'` -lt 25; then + bison_version=`$BISON --version | head -1 | sed 's/^.* 1\.//g'` + if test $bison_version -lt 25; then - echo "configure: warning: Your bison is a bit old (1.$bison_version). You might have to install 1.25" 1>&2 + echo "configure: warning: The bison installed might be too old (1.$bison_version). You might have to install 1.25" 1>&2 warn_b=yes fi @@ -2196,7 +2198,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:2200: checking for $ac_word" >&5 +echo "configure:2202: 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 @@ -2229,7 +2231,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:2233: checking for $ac_word" >&5 +echo "configure:2235: 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 @@ -2284,7 +2286,7 @@ fi echo $ac_n "checking language""... $ac_c" 1>&6 -echo "configure:2288: checking language" >&5 +echo "configure:2290: checking language" >&5 case "$language" in En* | en* | Am* | am* | US* | us*) lang=English;; @@ -2320,7 +2322,7 @@ EOF echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 -echo "configure:2324: checking for gettext in -lintl" >&5 +echo "configure:2326: 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 @@ -2328,7 +2330,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:2348: \"$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 @@ -2372,12 +2374,12 @@ fi for ac_func in gettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2376: checking for $ac_func" >&5 +echo "configure:2378: 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:2409: \"$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 @@ -2435,7 +2437,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:2439: checking for $ac_word" >&5 +echo "configure:2441: 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 @@ -2466,7 +2468,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:2470: checking whether msgfmt accepts -o" >&5 +echo "configure:2472: 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 @@ -2494,7 +2496,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:2498: checking for $ac_word" >&5 +echo "configure:2500: 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 @@ -2530,7 +2532,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:2534: checking for $ac_word" >&5 +echo "configure:2536: 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 @@ -2563,87 +2565,12 @@ test -n "$MFONT" || MFONT="-echo no mf or mfont" METAFONT=$MFONT fi - for ac_prog in mp -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:2572: 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 - if test -n "$METAPOST"; then - ac_cv_prog_METAPOST="$METAPOST" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_METAPOST="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -METAPOST="$ac_cv_prog_METAPOST" -if test -n "$METAPOST"; then - echo "$ac_t""$METAPOST" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -test -n "$METAPOST" && break -done -test -n "$METAPOST" || METAPOST="no" - - if test "x$METAPOST" = "xno"; then - for ac_prog in mpost -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:2608: 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 - if test -n "$MPOST"; then - ac_cv_prog_MPOST="$MPOST" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_MPOST="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -MPOST="$ac_cv_prog_MPOST" -if test -n "$MPOST"; then - echo "$ac_t""$MPOST" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -test -n "$MPOST" && break -done -test -n "$MPOST" || MPOST="-echo no mp or mpost" - - - METAPOST=$MPOST - fi - for ac_prog in inimf 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:2647: checking for $ac_word" >&5 +echo "configure:2574: 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 @@ -2679,7 +2606,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:2683: checking for $ac_word" >&5 +echo "configure:2610: 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 @@ -2712,82 +2639,8 @@ test -n "$INIMFONT" || INIMFONT="-echo no inimf or inimfont" INIMETAFONT=$INIMFONT fi - for ac_prog in inimp -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:2721: 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 - if test -n "$INIMETAPOST"; then - ac_cv_prog_INIMETAPOST="$INIMETAPOST" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_INIMETAPOST="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -INIMETAPOST="$ac_cv_prog_INIMETAPOST" -if test -n "$INIMETAPOST"; then - echo "$ac_t""$INIMETAPOST" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -test -n "$INIMETAPOST" && break -done -test -n "$INIMETAPOST" || INIMETAPOST="no" - - if test "x$INIMETAPOST" = "xno"; then - for ac_prog in inimpost -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:2757: 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 - if test -n "$INIMPOST"; then - ac_cv_prog_INIMPOST="$INIMPOST" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_INIMPOST="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -INIMPOST="$ac_cv_prog_INIMPOST" -if test -n "$INIMPOST"; then - echo "$ac_t""$INIMPOST" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -test -n "$INIMPOST" && break -done -test -n "$INIMPOST" || INIMPOST="-echo no inimp or inimpost" - - INIMETAPOST=$INIMPOST - fi - echo $ac_n "checking for working metafont mode""... $ac_c" 1>&6 -echo "configure:2791: checking for working metafont mode" >&5 +echo "configure:2644: 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 @@ -2797,32 +2650,11 @@ echo "configure:2791: checking for working metafont mode" >&5 done echo "$ac_t""$MFMODE" 1>&6 - echo $ac_n "checking for mfplain.mp""... $ac_c" 1>&6 -echo "configure:2802: checking for mfplain.mp" >&5 - # - # For now let people define these in their environments - # - : ${MFPLAIN_MP=`kpsewhich --format mp mfplain.mp`} - echo "$ac_t""$MFPLAIN_MP" 1>&6 - - echo $ac_n "checking for inimetapost flags""... $ac_c" 1>&6 -echo "configure:2810: checking for inimetapost flags" >&5 - if test ${INIMETAPOST} = "inimp" ; then - : ${INIMETAPOST_FLAGS=''} - else - : ${INIMETAPOST_FLAGS='-interaction=nonstopmode'} - fi - echo "$ac_t""$INIMETAPOST_FLAGS" 1>&6 - rm -f mfput.* - - - - # Check whether --enable-tfm-path or --disable-tfm-path was given. @@ -2839,7 +2671,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:2843: checking for $ac_word" >&5 +echo "configure:2675: 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 @@ -2870,7 +2702,7 @@ done test -n "$KPSEWHICH" || KPSEWHICH="no" echo $ac_n "checking for tfm path""... $ac_c" 1>&6 -echo "configure:2874: checking for tfm path" >&5 +echo "configure:2706: checking for tfm path" >&5 TFM_FONTS="cmr msam" @@ -2898,13 +2730,13 @@ echo "configure:2874: 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:2902: checking "for guile-config"" >&5 +echo "configure:2734: 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:2908: checking "if we are cross compiling"" >&5 +echo "configure:2740: checking "if we are cross compiling"" >&5 guile_config=error else break @@ -2915,7 +2747,7 @@ echo "configure:2908: checking "if we are cross compiling"" >&5 exit 1 fi echo $ac_n "checking "Guile version"""... $ac_c" 1>&6 -echo "configure:2919: checking "Guile version"" >&5 +echo "configure:2751: 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}'` @@ -2936,7 +2768,7 @@ else {last =0}} ## The GUILE_FLAGS macro. echo $ac_n "checking for Guile""... $ac_c" 1>&6 -echo "configure:2940: checking for Guile" >&5 +echo "configure:2772: 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; } @@ -2951,7 +2783,7 @@ echo "configure:2940: 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:2955: checking for $ac_word" >&5 +echo "configure:2787: 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 @@ -3012,17 +2844,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3016: checking for $ac_hdr" >&5 +echo "configure:2848: 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:3026: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2858: \"$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* @@ -3049,7 +2881,7 @@ fi done echo $ac_n "checking for kpse_find_file in -lkpathsea""... $ac_c" 1>&6 -echo "configure:3053: checking for kpse_find_file in -lkpathsea" >&5 +echo "configure:2885: 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 @@ -3057,7 +2889,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:2907: \"$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 @@ -3101,12 +2933,12 @@ fi for ac_func in kpse_find_file do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3105: checking for $ac_func" >&5 +echo "configure:2937: 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:2968: \"$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 @@ -3159,7 +2991,7 @@ done fi echo $ac_n "checking whether to use kpathsea""... $ac_c" 1>&6 -echo "configure:3163: checking whether to use kpathsea" >&5 +echo "configure:2995: checking whether to use kpathsea" >&5 if test "$kpathsea_b" != no; then echo "$ac_t""yes" 1>&6 KPATHSEA=1 @@ -3187,7 +3019,7 @@ fi echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:3191: checking for 8-bit clean memcmp" >&5 +echo "configure:3023: 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 @@ -3195,7 +3027,7 @@ 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:3041: \"$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 @@ -3223,12 +3055,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:3227: checking for vprintf" >&5 +echo "configure:3059: 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:3090: \"$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 @@ -3278,12 +3110,12 @@ fi if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:3282: checking for _doprnt" >&5 +echo "configure:3114: 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:3145: \"$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 @@ -3336,12 +3168,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:3340: checking for $ac_func" >&5 +echo "configure:3172: 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:3203: \"$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 @@ -3407,7 +3239,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:3411: checking for $ac_word" >&5 +echo "configure:3243: 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 @@ -3439,7 +3271,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:3443: checking whether makeinfo can split html by @node" >&5 +echo "configure:3275: checking whether makeinfo can split html by @node" >&5 mkdir -p out makeinfo --html --output=out/split <&6 -echo "configure:3471: checking for $ac_word" >&5 +echo "configure:3303: 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 @@ -3501,21 +3333,21 @@ else fi -for ac_hdr in python2.1/Python.h python2.0/Python.h python2/Python.h python/Python.h python1.5/Python.h Python.h +for ac_hdr in python2.2/Python.h python2.1/Python.h python2.0/Python.h python2/Python.h python/Python.h python1.5/Python.h Python.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3509: checking for $ac_hdr" >&5 +echo "configure:3341: 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:3519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3351: \"$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* @@ -3724,15 +3556,9 @@ s%@DIR_LOCALEDIR@%$DIR_LOCALEDIR%g s%@MSGFMT@%$MSGFMT%g s%@METAFONT@%$METAFONT%g s%@MFONT@%$MFONT%g -s%@METAPOST@%$METAPOST%g -s%@MPOST@%$MPOST%g s%@INIMETAFONT@%$INIMETAFONT%g s%@INIMFONT@%$INIMFONT%g -s%@INIMETAPOST@%$INIMETAPOST%g -s%@INIMPOST@%$INIMPOST%g s%@MFMODE@%$MFMODE%g -s%@MFPLAIN_MP@%$MFPLAIN_MP%g -s%@INIMETAPOST_FLAGS@%$INIMETAPOST_FLAGS%g s%@KPSEWHICH@%$KPSEWHICH%g s%@TFM_PATH@%$TFM_PATH%g s%@GUILE_CFLAGS@%$GUILE_CFLAGS%g diff --git a/input/bugs/spacing-clash.ly b/input/bugs/spacing-clash.ly deleted file mode 100644 index 669b70eb2e..0000000000 --- a/input/bugs/spacing-clash.ly +++ /dev/null @@ -1,19 +0,0 @@ -\header { - texidoc="Flat clashes with change-clef. After real word example." -} -\score { - < - \time 3/4 - \context Staff=a \notes\relative c'' { - - a16 a a a a a a a - a16 a a a - } - \context Staff=b \notes\relative c' { - \clef bass a16 a a a b8 b \clef violin ces4 - } - > - \paper{ - linewidth= -1. - } -} \ No newline at end of file diff --git a/input/bugs/spacing-clefs.ly b/input/bugs/spacing-clefs.ly deleted file mode 100644 index 67c31e743f..0000000000 --- a/input/bugs/spacing-clefs.ly +++ /dev/null @@ -1,21 +0,0 @@ - -\header { -texidoc = "If possible clef changes and the like -should be folded under notes of the different staff -" -} - -\score { \notes \relative c'' < \context Staff = SA { -c4 c16 c c c cis4 cis4 -c4 c4 c4 c - - - } - { \key d \major c2 - \clef bass - c,2 c cis2 } > - - \paper { linewidth = -1. } - } - - diff --git a/input/regression/font-magnification.ly b/input/regression/font-magnification.ly new file mode 100644 index 0000000000..d379b9e7cf --- /dev/null +++ b/input/regression/font-magnification.ly @@ -0,0 +1,22 @@ +\header { texidoc = "The magnification can be set for any font. Note +that this doesn't change variable symbols such as beams or slurs. " } + +\score { +\notes \relative c'' \context Voice { +\property Voice .NoteHead \set #'font-magnification = #0.9 +c4 +\property Voice .NoteHead \set #'font-magnification = #0.8 + + + % why doesn't this work? + c4-#'((font-series . bold) ((font-magnification . 2.0) ("foobar"))) + + \property Voice .NoteHead \set #'font-magnification = #1.2 + \property Voice.TextScript \set #'font-magnification = #2.0 + c4-"big" + \property Voice .NoteHead \set #'font-magnification = #1.6 + c4 +} + +} + diff --git a/lily/font-interface.cc b/lily/font-interface.cc index 79e9f9e38d..d0e23e9bc0 100644 --- a/lily/font-interface.cc +++ b/lily/font-interface.cc @@ -76,21 +76,29 @@ ly_font_interface_get_default_font (SCM grob) return Font_interface::get_default_font (gr)->self_scm (); } + Font_metric * Font_interface::get_font (Grob *me, SCM chain) { + SCM name = me->get_grob_property ("font-name"); - SCM ss = me->paper_l ()->style_sheet_; - - SCM proc = ly_cdr (scm_assoc (ly_symbol2scm ("properties-to-font"), - ss)); + if (!gh_string_p (name)) + { + SCM ss = me->paper_l ()->style_sheet_; - SCM fonts = ly_cdr (scm_assoc (ly_symbol2scm ("fonts"), ss)); + SCM proc = ly_cdr (scm_assoc (ly_symbol2scm ("properties-to-font"), + ss)); - assert (gh_procedure_p (proc)); - SCM font_name = gh_call2 (proc, fonts, chain); + SCM fonts = ly_cdr (scm_assoc (ly_symbol2scm ("fonts"), ss)); - Font_metric *fm = me->paper_l ()->find_font (font_name, 1.0); + assert (gh_procedure_p (proc)); + name = gh_call2 (proc, fonts, chain); + } + + SCM mag = me->get_grob_property ("font-magnification"); + Real rmag = gh_number_p (mag) ? gh_scm2double (mag) : 1.0; + + Font_metric *fm = me->paper_l ()->find_font (name, rmag); return fm; } @@ -130,13 +138,12 @@ so a 14% speedup. */ -static SCM name_sym, shape_sym, family_sym, series_sym, rel_sz_sym, design_sz_sym, wild_sym; +static SCM shape_sym, family_sym, series_sym, rel_sz_sym, design_sz_sym, wild_sym; static void init_syms () { - name_sym = scm_permanent_object (ly_symbol2scm ("font-name")); shape_sym = scm_permanent_object (ly_symbol2scm ("font-shape")); family_sym = scm_permanent_object (ly_symbol2scm ("font-family")); series_sym = scm_permanent_object (ly_symbol2scm ("font-series")); @@ -162,8 +169,6 @@ MAKE_SCHEME_CALLBACK (Font_interface,properties_to_font_name,2); SCM Font_interface::properties_to_font_name (SCM fonts, SCM alist_chain) { - SCM name = ly_assoc_chain (name_sym, alist_chain); - SCM shape = SCM_BOOL_F; SCM family = SCM_BOOL_F; SCM series = SCM_BOOL_F; @@ -172,21 +177,16 @@ Font_interface::properties_to_font_name (SCM fonts, SCM alist_chain) SCM point_sz = ly_assoc_chain (design_sz_sym, alist_chain); SCM rel_sz = SCM_BOOL_F; - if (!gh_pair_p (name)) - { - shape = ly_assoc_chain (shape_sym, alist_chain); - family = ly_assoc_chain (family_sym, alist_chain); - series = ly_assoc_chain (series_sym, alist_chain); - - if (gh_pair_p (shape)) - shape = ly_cdr (shape); - if (gh_pair_p (family)) - family = ly_cdr (family); - if (gh_pair_p (series)) - series = ly_cdr (series); - } - else - name = ly_cdr (name); + shape = ly_assoc_chain (shape_sym, alist_chain); + family = ly_assoc_chain (family_sym, alist_chain); + series = ly_assoc_chain (series_sym, alist_chain); + + if (gh_pair_p (shape)) + shape = ly_cdr (shape); + if (gh_pair_p (family)) + family = ly_cdr (family); + if (gh_pair_p (series)) + series = ly_cdr (series); if (gh_pair_p (point_sz)) @@ -202,41 +202,22 @@ Font_interface::properties_to_font_name (SCM fonts, SCM alist_chain) { SCM qlist = ly_caar (s); - if (name != SCM_BOOL_F) - { - if (!wild_compare (scm_list_ref (qlist, gh_int2scm (4)), name)) - continue; - } - else - { - if (!wild_compare (scm_list_ref (qlist, gh_int2scm (1)), series)) - continue; - if (!wild_compare (scm_list_ref (qlist, gh_int2scm (2)), shape)) - continue; - if (!wild_compare (scm_list_ref (qlist, gh_int2scm (3)), family)) - continue; - } + if (!wild_compare (scm_list_ref (qlist, gh_int2scm (1)), series)) + continue; + if (!wild_compare (scm_list_ref (qlist, gh_int2scm (2)), shape)) + continue; + if (!wild_compare (scm_list_ref (qlist, gh_int2scm (3)), family)) + continue; - if (point_sz != SCM_BOOL_F) - { - // This if statement will always be true since name must - // be SCM_BOOL_F here, right? /MB - if (!wild_compare (scm_list_ref (qlist, gh_int2scm (4)), name)) - continue; - } - else - { - if (!wild_compare (ly_car (qlist), rel_sz)) - continue; - } - - + if (point_sz == SCM_BOOL_F && !wild_compare (ly_car (qlist), rel_sz)) + continue; + SCM qname = ly_cdar (s); return qname; } warning (_ ("couldn't find any font satisfying ")); - scm_write (scm_list_n (name, point_sz, shape, series , family, rel_sz, SCM_UNDEFINED), scm_current_error_port ()); + scm_write (scm_list_n (point_sz, shape, series , family, rel_sz, SCM_UNDEFINED), scm_current_error_port ()); scm_flush (scm_current_error_port ()); return ly_str02scm ("cmr10"); diff --git a/lily/grob.cc b/lily/grob.cc index a9c4766658..e9025beb46 100644 --- a/lily/grob.cc +++ b/lily/grob.cc @@ -1,5 +1,5 @@ /* - score-elem.cc -- implement Grob + grob.cc -- implement Grob source file of the GNU LilyPond music typesetter @@ -10,8 +10,9 @@ #include #include +#include "main.hh" #include "input-smob.hh" -#include "libc-extension.hh" + #include "group-interface.hh" #include "misc.hh" #include "paper-score.hh" @@ -26,8 +27,7 @@ #include "molecule.hh" #include "misc.hh" #include "paper-outputter.hh" -#include "dimension-cache.hh" -#include "side-position-interface.hh" +#include "music.hh" #include "item.hh" #include "ly-smobs.icc" @@ -278,14 +278,18 @@ Grob::get_uncached_molecule ()const if (unsmob_molecule (mol)) { - /* - TODO: add option for not copying origin info. - */ - SCM origin =get_grob_property ("origin"); - if (!unsmob_input (origin)) - origin =ly_symbol2scm ("no-origin"); - + SCM origin = ly_symbol2scm ("no-origin"); + if (store_locations_global_b){ + SCM cause = get_grob_property ("cause"); + if (Music*m = unsmob_music (cause)) + { + SCM music_origin = m->get_mus_property ("origin"); + if (unsmob_input (music_origin)) + origin = music_origin; + } + } + // ugr. mol = Molecule (m->extent_box (), diff --git a/lily/include/molecule.hh b/lily/include/molecule.hh index 76081729ca..9d9ac24b94 100644 --- a/lily/include/molecule.hh +++ b/lily/include/molecule.hh @@ -42,7 +42,6 @@ class Molecule { Box dim_; SCM expr_; - DECLARE_SIMPLE_SMOBS (Molecule,); public: diff --git a/lily/line-of-score.cc b/lily/line-of-score.cc index a9e21a06eb..989d932580 100644 --- a/lily/line-of-score.cc +++ b/lily/line-of-score.cc @@ -191,7 +191,6 @@ set_loose_columns (Line_of_score* which, Column_x_positions const *posns) j ++; loose = dynamic_cast (unsmob_grob (ly_cdr (between))); } - } } diff --git a/lily/new-spacing-spanner.cc b/lily/new-spacing-spanner.cc deleted file mode 100644 index 8620f085f5..0000000000 --- a/lily/new-spacing-spanner.cc +++ /dev/null @@ -1,546 +0,0 @@ -/* - spacing-spanner.cc -- implement Spacing_spanner - - source file of the GNU LilyPond music typesetter - - (c) 1999--2002 Han-Wen Nienhuys - - */ - - -#include "paper-column.hh" -#include "dimensions.hh" -#include "paper-def.hh" -#include "warn.hh" -#include "paper-score.hh" -#include "line-of-score.hh" -#include "misc.hh" -#include "separation-item.hh" -#include "spanner.hh" -#include "spring.hh" - -class New_spacing_spanner -{ -public: - static void set_interface (Grob*); - static void do_measure (Grob*,Link_array *) ; - static void stretch_to_regularity (Grob*, Array *, Link_array const &); - static void breakable_column_spacing (Item* l, Item *r); - DECLARE_SCHEME_CALLBACK (set_springs, (SCM )); - static Real default_bar_spacing (Grob*,Grob*,Grob*,Moment) ; - static Real note_spacing (Grob*,Grob*,Grob*,Moment) ; - static Real get_duration_space (Grob*,Moment dur, Moment shortest) ; - static void prune_loose_colunms (Link_array*); -}; - -void -New_spacing_spanner::set_interface (Grob*me) -{ - me->set_extent_callback (SCM_EOL, X_AXIS); - me->set_extent_callback (SCM_EOL, Y_AXIS) ; -} - -/* - Remove all columns that are not tightly - fitting part of the spacing problem. - */ -void -New_spacing_spanner::prune_loose_colunms (Link_array *cols) -{ - for (int i = cols->size(); i--;) - { - SCM between = cols->elem(i)->get_grob_property ("between-cols"); - if (!gh_pair_p (between)) - continue; - - Item * l = dynamic_cast (unsmob_grob (gh_car (between))); - Item * r = dynamic_cast (unsmob_grob (gh_cdr (between))); - if (l->column_l () != cols->elem (i-1) - || r->column_l () != cols->elem (i +1)) - { - cols->del (i); - } - } -} - -/* - - The algorithm is partly taken from : - - John S. Gourlay. ``Spacing a Line of Music,'' Technical Report - OSU-CISRC-10/87-TR35, Department of Computer and Information - Science, The Ohio State University, 1987. - - TOO HAIRY. - - TODO: write comments - - */ -void -New_spacing_spanner::do_measure (Grob*me, Link_array *cols) -{ - Moment shortest_in_measure; - - /* - space as if this duration is present. - */ - Moment base_shortest_duration = *unsmob_moment (me->get_grob_property ("maximum-duration-for-spacing")); - shortest_in_measure.set_infinite (1); - - prune_loose_colunms (cols); - - for (int i =0 ; i < cols->size (); i++) - { - if (Paper_column::musical_b (cols->elem (i))) - { - Moment *when = unsmob_moment (cols->elem (i)->get_grob_property ("when")); - - /* - ignore grace notes for shortest notes. - */ - if (when && when->grace_part_) - continue; - - SCM st = cols->elem (i)->get_grob_property ("shortest-starter-duration"); - Moment this_shortest = *unsmob_moment (st); - shortest_in_measure = shortest_in_measure springs; - - Item * first_col = 0; - for (int i= 0; i < cols->size () - 1; i++) - { - Item * l = dynamic_cast (cols->elem (i)); - - if (!first_col && Paper_column::musical_b (l)) - first_col = l; - - Item * r = dynamic_cast (cols->elem (i+1)); - Paper_column * lc = dynamic_cast (l); - Paper_column *rc = dynamic_cast (r); - - -#if 0 -cout << "params for cols " << Paper_column::rank_i (l) << " " << Paper_column::rank_i (r) << endl; - cout << " musical: " << Paper_column::musical_b (l) << " " << Paper_column::musical_b (r) << endl; -#endif - - if (!Paper_column::musical_b (l)) - { - breakable_column_spacing (l, r); - - l = l->find_prebroken_piece (RIGHT); - if (l) - breakable_column_spacing (l,r); - - continue ; - } - - Real note_space = note_spacing (me,lc, rc, shortest_in_measure get_grob_property ("arithmetic-multiplier")); - - SCM seq = lc->get_grob_property ("spacing-sequence"); - - Moment dt = Paper_column::when_mom (r) - Paper_column::when_mom (l); - - /* - hinterfleisch = hind-meat = amount of space following a note. - - - We adjust the space following a note only if the next note - happens after the current note (this is set in the grob - property SPACING-SEQUENCE. */ - - Real stretch_distance = note_space; - if (shortest_in_measure <= dt) - { - /* - currently SPACING-SEQUENCE is set in - Separating_group_spanner::find_musical_sequences (), which - works neatly for one-voice-per staff, however, - - it can't find out the actual duration of the notes on a - staff, so when putting tuplets and normal patterns it gets - confused, (ie. believes that < { c8 c8 } { d8 d8 d8 }*2/3 - > contains 1/12 notes. ). - - here we kludge, by checking if the distance we're spacing - for is less than the shortest note. - - TODO: - - Move SPACING-SEQUENCE detection into a voice - level-engraver --or-- make sure that every column has - access to the note head. - - */ - for (SCM s = seq; gh_pair_p (s); s = ly_cdr (s)) - { - Grob *lm = unsmob_grob (ly_caar (s)); - Grob *rm = unsmob_grob (ly_cdar (s)); - - // TODO; configgable. - hinterfleisch += -headwid + Separation_item::my_width (lm)[RIGHT] - - 0.5 * Separation_item::my_width (rm)[LEFT]; - - } - - // ? why. - if (gh_pair_p (seq)) - stretch_distance -= headwid; - } - Spring s; - s.distance_f_ = hinterfleisch; - s.strength_f_ = 1 / stretch_distance; - - s.item_l_drul_[LEFT] = l; - s.item_l_drul_[RIGHT] = r; - - s.add_to_cols(); - if (r->find_prebroken_piece (LEFT)) - { - s.item_l_drul_[RIGHT] = r->find_prebroken_piece(LEFT); - s.add_to_cols(); - } - } - -} - -/* - Read hints from L (todo: R) and generate springs. - */ -void -New_spacing_spanner::breakable_column_spacing (Item* l, Item *r) -{ - Spring s; - - Real break_dist = 0.0; - SCM espace = l->get_grob_property ("extra-space"); - if (gh_pair_p (espace)) - break_dist += gh_scm2double (ly_cdr (espace)); - - if (!break_dist) - break_dist = 1.0; - - Real break_stretch = 0.0; - - // todo: naming of "distance" - espace = l->get_grob_property ("stretch-distance"); - if (gh_pair_p (espace)) - break_stretch += gh_scm2double (ly_cdr (espace)); - - if (!break_stretch) - break_stretch = 1.0; - - s.distance_f_ = break_dist; - s.strength_f_ = 1/break_stretch; - s.item_l_drul_[LEFT] = l; - s.item_l_drul_[RIGHT] = r; - - s.add_to_cols (); -} - -/* - Look at COLS, searching for columns that have 'regular-distance-to - set. A sequence of columns that have this property set should have - an equal distance (an equispaced run). Extract the projected - distance from SPRINGS, and scale SPRINGS for the equispaced run, to the - widest space necessary. - - - TODO: - - -- inefficient code; maybe it is easier to twiddle with the springs - after they've become grob properties (ie. have their - minimum-distances set) - - -- does not adjust strength field of the springs very well: result - awkward spacing at the start of a line. (?) - - -- will be confused when there are multiple equispaced runs in a measure. - - -- dealing with springs for line breaks is a little tricky; in any - case, we will only space per measure. - - -- we scale to actual distances, not to optical effects. Eg. if the - equispaced run contains optical corrections, then the scaling will - cancel those. - - -- Regular_spacing_engraver doesn't mark the first column of the - next bar, making the space before a barline too short, in this case - - - x<- 16ths--> x(8th) - x(8th) x(8th) <- equispaced run. - -*/ - -void -New_spacing_spanner::stretch_to_regularity (Grob *me, - Array * springs, - Link_array const & cols) -{ - /* - Find the starting column of the run. REGULAR-DISTANCE-TO points - back to a previous column, so we look ahead to find a column - pointing back to the first one. - - */ - Grob * first_regular_spaced_col = 0; - for (int i = 0 ; i < cols.size () && !first_regular_spaced_col; i++) - { - SCM rdt = cols[i]->get_grob_property ("regular-distance-to"); - if (cols.find_l (dynamic_cast (unsmob_grob (rdt)))) - first_regular_spaced_col = unsmob_grob (rdt); - } - for (int i = springs->size (); i-- ;) - springs->elem (i).set_to_cols (); - - int i; - for (i = 0; i < springs->size () - && springs->elem (i).item_l_drul_[RIGHT] != first_regular_spaced_col; - i++) - ; - - - if (i==springs->size ()) - return ; - - Real maxdist = 0.0; - Real dist =0.0; - Grob *last_col = first_regular_spaced_col; - Grob *last_regular_spaced_col = first_regular_spaced_col; - - - /* - find the max distance for this run. - */ - for (int j = i; j < springs->size (); j++) - { - Spring *s = &(springs->elem_ref (j)); - if (s->item_l_drul_[LEFT] != last_col) - continue; - - dist += s->distance_f_; - - last_col = s->item_l_drul_[RIGHT]; - SCM rdt = last_col->get_grob_property ("regular-distance-to"); - if (unsmob_grob (rdt) == last_regular_spaced_col) - { - maxdist = maxdist >? dist; - dist = 0.0; - last_regular_spaced_col = last_col; - } - - } - - /* - Scale the springs - */ - dist =0.0; - last_col = first_regular_spaced_col; - last_regular_spaced_col = first_regular_spaced_col; - for (int j = i; j < springs->size (); j++) - { - Spring *s = &springs->elem_ref (j); - if (s->item_l_drul_[LEFT] != last_col) - continue; - dist += s->distance_f_; - - last_col = s->item_l_drul_[RIGHT]; - SCM rdt = last_col->get_grob_property ("regular-distance-to"); - if (unsmob_grob (rdt) == last_regular_spaced_col) - { - do { - springs->elem_ref (i).distance_f_ *= maxdist / dist; - springs->elem_ref (i).strength_f_ *= dist / maxdist; - } while (i++ < j); - last_regular_spaced_col = last_col; - dist =0.0; - } - } -} - -/** - Do something if breakable column has no spacing hints set. - */ -Real -New_spacing_spanner::default_bar_spacing (Grob*me, Grob *lc, Grob *rc, - Moment shortest) -{ - Real symbol_distance = lc->extent (lc,X_AXIS)[RIGHT] ; - Real durational_distance = 0; - Moment delta_t = Paper_column::when_mom (rc) - Paper_column::when_mom (lc); - - /* - ugh should use shortest_playing distance - */ - if (delta_t.to_bool ()) - { - durational_distance = get_duration_space (me, delta_t, shortest); - } - - return symbol_distance >? durational_distance; -} - - -/** - Get the measure wide ant for arithmetic spacing. - - @see - John S. Gourlay. ``Spacing a Line of Music,'' Technical Report - OSU-CISRC-10/87-TR35, Department of Computer and Information Science, - The Ohio State University, 1987. - - */ -Real -New_spacing_spanner::get_duration_space (Grob*me, Moment d, Moment shortest) -{ - Real log = log_2 (shortest.main_part_); - Real k = gh_scm2double (me->get_grob_property ("arithmetic-basicspace")) - - log; - - Rational compdur = d.main_part_ + d.grace_part_ /Rational (3); - - return (log_2 (compdur) + k) * gh_scm2double (me->get_grob_property ("arithmetic-multiplier")); -} - - -Real -New_spacing_spanner::note_spacing (Grob*me, Grob *lc, Grob *rc, - Moment shortest) -{ - Moment shortest_playing_len = 0; - SCM s = lc->get_grob_property ("shortest-playing-duration"); - - - if (unsmob_moment (s)) - shortest_playing_len = *unsmob_moment (s); - - if (! shortest_playing_len.to_bool ()) - { - programming_error ("can't find a ruling note at " + Paper_column::when_mom (lc).str ()); - shortest_playing_len = 1; - } - - if (! shortest.to_bool ()) - { - programming_error ("no minimum in measure at " + Paper_column::when_mom (lc).str ()); - shortest = 1; - } - Moment delta_t = Paper_column::when_mom (rc) - Paper_column::when_mom (lc); - Real dist = 0.0; - - if (delta_t.main_part_) - { - dist = get_duration_space (me, shortest_playing_len, shortest); - dist *= (double) (delta_t.main_part_ / shortest_playing_len.main_part_); - } - else if (delta_t.grace_part_) - { - dist = get_duration_space (me, shortest, shortest); - - Real grace_fact = 1.0; - SCM gf = me->get_grob_property ("grace-space-factor"); - if (gh_number_p (gf)) - grace_fact = gh_scm2double (gf); - - dist *= grace_fact; - } - -#if 0 - /* - TODO: figure out how to space grace notes. - */ - - dist *= - + grace_fact * (double) (delta_t.grace_part_ / shortest_playing_len.main_part_); - - - Moment *lm = unsmob_moment (lc->get_grob_property ("when")); - Moment *rm = unsmob_moment (rc->get_grob_property ("when")); - - if (lm && rm) - { - if (lm->grace_part_ && rm->grace_part_) - dist *= 0.5; - else if (!rm->grace_part_ && lm->grace_part_) - dist *= 0.7; - } -#endif - - return dist; -} - - - -MAKE_SCHEME_CALLBACK (New_spacing_spanner, set_springs,1); -SCM -New_spacing_spanner::set_springs (SCM smob) -{ - Grob *me = unsmob_grob (smob); - Link_array all (me->pscore_l_->line_l_->column_l_arr ()) ; - - int j = 0; - - for (int i = 1; i < all.size (); i++) - { - Grob *sc = all[i]; - if (Item::breakable_b (sc)) - { - Link_array measure (all.slice (j, i+1)); - do_measure (me, &measure); - j = i; - } - } - - /* - farewell, cruel world - */ - me->suicide (); - return SCM_UNSPECIFIED; -} - - - -/* - maximum-duration-for-spacing -From: bf250@freenet.carleton.ca (John Sankey) -To: gnu-music-discuss@gnu.org -Subject: note spacing suggestion -Date: Mon, 10 Jul 2000 11:28:03 -0400 (EDT) - -Currently, Lily spaces notes by starting with a basic distance, -arithmetic_multiplier, which it applies to the minimum duration note -of the bar. Then she adds a logarithmic increment, scaled from -arithmetic_basicspace, for longer notes. (Then, columns are aligned -and justified.) Fundamentally, this matches visual spacing to musical -weight and works well. - -A lot of the time in music, I see a section basically in melodic -notes that occasionally has a rapid ornamental run (scale). So, there -will be a section in 1/4 notes, then a brief passage in 1/32nds, then -a return to long notes. Currently, Lily gives the same horizontal -space to the 1/32nd notes in their bar (even if set in small size as -is commonly done for cadenzii) as she gives to 1/4 notes in bars -where 1/4 note is the minimum duration. The resulting visual weight -does not match the musical weight over the page. - -Looking at the music I am typesetting, I feel that Lily's spacing -could be significantly improved if, with no change in the basic -method used, arithmetic_multiplier could be applied referred to the -same duration throughout a piece. Of course, the current method -should be retained for those who have already set music in it, so I -suggest a property called something like arithmetic_base=16 to fix -1/16 duration as the reference for arithmetic_multiplier; the default -would be a dynamic base is it is now. - -Does anyone else feel that this would be a useful improvement for -their music? (Of course, if arithmetic_multiplier became a regular -property, this could be used to achieve a similar result by -tweaking.) - - */ diff --git a/lily/note-head.cc b/lily/note-head.cc index f685b4917a..89929e873d 100644 --- a/lily/note-head.cc +++ b/lily/note-head.cc @@ -17,10 +17,45 @@ #include "rhythmic-head.hh" /* - Note_head contains the code for printing note heads and the ledger lines. + Note_head contains the code for printing note heads. + + + + Ledger lines: + + It also contains the ledger lines, for historical reasons. Ledger + lines are somewhat of a PITA. In some cases, they take up no space, in + some cases they don't: + + DO take space: + + - when ledgered notes are juxtaposed: there should be some white + space between the ledger lines. + + - when accidentals are near: the accidentals should not be on the ledger lines + + [both tips by Heinz Stolba from Universal Edition]. + + DO NOT take space into account: + + - for basically everything else, e.g. swapping ledgered notes on + clustered chords, spacing between ledgered and unledgered notes. + + + TODO: fix this. It is not feasible to have a special grob for + ledgers, since you basically don't know if there will be ledgers, + unless you know at interpretation phase already 1. the Y-position, + 2. the number of staff lines. It's not yet specced when both pieces + of information are there, so for now, it is probably better to build + special support for ledgers into the accidental and separation-item + code. + + (Besides a separate ledger seems overkill. For what else would + it be useful?) - TODO: maybe it's worthwhile to split away the Ledger lines into a - separate grob. */ + + +*/ #include "staff-symbol-referencer.hh" @@ -133,13 +168,17 @@ internal_brew_molecule (Grob *me, bool ledger_take_space) return out; } -MAKE_SCHEME_CALLBACK (Note_head,brew_molecule,1); +MAKE_SCHEME_CALLBACK (Note_head,brew_molecule,1); SCM Note_head::brew_molecule (SCM smob) { Grob *me = unsmob_grob (smob); - return internal_brew_molecule (me, true).smobbed_copy (); + + /* + ledgers don't take space. See top of file. + */ + return internal_brew_molecule (me, false).smobbed_copy (); } /* diff --git a/lily/text-item.cc b/lily/text-item.cc index 21b8729c1c..802eeefc9b 100644 --- a/lily/text-item.cc +++ b/lily/text-item.cc @@ -90,32 +90,6 @@ Text_item::lookup_character (Grob *, Font_metric*fm, SCM char_name) Molecule Text_item::lookup_text (Grob *me, Font_metric*fm, SCM text) { -#if 0 - /* - Fixme; should be done differently, move to font-interface? - - differently -- how/why? - */ - - SCM magnification = me->get_grob_property ("font-magnification"); - - Font_metric* metric = 0; - if (gh_number_p (magnification)) - { - - Real realmag = pow (1.2, gh_scm2int (magnification)); - metric = all_fonts_global_p->find_scaled (ly_scm2string (font_name), realmag); - - assert (false); - } -#else - SCM magnification = me->get_grob_property ("font-magnification"); - - if (gh_number_p (magnification) && gh_scm2double (magnification) > 1) - programming_error ("font-magnification disabled"); -#endif - - SCM list = scm_list_n (ly_symbol2scm ("text"), text, SCM_UNDEFINED); list = fontify_atom (fm, list); @@ -240,20 +214,13 @@ Text_item::markup_text2molecule (Grob *me, SCM markup_text, if (extent_b) { -#if 0 - /* Hmm, we're not allowed to change a Molecule's extent? */ - mol.dim_[axis] = extent; - Molecule::ly_set_molecule_extent_x (mol.self_scm (), gh_int2scm (axis), - ly_cdr (e)); -#else - // burp: unpredictable names, these... + /* we're not setting extents for unknown reasons. */ Box b = mol.extent_box (); SCM expr = mol.get_expr (); b[axis] = extent; mol = Molecule (b, expr); -#endif - } + } return mol; } diff --git a/lily/third-try.cc b/lily/third-try.cc index 5816ce6d86..79deb7cb8a 100644 --- a/lily/third-try.cc +++ b/lily/third-try.cc @@ -25,6 +25,11 @@ left-neighbors = idem (TODO: property-doc these!) + + Don't be confused by right-items: each spacing wish can also contain + a number of items, with which a spacing constraint may be kept. It's + a little baroque, but it might come in handy later on? + */ class Third_spacing_spanner @@ -74,7 +79,7 @@ loose_column (Grob *l, Grob *c, Grob *r) the column containing the clef is really loose, and should be attached right to the first column, but that is a lot of work for - such a border line case. + such a borderline case. ) @@ -384,12 +389,13 @@ Third_spacing_spanner::do_measure (Grob*me, Link_array *cols) { Grob * wish = unsmob_grob (gh_car (s)); - /* - TODO: configgable. + if (Note_spacing::left_column (wish) != lc + || Note_spacing::right_column (wish) != rc) + continue; - TODO: don't do stem-dir correction in polyphonic - stuff. It wastes CPU time. - */ + /* + This is probably a waste of time in the case of polyphonic + music. */ if (Note_spacing::has_interface (wish)) { hinterfleisch = hinterfleisch >? @@ -402,18 +408,13 @@ Third_spacing_spanner::do_measure (Grob*me, Link_array *cols) } } - // ? why. - if (gh_pair_p (seq)) - stretch_distance -= headwid; - - /* - something failed, or we get ridiculous close. - */ if (hinterfleisch < 0) { // maybe should issue a programming error. hinterfleisch = note_space; } + else + stretch_distance -= headwid; // why? if (max_factor == 0.0) max_factor = 1.0; diff --git a/lily/tuplet-bracket.cc b/lily/tuplet-bracket.cc index d53a5170ea..b93ff670d6 100644 --- a/lily/tuplet-bracket.cc +++ b/lily/tuplet-bracket.cc @@ -28,6 +28,12 @@ /* TODO: staff-line collisions for horizontal tuplet brackets. + + TODO: + + in the case that there is no bracket, but there is a (single) beam, + follow beam precisely for determining tuplet number location. + */ @@ -38,9 +44,6 @@ Tuplet_bracket::set_interface (Grob*me) me->set_interface (ly_symbol2scm ("tuplet-bracket")); } -/* - TODO: use stem->beam fields to find Beams. Autobeams aren't found - through the engraver mechanism. */ MAKE_SCHEME_CALLBACK (Tuplet_bracket,brew_molecule,1); SCM Tuplet_bracket::brew_molecule (SCM smob) diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 54b32e4d41..9e5a8b1b3c 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.5.30 -Entered-date: 04FEB02 +Version: 1.5.31 +Entered-date: 18FEB02 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.5.30.tar.gz + 1000k lilypond-1.5.31.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.5.30.tar.gz + 1000k lilypond-1.5.31.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.mandrake.spec b/make/out/lilypond.mandrake.spec index c6b505226e..7dcc836e83 100644 --- a/make/out/lilypond.mandrake.spec +++ b/make/out/lilypond.mandrake.spec @@ -1,5 +1,5 @@ %define name lilypond -%define version 1.5.30 +%define version 1.5.31 %define release 1mdk Name: %{name} diff --git a/make/out/lilypond.redhat.spec b/make/out/lilypond.redhat.spec index 1a0a60da4c..5825dcfd4e 100644 --- a/make/out/lilypond.redhat.spec +++ b/make/out/lilypond.redhat.spec @@ -1,11 +1,11 @@ %define info yes Name: lilypond -Version: 1.5.30 +Version: 1.5.31 Release: 1 License: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.30.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.31.tar.gz Summary: Create and print music notation URL: http://www.lilypond.org/ BuildRoot: /tmp/lilypond-install diff --git a/make/out/lilypond.suse.spec b/make/out/lilypond.suse.spec index 83a1b979bf..d9b6216831 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.5.30 +Version: 1.5.31 Release: 2 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.30.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.31.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 147b33fc6d..d7a150d208 100644 --- a/mf/GNUmakefile +++ b/mf/GNUmakefile @@ -1,6 +1,6 @@ depth = .. -STEPMAKE_TEMPLATES=metafont metapost install install-out +STEPMAKE_TEMPLATES=metafont install install-out LOCALSTEPMAKE_TEMPLATES=asciifont @@ -31,11 +31,10 @@ TFM_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.tfm)) PFA_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.pfa)) PFB_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.pfb)) -pfb: $(PFB_FILES) # Make tfm files first, log files last, # so that normally log files aren't made twice -ALL_GEN_FILES= $(TFM_FILES) $(TEXTABLES) $(AFM_FILES) $(TFM_FILES) $(PFA_FILES) $(LOG_FILES) +ALL_GEN_FILES= $(TFM_FILES) $(TEXTABLES) $(AFM_FILES) $(TFM_FILES) $(LOG_FILES) #PRE_INSTALL=$(MAKE) "$(ALL_GEN_FILES)" INSTALLATION_DIR=$(datadir)/mf/ @@ -59,7 +58,7 @@ INSTALLATION_OUT_FILES4=$(PFA_FILES) export MFINPUTS:=.:$(MFINPUTS) -default: $(PFA_FILES) $(ALL_GEN_FILES) +default: $(ALL_GEN_FILES) ## ## todo: this also depends on .tfm, FIXME. @@ -67,7 +66,8 @@ $(outdir)/%.afm $(outdir)/%.tex $(outdir)/%.dep: $(outdir)/%.log $(PYTHON) $(buildscript-dir)/mf-to-table.py --package=$(topdir) --outdir=$(outdir) --dep $(outdir)/$(@lilypondfile(\[(?P.*?)\])?{(?P[^}]+)})', 'lilypond' : '(?m)^(?!@c)(?P@lilypond(\[(?P.*?)\])?{(?P.*?)})', # pyton2.2b2 barfs on this - 'lilypond-block': r"""(?m)^(?!@c)(?P(?s)(?P@lilypond(\[(?P.*?)\])?\s(?P.*?)@end lilypond\s))""", + 'lilypond-block': r"""(?m)^(?!@c)(?P(?s)(?P@lilypond(\[(?P.*?)\])?\s(?P.*?)@end lilypond\s))""", # 1.5.2 barfs on this. # 'lilypond-block': r"""(?m)^(?!@c)(?P@lilypond(\[(?P.*?)\])?\s(?P.*?)@end lilypond\s)""", diff --git a/stepmake/aclocal.m4 b/stepmake/aclocal.m4 index 20a3f58ec1..f305ef7b5a 100644 --- a/stepmake/aclocal.m4 +++ b/stepmake/aclocal.m4 @@ -693,25 +693,12 @@ AC_DEFUN(AC_STEPMAKE_TEXMF, [ METAFONT=$MFONT fi - AC_CHECK_PROGS(METAPOST, mp, no) - if test "x$METAPOST" = "xno"; then - AC_CHECK_PROGS(MPOST, mpost, -echo no mp or mpost) - - METAPOST=$MPOST - fi - AC_CHECK_PROGS(INIMETAFONT, inimf, no) if test "x$INIMETAFONT" = "xno"; then AC_CHECK_PROGS(INIMFONT, inimfont, -echo no inimf or inimfont) INIMETAFONT=$INIMFONT fi - AC_CHECK_PROGS(INIMETAPOST, inimp, no) - if test "x$INIMETAPOST" = "xno"; then - AC_CHECK_PROGS(INIMPOST, inimpost, -echo no inimp or inimpost) - INIMETAPOST=$INIMPOST - fi - AC_MSG_CHECKING(for working metafont mode) modelist='ljfour lj4 lj3 lj2 ljet laserjet' for MFMODE in $modelist; do @@ -722,30 +709,11 @@ AC_DEFUN(AC_STEPMAKE_TEXMF, [ done AC_MSG_RESULT($MFMODE) - AC_MSG_CHECKING(for mfplain.mp) - # - # For now let people define these in their environments - # - : ${MFPLAIN_MP=`kpsewhich --format mp mfplain.mp`} - AC_MSG_RESULT($MFPLAIN_MP) - - AC_MSG_CHECKING(for inimetapost flags) - if test ${INIMETAPOST} = "inimp" ; then - : ${INIMETAPOST_FLAGS=''} - else - : ${INIMETAPOST_FLAGS='-interaction=nonstopmode'} - fi - AC_MSG_RESULT($INIMETAPOST_FLAGS) - rm -f mfput.* AC_SUBST(METAFONT) - AC_SUBST(METAPOST) AC_SUBST(MFMODE) AC_SUBST(INIMETAFONT) - AC_SUBST(INIMETAPOST) - AC_SUBST(MFPLAIN_MP) - AC_SUBST(INIMETAPOST_FLAGS) ]) AC_DEFUN(AC_STEPMAKE_WARN, [ -- 2.39.5