From a894c79e7ef86a2355638a0def3ad9fb7aeb8e0c Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sun, 28 Oct 2001 17:00:07 +0100 Subject: [PATCH] release: 1.5.20 =========== * Sketch output: - Sketch uses feta font. - Fix to linewidth and feta fontsize. - mf-to-table: write dummy values in afm to make sketch happy. - Fixes to glyphs: rectangles beziers work now. - Bugfix: sketch.scm: use primitive-eval. * Sketch and feta Type1 fonts: - textrace: wget http://www.inf.bme.hu/~pts/textrace-latest.tar.gz tar xzf textrace-latest.tar.gz @@ -15,18 +17,23 @@ (cd autotrace-0.27ap; ./configure; make) ./traceall.sh feta20 feta20.pfb $HOME/usr/src/lilypond/mf/out - copy mf/out/feta20.* to sketch/Resources/Fontmetrics - append to sketch/Resources/Fontmetrics/std.sfd: echo 'TeX-feta20,feta20,Roman,-gnu-feta20-medium-r-normal,adobe-fontspec\ific,feta20' > $HOME/usr/src/sketch/sketch/Resources/Fontmetrics/std.sfd - Hmm, then find that + Sketch accesses characters by name, ie, the name characters have in default text fonts. Luckily, textrace mangles the feta names too. Sadly, textrace chooses different names for characters > 128. + Textrace mangles font name by prepending `TeX-'. Doesn't seem to pose a big problem; we'll have to pefix `TeX-' to feta fonts. + Sadly, only the sketch-0.7.x is happy with the feta type1 font, but printing is not yet implemented? * Remove modules directory (again?). 1.5.18.m --- CHANGES | 40 ++++++++++------- VERSION | 4 +- input/regression/lyric-align.ly | 73 +++++++++++++++++++++++++++++++ lily/syllable-group.cc | 21 ++++++--- ly/script-init.ly | 13 ++---- make/out/lilypond.lsm | 8 ++-- make/out/lilypond.mandrake.spec | 2 +- make/out/lilypond.redhat.spec | 4 +- make/out/lilypond.suse.spec | 4 +- mf/feta-schrift.mf | 36 +++++++++++++++ modules/GNUmakefile | 0 scm/grob-description.scm | 4 +- scm/grob-property-description.scm | 5 ++- scm/interface-description.scm | 3 ++ scm/sketch.scm | 5 ++- 15 files changed, 178 insertions(+), 44 deletions(-) create mode 100644 input/regression/lyric-align.ly delete mode 100644 modules/GNUmakefile diff --git a/CHANGES b/CHANGES index 24ccbb7f72..1ef6a0d758 100644 --- a/CHANGES +++ b/CHANGES @@ -5,26 +5,26 @@ - Sketch uses feta font. - Fix to linewidth and feta fontsize. - - mf-to-table: write dummy values in afm to make sketch happy. + - mf-to-table: write dummy values in afm to make sketch happy. - Fixes to glyphs: rectangles beziers work now. - - Bugfix: sketch.scm: use primitive-eval. + - Bugfix: sketch.scm: use primitive-eval. * Sketch and feta Type1 fonts: - - textrace: - wget http://www.inf.bme.hu/~pts/textrace-latest.tar.gz - tar xzf textrace-latest.tar.gz - cd textrace-0.47 - (cd autotrace-0.27ap; ./configure; make) - ./traceall.sh feta20 feta20.pfb $HOME/usr/src/lilypond/mf/out + - textrace: + wget http://www.inf.bme.hu/~pts/textrace-latest.tar.gz + tar xzf textrace-latest.tar.gz +@@ -15,18 +17,23 @@ + (cd autotrace-0.27ap; ./configure; make) + ./traceall.sh feta20 feta20.pfb $HOME/usr/src/lilypond/mf/out - copy mf/out/feta20.* to sketch/Resources/Fontmetrics - - append to sketch/Resources/Fontmetrics/std.sfd: - echo 'TeX-feta20,feta20,Roman,-gnu-feta20-medium-r-normal,adobe-fontspecific,feta20' > $HOME/usr/src/sketch/sketch/Resources/Fontmetrics/std.sfd + - append to sketch/Resources/Fontmetrics/std.sfd: + echo 'TeX-feta20,feta20,Roman,-gnu-feta20-medium-r-normal,adobe-fontspec\ific,feta20' > $HOME/usr/src/sketch/sketch/Resources/Fontmetrics/std.sfd - - Hmm, then find that + - Hmm, then find that - + Sketch accesses characters by name, ie, the + + Sketch accesses characters by name, ie, the name characters have in default text fonts. Luckily, textrace mangles the feta names too. Sadly, textrace chooses different names for characters > 128. @@ -35,10 +35,20 @@ + Sadly, only the sketch-0.7.x is happy with the feta type1 font, but printing is not yet implemented? -* Remove modules directory (again?). + * Remove modules directory (again?). -1.5.19 -====== + +1.5.18.moh1 +=========== + +* Further work on more flexible control of lyric alignment. + - new properties "alignment", "ignore-length-mismatch", "begin-alignment" a\nd "end-alignment" to control non-centered lyric alignment + + +1.5.19.hjj1 +=========== + +* Added \portato. 1.5.18.jcn1 =========== diff --git a/VERSION b/VERSION index 74a4795817..9a676c90ea 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=5 -PATCH_LEVEL=19 -MY_PATCH_LEVEL=jcn3 +PATCH_LEVEL=20 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/input/regression/lyric-align.ly b/input/regression/lyric-align.ly new file mode 100644 index 0000000000..a660e4ce7e --- /dev/null +++ b/input/regression/lyric-align.ly @@ -0,0 +1,73 @@ +\version "1.3.146" +\header{ + texidoc="Lyric alignment + + Lyric alignment is adjustable both interms of alignment between stanzas and on notehead. + + If the property alignment is not set, there is automatic determination of alignment type based on punctuation. (ee lyric-phrasing.ly) + +" +} + +%\paper { linewidth = -1. } +\score { + \addlyrics + \context Voice = "v" \notes \relative c'' { + \property Staff.automaticMelismata = ##t + \cadenzaOn + a\breve \bar "||" a1 \bar "|" a \bar "|" a \bar "||" \break a \bar "|" a \bar "|" a \bar "|" a \bar "||" \break a \bar "|" a \bar "|." + } + \context Lyrics < + \context LyricsVoice = "v-1" \lyrics { +% \property LyricsVoice . stanza = "1:" + \property Lyrics . LyricText \override #'ignore-length-mismatch = ##t + \property Lyrics . LyricText \override #'alignment = #-1 + \property Lyrics . LyricText \override #'begin-alignment = #8 + + "Particularly useful for reciting notes " + left + + \property Lyrics . LyricText \override #'alignment = #0 + + centered + + \property Lyrics . LyricText \override #'alignment = #1 + + right + + \property Lyrics . LyricText \override #'alignment = #-1 + \property Lyrics . LyricText \override #'begin-alignment = #2 + + left_half_way + + \property Lyrics . LyricText \override #'begin-alignment = #4 + + left_one_quarter + + \property Lyrics . LyricText \override #'begin-alignment = #10 + + left_one_tenth + + \property Lyrics . LyricText \override #'begin-alignment = #1 + + left_one_whole + + \property Lyrics . LyricText \override #'ignore-length-mismatch = ##f + \property Lyrics . LyricText \override #'begin-alignment = #4 + + Very_short_lyrics_remain_in_touch_with_their_note + + \property Lyrics . LyricText \override #'alignment = #1 + \property Lyrics . LyricText \override #'end-alignment = #1.1 + \property Lyrics . LyricText \override #'ignore-length-mismatch = ##t + + + Unless_ignore-length-mismatch_is_true + + } + \context LyricsVoice = "v-2" \lyrics { +% \property LyricsVoice . stanza = "2:" + " with many syllables under them." l c r l l l x x x note' true' + } + > +} diff --git a/lily/syllable-group.cc b/lily/syllable-group.cc index 84a3f7fa48..65aa936a37 100644 --- a/lily/syllable-group.cc +++ b/lily/syllable-group.cc @@ -131,7 +131,7 @@ Syllable_group::set_lyric_align (const char *punc, Grob *default_notehead_l) /** determine the distance to translate lyrics to get correct alignment Rules: If alignment is centre, translate = 0 Otherwise, - If (length of longest lyric) < property("end-alignment") * (length of shortest lyric), + If (length of longest lyric) < (property {begin,end}-alignment) * (length of shortest lyric), - centre longest lyric on notehead Otherwise - move so shortest lyric just reaches notehead centre @@ -141,11 +141,20 @@ Syllable_group::amount_to_translate () { Real translate = 0.0; if (alignment_i_ != CENTER) { - // FIXME: do we really know the lyric extent here? Some font sizing comes later? - Real l1 = longest_lyric_l_->extent (longest_lyric_l_, X_AXIS).length () / gh_scm2double (longest_lyric_l_->get_grob_property("end-alignment")); - Real l2 = shortest_lyric_l_->extent (shortest_lyric_l_, X_AXIS).length (); - - translate = l1 extent (longest_lyric_l_, X_AXIS).length () / gh_scm2double (longest_lyric_l_->get_grob_property("begin-alignment")); + break; + case RIGHT: + translate = longest_lyric_l_->extent (longest_lyric_l_, X_AXIS).length () / gh_scm2double (longest_lyric_l_->get_grob_property("end-alignment")); + break; + } + if (!gh_scm2bool(longest_lyric_l_->get_grob_property("ignore-length-mismatch"))) { + Real l = shortest_lyric_l_->extent (shortest_lyric_l_, X_AXIS).length (); + translate = l +% * portato = tenuto & staccato +% * if you use portato = slur & staccato, then apply "c( d )e-." +portato = \script "portato" fermata = \script "fermata" stopped = \script "stopped" staccato = \script "staccato" diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index f81ccc5f15..5125d402ad 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.5.19 -Entered-date: 23OKT01 +Version: 1.5.20 +Entered-date: 29OKT01 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.19.tar.gz + 1000k lilypond-1.5.20.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.5.19.tar.gz + 1000k lilypond-1.5.20.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.mandrake.spec b/make/out/lilypond.mandrake.spec index 225ce98450..753566a11e 100644 --- a/make/out/lilypond.mandrake.spec +++ b/make/out/lilypond.mandrake.spec @@ -1,5 +1,5 @@ %define name lilypond -%define version 1.5.19 +%define version 1.5.20 %define release 1mdk Name: %{name} diff --git a/make/out/lilypond.redhat.spec b/make/out/lilypond.redhat.spec index 96197d0358..baf0a5dabf 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.19 +Version: 1.5.20 Release: 1 License: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.19.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.20.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 5dd26d69b5..3173831f5e 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.19 +Version: 1.5.20 Release: 2 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.19.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.20.tar.gz # music notation software for.. ? Summary: A program for printing sheet music. URL: http://www.lilypond.org/ diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf index b0481341a7..b9bc92b634 100644 --- a/mf/feta-schrift.mf +++ b/mf/feta-schrift.mf @@ -177,6 +177,42 @@ fet_beginchar("portato/single tenuto", "tenuto", "tenuto") fet_endchar; +% +% Portato by Heikki Junes +% + +def draw_portato = + save thick, radius; + thick# = 1.4 stafflinethickness#; + define_pixels(thick); + radius# = 1.4 stafflinethickness#; + define_pixels(radius); + + set_char_box(.6 staff_space#, .6 staff_space#, thick#/2,.5 staff_space#+ radius#); + pickup pencircle scaled thick; + lft x1 = -b; + rt x2 = w; + y1 = y2 = 0; + draw z1 .. z2; + + pickup pencircle scaled 2 radius; + draw (0,h); +enddef; + + +fet_beginchar("portato/tenuto with staccato", "uportato", + "uportato") + draw_portato; +fet_endchar; + + +fet_beginchar("portato/tenuto with staccato", "dportato", + "dportato") + draw_portato; + y_mirror_char +fet_endchar; + + def draw_marcato = save fat_factor, thinness; set_char_box(staff_space#/2, staff_space#/2, 0, 1.1 staff_space#); diff --git a/modules/GNUmakefile b/modules/GNUmakefile deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/scm/grob-description.scm b/scm/grob-description.scm index c47c7c9d82..51b78e8f12 100644 --- a/scm/grob-description.scm +++ b/scm/grob-description.scm @@ -317,7 +317,9 @@ (self-alignment-X . 0) (non-rhythmic . #t) (word-space . 0.6) - (end-alignment . 5) + (ignore-length-mismatch . #f) + (begin-alignment . 4) + (end-alignment . 2) (font-family . roman) (font-shape . upright) (meta . ,(grob-description lyric-syllable-interface text-interface font-interface )) diff --git a/scm/grob-property-description.scm b/scm/grob-property-description.scm index 1546486b5e..d16013e6c3 100644 --- a/scm/grob-property-description.scm +++ b/scm/grob-property-description.scm @@ -382,7 +382,10 @@ function of type (beam multiplicity dy staff-line-thickness) -> real. Default v (grob-property-description 'visibility-lambda procedure? "a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).") (grob-property-description 'when moment? "when does this column happen?.") (grob-property-description 'word-space number? "elongate left by this much (FIXME: cumbersome semantics).") -(grob-property-description 'end-alignment number? "proportion of lyric length to align with note-head for non-centered lyrics.") +(grob-property-description 'alignment number? "alignment of lyrics on notehead, -1 is LEFT, 0 is CENTRE, 1 is RIGHT .") +(grob-property-description 'ignore-length-mismatch boolean? "if #t, stanzas with shorter lyrics can be moved away from their respective note-head by the lyric alignment code.") +(grob-property-description 'begin-alignment number? "proportion of lyric length from beginning to align with note-head for left-aligned lyrics.") +(grob-property-description 'end-alignment number? "proportion of lyric length from end to align with note-head for right-aligned lyrics.") (grob-property-description 'x-gap number? "horizontal gap between notehead and tie.") (grob-property-description 'y-free number? "minimal vertical gap between slur and noteheads or stems.") (grob-property-description 'y-offset number? "extra vertical offset for ties away from the center line.") diff --git a/scm/interface-description.scm b/scm/interface-description.scm index 8f64d30c3a..42129c4b39 100644 --- a/scm/interface-description.scm +++ b/scm/interface-description.scm @@ -535,6 +535,9 @@ that helps show the length of a melissima (tied/slurred note)." "a single piece of lyrics" '( word-space + alignment + ignore-length-mismatch + begin-alignment end-alignment )) diff --git a/scm/sketch.scm b/scm/sketch.scm index 5e1f893dfc..58fe938749 100644 --- a/scm/sketch.scm +++ b/scm/sketch.scm @@ -1,5 +1,6 @@ + (use-modules (ice-9 format)) (define (ascii->string i) (make-string 1 (integer->char i))) @@ -313,4 +314,6 @@ layer('Layer 1',1,1,0,0,(0,0,0)) ((eq? action-name 'volta) volta) (else (error "unknown tag -- SKETCH-SCM " action-name)) ) - ) \ No newline at end of file + ) + + -- 2.39.2