From: Bertrand Bordage Date: Mon, 15 Aug 2011 23:17:51 +0000 (+0200) Subject: New short lyric tie. X-Git-Tag: release/2.15.12-1~11 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=2fff263f10fd542454455994aea5ff3bbe075c7d;p=lilypond.git New short lyric tie. This handles a special case met at least in Italian. The default tie has also been redesigned. --- diff --git a/Documentation/de/notation/vocal.itely b/Documentation/de/notation/vocal.itely index 8315c4a2e0..e7b594a56a 100644 --- a/Documentation/de/notation/vocal.itely +++ b/Documentation/de/notation/vocal.itely @@ -629,11 +629,11 @@ gesetzt werden. @lilypond[quote,ragged-right,verbatim] { - \time 3/4 - \relative c' { c2 e4 g2 e4 } - \addlyrics { gran -- de_a -- mi -- go } - \addlyrics { pu -- "ro y ho" -- nes -- to } - \addlyrics { pu -- ro~y~ho -- nes -- to } + \relative c'' { \autoBeamOff + r8 b c fis, fis c' b e, } + \addlyrics { Che_in ques -- ta_e_in quel -- l'al -- tr'on -- da } + \addlyrics { "Che in" ques -- "ta e in" quel -- l'al -- tr'on -- da } + \addlyrics { Che~in ques -- ta~e~in quel -- l'al -- tr'on -- da } } @end lilypond diff --git a/Documentation/es/notation/vocal.itely b/Documentation/es/notation/vocal.itely index f3af14dcb0..24da8faa27 100644 --- a/Documentation/es/notation/vocal.itely +++ b/Documentation/es/notation/vocal.itely @@ -644,11 +644,11 @@ texto. @lilypond[quote,ragged-right,verbatim] { - \time 3/4 - \relative c' { c2 e4 g2 e4 } - \addlyrics { gran -- de_a -- mi -- go } - \addlyrics { pu -- "ro y ho" -- nes -- to } - \addlyrics { pu -- ro~y~ho -- nes -- to } + \relative c'' { \autoBeamOff + r8 b c fis, fis c' b e, } + \addlyrics { Che_in ques -- ta_e_in quel -- l'al -- tr'on -- da } + \addlyrics { "Che in" ques -- "ta e in" quel -- l'al -- tr'on -- da } + \addlyrics { Che~in ques -- ta~e~in quel -- l'al -- tr'on -- da } } @end lilypond diff --git a/Documentation/fr/notation/vocal.itely b/Documentation/fr/notation/vocal.itely index 4aa8fab278..2b5b4351f7 100644 --- a/Documentation/fr/notation/vocal.itely +++ b/Documentation/fr/notation/vocal.itely @@ -615,11 +615,11 @@ mettre entre guillemets, soit utiliser le caractère souligné @lilypond[quote,ragged-right,verbatim] { - \time 3/4 - \relative c' { c2 e4 g2 e4 } - \addlyrics { gran -- de_a -- mi -- go } - \addlyrics { pu -- "ro y ho" -- nes -- to } - \addlyrics { pu -- ro~y~ho -- nes -- to } + \relative c'' { \autoBeamOff + r8 b c fis, fis c' b e, } + \addlyrics { Che_in ques -- ta_e_in quel -- l'al -- tr'on -- da } + \addlyrics { "Che in" ques -- "ta e in" quel -- l'al -- tr'on -- da } + \addlyrics { Che~in ques -- ta~e~in quel -- l'al -- tr'on -- da } } @end lilypond diff --git a/Documentation/notation/vocal.itely b/Documentation/notation/vocal.itely index a04a8e6ede..70f7c92986 100644 --- a/Documentation/notation/vocal.itely +++ b/Documentation/notation/vocal.itely @@ -613,11 +613,11 @@ the tilde symbol (@code{~}) to get a lyric tie. @lilypond[quote,ragged-right,verbatim] { - \time 3/4 - \relative c' { c2 e4 g2 e4 } - \addlyrics { gran -- de_a -- mi -- go } - \addlyrics { pu -- "ro y ho" -- nes -- to } - \addlyrics { pu -- ro~y~ho -- nes -- to } + \relative c'' { \autoBeamOff + r8 b c fis, fis c' b e, } + \addlyrics { Che_in ques -- ta_e_in quel -- l'al -- tr'on -- da } + \addlyrics { "Che in" ques -- "ta e in" quel -- l'al -- tr'on -- da } + \addlyrics { Che~in ques -- ta~e~in quel -- l'al -- tr'on -- da } } @end lilypond diff --git a/mf/feta-ties.mf b/mf/feta-ties.mf index 4378d576d8..fc0ccb14a4 100644 --- a/mf/feta-ties.mf +++ b/mf/feta-ties.mf @@ -18,21 +18,37 @@ fet_begingroup ("ties"); -fet_beginchar ("lyric tie", "lyric"); - save padding; +save min_width, max_width, min_height, max_height, thin, thick; - padding := .4 staff_space; +min_width:= .5 staff_space#; +max_width:= 5 staff_space#; +min_height := .2 staff_space#; +max_height := .4 staff_space#; +thin := 1.2 linethickness; +thick := 2 linethickness; + +def draw_lyric_tie (expr width_sharp) = + save padding, angularity, width, height, depth; + + padding# := .4 staff_space#; + angularity := 2.5; + width# := max (min (width_sharp, max_width), min_width); + height# := (max (width# - min_width, 0) / (max_width - min_width)) + [min_height, max_height]; + depth# := padding# + height#; set_char_box (0, 0, - .7 staff_space#, 0); + depth#, 0); + + define_pixels (width, padding); - z1 = (-staff_space, -padding); + z1 = (-width / 2, -padding); z2 = (0, -d); - z3 = (staff_space, -padding); + z3 = (width / 2, -padding); - penpos1 (1.2 linethickness, 50); - penpos2 (2 linethickness, 90); - penpos3 (1.2 linethickness, 130); + penpos1 (thin, angularity * angle (z2 - z1) + 90); + penpos2 (thick, 90); + penpos3 (thin, angularity * angle (z3 - z2) + 90); fill z2l .. simple_serif (z3l, z3r, 90) @@ -41,6 +57,14 @@ fet_beginchar ("lyric tie", "lyric"); .. cycle; penlabels (1, 2, 3); +enddef; + +fet_beginchar ("Short lyric tie", "lyric.short"); + draw_lyric_tie (1.25 staff_space#); +fet_endchar; + +fet_beginchar ("Default lyric tie", "lyric.default"); + draw_lyric_tie (1.75 staff_space#); fet_endchar; fet_endgroup ("ties"); diff --git a/scm/define-markup-commands.scm b/scm/define-markup-commands.scm index 18728e57d9..88a9e9c7aa 100644 --- a/scm/define-markup-commands.scm +++ b/scm/define-markup-commands.scm @@ -937,25 +937,45 @@ the use of @code{\\simple} is unnecessary. Like simple-markup, but use tie characters for @q{~} tilde symbols. @lilypond[verbatim,quote] -\\markup { - \\tied-lyric #\"Lasciate~i monti\" -} -@end lilypond" - (if (string-contains str "~") - (let* - ((half-space (/ word-space 2)) - (parts (string-split str #\~)) - (tie-str (markup #:hspace half-space - #:musicglyph "ties.lyric" - #:hspace half-space)) - (joined (list-join parts tie-str)) - (join-stencil (interpret-markup layout props tie-str)) - ) +\\markup \\column { + \\tied-lyric #\"Siam navi~all'onde~algenti Lasciate~in abbandono\" + \\tied-lyric #\"Impetuosi venti I nostri~affetti sono\" + \\tied-lyric #\"Ogni diletto~e scoglio Tutta la vita~e~un mar.\" +} +@end lilypond" + (define (replace-ties tie str) + (if (string-contains str "~") + (let* + ((half-space (/ word-space 2)) + (parts (string-split str #\~)) + (tie-str (markup #:hspace half-space + #:musicglyph tie + #:hspace half-space)) + (joined (list-join parts tie-str))) + (make-concat-markup joined)) + str)) + + (define short-tie-regexp (make-regexp "~[^.]~")) + (define (match-short str) (regexp-exec short-tie-regexp str)) + + (define (replace-short str mkp) + (let ((match (match-short str))) + (if (not match) + (make-concat-markup (list + mkp + (replace-ties "ties.lyric.default" str))) + (let ((new-str (match:suffix match)) + (new-mkp (make-concat-markup (list + mkp + (replace-ties "ties.lyric.default" + (match:prefix match)) + (replace-ties "ties.lyric.short" + (match:substring match)))))) + (replace-short new-str new-mkp))))) - (interpret-markup layout - props - (make-concat-markup joined))) - (interpret-markup layout props str))) + (interpret-markup layout + props + (replace-short str (markup)))) (define-public empty-markup (make-simple-markup ""))