Werner Lemberg [Thu, 6 Mar 2014 06:19:49 +0000 (07:19 +0100)]
Issue 3876: Fix shape of G clefs
This patch simplifies the code for the double G clefs; it also fixes the
incorrect test of the `double_shift' parameter that caused the non-double
G clefs being drawn twice.
Recent FontForge warnings like
Internal Error (overlap) in clefs.G: Intersection failed!
or the ugly shape with a straight line instead of a curve in the left part
of the G clef are now gone: Drawing the shape twice triggered a bunch of
FontForge bugs.
Keith OHara [Sat, 8 Mar 2014 14:45:20 +0000 (15:45 +0100)]
Fix issue 3868: line-breaking makes short lines
Two simple fixes:
1) Always have some stretchability between notes
2) If there _is_ a completely unstretchable line, shorter than the line-width,
score it as a bad fit, not as a perfect fit (report large forces for stiff lines).
Either one would fix the problem; both seem to be good to have in the code.
David Nalesnik [Fri, 21 Feb 2014 00:15:47 +0000 (18:15 -0600)]
Issue 3860: Add command \justify-line
The command \fill-line spaces words taking word length into account
such that the following distances are equal: outside edge of outside
markup to center of adjoining markup; center to center of
neighboring interior markups. As a consequence, the space between
words is unequal when the lengths of the markups vary and/or there
are more than three markups in the line.
The following patch creates the command \justify-line, which spaces
markups to fill a line such that the space in between each pair is
constant. Collisions are prevented by ensuring that this distance
does not fall below the current setting of word-space.
This adds an accidental style that works like the
dodecaphonic style except that it does _not_
print an accidental if the note is in the same
voice immediately preceded with a note of the same pitch.
David Nalesnik [Fri, 27 Dec 2013 00:44:52 +0000 (18:44 -0600)]
Improve positioning of tuplet numbers for kneed beams.
In the past LilyPond always placed tuplet numbers according to the
position of a bracket, though this bracket may or may not have actually
been drawn. This system led at times to tuplet numbers which appeared
stranded when there was a kneed beam and no visible bracket.
This patch positions the tuplet number independently of brackets and
close to the beam when the the bracket is not drawn, the beam is kneed, and
there is an appropriate beam segment to place the number against.
The side of the beam on which the number is placed is chosen by principles
derived from Gould. The number is centered horizontally on the beam.
Collision detection is also introduced. The number will be offset
horizontally if it is too close to an adjoining note column. All shifts
preserve the number's vertical distance from the beam. If the number is
too large to fit in the available horizontal space (between note columns
to either side), we use the old bracket-based positioning system. In the
event of a collision with an accidental, the tuplet number is moved
vertically, away from the beam.
The older behavior is always available through an override of the property
`knee-to-beam' which is introduced by this patch, and set by default to true.
This patch also adds a header file, `tuplet-number.hh', and provides
a number of regression tests illustrating various features.
David Kastrup [Sat, 8 Feb 2014 18:05:16 +0000 (19:05 +0100)]
Issue 3827: remove the necessity to have a \layout block in a \markup \score ...
It turns out that this is not really fixable in the backend since what
is called "layout" in the markup function definitions does not
actually correspond to \layout but rather to \paper. Very funny.
So this is solved in the parser itself when reading a \score or
\score-lines to be used in a markup or markup list by cloning
$defaultlayout as necessary (which simulates \layout {}) whenever the
score is without an output definition.
James Lowe [Tue, 4 Feb 2014 22:06:43 +0000 (22:06 +0000)]
Web:Reworded UNIX Download page more strongly not to use distro-based packages
Issue 3829
Reworded 'Generic Packages or ....' section more 'strongly' to get
users to _not_ use distribution-specific packages but to use
the generic packages from lilypond.org.
Removed the 'Distribution-specific' Packages section completely.
Added some '32bit/64bit' labels for the generic package download links
Devon Schudy [Sun, 19 Jan 2014 04:41:28 +0000 (23:41 -0500)]
More consistent performance of breath marks. (issue 3821)
After tied notes, breaths take time only from the last note of the tie, so
e.g. { c4 ~ c8 \breathe } performs as { c4 ~ c16 r }, not { c4 r8 }.
This is consistent with articulations, and with how humans interpret
breaths after ties. This makes it possible to align simultaneous
breaths in multiple parts with different note lengths.
Ignore grace time when calculating the length of the note before a breath —
subsequent grace notes take time from the breath, not the previous note.
David Kastrup [Mon, 27 Jan 2014 11:57:43 +0000 (12:57 +0100)]
Issue 3826: Stop scripts/auxiliar/update-with-convert-ly.sh from doing a full make
It is quite a nuisance for writing convert-ly rules that
scripts/auxiliar/update-with-convert-ly runs a full make since any
partly successful run of update-with-convert-ly will cause large
delays. It also leads to a paradoxical situation when the syntax of
some files needs to be converted _before_ a full make has a chance to
succeed.
So this patch reduces the preliminary make to "make pythonmodules"
which should be sufficient for updating from convertrules.py changes.
Paul Morris [Tue, 21 Jan 2014 02:00:05 +0000 (21:00 -0500)]
stencil.scm: minor edits, doc strings, comments
Use two spaces after full stops in doc strings.
Restore some comments to new make-connected-path-stencil code.
One small code style edit to follow style of previous code.
Paul Morris [Sat, 18 Jan 2014 03:53:26 +0000 (22:53 -0500)]
stencil.scm: add make-path-stencil function
supports all path commands both relative and absolute:
lineto, rlineto, curveto, rcurveto, moveto, rmoveto, closepath
also supports single letter syntax used in standard SVG path commands:
L, l, C, c, M, m, Z, z.
refactored make-connected-path-stencil for backwards compatibility and
continued use
David Kastrup [Thu, 16 Jan 2014 10:25:23 +0000 (11:25 +0100)]
Issue 3815: Parser: harmonize \lyricsto and \addlyrics arguments
Previously, they allowed arbitrary music but since that required looking
at lookahead tokens in the wrong mode, it led to strange errors like with
lyr=\lyricsto A { }
mus={c}
when mus= was parsed as a single token in lyrics mode. Now both \addlyrics
and \lyricsto accept merely the same kind of delimited argument list
that \lyrics or \chords accept. Additionally, to preserve compatibility
to a lot of examples, music identifiers like \mus are permitted as the
argument to \lyricsto and \addlyrics.
Since this requires a change in existing uses, this includes a
convert-ly rule that removes redundant uses of \lyricmode and
rearranges the combination with context starters such that \lyricsto
in general is applied last, like \lyricmode would be.
David Kastrup [Sat, 11 Jan 2014 13:08:55 +0000 (14:08 +0100)]
Issue 3797: Music_wrapper_iterator does not follow original context setting of child
We do this by making Music_iterator::get_handle and
Music_iterator::set_context virtual and letting Music_wrapper_iterator
redirect them to the child iterator.
\score {
<<
{ { a4 a b b } a a b b }
{ \absolute { a4 a b b } a a b b }
>>
}
splits off a new Staff after \absolute { a4 a b b }.
Carl Peterson [Mon, 23 Dec 2013 22:04:13 +0000 (17:04 -0500)]
Cleanup of ugly MI and SOL shaped noteheads
1. Reducing width of MI notehead, for both "regular" (Aiken, etc.)
and "small" (Funk/Walker) heads. When Funk/Walker heads were
introduced, a special width variable was introduced to both
sets and the mi heads were made wider than the other noteheads.
This does not seem to be the practice of available examples
(Sacred Harp, Southern Harmony books, etc.) and causes issues
with alignment, particularly with stems up, and is visually odd.
The variables have been removed from the metafont code, making
the MI noteheads the same width as the other shaped notes in
their respective sets.
2. Changing the SOL notehead to more closely match the normal round
notehead (as advertised in the mf code). The previous code uses
the shape of the open (half note) notehead, which is visually
unappealing. The open notehead has been defined so that it
matches visually with both the normal Aiken/Sacred Harp heads,
as well as the thin variants (in keeping with observed practice,
which uses the regular open roundhead even when thin variants
are used).