]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.5.31 release/1.5.31
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 17 Feb 2002 23:26:18 +0000 (00:26 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 17 Feb 2002 23:26:18 +0000 (00:26 +0100)
30 files changed:
ChangeLog
Documentation/topdocs/INSTALL.texi
Documentation/user/refman.itely
INSTALL.txt
VERSION
aclocal.m4
buildscripts/clean-fonts.sh [changed mode: 0755->0644]
configure
input/bugs/spacing-clash.ly [deleted file]
input/bugs/spacing-clefs.ly [deleted file]
input/regression/font-magnification.ly [new file with mode: 0644]
lily/font-interface.cc
lily/grob.cc
lily/include/molecule.hh
lily/line-of-score.cc
lily/new-spacing-spanner.cc [deleted file]
lily/note-head.cc
lily/text-item.cc
lily/third-try.cc
lily/tuplet-bracket.cc
make/out/lilypond.lsm
make/out/lilypond.mandrake.spec
make/out/lilypond.redhat.spec
make/out/lilypond.suse.spec
mf/GNUmakefile
scm/grob-description.scm
scm/grob-property-description.scm
scm/interface-description.scm
scripts/lilypond-book.py
stepmake/aclocal.m4

index e360df2c7e2b976c94dd85ee35a6b8df59349a5e..611b422778cd98a080c513d934db29846f32d04e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,35 @@
+
+2002-02-18  Han-Wen  <hanwen@cs.uu.nl>
+       
+       * 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  <hanwen@cs.uu.nl>
+
+       * 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  <hanwen@cs.uu.nl>
+
+       * Documentation/topdocs/INSTALL.texi: remove type3 stuff. 
+
+       * mf/GNUmakefile:  remove metapost stuff
+
+       * stepmake/aclocal.m4: remove metapost detection stuff.
+
 2002-02-11  Jan Nieuwenhuizen  <janneke@gnu.org>
 
        * mf/GNUmakefile (FET_FILES): 
index 27ddf6868b1e463ac34f39418be687bfddab3adf..ac353fb528948079917066d9078f77881ae336fe 100644 (file)
@@ -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
 
index cd676041882f695a1b68332910811fb066fe232e..90c34f36a3b9d7b84b14a08475bca4c0a65c3b00 100644 (file)
@@ -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.
 
index 058e0d97e771b06880d166e4fba5b2ed33cb6c4e..55ae5433095f8ee9318124312a7f6dbbd16dd396 100644 (file)
@@ -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 74b784a2a913ff4b745b4c2453d437be4b4b2756..72be86c85d6c3dc49a668609eec5f845fbc7928b 100644 (file)
--- 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.
index 0c3c31bd785752fe0a345a121641ac08eafadf96..d00052343c3bd4ce8dbd57a233e8a1fef3feda63 100644 (file)
@@ -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, [
old mode 100755 (executable)
new mode 100644 (file)
index 421625432fe3402a3113edf061edfbb8923aef48..3936dbd1d319348664f86da68a9de5c0c84a567e 100755 (executable)
--- 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 <<EOF
-#line 2332 "configure"
+#line 2334 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -2342,7 +2344,7 @@ int main() {
 gettext()
 ; return 0; }
 EOF
-if { (eval echo configure:2346: \"$ac_link\") 1>&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 <<EOF
-#line 2381 "configure"
+#line 2383 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2403,7 +2405,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2407: \"$ac_link\") 1>&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
-#line 3021 "configure"
+#line 2853 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 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 <<EOF
-#line 3061 "configure"
+#line 2893 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -3071,7 +2903,7 @@ int main() {
 kpse_find_file()
 ; return 0; }
 EOF
-if { (eval echo configure:3075: \"$ac_link\") 1>&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 <<EOF
-#line 3110 "configure"
+#line 2942 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3132,7 +2964,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3136: \"$ac_link\") 1>&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 <<EOF
-#line 3199 "configure"
+#line 3031 "configure"
 #include "confdefs.h"
 
 main()
@@ -3205,7 +3037,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:3209: \"$ac_link\") 1>&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 <<EOF
-#line 3232 "configure"
+#line 3064 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -3254,7 +3086,7 @@ vprintf();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3258: \"$ac_link\") 1>&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 <<EOF
-#line 3287 "configure"
+#line 3119 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -3309,7 +3141,7 @@ _doprnt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3313: \"$ac_link\") 1>&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 <<EOF
-#line 3345 "configure"
+#line 3177 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3367,7 +3199,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3371: \"$ac_link\") 1>&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 <<EOF
 \input texinfo
@@ -3467,7 +3299,7 @@ EOF
 # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&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
-#line 3514 "configure"
+#line 3346 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 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 (file)
index 669b70e..0000000
+++ /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 (file)
index 67c31e7..0000000
+++ /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 (file)
index 0000000..d379b9e
--- /dev/null
@@ -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
+}
+
+}
+
index 79e9f9e38d4af38968a33af3399dc2135d3dd024..d0e23e9bc06ae242203fe4e4f620af21ccde52fe 100644 (file)
@@ -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");
index a9c47666586a192bf3643c98d4fc430c86123376..e9025beb46d04b5de7bee8d1d653c110b50ce9e8 100644 (file)
@@ -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 <string.h>
 #include <math.h>
 
+#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 (),
index 76081729ca0c82361c5ec2e3c02ed61aac67c580..9d9ac24b942f46eb3b4aa47a59d43cfc26078dd0 100644 (file)
@@ -42,7 +42,6 @@
 class Molecule {
   Box dim_;
   SCM expr_;
-
   
   DECLARE_SIMPLE_SMOBS (Molecule,);  
 public:
index a9e21a06ebc3e0b7786cbedda8c0615450aebd3d..989d932580ff3527ff8c3de26b181b9c522a94d6 100644 (file)
@@ -191,7 +191,6 @@ set_loose_columns (Line_of_score* which, Column_x_positions const *posns)
          j ++; 
          loose = dynamic_cast<Item*> (unsmob_grob (ly_cdr (between)));
        }
-      
     }
 }
 
diff --git a/lily/new-spacing-spanner.cc b/lily/new-spacing-spanner.cc
deleted file mode 100644 (file)
index 8620f08..0000000
+++ /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 <hanwen@cs.uu.nl>
-  
- */
-
-
-#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<Grob> *) ;
-  static void stretch_to_regularity (Grob*, Array<Spring> *, Link_array<Grob> 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<Grob>*);
-};
-
-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<Grob> *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<Item*> (unsmob_grob (gh_car (between)));
-      Item * r = dynamic_cast<Item*> (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<Grob> *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 <? this_shortest;
-       }
-    }
-  
-  Array<Spring> springs;
-
-  Item * first_col = 0;
-  for (int i= 0; i < cols->size () - 1; i++)
-    {
-      Item * l = dynamic_cast<Item*> (cols->elem (i));
-
-      if (!first_col && Paper_column::musical_b (l))
-       first_col = l;
-
-      Item * r =  dynamic_cast<Item*> (cols->elem (i+1));
-      Paper_column * lc = dynamic_cast<Paper_column*> (l);
-      Paper_column *rc = dynamic_cast<Paper_column*> (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 <? base_shortest_duration);
-      Real hinterfleisch = note_space;
-      Real headwid = gh_scm2double (me->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<Spring> * springs,
-                                           Link_array<Grob> 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<Item*> (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<Grob> 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<Grob> 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.)
-  
- */
index f685b4917ad430ae1f4725f0ff1b24b2eb43b97d..89929e873d81bccf7775fe6ca85d4d62e9c697f0 100644 (file)
 #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 ();
 }
 
 /*
index 21b8729c1c8a85940dcd95a357918858acb625f2..802eeefc9bb1b6e54275d982741d9d5c970ee421 100644 (file)
@@ -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;
 }
 
index 5816ce6d86fec85bf8ae628c1ef913297864cc04..79deb7cb8a5bc03ffd5a0c287b06d33e0cb623a8 100644 (file)
     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<Grob> *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<Grob> *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; 
index d53a5170eaf90fba7dbf15cad8a982797e5379ca..b93ff670d67a6f9816a44b3b8bf2e34ab7387a14 100644 (file)
 /*
   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) 
index 54b32e4d41943db08f517dd7f0dcef2b3cb44a48..9e5a8b1b3c3d3681a672d3b211cfe04379ad511b 100644 (file)
@@ -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
index c6b505226eb472f5d3632ab5022e587b72719ee5..7dcc836e83538cf7d5c45e1101e4d5913807277b 100644 (file)
@@ -1,5 +1,5 @@
 %define name lilypond
-%define version 1.5.30
+%define version 1.5.31
 %define release 1mdk
 
 Name: %{name}
index 1a0a60da4c945e9f0d2d62c8fe90c79faf601f33..5825dcfd4e8ebb5b384e23af96eb55f9ad6c89c4 100644 (file)
@@ -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
index 83a1b979bfbdf7d7b4afe0a6b169290df56c3749..d9b621683146ade98e60067775eaee7ac33295a0 100644 (file)
 
 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/
index 147b33fc6d8aad13f8bc2ad7a562af41b5144d4b..d7a150d2087e47dabe2e1c66ff37832f15a7981a 100644 (file)
@@ -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)/$(<F:.log=.dep)  --afm $(outdir)/$(<F:.log=.afm) --tex $(outdir)/$(<F:.log=.tex) $<
 
 local-clean:
-       rm -f mfplain.mem mfplain.log mpout.log
+       rm -f mfplain.mem mfplain.log 
        rm -f *.tfm *.log
 
 
+pfb: $(PFB_FILES) 
index af6e7aa0a2dd1843cb312080fcd75f068634e5a9..bc592243342c454d14f0aa0d98b5d2be830fa9a8 100644 (file)
        
        (PaperColumn . (
                (axes 0)
+;              (molecule-callback . ,Paper_column::brew_molecule) (font-name . "cmr8")
                (meta . ,(grob-description paper-column-interface axis-group-interface spaceable-element-interface))
        ))
        (PhrasingSlur . (
        
        (NonMusicalPaperColumn . (
                 (axes 0)
+;      (molecule-callback . ,Paper_column::brew_molecule) (font-name . "cmr8")
                (meta . ,(grob-description paper-column-interface axis-group-interface spaceable-element-interface))
         ))
 
index 9afa0705303f5d43c584cd5ca04821b97525fd09..22249189e3ca0be2664d94ed965beab3532d4a4c 100644 (file)
@@ -158,9 +158,11 @@ procedure is tried.")
 (grob-property-description 'flag-width-function procedure? "Procedure that computes the width of a half-beam (a non-connecting beam.).")
 (grob-property-description 'font-family symbol? "partial font
 definition: music roman braces dynamic math ...")
-(grob-property-description 'font-name symbol? "partial font definition:
-base name of font file FIXME: should override other partials.")
+(grob-property-description 'font-name string? "file name for the font to load.
+Overrides all other font-X qualifiers.")
 (grob-property-description 'font-design-size number? "partial font definition: exact font size in points FIXME: should override font-relative-size.")
+(grob-property-description 'font-magnification number? "Magnification
+  of the font. If undefined, the default is @code{1.0}.")
 (grob-property-description 'font-relative-size number? "partial font definition: the relative size compared the `normal' size.
  0 is style-sheet's normal size, -1 is smaller, +1 is bigger, -1 is smaller.")
 (grob-property-description 'font-series symbol? "partial font definition: medium, bold.")
index 62ac4dfbcaefca330fa45c72d375dc1be80c7926..930a7dcc8ced6546d5f851a3e1fc6fd701013835 100644 (file)
@@ -15,6 +15,9 @@
 ;;; and `objects'.
 
 
+;;; TODO: this should be done through C++ macros, in order to have
+;;; tighter coupling between the C++ and its doco.
+
 (define all-interfaces '())
 
 (define (lily-interface symbol description props)
index e1a7f86b31a17c0645b7b6093ca10e135b639af2..2eb4a0c5f257d034824de2d8ab317cae9db3ed62 100644 (file)
@@ -487,7 +487,7 @@ re_dict = {
                 'lilypond-file': '(?m)^(?!@c)(?P<match>@lilypondfile(\[(?P<options>.*?)\])?{(?P<filename>[^}]+)})',
                 'lilypond' : '(?m)^(?!@c)(?P<match>@lilypond(\[(?P<options>.*?)\])?{(?P<code>.*?)})',
 # pyton2.2b2 barfs on this
-                'lilypond-block': r"""(?m)^(?!@c)(?P<match1>(?s)(?P<match>@lilypond(\[(?P<options>.*?)\])?\s(?P<code>.*?)@end lilypond\s))""",
+                'lilypond-block': r"""(?m)^(?!@c)(?P<match>(?s)(?P<match>@lilypond(\[(?P<options>.*?)\])?\s(?P<code>.*?)@end lilypond\s))""",
 
 # 1.5.2 barfs on this. 
 # 'lilypond-block': r"""(?m)^(?!@c)(?P<match>@lilypond(\[(?P<options>.*?)\])?\s(?P<code>.*?)@end lilypond\s)""",
index 20a3f58ec193ed12b65c6ba9afe0e0bbaf160bbb..f305ef7b5ab275bf36ac16d38fe74943be070461 100644 (file)
@@ -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, [