David Nalesnik [Sat, 4 Mar 2017 15:16:09 +0000 (09:16 -0600)]
Issue 5086: Fix dashed line errors
There are two errors in lily/line-interface.cc which cause
dashed lines to be drawn inaccurately.
(1) Line-thickness is improperly subtracted from the "off"
value in Line_interface::make_dashed_line. This was done,
presumably, to account for the line cap of each dash. In fact,
PostScript discounts the line cap when constructing the pattern.
(2) Dashed lines are constructed so that they begin and end
with a dash. Thus, a dashed line is built of dash + whitespace
units and a last lone dash. Period is not adjusted in
Line_interface::line for this last dash, which can lead to a
noticeable difference in its length compared to other dashes.
Correcting these flaws ensures that dashed lines end with a
dash rather than whitespace, and that terminating dashes are
not clipped. Also, the number of dashes drawn reflects the
number calculated.
Issue 5082/3: Add comment to build Japanese PDF documents
Building Japanese PDF documents requires
Japanese fonts and some packages.
Unfortunately, most developers do not have them.
Therefore, Japanese PDF is not built by default.
This commit adds a comment which describes the requirements
to build Japanese PDF documents
for the developer who wants to build them.
Issue 5082/1: Add Japanese texinfo.tex support files
Japanese PDF documents are not built
since texinfo.tex (until Texinfo 6.3)
and TeX engine (pdfTeX) do not support Japanese.
The new texinfo.tex (Texinfo 6.3+)
and the modern TeX engine (XeTeX and LuaTeX)
can handle Japanese PDF.
This commit adds Japanese texinfo.tex support files
from Texinfo SVN repository r7681.
They consist of the following two files.
texinfo-ja.tex
Japanese texinfo.tex loader
txi-ja.tex
Japanese translations and font definitions for texinfo.tex
David Nalesnik [Thu, 23 Feb 2017 15:57:44 +0000 (09:57 -0600)]
Issue 5084: Create Bracket class
Code involving brackets suffers from two confusing
organizational issues:
(1) Tuplet_bracket::make_bracket is used to create brackets
for a number of grobs: BassFigureBracket, HorizontalBracket,
OttavaBracket, PianoPedalBracket, VoltaBracket, along with
TupletBracket
(2) Methods belonging to Horizontal_bracket are used to draw
both horizonal brackets (HorizontalBracket) and vertical
brackets (BassFigureBracket)
To remedy this, a new Bracket class is created.
This new class contains the old Tuplet_bracket::make_bracket,
Horizontal_bracket::make_bracket, and
Horizontal_bracket::make_enclosing_bracket.
These methods have been renamed to clarify their purpose.
David Kastrup [Tue, 7 Mar 2017 17:47:30 +0000 (18:47 +0100)]
Issue 5087: Let extendersOverRests default to ##t
This was effectively unchangingly the case before issue 5053
fixed the respective code. However, the relation to actual
behavior seems so tenuous that it appears more prudent to
reenable this by default and only disable it again (if at all)
once the behavior corresponds better with name and documentation.
Knut Petersen [Sat, 4 Mar 2017 18:10:19 +0000 (18:10 +0000)]
LyricHyphen whiteout
Issue 5033
A proper outline whiteout
would be ideal, but it is
not currently implemented.
The current code fails
because you need a relatively
large whiteout area for a
small object.
A brute force fix is to increase
the number of iterations, but
the result would be a pdf with
a high percentage of whiteout code.
There is the case where a long
melisma produces a single hyphen
event that generates a lot of
hyphens that cross a number of
mensuration lines.
Rectangular or roundedbox whiteout
will produce gaps in all
mensuration lines crossed, even
if there is no collision.
David Kastrup [Tue, 28 Feb 2017 23:33:51 +0000 (00:33 +0100)]
Issue 5079/2: with-music-match: lists should match completely
Previously music properties that were matched to a list of wildcards
could contain fewer elements than the list they were matched to,
leading to an error when the wildcard variable was being assigned to.
Now the list lengths have to be matched exactly: a shorter pattern
than the actual list length of the matched property cannot match any
more.
Urs Liska [Tue, 21 Feb 2017 11:42:48 +0000 (12:42 +0100)]
5067: Add ly:version? and lexicographic-list-compare?
Squashed commits:
5067: Restrict ly:version? to number list
5067: version-list-compare? rename to lexicographic-list-compare?
5067: version-list-compare? typo
ly:version? and version-list-compare?
A lexicographic list comparison for arbitrary element types,
but with special treatment of trailing elements
(additional elements of the longer list are ignored, which is
typical for version comparisons such as LilyPond 2.19 is equal to 2.19.4)
Simplify lilypond-version operator and create new interface
Add lilypond version predicates/operators
This set of predicates/operators compares a given reference version
to the LilyPond version that is currently being executed.
This makes it possible to implement "version switches" to write
(library) code that is compatible over syntax changes.
David Kastrup [Tue, 16 Jun 2015 12:14:27 +0000 (14:14 +0200)]
Issue 1375/2: Create Translator_creator class
Previously, translators were created by copying from a context-less
instantiation of the translator containing its documentation. This had
several unpleasant consequences, the most problematic likely being the
inability to register Scheme engravers because their documentation would
be identical to all other Scheme engravers.
A new Translator_creator class takes over the task of creating
Translator instances when called with a context argument.
As a result of joining the mechanisms for Scheme engravers and C++
engravers, ly:translator-name and ly:translator-description are
reimplemented in a manner resembling object properties.
David Kastrup [Fri, 27 Jan 2017 12:27:03 +0000 (13:27 +0100)]
Issue 1375/1: Let Translator constructor take a Context argument
This is the first step towards constructing rather than cloning translators
when creating contexts. On its own, it does not make sense, but the change
is large and mostly mechanical, so keeping it separate from the actually
difficult parts makes sense.