CVSROOT: /cvsroot/lilypond
Module name: lilypond
Branch:
Changes by: Jan Nieuwenhuizen <[EMAIL PROTECTED]> 05/04/17 21:16:31
Modified files:
po : lilypond.pot
mf : SConscript GNUmakefile
buildscripts : gen-emmentaler-scripts.py builder.py
. : SConstruct ChangeLog
Removed files:
mf : feta-din.mf
Log message:
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/po/lilypond.pot.diff?tr1=1.68&tr2=1.69&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/mf/SConscript.diff?tr1=1.17&tr2=1.18&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/mf/GNUmakefile.diff?tr1=1.155&tr2=1.156&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/buildscripts/gen-emmentaler-scripts.py.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/buildscripts/builder.py.diff?tr1=1.28&tr2=1.29&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/SConstruct.diff?tr1=1.72&tr2=1.73&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.3449&tr2=1.3450&r1=text&r2=text
Patches:
Index: lilypond/ChangeLog
diff -u lilypond/ChangeLog:1.3449 lilypond/ChangeLog:1.3450
--- lilypond/ChangeLog:1.3449 Sun Apr 17 21:09:45 2005
+++ lilypond/ChangeLog Sun Apr 17 21:16:31 2005
@@ -17,6 +17,12 @@
2005-04-17 Jan Nieuwenhuizen <[EMAIL PROTECTED]>
+ * mf/feta-din.mf: Remove.
+
+ * mf/GNUmakefile (fontdir): Bugfix.
+
+ * mf/SConstruct: Some updates.
+
* SConstruct: Require pkg-config.
(test_program): Bugfix for double digit version compares, use
integer (not string-) compare.
Index: lilypond/SConstruct
diff -u lilypond/SConstruct:1.72 lilypond/SConstruct:1.73
--- lilypond/SConstruct:1.72 Sun Apr 17 09:55:44 2005
+++ lilypond/SConstruct Sun Apr 17 21:16:31 2005
@@ -248,7 +248,18 @@
v = v[:-1]
return string.split (v, '.')
- def test_program (lst, program, minimal, description, package):
+ def get_fullname (program):
+ command = 'type -p "%s" 2>/dev/null' % program
+ pipe = os.popen (command)
+ output = pipe.readlines ()
+ if pipe.close ():
+ return None
+ o = output[-1]
+ if o[-1] == '\n':
+ o = o[:-1]
+ return string.split (o)[-1]
+
+ def test_version (lst, program, minimal, description, package):
sys.stdout.write ('Checking %s version... ' % program)
actual = get_version (program)
if not actual:
@@ -256,8 +267,7 @@
lst.append ((description, package, minimal, program,
'not installed'))
return 0
- sys.stdout.write (string.join (actual, '.'))
- sys.stdout.write ('\n')
+ print string.join (actual, '.')
if map (string.atoi, actual) \
< map (string.atoi, string.split (minimal, '.')):
lst.append ((description, package, minimal, program,
@@ -265,13 +275,24 @@
return 0
return 1
+ def test_program (lst, program, minimal, description, package):
+ sys.stdout.write ('Checking for %s ... ' % program)
+ f = get_fullname (program)
+ if not f:
+ print 'not found'
+ lst.append ((description, package, minimal, program,
+ 'not installed'))
+ return 0
+ print f
+ return test_version (lst, program, minimal, description,
package)
+
def test_lib (lst, program, minimal, description):
# FIXME: test for Debian or RPM (or -foo?) based dists
# to guess (or get correct!: apt-cache search?)
# package name.
#if os.system ('pkg-config --atleast-version=0 freetype2'):
# barf
- if test_program (lst, program, minimal, description,
+ if test_version (lst, program, minimal, description,
'lib%(program)s-dev or %(program)s-devel'
% vars ()):
env.ParseConfig ('pkg-config --cflags --libs
%(program)s'
@@ -312,6 +333,7 @@
test_program (optional, 'perl', '4.0',
'Perl practical efficient readonly language', 'perl')
#test_program (optional, 'foo', '2.0', 'Foomatic tester', 'bar')
+ test_program (optional, 'fontforge', '20041224.0', 'FontForge',
'fontforge')
def CheckYYCurrentBuffer (context):
context.Message ('Checking for yy_current_buffer... ')
@@ -733,6 +755,20 @@
('#ps', 'share/lilypond/%(ver)s/ps'),
('po/@/nl.mo', 'share/locale/nl/LC_MESSAGES/lilypond.mo'),
('elisp', 'share/lilypond/%(ver)s/elisp')))
+
+ print "FIXME: BARF BARF BARF"
+ os.chdir (absbuild)
+ out = env['out']
+ ver = version
+ prefix = os.path.join (env['out'], 'usr/share/lilypond/%(ver)s/fonts'
+ % vars ())
+ for ext in ('enc', 'map', 'otf', 'svg', 'tfm', 'pfa'):
+ dir = os.path.join (absbuild, prefix, ext)
+ os.system ('rm -f ' + dir)
+ mkdirs (dir)
+ os.chdir (dir)
+ os.system ('ln -s ../../../../../../../mf/%(out)s/*.%(ext)s .'
+ % vars ())
os.chdir (srcdir)
if env['debugging']:
Index: lilypond/buildscripts/builder.py
diff -u lilypond/buildscripts/builder.py:1.28
lilypond/buildscripts/builder.py:1.29
--- lilypond/buildscripts/builder.py:1.28 Wed Feb 9 16:23:09 2005
+++ lilypond/buildscripts/builder.py Sun Apr 17 21:16:31 2005
@@ -145,8 +145,6 @@
-
-
# FIXME: cleanup, see above
@@ -178,14 +176,21 @@
base = os.path.splitext (str (target[0]))[0]
return (target + [base + '.log'], source)
-def add_enc_ly_tex_target (target, source, env):
+def add_lisp_enc_tex_ly_target (target, source, env):
base = os.path.splitext (str (target[0]))[0]
- return (target + [base + '.enc', base + '.tex', base + 'list.ly'],
+ return (target + [base + '.lisp', base + '.enc', base + '.tex',
+ base + 'list.ly'],
source)
-a = 'cd ${TARGET.dir} && \
-MFINPUTS=.:${SOURCE.dir}:$srcdir/${SOURCE.dir}: \
+
+def add_cff_cffps_svg (target, source, env):
+ base = os.path.splitext (str (target[0]))[0]
+ return (target + [base + '.cff', base + '.cff.ps', base + '.svg'],
+ source)
+
+a = 'cd ${TARGET.dir} \
+&& MFINPUTS=.:${SOURCE.dir}:$srcdir/${SOURCE.dir}: \
mf "\\mode:=$MFMODE; nonstopmode; input ${SOURCE.filebase};" \
-| grep -v "@\|>>"'
+| grep -v "@\|>>\|w:\|h:";'
tfm = Builder (action = a, suffix = '.tfm', src_suffix = '.mf',
# emitter = lambda t, s, e: add_suffixes (t, s, e, ['.log'], []))
emitter = add_log_target)
@@ -193,14 +198,15 @@
a = '$PYTHON $MF_TO_TABLE_PY \
--outdir=${TARGET.dir} \
---afm=${TARGET.base}.afm \
+--global-lisp=${TARGET.base}.otf-gtable \
+--lisp=${TARGET.base}.lisp \
--enc=${TARGET.base}.enc \
--tex=${TARGET.base}.tex \
--ly=${TARGET.base}list.ly \
${TARGET.base}.log'
-afm = Builder (action = a, suffix = '.afm', src_suffix = '.log',
- emitter = add_enc_ly_tex_target)
-env.Append (BUILDERS = {'AFM': afm})
+gtable = Builder (action = a, suffix = '.otf-gtable', src_suffix = '.log',
+ emitter = add_lisp_enc_tex_ly_target)
+env.Append (BUILDERS = {'GTABLE': gtable})
def add_enc_src (target, source, env):
base = os.path.splitext (str (target[0]))[0]
@@ -211,7 +217,8 @@
a = 'cd ${TARGET.dir} && \
if test -e ${SOURCE.filebase}.enc; then
encoding="--encoding=${SOURCE.filebase}.enc"; fi; \
MFINPUTS=$srcdir/mf:.: \
-mftrace --formats=pfa --simplify --keep-trying $$encoding $TOO__verbose \
+mftrace --formats=pfa --simplify --keep-trying --no-afm --verbose \
+$$encoding $TOO__verbose \
--include=${TARGET.dir} \
${SOURCE.file}'
@@ -221,6 +228,16 @@
emitter = add_enc_src)
env.Append (BUILDERS = {'PFA': pfa})
+a = ['(cd ${TARGET.dir} && fontforge -script ${SOURCE.file})',
+ '$PYTHON $srcdir/buildscripts/ps-embed-cff.py ${SOURCE.filebase}.cff
$(${SOURCE.filebase}).fontname) ${SOURCE.filebase}.cff.ps',
+ 'rm -f ${TARGET.dir}/*.scale.pfa']
+otf = Builder (action = a,
+ suffix = '.otf',
+ src_suffix = '.pe',
+ emitter = add_cff_cffps_svg)
+env.Append (BUILDERS = {'OTF': otf})
+
+
# Specific builders
env['DIFF_PY'] = '$srcdir/stepmake/bin/package-diff.py'
Index: lilypond/buildscripts/gen-emmentaler-scripts.py
diff -u lilypond/buildscripts/gen-emmentaler-scripts.py:1.9
lilypond/buildscripts/gen-emmentaler-scripts.py:1.10
--- lilypond/buildscripts/gen-emmentaler-scripts.py:1.9 Wed Apr 6 09:59:51 2005
+++ lilypond/buildscripts/gen-emmentaler-scripts.py Sun Apr 17 21:16:31 2005
@@ -21,7 +21,7 @@
print o
raise getopt.error
-
+# Ugh
for design_size in [11,13,14,16,18,20,23,26]:
name = 'Emmentaler'
filename = name.lower ()
Index: lilypond/mf/GNUmakefile
diff -u lilypond/mf/GNUmakefile:1.155 lilypond/mf/GNUmakefile:1.156
--- lilypond/mf/GNUmakefile:1.155 Thu Apr 7 21:48:24 2005
+++ lilypond/mf/GNUmakefile Sun Apr 17 21:16:31 2005
@@ -197,10 +197,10 @@
$(outdir)/Fontmap.lily: GNUmakefile
for i in $(FETA_FONTS); do echo "/$$i ($$i.pfa);" ; done > $@
- for i in $(STAFF_SIZES); \
- do echo "/Emmentaler-$$i (emmentaler-$$i.cff.ps);" ; done \
- do echo "/PFAEmmentaler-$$i (PFAemmentaler-$$i.pfa);" ; done \
- >> $@
+ for i in $(STAFF_SIZES); do \
+ echo "/Emmentaler-$$i (emmentaler-$$i.cff.ps);" ; \
+ echo "/PFAEmmentaler-$$i (PFAemmentaler-$$i.pfa);" \
+ done >> $@
echo "/Aybabtu (aybabtu.cff.ps);" >> $@
echo "/PFAAybabtu (PFAaybabtu.pfa);" >> $@
Index: lilypond/mf/SConscript
diff -u lilypond/mf/SConscript:1.17 lilypond/mf/SConscript:1.18
--- lilypond/mf/SConscript:1.17 Sun Jul 18 10:42:44 2004
+++ lilypond/mf/SConscript Sun Apr 17 21:16:31 2005
@@ -7,10 +7,9 @@
feta = reduce (lambda x, y: x + y,
map (lambda x: base_glob (x),
('feta[0-9]*.mf',
- 'feta-braces-[a-z].mf',
- 'feta-din*[0-9].mf',
- 'feta-nummer*[0-9].mf',
- 'parmesan[0-9]*.mf',)))
+ 'feta-alphabet*[0-9].mf',
+ #'parmesan[0-9]*.mf',
+ )))
# .pfa rules want an encoding file; ecb10.enc
#sauter = ['ecb10']
@@ -19,13 +18,27 @@
env['feta'] = string.join (feta)
env['sauter'] = ''
+#BARF
+feta_sizes = ['11']
+otfs = map (lambda x: 'emmentaler-' + x, feta_sizes) + ['aybabtu']
+
t = map (env.TFM, fonts)
-a = map (env.AFM, feta)
+a = map (env.GTABLE, feta)
+# FIXME: don't know how to add prefix: PFAEmmentaler (naming is ugly anyway)
+#p = map (env.PFA, fonts + map (lambda x: 'PFA' + x, otfs))
p = map (env.PFA, fonts)
+##e = map (env.PE, otfs)
+o = map (env.OTF, otfs)
+
+env.Command ('emmentaler-11.pe',
+ '$srcdir/buildscripts/gen-emmentaler-scripts.py',
+ '$PYTHON $srcdir/buildscripts/gen-emmentaler-scripts.py
--dir=${TARGET.dir}')
map (lambda x: env.Depends (x + '.pfa', x + '.enc'), feta)
-mf_essential = ['feta16', 'feta20', 'parmesan16', ]
+## FIXME
+##mf_essential = ['feta16', 'feta20', 'parmesan16', ]
+mf_essential = ['feta16', 'feta20',] #'parmesan16', ]
pfa_essential = map (env.PFA, mf_essential)
env.Alias ('mf-essential', pfa_essential)
@@ -33,7 +46,13 @@
env.Alias ('mf', 'cmr.enc')
env.Command ('lilypond.map', p,
- ['for i in $feta; do echo $$i $$(fgrep FontName
${TARGET.dir}/$$i.afm | sed -e "s/FontName *//") "<"$$i.pfa; done > $TARGET',
+ ['for i in $feta; do echo $$i $$i "<"$$i.pfa; done > $TARGET',
+ 'for i in $feta_sizes; do\
+ echo "Emmentaler-$$i Emmentaler-$$i <emmentaler-$$i.cff.ps";\
+ echo "PFAEmmentaler-$$i PFAEmmentaler-$$i
<PFAemmentaler-$$i.pfa";\
+ done >> $TARGET',
+ 'echo "Aybabtu-Regular Aybabtu-Regular <aybabtu.cff.ps" >>
$TARGET',
+ 'echo "PFAAybabtu-Regular PFAAybabtu-Regular <aybabtu.cff.ps" >>
$TARGET',
'for i in $sauter; do echo "$$i $$i <$$i.pfa"; done >> $TARGET'])
env.Alias ('mf', 'lilypond.map')
@@ -52,13 +71,20 @@
env.Command ('Fontmap.lily', p + ['Fontmap'],
['echo "%!" > $TARGET',
- '''for i in $feta; do echo "/$$(fgrep FontName
${TARGET.dir}/$$i.afm | sed -e 's/FontName *//') ($$i.pfa);"; done >>
$TARGET''',
+ '''for i in $feta; do echo "/$$i ($$i.pfa);"; done >> $TARGET''',
+ ''' for i in $feta_sizes; do \
+ echo "/Emmentaler-$$i (emmentaler-$$i.cff.ps);" ; \
+ echo "/PFAEmmentaler-$$i (PFAemmentaler-$$i.pfa);" ; \
+ done >> $TARGET''',
+ '''echo "/Aybabtu (aybabtu.cff.ps);" >> $TARGET''',
+ '''echo "/PFAAybabtu (PFAaybabtu.pfa);" >> $TARGET''',
'''for i in $sauter; do echo "$$i ($$i.pfa);"; done >>
$TARGET'''])
env.Alias ('mf', 'Fontmap.lily')
# build essential stuff first, that's friendlier
-env.Alias ('mf', pfa_essential + p)
+env.Alias ('mf', pfa_essential + p + map (lambda x: x[0], o))
install (t, env['sharedir_package_version'] + '/fonts/tfm')
install (a, env['sharedir_package_version'] + '/afm')
install (p, env['sharedir_package_version'] + '/fonts/type1')
+install (o, env['sharedir_package_version'] + '/fonts/otf')
Index: lilypond/po/lilypond.pot
diff -u lilypond/po/lilypond.pot:1.68 lilypond/po/lilypond.pot:1.69
--- lilypond/po/lilypond.pot:1.68 Sun Apr 17 09:46:35 2005
+++ lilypond/po/lilypond.pot Sun Apr 17 21:16:31 2005
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-04-17 11:39+0200\n"
+"POT-Creation-Date: 2005-04-17 18:18+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <[EMAIL PROTECTED]>\n"
"Language-Team: LANGUAGE <[EMAIL PROTECTED]>\n"
@@ -626,6 +626,10 @@
#. FIXME: broken sentence
#. FIXME: broken sentence
+#. FIXME: broken sentence
+#. FIXME: broken sentence
+#. FIXME: broken sentence
+#. FIXME: broken sentence
#: all-font-metrics.cc:176 lily/all-font-metrics.cc:176
#, c-format
msgid "checksum mismatch for font file: `%s'"
@@ -746,6 +750,10 @@
#. FIXME: constant error message.
#. FIXME: constant error message.
+#. FIXME: constant error message.
+#. FIXME: constant error message.
+#. FIXME: constant error message.
+#. FIXME: constant error message.
#: change-iterator.cc:81 lily/change-iterator.cc:81
msgid "can't find context to switch to"
msgstr ""
@@ -760,6 +768,26 @@
#.
#. last->translator_id_string () = get_change
#. ()->change_to_id_string ();
+#. We could change the current translator's id, but that would make
+#. errors hard to catch.
+#.
+#. last->translator_id_string () = get_change
+#. ()->change_to_id_string ();
+#. We could change the current translator's id, but that would make
+#. errors hard to catch.
+#.
+#. last->translator_id_string () = get_change
+#. ()->change_to_id_string ();
+#. We could change the current translator's id, but that would make
+#. errors hard to catch.
+#.
+#. last->translator_id_string () = get_change
+#. ()->change_to_id_string ();
+#. We could change the current translator's id, but that would make
+#. errors hard to catch.
+#.
+#. last->translator_id_string () = get_change
+#. ()->change_to_id_string ();
#: change-iterator.cc:90 lily/change-iterator.cc:90
#, c-format
msgid "not changing to same context type: %s"
@@ -767,6 +795,10 @@
#. FIXME: uncomprehensable message
#. FIXME: uncomprehensable message
+#. FIXME: uncomprehensable message
+#. FIXME: uncomprehensable message
+#. FIXME: uncomprehensable message
+#. FIXME: uncomprehensable message
#: change-iterator.cc:94 lily/change-iterator.cc:94
msgid "none of these in my family"
msgstr ""
@@ -1142,6 +1174,14 @@
#. for --output-format.
#. Bug in option parser: --output =foe is taken as an abbreviation
#. for --output-format.
+#. Bug in option parser: --output =foe is taken as an abbreviation
+#. for --output-format.
+#. Bug in option parser: --output =foe is taken as an abbreviation
+#. for --output-format.
+#. Bug in option parser: --output =foe is taken as an abbreviation
+#. for --output-format.
+#. Bug in option parser: --output =foe is taken as an abbreviation
+#. for --output-format.
#: main.cc:139 lily/main.cc:139
msgid "FORMATs"
msgstr ""
@@ -1221,6 +1261,10 @@
#. No version number or newline here. It confuses help2man.
#. No version number or newline here. It confuses help2man.
+#. No version number or newline here. It confuses help2man.
+#. No version number or newline here. It confuses help2man.
+#. No version number or newline here. It confuses help2man.
+#. No version number or newline here. It confuses help2man.
#: main.cc:203 lily/main.cc:203
#, c-format
msgid "Usage: %s [OPTION]... FILE..."
@@ -1288,6 +1332,10 @@
#. FIXME: constant error message.
#. FIXME: constant error message.
+#. FIXME: constant error message.
+#. FIXME: constant error message.
+#. FIXME: constant error message.
+#. FIXME: constant error message.
#: mark-engraver.cc:123 lily/mark-engraver.cc:123
msgid "rehearsalMark must have integer value"
msgstr ""
@@ -1390,6 +1438,18 @@
#.
#. music for the softenon children?
#.
+#.
+#. music for the softenon children?
+#.
+#.
+#. music for the softenon children?
+#.
+#.
+#. music for the softenon children?
+#.
+#.
+#. music for the softenon children?
+#.
#: new-fingering-engraver.cc:158 lily/new-fingering-engraver.cc:158
msgid "music for the martians."
msgstr ""
@@ -1626,6 +1686,10 @@
#. FIXME:
#. FIXME:
+#. FIXME:
+#. FIXME:
+#. FIXME:
+#. FIXME:
#: script-engraver.cc:100 lily/script-engraver.cc:100
msgid "don't know how to interpret articulation: "
msgstr ""
@@ -1636,6 +1700,10 @@
#. this shouldn't happen, but let's continue anyway.
#. this shouldn't happen, but let's continue anyway.
+#. this shouldn't happen, but let's continue anyway.
+#. this shouldn't happen, but let's continue anyway.
+#. this shouldn't happen, but let's continue anyway.
+#. this shouldn't happen, but let's continue anyway.
#: separation-item.cc:52 separation-item.cc:96 lily/separation-item.cc:52
#: lily/separation-item.cc:96
msgid "Separation_item: I've been drinking too much"
@@ -1675,6 +1743,10 @@
#. FIXME:
#. FIXME:
+#. FIXME:
+#. FIXME:
+#. FIXME:
+#. FIXME:
#: stem-engraver.cc:125 lily/stem-engraver.cc:125
#, c-format
msgid "adding note head to incompatible stem (type = %d)"
@@ -1728,6 +1800,14 @@
#. more of a programming error.
#. Not using ngettext's plural feature here, as this message is
#. more of a programming error.
+#. Not using ngettext's plural feature here, as this message is
+#. more of a programming error.
+#. Not using ngettext's plural feature here, as this message is
+#. more of a programming error.
+#. Not using ngettext's plural feature here, as this message is
+#. more of a programming error.
+#. Not using ngettext's plural feature here, as this message is
+#. more of a programming error.
#: tfm-reader.cc:106 lily/tfm-reader.cc:106
#, c-format
msgid "TFM header of `%s' has only %u word (s)"
@@ -1761,6 +1841,26 @@
#.
#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
#.
+#.
+#. Todo: should make typecheck?
+#.
+#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
+#.
+#.
+#. Todo: should make typecheck?
+#.
+#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
+#.
+#.
+#. Todo: should make typecheck?
+#.
+#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
+#.
+#.
+#. Todo: should make typecheck?
+#.
+#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
+#.
#: time-signature-engraver.cc:54 lily/time-signature-engraver.cc:54
#, c-format
msgid "strange time signature found: %d/%d"
@@ -1770,6 +1870,14 @@
#. (Here really with a warning!)
#. If there is no such symbol, we default to the numbered style.
#. (Here really with a warning!)
+#. If there is no such symbol, we default to the numbered style.
+#. (Here really with a warning!)
+#. If there is no such symbol, we default to the numbered style.
+#. (Here really with a warning!)
+#. If there is no such symbol, we default to the numbered style.
+#. (Here really with a warning!)
+#. If there is no such symbol, we default to the numbered style.
+#. (Here really with a warning!)
#: time-signature.cc:83 lily/time-signature.cc:83
#, c-format
msgid "time signature symbol `%s' not found; reverting to numbered style"
@@ -1822,6 +1930,10 @@
#. fixme: be more verbose.
#. fixme: be more verbose.
+#. fixme: be more verbose.
+#. fixme: be more verbose.
+#. fixme: be more verbose.
+#. fixme: be more verbose.
#: volta-engraver.cc:127 lily/volta-engraver.cc:127
msgid "can't end volta spanner"
msgstr ""
_______________________________________________
Lilypond-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/lilypond-cvs