CVSROOT: /cvsroot/lilypond Module name: lilypond Branch: Changes by: Jürgen Reuter <[EMAIL PROTECTED]> 05/04/27 23:45:43
Modified files: . : ChangeLog Documentation/user: instrument-notation.itely lily : mensural-ligature.cc vaticana-ligature-engraver.cc lily/include : mensural-ligature.hh mf : parmesan-heads.mf Log message: * lily/vaticana-ligature-engraver.cc (need_extra_space): renamed to need_extra_horizontal_space; bugfix: use class scope to avoid global namespace pollution * Documentation/user/instrument-notation.itely (ligatures): added comment on possible future syntax change and how to work around * lily/vaticana-ligature-engraver.cc, mf/parmesan-heads.mf (epiphonus, cephalicus): fine-tune shape of plica head for narrow intervals (fixes agnus dei example) * lily/include/mensural-ligature.hh: make comments clearer * lily/mensural-ligature.cc: line thickness of flexa shape (originally by Pal Benko; slightly modified) * Documentation/user/instrument-notation.itely (white mensural ligatures): selected a more illustrative example CVSWeb URLs: http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.3512&tr2=1.3513&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/Documentation/user/instrument-notation.itely.diff?tr1=1.20&tr2=1.21&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/mensural-ligature.cc.diff?tr1=1.41&tr2=1.42&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/vaticana-ligature-engraver.cc.diff?tr1=1.38&tr2=1.39&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/mensural-ligature.hh.diff?tr1=1.7&tr2=1.8&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/mf/parmesan-heads.mf.diff?tr1=1.37&tr2=1.38&r1=text&r2=text Patches: Index: lilypond/ChangeLog diff -u lilypond/ChangeLog:1.3512 lilypond/ChangeLog:1.3513 --- lilypond/ChangeLog:1.3512 Wed Apr 27 22:31:07 2005 +++ lilypond/ChangeLog Wed Apr 27 23:45:42 2005 @@ -1,3 +1,24 @@ +2005-04-28 Jürgen Reuter <[EMAIL PROTECTED]> + + * lily/vaticana-ligature-engraver.cc (need_extra_space): renamed + to need_extra_horizontal_space; bugfix: use class scope to avoid + global namespace pollution + + * Documentation/user/instrument-notation.itely (ligatures): added + comment on possible future syntax change and how to work around + + * lily/vaticana-ligature-engraver.cc, mf/parmesan-heads.mf + (epiphonus, cephalicus): fine-tune shape of plica head for narrow + intervals (fixes agnus dei example) + + * lily/include/mensural-ligature.hh: make comments clearer + + * lily/mensural-ligature.cc: line thickness of flexa shape + (originally by Pal Benko; slightly modified) + + * Documentation/user/instrument-notation.itely (white mensural + ligatures): selected a more illustrative example + 2005-04-28 Heikki Junes <[EMAIL PROTECTED]> * Documentation/index.html.in: specify utf-8 charset in meta content. Index: lilypond/Documentation/user/instrument-notation.itely diff -u lilypond/Documentation/user/instrument-notation.itely:1.20 lilypond/Documentation/user/instrument-notation.itely:1.21 --- lilypond/Documentation/user/instrument-notation.itely:1.20 Tue Apr 26 08:59:28 2005 +++ lilypond/Documentation/user/instrument-notation.itely Wed Apr 27 23:45:42 2005 @@ -2682,6 +2682,15 @@ Augmentum dots within ligatures are not handled correctly. +The syntax still uses the deprecated infix style @code{\[ music expr +\]}. For consistency reasons, it will eventually be changed to +postfix style @code{note\[ ... note\]}. Alternatively, the file [EMAIL PROTECTED]@/-init@/.ly} can be included; it provides a scheme +function [EMAIL PROTECTED] +\ligature @var{music expr} [EMAIL PROTECTED] example +with the same effect and is believed to be stable. @menu * White mensural ligatures:: @@ -2727,9 +2736,13 @@ \override NoteHead #'style = #'neomensural \override Staff.TimeSignature #'style = #'neomensural \clef "petrucci-g" -\[ g\longa c\breve a\breve f\breve d'\longa \] +\[ c'\maxima g \] +s4 +\[ d\longa c\breve f e d \] +s4 +\[ c'\maxima d'\longa \] s4 -\[ e1 f1 a\breve g\longa \] +\[ e'1 a g\breve \] @end example @lilypond[quote,raggedright] \score { @@ -2739,9 +2752,13 @@ \override NoteHead #'style = #'neomensural \override Staff.TimeSignature #'style = #'neomensural \clef "petrucci-g" - \[ g\longa c\breve a\breve f\breve d'\longa \] + \[ c'\maxima g \] s4 - \[ e1 f1 a\breve g\longa \] + \[ d\longa c\breve f e d \] + s4 + \[ c'\maxima d'\longa \] + s4 + \[ e'1 a g\breve \] } \layout { \context { @@ -2764,16 +2781,20 @@ \override NoteHead #'style = #'neomensural \override Staff.TimeSignature #'style = #'neomensural \clef "petrucci-g" - \[ g\longa c\breve a\breve f\breve d'\longa \] + \[ c'\maxima g \] + s4 + \[ d\longa c\breve f e d \] + s4 + \[ c'\maxima d'\longa \] s4 - \[ e1 f1 a\breve g\longa \] + \[ e'1 a g\breve \] } @end lilypond @refbugs -The implementation is experimental. It may output strange warnings, -incorrect results, and might even crash on more complex ligatures. +The invisible rests (@code{s4}) in the example are used to compensate +for the poor horizontal spacing. @node Gregorian square neumes ligatures @subsubsection Gregorian square neumes ligatures Index: lilypond/lily/include/mensural-ligature.hh diff -u lilypond/lily/include/mensural-ligature.hh:1.7 lilypond/lily/include/mensural-ligature.hh:1.8 --- lilypond/lily/include/mensural-ligature.hh:1.7 Thu Mar 10 14:36:12 2005 +++ lilypond/lily/include/mensural-ligature.hh Wed Apr 27 23:45:43 2005 @@ -16,14 +16,13 @@ /* * These are all possible mensural ligature primitives. */ - -#define MLP_NONE 0x00 // no output -#define MLP_UP 0x01 // ligatura ascendens -#define MLP_DOWN 0x02 // ligatura descendens -#define MLP_BREVIS 0x04 // mensural brevis head -#define MLP_LONGA 0x08 // mensural brevis head with right cauda -#define MLP_MAXIMA 0x10 // mensural maxima head without stem -#define MLP_FLEXA 0x20 +#define MLP_NONE 0x00 // no output +#define MLP_UP 0x01 // upward left stem +#define MLP_DOWN 0x02 // downward left stem +#define MLP_BREVIS 0x04 // mensural brevis head +#define MLP_LONGA 0x08 // mensural brevis head with right cauda +#define MLP_MAXIMA 0x10 // mensural maxima head without stem +#define MLP_FLEXA 0x20 // mensural flexa-like shape #define MLP_STEM (MLP_UP | MLP_DOWN) #define MLP_SINGLE_HEAD (MLP_BREVIS | MLP_LONGA | MLP_MAXIMA) Index: lilypond/lily/mensural-ligature.cc diff -u lilypond/lily/mensural-ligature.cc:1.41 lilypond/lily/mensural-ligature.cc:1.42 --- lilypond/lily/mensural-ligature.cc:1.41 Wed Mar 16 19:19:15 2005 +++ lilypond/lily/mensural-ligature.cc Wed Apr 27 23:45:42 2005 @@ -28,12 +28,9 @@ Real interval, bool solid, Real width, - Real thickness) + Real vertical_line_thickness) { Real staff_space = Staff_symbol_referencer::staff_space (me); - Real height = 0.6 * staff_space; - Stencil stencil; - Real slope = (interval / 2.0 * staff_space) / width; // Compensate optical illusion regarding vertical position of left @@ -42,31 +39,48 @@ Real slope_correction = 0.2 * staff_space * sign (slope); Real corrected_slope = slope + slope_correction / width; - if (solid) // this will come handy for colorated flexae + Stencil stencil; + if (solid) // colorated flexae { Stencil solid_head - = Lookup::beam (corrected_slope, width, height, 0.0); + = Lookup::beam (corrected_slope, width, staff_space, 0.0); stencil.add_stencil (solid_head); } else // outline { + /* + The thickness of the horizontal lines of the flexa shape + should be equal to that of the horizontal lines of the + neomensural brevis note head (see mf/parmesan-heads.mf). + */ + Real const horizontal_line_thickness = staff_space * 0.35; + + // URGH! vertical_line_thickness is adjustable (via thickness + // property), while horizontal_line_thickness is constant. + // Maybe both should be adjustable independently? + + Real height = staff_space - horizontal_line_thickness; + Stencil left_edge - = Lookup::beam (corrected_slope, thickness, height, 0.0); + = Lookup::beam (corrected_slope, vertical_line_thickness, height, 0.0); stencil.add_stencil (left_edge); Stencil right_edge - = Lookup::beam (corrected_slope, thickness, height, 0.0); - right_edge.translate_axis (width - thickness, X_AXIS); - right_edge.translate_axis (corrected_slope * (width - thickness), Y_AXIS); + = Lookup::beam (corrected_slope, vertical_line_thickness, height, 0.0); + right_edge.translate_axis (width - vertical_line_thickness, X_AXIS); + right_edge.translate_axis ((width - vertical_line_thickness) * + corrected_slope, Y_AXIS); stencil.add_stencil (right_edge); Stencil bottom_edge - = Lookup::beam (corrected_slope, width, thickness, 0.0); + = Lookup::beam (corrected_slope, width, + horizontal_line_thickness, 0.0); bottom_edge.translate_axis (-0.5 * height, Y_AXIS); stencil.add_stencil (bottom_edge); Stencil top_edge - = Lookup::beam (corrected_slope, width, thickness, 0.0); + = Lookup::beam (corrected_slope, width, + horizontal_line_thickness, 0.0); top_edge.translate_axis (+0.5 * height, Y_AXIS); stencil.add_stencil (top_edge); } Index: lilypond/lily/vaticana-ligature-engraver.cc diff -u lilypond/lily/vaticana-ligature-engraver.cc:1.38 lilypond/lily/vaticana-ligature-engraver.cc:1.39 --- lilypond/lily/vaticana-ligature-engraver.cc:1.38 Thu Mar 10 14:36:12 2005 +++ lilypond/lily/vaticana-ligature-engraver.cc Wed Apr 27 23:45:42 2005 @@ -25,6 +25,9 @@ { private: + static bool + need_extra_horizontal_space (int prev_prefix_set, int prefix_set, + int context_info, int delta_pitch); bool is_stacked_head (int prefix_set, int context_info); Real align_heads (Array<Grob_info> primitives, @@ -98,8 +101,8 @@ * added at most once between to heads. */ bool -need_extra_space (int prev_prefix_set, int prefix_set, - int context_info, int delta_pitch) +Vaticana_ligature_engraver::need_extra_horizontal_space (int prev_prefix_set, int prefix_set, + int context_info, int delta_pitch) { if (prev_prefix_set & VIRGA) /* @@ -295,8 +298,8 @@ */ } - if (need_extra_space (prev_prefix_set, prefix_set, - context_info, delta_pitch)) + if (need_extra_horizontal_space (prev_prefix_set, prefix_set, + context_info, delta_pitch)) ligature_width += extra_space; /* @@ -426,12 +429,17 @@ if (! (prev_context_info & FLEXA_RIGHT)) /* correct head of previous primitive */ if (prev_delta_pitch > 1) - prev_glyph_name = "svaticana.epiphonus"; + { + prev_glyph_name = "svaticana.epiphonus"; + glyph_name = "svaticana.plica"; + } else - prev_glyph_name = "svaticana.vepiphonus"; - glyph_name = "svaticana.plica"; + { + prev_glyph_name = "svaticana.vepiphonus"; + glyph_name = "svaticana.vplica"; + } } - else // (prev_delta_pitch <= 0) + else if (prev_delta_pitch < 0) { // cephalicus if (! (prev_context_info & FLEXA_RIGHT)) @@ -461,7 +469,20 @@ prev_primitive->set_property ("add-cauda", ly_bool2scm (false)); } - glyph_name = "svaticana.reverse.plica"; + if (prev_delta_pitch < - 1) + { + glyph_name = "svaticana.reverse.plica"; + } + else + { + glyph_name = "svaticana.reverse.vplica"; + } + } + else // (prev_delta_pitch == 0) + { + primitive->programming_error ("Vaticana_ligature:" + "deminutum head must have different " + "pitch -> ignoring grob"); } else if (prefix_set & (CAVUM | LINEA)) if ((prefix_set & CAVUM) && (prefix_set & LINEA)) Index: lilypond/mf/parmesan-heads.mf diff -u lilypond/mf/parmesan-heads.mf:1.37 lilypond/mf/parmesan-heads.mf:1.38 --- lilypond/mf/parmesan-heads.mf:1.37 Sun Feb 20 17:51:07 2005 +++ lilypond/mf/parmesan-heads.mf Wed Apr 27 23:45:43 2005 @@ -312,7 +312,8 @@ % parameterized punctum def punctum_char (expr verbose_name, internal_name, left_stem, right_stem, linea, cavum, - straight, auctum, direction_up, excentric, up_shift, down_shift, mag) = + straight, auctum, rev_auctum, direction_up, + excentric, up_shift, down_shift, mag) = fet_beginchar(verbose_name, "s" & internal_name) save b_h, a_w; @@ -346,6 +347,9 @@ elseif auctum: u_convexity# = -0.03ht#; u_excentricity# = +0.25ht#; + elseif rev_auctum: + u_convexity# = -0.10ht#; + u_excentricity# = -0.12ht#; else: u_convexity# = -0.05ht#; u_excentricity# = 0.0ht#; % dummy @@ -381,7 +385,7 @@ save box_top, box_bt; - if auctum: + if auctum or rev_auctum: z1a = (0.00wd + linethickness/2, yoffs_bt); z2a = (0.21wd, yoffs_bt + 1.0*convexity); z3a = (0.42wd - linethickness/2, @@ -511,22 +515,22 @@ % punctum punctum_char("Ed. Vat. punctum", "vaticana.punctum", false, false, false, false, false, - false, false, false, false, false, 1.0); + false, false, false, false, false, false, 1.0); % punctum cavum (for OpusTeX compatibility) punctum_char("Ed. Vat. punctum cavum", "vaticana.punctum.cavum", false, false, false, true, false, - false, false, false, false, false, 1.0); + false, false, false, false, false, false, 1.0); % linea punctum (for OpusTeX compatibility) punctum_char("Ed. Vat. linea punctum", "vaticana.linea.punctum", false, false, true, false, false, - false, false, false, false, false, 1.0); + false, false, false, false, false, false, 1.0); % linea punctum cavum (for OpusTeX compatibility) punctum_char("Ed. Vat. linea punctum cavum", "vaticana.linea.punctum.cavum", false, false, true, true, false, - false, false, false, false, false, 1.0); + false, false, false, false, false, false, 1.0); % punctum inclinatum inclinatum_char("Ed. Vat. inclinatum", "vaticana.inclinatum", @@ -535,17 +539,17 @@ % pes lower punctum punctum_char("Ed. Vat. pes lower punctum", "vaticana.lpes", false, false, false, false, true, - false, true, false, false, false, 1.0); + false, false, true, false, false, false, 1.0); % pes lower punctum punctum_char("Ed. Vat. pes var lower punctum", "vaticana.vlpes", false, false, false, false, true, - false, true, false, false, true, 1.0); + false, false, true, false, false, true, 1.0); % pes upper punctum punctum_char("Ed. Vat. pes upper punctum", "vaticana.upes", false, false, false, false, true, - false, false, false, false, false, 1.0); + false, false, false, false, false, false, 1.0); % pes upper punctum (shifted variation) % @@ -555,17 +559,22 @@ % punctum_char("Ed. Vat. var pes upper punctum", "vaticana.vupes", false, false, false, false, true, - false, false, false, true, false, 1.0); + false, false, false, false, true, false, 1.0); % small punctum as used in epiphonus punctum_char("Ed. Vat. plica", "vaticana.plica", false, false, false, false, false, - false, false, false, false, false, 0.6); + false, false, false, false, false, false, 0.6); + +% small punctum as used in epiphonus +punctum_char("Ed. Vat. var plica", "vaticana.vplica", + false, false, false, false, false, + false, true, false, false, false, true, 0.6); % excentric punctum as used in epiphonus punctum_char("Ed. Vat. epiphonus", "vaticana.epiphonus", false, false, false, false, false, - false, true, true, false, false, 1.0); + false, false, true, true, false, false, 1.0); % excentric punctum as used in epiphonus (shifted variation) % @@ -575,22 +584,27 @@ % punctum_char("Ed. Vat. var epiphonus", "vaticana.vepiphonus", false, false, false, false, false, - false, true, true, false, true, 1.0); + false, false, true, true, false, true, 1.0); % small punctum as used in cephalicus punctum_char("Ed. Vat. rev. plica", "vaticana.reverse.plica", false, false, false, false, false, - false, true, false, false, false, 0.6); + false, false, true, false, false, false, 0.6); + +% small punctum as used in cephalicus +punctum_char("Ed. Vat. rev. var plica", "vaticana.reverse.vplica", + false, false, false, false, false, + false, true, true, false, false, true, 0.6); % excentric punctum as used in cephalicus; without left stem punctum_char("Ed. Vat. cephalicus", "vaticana.inner.cephalicus", false, false, false, false, false, - false, false, true, false, false, 1.0); + false, false, false, true, false, false, 1.0); % excentric punctum as used in cephalicus; with left stem punctum_char("Ed. Vat. cephalicus", "vaticana.cephalicus", true, false, false, false, false, - false, false, true, false, false, 1.0); + false, false, false, true, false, false, 1.0); % quilisma fet_beginchar("Ed. Vat. quilisma", "svaticana.quilisma") @@ -626,12 +640,12 @@ % solesmes punctum auctum ascendens punctum_char("Solesmes punctum auctum ascendens", "solesmes.auct.asc", false, false, false, false, false, - true, true, false, false, false, 1.0); + true, false, true, false, false, false, 1.0); % solesmes punctum auctum descendens punctum_char("Solesmes punctum auctum descendens", "solesmes.auct.desc", false, false, false, false, false, - true, false, false, false, false, 1.0); + true, false, false, false, false, false, 1.0); % solesmes punctum inclinatum auctum inclinatum_char("Solesmes punctum incl. auctum", "solesmes.incl.auctum", _______________________________________________ Lilypond-cvs mailing list Lilypond-cvs@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-cvs