]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/changes.tely
Implement make-bow-stencil, make-tie-stencil for use in markup-commands
[lilypond.git] / Documentation / changes.tely
1 \input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
2 @setfilename lilypond-changes.info
3 @settitle LilyPond Changes
4
5 @include macros.itexi
6
7 @ifhtml
8 @macro inputfileref{DIR,NAME}
9 @uref{../../\DIR\/collated-files.html#\NAME\,@file{\DIR\/\NAME\}}@c
10 @end macro
11 @macro usermanref{NAME}
12 @inforef{\NAME\,,../user/lilypond/lilypond}@c
13 @end macro
14 @end ifhtml
15
16 @ifnothtml
17 @macro inputfileref{DIR,NAME}
18 @file{\DIR\/\NAME\}@c
19 @end macro
20 @macro usermanref{NAME}
21 See user manual, \NAME\
22 @end macro
23 @end ifnothtml
24
25 @macro textanchor{NAME}
26 @html
27 <a name="\NAME\"></a>
28 @end html
29 @end macro
30
31
32 @documentencoding UTF-8
33 @documentlanguage en
34 @afourpaper
35
36 @finalout
37
38 @node Top
39 @top New features in 2.20 since 2.18
40
41 @allowcodebreaks false
42
43 @itemize
44
45 @ignore
46
47 HINTS
48
49 * add new items at the top
50
51 * only show verbatim input for syntax/input changes
52
53 * try to be as brief possible in those cases
54
55 * don't try to provide real-world examples, they often get too big,
56 which scares away people.
57
58 * Write complete sentences.
59
60 * only show user-visible changes.
61
62 @end ignore
63
64 @item
65 Markup-commands @code{\undertie} and @code{\overtie} are now available, as well
66 the generic markup-command @code{\tie}.
67 @lilypond[quote,verbatim]
68 \markup {
69   \undertie "undertied"
70   \overtie "overtied"
71 }
72
73 m = {
74   c''1 \prall -\tweak text \markup \tie "131" -1
75 }
76
77 { \voiceOne \m \voiceTwo \m }
78 @end lilypond
79
80 @item
81 @code{TabStaff} is now able to print micro-tones for bendings etc.
82 @lilypond[quote,verbatim]
83 \layout {
84   \context {
85     \Score
86     supportNonIntegerFret = ##t
87   }
88 }
89
90 mus = \relative { c'4 cih d dih }
91
92 <<
93   \new Staff << \clef "G_8" \mus >>
94   \new TabStaff \mus
95 >>
96 @end lilypond
97
98 @item
99 A new style of whiteout that approximates the contours of a glyph's
100 outline is now available using @code{whiteout-style}.  The shape of the
101 white background is produced from multiple displaced copies of the
102 glyph.  The @code{thickness} of both the new @code{outline} style and
103 the default @code{box} style, as a multiple of staff-line thickness, can
104 be customized.
105 @lilypond[verbatim,quote]
106 \markup {
107   \combine
108     \filled-box #'(-1 . 15) #'(-3 . 4) #1
109     \override #'(thickness . 2)
110     \whiteout whiteout-box
111 }
112 \markup {
113   \combine
114     \filled-box #'(-1 . 18) #'(-3 . 4) #1
115     \override #'(style . outline)
116     \override #'(thickness . 3)
117     \whiteout whiteout-outline
118 }
119 \relative {
120   \override Staff.Clef.whiteout-style = #'outline
121   \override Staff.Clef.whiteout = 3
122   g'1
123 }
124 @end lilypond
125
126 @item
127 All of @code{\override}, @code{\revert}, @code{\set}, and
128 @code{\unset} now work with the @code{\once} prefix for making
129 one-time settings.
130 @lilypond[quote,verbatim]
131 \relative {
132   c'4 d
133   \override NoteHead.color = #red
134   e4 f |
135   \once \override NoteHead.color = #green
136   g4 a
137   \once \revert NoteHead.color
138   b c |
139   \revert NoteHead.color
140   f2 c |
141 }
142 @end lilypond
143
144 @item
145 When outputting MIDI, LilyPond will now store the @code{title}
146 defined in a score's @code{\header} block (or, if there is no
147 such definition on the @code{\score} level, the first such
148 definition found in a @code{\header} block of the score's
149 enclosing @code{\bookpart}, @code{\book}, or top-level scope)
150 as the name of the MIDI sequence in the MIDI file.  Optionally,
151 the name of the MIDI sequence can be overridden using the new
152 @code{midititle} @code{\header} field independently of
153 @code{title} (for example, in case @code{title} contains markup
154 code which does not render as plain text in a satisfactory way
155 automatically).
156
157 @item
158 Music (and scheme and void) functions and markup commands that
159 just supply the final parameters to a chain of overrides, music
160 function and markup command calls can now be defined in the form
161 of just writing the expression cut short with @code{\etc}.
162
163 @lilypond[verbatim,quote]
164 bold-red-markup = \markup \bold \with-color #red \etc
165 highlight = \tweak font-size 3 \tweak color #red \etc
166
167 \markup \bold-red "text"
168 \markuplist \column-lines \bold-red { One Two }
169
170 { c' \highlight d' e'2-\highlight -! }
171 @end lilypond
172
173 @item
174 LilyPond functions defined with @code{define-music-function},
175 @code{define-event-function}, @code{define-scheme-function} and
176 @code{define-void-function} can now be directly called from Scheme
177 as if they were genuine Scheme procedures.  Argument checking and
178 matching will still be performed in the same manner as when
179 calling the function through LilyPond input.  This includes the
180 insertion of defaults for optional arguments not matching their
181 predicates.  Instead of using @code{\default} in the actual
182 argument list for explicitly skipping a sequence of optional
183 arguments, @code{*unspecified*} can be employed.
184
185 @item
186 Current input location and parser are now stored in GUILE fluids
187 and can be referenced via the function calls @code{(*location*)}
188 and @code{(*parser*)}.  Consequently, a lot of functions
189 previously taking an explicit @code{parser} argument no longer do
190 so.
191
192 Functions defined with @code{define-music-function},
193 @code{define-event-function}, @code{define-scheme-function} and
194 @code{define-void-function} no longer use @code{parser} and
195 @code{location} arguments.
196
197 With those particular definitions, LilyPond will try to recognize
198 legacy use of @code{parser} and @code{location} arguments,
199 providing backwards-compatible semantics for some time.
200
201 @item
202 In the "english" notename language, the long notenames for pitches
203 with accidentals now contain a hyphen for better readability.  You
204 now have to write
205 @example
206 \key a-flat \major
207 @end example
208 instead of the previous
209 @example
210 \key aflat \major
211 @end example
212
213 Double accidentals do not get another hyphen, so the Dutch
214 @code{cisis} has the long English notename @code{c-sharpsharp}.
215
216 @item
217 The visual style of tremolo slashes (shape, style and slope)
218 is now more finely controlled.
219 @lilypond[quote,relative=2]
220   a8:32 b: c: d:
221   \override StemTremolo.shape = #'beam-like
222   a: b: c: d:
223   \override StemTremolo.style = #'constant
224   a: b: c: d:
225   g,2
226 @end lilypond
227
228
229 @item
230 Multi-measure rests have length according to their total duration,
231 under the control of @code{MultiMeasureRest.space-increment}.
232 @lilypond[quote]
233 { \compressFullBarRests
234   \override Staff.MultiMeasureRest.space-increment = 3.0
235   R1*2 R1*12 R1*64 }
236 @end lilypond
237
238 @item
239 Page numbers may now be printed in roman numerals, by setting the
240 @code{page-number-type} paper variable.
241
242 @item
243 It is now possible to use @code{\time} and @code{\partial}
244 together to change the time signature in mid measure.
245
246 @lilypond[verbatim,quote,relative=1]
247 \override Score.BarNumber.break-visibility = #end-of-line-invisible
248 \partial 4 \time 3/4 f4 | 2 4 | 2 \bar "||"
249 \time 9/8 \partial 4. f8 8 8 | 2. 8 8 8 |
250 @end lilypond
251
252 @item
253 It is now possible to override the @code{text} property of
254 chord names.
255
256 @lilypond[verbatim,fragment,quote]
257 <<
258 \new ChordNames \chordmode {
259   a' b c:7
260   \once \override ChordName.text = #"foo"
261   d
262 }
263 >>
264 @end lilypond
265
266 @item
267 Improved horizontal alignment when using @code{TextScript},
268 with @code{DynamicText} or @code{LyricText}.
269
270 @item
271 A new command @code{\magnifyStaff} has been added which scales staff
272 sizes, staff lines, bar lines, beamlets and horizontal spacing generally
273 at the @code{Staff} context level.  Staff lines are prevented from being
274 scaled smaller than the default since the thickness of stems, slurs, and
275 the like are all based on the staff line thickness.
276
277 @item
278 @code{InstrumentName} now supports @code{text-interface}.
279
280 @item
281 There is now support for controlling the @q{expression level} of
282 MIDI channels using the @code{Staff.midiExpression} context property.
283 This can be used to alter the perceived volume of even sustained notes
284 (albeit in a very @q{low-level} way) and accepts a number value between
285 @code{0.0} and @code{1.0}.
286
287 @example
288 \score @{
289   \new Staff \with @{
290     midiExpression = #0.6
291     midiInstrument = #"clarinet"
292   @}
293   <<
294     @{ a'1~ a'1 @}
295     @{
296       \set Staff.midiExpression = #0.7 s4\f\<
297       \set Staff.midiExpression = #0.8 s4
298       \set Staff.midiExpression = #0.9 s4
299       \set Staff.midiExpression = #1.0 s4
300
301       \set Staff.midiExpression = #0.9 s4\>
302       \set Staff.midiExpression = #0.8 s4
303       \set Staff.midiExpression = #0.7 s4
304       \set Staff.midiExpression = #0.6 s4\!
305     @}
306   >>
307   \midi @{ @}
308 @}
309 @end example
310
311 @item
312 Support for making it easier to use alternative @q{music} fonts other
313 than the default Emmentaler in LilyPond has been added.  See
314 @uref{http://fonts.openlilylib.org/} for more information.
315
316 @item
317 Grobs and their parents can now be aligned separately allowing
318 more flexibility for grob positions.  For example the @q{left} edge of a
319 grob can now be aligned on the @q{center} of its parent.
320
321 @item
322 Improvements to the @code{\partial} command have been made to
323 avoid problems when using multiple, parallel contexts.
324
325 @item @code{\chordmode} can now use @code{< >} and @code{<< >>}
326 constructs.
327
328 @item
329 A new command @code{\tagGroup} has now been added.  This complements
330 the existing @code{\keepWithTag} and @code{\removeWithTag} commands.
331 For Example:
332
333 @example
334 \tagGroup #'(violinI violinII viola cello)
335 @end example
336
337 declares a list of @q{tags} that belong to a single @q{tag group}.
338
339 @example
340 \keepWithTag #'violinI
341 @end example
342
343 Is now only concerned with @q{tags} from @q{violinI}’s tag group.
344
345 Any element of the included music tagged with one or more tags from the
346 group, but @emph{not} with @var{violinI}, will be removed.
347
348 @item
349 The @code{\addlyrics} function now works with arbitrary contexts
350 incuding @code{Staff}.
351
352 @item
353 String numbers can now also be used to print roman numerals
354 (e.g. for unfretted string instruments).
355 @lilypond[verbatim,quote,relative=2]
356 c2\2
357 \romanStringNumbers
358 c\2
359 \arabicStringNumbers
360 c1\3
361 @end lilypond
362
363 @item
364 The @code{thin-kern} property of the @code{BarLine} grob has been
365 renamed to @code{segno-kern}.
366
367 @item
368 @code{KeyCancellation} grobs now ignore cue clefs (like
369 @code{KeySignature} grobs do).
370
371 @item
372 Add support for @code{\once@tie{}\unset}
373
374 @item
375 It is now possible to individually color both the dots and parentheses
376 in fret diagrams when using the @code{\fret-diagram-verbose} markup
377 command.
378
379 @lilypond[verbatim,quote,relative=1]
380 \new Voice {
381   c1^\markup {
382     \override #'(fret-diagram-details . (
383                  (finger-code . in-dot))) {
384       \fret-diagram-verbose #'((mute 6)
385                                (place-fret 5 3 1 red)
386                                (place-fret 4 5 2 inverted)
387                                (place-fret 3 5 3 green)
388                                (place-fret 2 5 4 blue inverted)
389                                (place-fret 1 3 1 violet)
390                                (barre 5 1 3 ))
391     }
392   }
393   c1^\markup {
394     \override #'(fret-diagram-details . (
395                  (finger-code . below-string))) {
396       \fret-diagram-verbose #'((mute 6)
397                              (place-fret 5 3 1 red parenthesized)
398                              (place-fret 4 5 2 yellow
399                                                default-paren-color
400                                                parenthesized)
401                              (place-fret 3 5 3 green)
402                              (place-fret 2 5 4 blue )
403                              (place-fret 1 3 1)
404                              (barre 5 1 3))
405     }
406   }
407 }
408 @end lilypond
409
410 @item
411 Two new properties have been added for use in
412 @code{fret-diagram-details} when using the @code{\fret-diagram-verbose}
413 markup command; @code{fret-label-horizontal-offset} which affects the
414 @code{fret-label-indication} and @code{paren-padding} which controls the
415 space between the dot and the parentheses surrounding it.
416
417 @lilypond[verbatim,quote,relative=1]
418 \new Voice {
419   c1^\markup {
420     \fret-diagram-verbose #'((mute 6)
421                              (place-fret 5 3 1)
422                              (place-fret 4 5 2)
423                              (place-fret 3 5 3)
424                              (place-fret 1 6 4 parenthesized)
425                              (place-fret 2 3 1)
426                              (barre 5 2 3))
427   }
428   c1^\markup {
429     \override #'(fret-diagram-details . (
430                  (fret-label-horizontal-offset . 2)
431                  (paren-padding . 0.25))) {
432       \fret-diagram-verbose #'((mute 6)
433                                (place-fret 5 3 1)
434                                (place-fret 4 5 2)
435                                (place-fret 3 5 3)
436                                (place-fret 1 6 4 parenthesized)
437                                (place-fret 2 3 1)
438                                (barre 5 2 3))
439     }
440   }
441 }
442 @end lilypond
443
444 @item
445 A new markup command @code{\justify-line} has been added.  Similar to
446 the @code{\fill-line} markup command except that instead of setting
447 @emph{words} in columns, the @code{\justify-line} command balances the
448 whitespace between them ensuring that when there are three or more
449 words in a markup, the whitespace is always consistent.
450
451 @lilypond[quote,verbatim,papersize=a6]
452 \markup \fill-line {oooooo oooooo oooooo oooooo}
453 \markup \fill-line {ooooooooo oooooooo oo ooo}
454 @end lilypond
455
456 @lilypond[quote,verbatim,papersize=a6]
457 \markup \justify-line {oooooo oooooo oooooo oooooo}
458 \markup \justify-line {ooooooooo oooooooo oo ooo}
459 @end lilypond
460
461 @item
462 A new command @code{\magnifyMusic} has been added, which allows
463 the notation size to be changed without changing the staff size,
464 while automatically scaling stems, beams, and horizontal spacing.
465
466 @lilypond[verbatim,quote]
467 \new Staff <<
468   \new Voice \relative {
469     \voiceOne
470     <e' e'>4 <f f'>8. <g g'>16 <f f'>8 <e e'>4 r8
471   }
472   \new Voice \relative {
473     \voiceTwo
474     \magnifyMusic 0.63 {
475       \override Score.SpacingSpanner.spacing-increment = #(* 1.2 0.63)
476       r32 c'' a c a c a c r c a c a c a c
477       r c a c a c a c a c a c a c a c
478     }
479   }
480 >>
481 @end lilypond
482
483 @item
484 A new flexible template suitable for a range of choral music, is now
485 provided.  This may be used to create simple choral music, with or
486 without piano accompaniment, in two or four staves. Unlike other
487 templates, this template is @q{built-in}, which means it does not
488 need to be copied and edited: instead it is simply @code{\include}'d
489 in the input file.  For details, see @rlearning{Built-in templates}.
490
491 @item
492 The positioning of tuplet numbers for kneed beams has been significantly
493 improved.  Previously, tuplet numbers were placed according to the
494 position of the tuplet bracket, even if it was not printed.  This could
495 lead to stranded tuplet numbers.  Now they are now positioned
496 closer to the kneed-beam when an appropriate beam segment exists for its
497 placement and when the the bracket is not drawn.
498
499 Collision detection is also added, offsetting horizontally if too close
500 to an adjoining note column but preserving the number's vertical
501 distance from the kneed beam.  If the number itself is too large to
502 fit in the available space the original, bracket-based, positioning
503 system is used instead; and in the event of a collision (e.g. with an
504 accidental) the tuplet number is moved vertically away instead.
505
506 @lilypond[verbatim,fragment,quote,relative=1]
507 \time 3/4
508 \override Beam.auto-knee-gap = 3
509 \tuplet 3/2 4 {
510   g8 c'' e,
511   c'8 g,, e''
512   g,,8 e''' c,,
513 }
514 @end lilypond
515
516 @noindent
517 The original kneed-beam tuplet behavior is still available through an
518 @code{\override} via a new, @code{knee-to-beam} property.
519
520 @lilypond[verbatim,fragment,quote,relative=1]
521 \time 3/4
522 \override Beam.auto-knee-gap = 3
523 \override TupletNumber.knee-to-beam = ##f
524 \tuplet 3/2 4 {
525   g8 c'' e,
526   c'8 g,, e''
527   g,,8 e''' c,,
528 }
529 @end lilypond
530
531 @item
532 @code{\lyricsto} and @code{\addLyrics} have been @q{harmonized}.  Both
533 now accept the same kind of delimited argument list that @code{\lyrics}
534 and @code{\chords} accept.  Backward compatibility has been added so
535 music identifiers (i.e. @code{\mus}) are permitted as arguments.  A
536 @code{convert-ly} rule has been added that removes redundant uses of
537 @code{\lyricmode} and rearranges combinations with context starters such
538 that @code{\lyricsto} in general is applied last (i.e. like
539 @code{\lyricmode} would be).
540
541 @item
542 Scheme functions and identifiers can now be used as output definitions.
543
544 @item
545 Scheme expressions can now be used as chord constituents.
546
547 @item
548 Improved visual spacing of small and regular @q{MI} Funk and Walker
549 noteheads so they are now the same width as other shaped notes in
550 their respective sets.  @code{SOL} noteheads are also now visually
551 improved when used with both the normal Aiken and Sacred Harp heads, as
552 well as with the thin variants.
553
554 @item
555 @code{LeftEdge} now has a definable @code{Y-extent} (i.e.vertical).  See
556 @rinternals{LeftEdge}.
557
558 @item
559 Added a new @code{make-path-stencil} function that supports all
560 @code{path} commands both relative and absolute:
561
562 @code{lineto}, @code{rlineto}, @code{curveto}, @code{rcurveto},
563 @code{moveto}, @code{rmoveto}, @code{closepath}.  The function also
564 supports @q{single-letter} syntax used in standard SVG path commands:
565
566 @code{L}, @code{l}, @code{C}, @code{c}, @code{M}, @code{m}, @code{Z} and
567 @code{z}.  The new command is also backward-compatible with the original
568 @code{make-connected-path-stencil} function.  Also see
569 @file{scm/stencil.scm}.
570
571 @item
572 Context properties named in the @samp{alternativeRestores} property are
573 restored to their value at the start of the @emph{first} alternative in
574 all subsequent alternatives.
575
576 Currently the default set restores @q{current meter};
577
578 @lilypond[verbatim,fragment,quote,relative=2]
579 \time 3/4
580 \repeat volta 2 { c2 e4 | }
581 \alternative {
582   { \time 4/4 f2 d | }
583   { f2 d4 | }
584 }
585 g2. |
586 @end lilypond
587
588 @noindent
589 @q{measure position};
590
591 @lilypond[verbatim,fragment,quote,relative=2]
592 \time 3/4
593 \repeat volta 2 { c2 e4 | }
594 \alternative {
595   { \time 4/4
596     \set Timing.measurePosition = #(ly:make-moment -1/2)
597     f2 | }
598   { f2 d4 | }
599 }
600 g2. |
601 @end lilypond
602
603 @noindent
604 and @q{chord changes};
605
606 @lilypond[verbatim,fragment,quote]
607 <<
608   \new ChordNames {
609     \set chordChanges = ##t
610     \chordmode { c1:m d:m c:m d:m }
611   }
612   \new Staff {
613     \repeat volta 2 { \chordmode { c1:m } }
614     \alternative {
615       { \chordmode { d:m } }
616       { \chordmode { c:m } }
617     }
618   \chordmode { d:m }
619 }
620 >>
621 @end lilypond
622
623 @item
624 Improved MIDI output for breathe marks.  After tied notes, breaths take
625 time @emph{only} from the last note of the tie; e.g.
626 @code{@{ c4~ c8 \breathe @}} performs as @code{@{ c4~ c16 r @}} instead
627 of @code{@{ c4 r8 @}}.  This is more consistent with articulations and
628 how humans interpret breaths after ties.  It now also makes it easier to
629 align simultaneous breathe marks over multiple parts, all with different
630 note lengths.
631
632 @item
633 A new note head style for Tabulature has been added;
634 @code{TabNoteHead.style = #'slash}.
635
636 @item
637 Four new Clef glyphs have been added @emph{Double G}, @emph{Tenor G},
638 @emph{Varpercussion} and @emph{varC} and their related tessitura.
639 @lilypond[verbatim,quote,fragment]
640   \override Staff.Clef.full-size-change = ##t
641
642   \clef "GG" c c c c
643   \clef "tenorG" c c c c
644   \clef "varC" c c c c
645   \clef "altovarC" c c c c
646   \clef "tenorvarC" c c c c
647   \clef "baritonevarC" c c c c
648   \clef "varpercussion" c c c c
649
650   \break
651   \override Staff.Clef.full-size-change = ##f
652
653   \clef "GG" c c c c
654   \clef "tenorG" c c c c
655   \clef "varC" c c c c
656   \clef "altovarC" c c c c
657   \clef "tenorvarC" c c c c
658   \clef "baritonevarC" c c c
659   \clef "varpercussion" c c c c
660 @end lilypond
661
662 @item
663 Isolated durations in music sequences now stand for unpitched
664 notes.  This may be useful for specifying rhythms to music or
665 scheme functions.  When encountered in the final score, the
666 pitches are provided by the preceding note or chord.  Here are two
667 examples where this makes for readable input:
668
669 @lilypond[verbatim,quote]
670 \new DrumStaff \with { \override StaffSymbol.line-count = 1 }
671 \drummode {
672   \time 3/4
673   tambourine 8 \tuplet 3/2 { 16 16 16 }
674              8 \tuplet 3/2 { 16 16 16 } 8 8 |
675 }
676 @end lilypond
677
678 @lilypond[verbatim,quote]
679 \new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | }
680 @end lilypond
681
682 @item
683 @code{\displayLilyMusic} and its underlying Scheme functions no
684 longer omit redundant note durations.  This makes it easier to
685 reliably recognize and format standalone durations in expressions
686 like
687 @example
688 @{ c4 d4 8 @}
689 @end example
690
691 @item
692 Beaming exceptions can now be constructed using the
693 @code{\beamExceptions} scheme function.  One can now write
694
695 @lilypond[verbatim,quote,relative=1]
696 \time #'(2 1) 3/16
697 \set Timing.beamExceptions =
698   \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
699 c16 c c |
700 \repeat unfold 6 { c32 } |
701 @end lilypond
702
703 @noindent
704 with multiple exceptions separated with @code{|} bar checks
705 (writing the exception pattern without pitches is convenient but
706 not mandatory).  Previously, setting the beam exceptions would
707 have required writing
708
709 @example
710 \set Timing.beamExceptions =
711 #'(                         ;start of alist
712    (end .                   ;entry for end of beams
713     (                       ;start of alist of end points
714      ((1 . 32) . (2 2 2))   ;rule for 1/32 beams -- end each 1/16
715     )))
716 @end example
717
718 @item
719 The most common articulations are now reflected in MIDI output.
720 Accent and marcato make notes louder; staccato, staccatissimo and
721 portato make them shorter. Breath marks shorten the previous
722 note.
723
724 This behavior is customizable through the @code{midiLength} and
725 @code{midiExtraVelocity} properties on @code{ArticulationEvent}.
726 See @file{script-init.ly} for examples.
727
728 @item
729 The PostScript functionality of stroke adjustment is no longer
730 applied automatically but left to the discretion of the PostScript
731 device (by default, Ghostscript uses it for resolutions up to
732 150dpi when generating raster images).  When it is enabled, a more
733 complex drawing algorithm designed to benefit from stroke
734 adjustment is employed mostly for stems and bar lines.
735
736 Stroke adjustment can be forced by specifying the command line
737 option @samp{-dstrokeadjust} to LilyPond.  When generating
738 @code{PDF} files, this will usually result in markedly better
739 looking @code{PDF} previews but significantly larger file size.
740 Print quality at high resolutions will be unaffected.
741
742 @end itemize
743
744 @ifhtml
745 For older news, go to
746 @uref{http://lilypond.org/doc/v2.18/Documentation/changes/},
747 @uref{http://lilypond.org/doc/v2.16/Documentation/changes/},
748 or @uref{../,go back} to the Documentation index.
749
750
751 @end ifhtml
752
753 @bye