@itemize @bullet
+@item
+Formatting of isolated, single ties has been improved. Now, ties avoid
+staff lines, flags and dots, without compromising their shape.
+
+@lilypond[fragment,raggedright]
+\relative c'' {
+ \stemUp
+ c16 c2...~ c16 ~ c2... |
+ c4~c8 c8~c16 c16~c32 c16.~[ c64]~ c64[ c8..] |
+}
+@end lilypond
+
+This improvement has been sponsored by Bertalan Fodor, Jay Hamilton,
+Kieren MacMillan, Steve Doonan, by Trevor Baca, and Vincent SD.
+
@item
With the @code{countPercentRepeats} property,
}
@end lilypond
-This feature was sponsored by Trevor Ba@v{c}a.
+This feature was sponsored by Trevor Baca.
@item
When @code{strict-note-spacing} is set, notes are spaced without regard
\new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c] c32[ c32] }
@end lilypond
-This feature was sponsored by Trevor Ba@v{c}a.
+This feature was sponsored by Trevor Baca.
@item
Beams support the @code{break-overshoot} property, for example
c2.. c8[ \break c]
@end lilypond
-This feature was sponsored by Trevor Ba@v{c}a.
+This feature was sponsored by Trevor Baca.
@item
Proportional notation is supported. Notes can be spaced proportional
>>
@end lilypond
-This feature was sponsored by Trevor Ba@v{c}a.
+This feature was sponsored by Trevor Baca.
@item
Symbol sizes (e.g. accidentals) are disregarded for spacing if
>>
@end lilypond
-This feature was sponsored by Trevor Ba@v{c}a.
+This feature was sponsored by Trevor Baca.
@item
Endings of broken tuplet brackets can be tuned. For example, you can
}
@end lilypond
-This feature was sponsored by Trevor Ba@v{c}a.
+This feature was sponsored by Trevor Baca.
@item
}
@end lilypond
-These glyphs have been sponsored by Trevor Ba@v{c}a.
+These glyphs have been sponsored by Trevor Baca.
@item
}
@end lilypond
-This feature was sponsored by Trevor Ba@v{c}a.
+This feature was sponsored by Trevor Baca.
@item
Music expressions can be displayed, in LilyPond notation, using the
}
set_direction (me);
-
+ int tie_position = (int) Tie::get_position (me);
+
Direction dir = get_grob_direction (me);
Real staff_space = Staff_symbol_referencer::staff_space (me);
- Real staff_position = Tie::get_position (me);
+ Real staff_position = tie_position;
Grob *common[NO_AXES];
for (int a = X_AXIS; a < NO_AXES; a++)
Avoid dot
*/
Grob *left_dot = unsmob_grob (me->get_bound (LEFT)->get_object ("dot"));
- if (left_dot && in_space && fits_in_space)
+ if (left_dot && in_space)
{
if (staff_position == Staff_symbol_referencer::get_position (left_dot))
{
Putting larger in-space ties next to the notes forces
the edges to be opposite (Y-wise) to the tie direction.
*/
- if (staff_position == Tie::get_position (me)
+ if (staff_position == tie_position
&& in_space
&& dy > 0.3 * staff_space)
{
if (!in_between
&& in_space
- && fabs (staff_position - Tie::get_position (me)) <= 1)
+ && fabs (staff_position - tie_position) <= 1)
staff_position += 2*dir;
}
else
{
- Real rounding_dy = (1.5 * dir - middle[Y_AXIS]);
+ Real where = 0.5 * dir;
+ Real rounding_dy = (where - middle[Y_AXIS]);
b.translate (Offset (0,
0.5 * staff_position * staff_space + rounding_dy));
+
+ if (dir * b.curve_point (0.0)[Y_AXIS] <
+ dir * tie_position * 0.5 * staff_space)
+ b.translate (Offset (0, staff_space * dir));
}
b.translate (Offset (attachments[LEFT]