]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/notation/text.itely
Issue 5164: Doc: Add usage of OpenType font feature
[lilypond.git] / Documentation / notation / text.itely
index cdef0fd8413e8ed7f91416fa9937700c3c31c480..fabee1a937628909748f2d94d01e25dd157cb045 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.12.0"
+@c \version "2.19.21"
 
 @node Text
 @section Text
@@ -59,28 +59,30 @@ demonstrated in the following example.  Such indications may be
 manually placed above or below the staff, using the syntax described
 in @ref{Direction and placement}.
 
-@lilypond[quote,verbatim,relative=2]
-a8^"pizz." g f e a4-"scherz." f
+@lilypond[quote,verbatim]
+\relative { a'8^"pizz." g f e a4-"scherz." f }
 @end lilypond
 
-This syntax is actually a shorthand; more complex text
-formatting may be added to a note by explicitly using a
-@code{\markup} block, as described in @ref{Formatting text}.
+This syntax is actually a shorthand; more complex text formatting may be
+added to a note by explicitly using a @code{\markup} block, as described
+in @ref{Formatting text}.
 
-@lilypond[quote,verbatim,relative=2]
-a8^\markup { \italic pizz. } g f e
-a4_\markup { \tiny scherz. \bold molto } f
+@lilypond[quote,verbatim]
+\relative {
+  a'8^\markup { \italic pizz. } g f e
+  a4_\markup { \tiny scherz. \bold molto } f }
 @end lilypond
 
-By default, text indications do not influence the note spacing.
-However, their widths can be taken into account:
-in the following example, the first text string does not affect
-spacing, whereas the second one does.
+By default, text indications do not influence the note spacing. However,
+their widths can be taken into account: in the following example, the
+first text string does not affect spacing, whereas the second one does.
 
-@lilypond[quote,verbatim,relative=2]
-a8^"pizz." g f e
-\textLengthOn
-a4_"scherzando" f
+@lilypond[quote,verbatim]
+\relative {
+  a'8^"pizz." g f e
+  \textLengthOn
+  a4_"scherzando" f
+}
 @end lilypond
 
 In addition to text scripts, articulations can be attached to notes.
@@ -90,23 +92,21 @@ For more information about the relative ordering of text scripts and
 articulations, see @rlearning{Placement of objects}.
 
 @funindex \textLengthOn
-@funindex textLengthOn
 @funindex \textLengthOff
-@funindex textLengthOff
 
 @predefined
 @code{\textLengthOn},
 @code{\textLengthOff}.
 @endpredefined
 
-
 @seealso
 Learning Manual:
 @rlearning{Placement of objects}.
 
 Notation Reference:
 @ref{Formatting text},
-@ref{Direction and placement}.
+@ref{Direction and placement},
+@ref{Articulations and ornamentations}.
 
 Snippets:
 @rlsr{Text}.
@@ -114,22 +114,18 @@ Snippets:
 Internals Reference:
 @rinternals{TextScript}.
 
-
 @cindex text outside margin
 @cindex margin, text running over
 @cindex text, keeping inside margin
 @cindex lyrics, keeping inside margin
 
-
 @knownissues
-
 Checking to make sure that text scripts and lyrics are within the
-margins is a relatively large computational task.  To speed up
-processing, LilyPond does not perform such calculations by
-default; to enable it, use
+margins requires additional calculations. In cases where slightly faster
+performance is desired, use
 
 @example
-\override Score.PaperColumn #'keep-inside-line = ##t
+\override Score.PaperColumn.keep-inside-line = ##f
 @end example
 
 
@@ -140,13 +136,16 @@ default; to enable it, use
 
 Some performance indications, e.g., @notation{rallentando} or
 @notation{accelerando}, are written as text and are extended over
-multiple notes with dotted lines.  Such objects, called @qq{spanners},
-may be created from one note to another using the following syntax:
+multiple notes with dotted lines.  Such objects, called
+@qq{spanners}, may be created from one note to another using the
+following syntax:
 
-@lilypond[verbatim,quote,relative=2]
-\override TextSpanner #'(bound-details left text) = "rit."
-b1\startTextSpan
-e,\stopTextSpan
+@lilypond[verbatim,quote]
+\relative {
+  \override TextSpanner.bound-details.left.text = "rit."
+  b'1\startTextSpan
+  e,\stopTextSpan
+}
 @end lilypond
 
 @cindex text spanners, formatting
@@ -155,26 +154,24 @@ e,\stopTextSpan
 @noindent
 The string to be printed is set through object properties.  By default
 it is printed in italic characters, but different formatting can be
-obtained using @code{\markup} blocks, as described in @ref{Formatting
-text}.
-
-@lilypond[quote,relative=2,verbatim]
-\override TextSpanner #'(bound-details left text) =
-  \markup { \upright "rit." }
-b1\startTextSpan c
-e,\stopTextSpan
+obtained using @code{\markup} blocks, as described in
+@ref{Formatting text}.
+
+@lilypond[quote,verbatim]
+\relative {
+  \override TextSpanner.bound-details.left.text =
+    \markup { \upright "rit." }
+  b'1\startTextSpan c
+  e,\stopTextSpan
+}
 @end lilypond
 
 The line style, as well as the text string, can be defined as an
 object property.  This syntax is described in @ref{Line styles}.
 
-
 @funindex \textSpannerUp
-@funindex textSpannerUp
 @funindex \textSpannerDown
-@funindex textSpannerDown
 @funindex \textSpannerNeutral
-@funindex textSpannerNeutral
 
 
 @predefined
@@ -186,13 +183,23 @@ object property.  This syntax is described in @ref{Line styles}.
 @knownissues
 LilyPond is only able to handle one text spanner per voice.
 
+@snippets
+
+@lilypondfile[verbatim,quote,texidoc,doctitle]
+{dynamics-text-spanner-postfix.ly}
+
+@lilypondfile[verbatim,quote,texidoc,doctitle]
+{dynamics-custom-text-spanner-postfix.ly}
+
 @seealso
 Notation Reference:
 @ref{Line styles},
-@ref{Dynamics}.
+@ref{Dynamics},
+@ref{Formatting text}.
 
 Snippets:
-@rlsr{Text}.
+@rlsr{Text},
+@rlsr{Expressive marks}.
 
 Internals Reference:
 @rinternals{TextSpanner}.
@@ -211,31 +218,36 @@ Internals Reference:
 @cindex bar lines, symbols on
 
 @funindex \mark
-@funindex mark
 @funindex \markup
-@funindex markup
 
-Various text elements may be added to a score using
-the syntax described in @ref{Rehearsal marks}:
+Various text elements may be added to a score using the syntax described
+in @ref{Rehearsal marks}:
 
 @c \mark needs to be placed on a separate line (it's not
 @c attached to an object like \markup is). -vv
 
-@lilypond[verbatim,quote,relative=2]
-c4
-\mark "Allegro"
-c c c
+@lilypond[verbatim,quote]
+\relative {
+  \mark "Verse"
+  c'2 g'
+  \bar "||"
+  \mark "Chorus"
+  g2 c,
+  \bar "|."
+}
 @end lilypond
 
 This syntax makes it possible to put any text on a bar line;
 more complex text formatting may be added using a @code{\markup}
 block, as described in @ref{Formatting text}:
 
-@lilypond[quote,verbatim,relative=1]
-<c e>1
-\mark \markup { \italic { colla parte } }
-<d f>2 <e g>
-<c f aes>1
+@lilypond[quote,verbatim]
+\relative {
+  <c' e>1
+  \mark \markup { \italic { colla parte } }
+  <d f>2 <e g>
+  <c f aes>1
+}
 @end lilypond
 
 @noindent
@@ -243,44 +255,52 @@ This syntax also allows to print special signs, like coda, segno
 or fermata, by specifying the appropriate symbol name as explained in
 @ref{Music notation inside markup}:
 
-@lilypond[quote,verbatim,relative=2]
-<bes f>2 <aes d>
-\mark \markup { \musicglyph #"scripts.ufermata" }
-<e g>1
+@lilypond[quote,verbatim]
+\relative {
+  <bes' f>2 <aes d>
+  \mark \markup { \musicglyph #"scripts.ufermata" }
+  <e g>1
+}
 @end lilypond
 
 @noindent
-Such objects are only typeset above the top staff of the score; depending on
-whether they are specified at the end or the middle of a bar, they
-can be placed above the bar line or between notes.  When specified at a
-line break, the mark will be printed at the beginning of the next line.
-
-@lilypond[quote,verbatim,relative=2]
-\mark "Allegro"
-c1 c
-\mark "assai" \break
-c  c
+Such objects are only typeset above the top staff of the score;
+depending on whether they are specified at the end or the middle of a
+bar, they can be placed above the bar line or between notes.  When
+specified at a line break, the mark will be printed at the beginning of
+the next line.
+
+@lilypond[quote,verbatim,ragged-right]
+\relative c'' {
+  \mark "Allegro"
+  c1 c
+  \mark "assai" \break
+  c  c
+}
 @end lilypond
 
+@funindex \markLengthOn
+@funindex \markLengthOff
+
+@predefined
+@code{\markLengthOn},
+@code{\markLengthOff}.
+@endpredefined
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-marks-at-the-end-of-a-line.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{aligning-marks-with-various-notation-objects.ly}
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-marks-on-every-staff.ly}
 
-
 @seealso
 Notation Reference:
 @ref{Rehearsal marks},
 @ref{Formatting text},
 @ref{Music notation inside markup},
-@ref{The Feta font}.
+@ref{The Emmentaler font}.
 
 Snippets:
 @rlsr{Text}.
@@ -302,7 +322,6 @@ Internals Reference:
 @cindex text, standalone
 
 @funindex \markup
-@funindex markup
 
 A @code{\markup} block can exist by itself, outside of any
 @code{\score} block, as a @qq{top-level expression}.  This syntax
@@ -338,22 +357,19 @@ requires, are described in @ref{Multi-page markup}.
 
 
 @funindex \markup
-@funindex markup
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
 
 @predefined
 @code{\markup},
-@code{\markuplines}.
+@code{\markuplist}.
 @endpredefined
 
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {stand-alone-two-column-markup.ly}
 
-
 @seealso
 Notation Reference:
 @ref{Formatting text},
@@ -392,7 +408,6 @@ using the @code{\markup} mode specific syntax.
 @cindex typeset text
 
 @funindex \markup
-@funindex markup
 
 A @code{\markup} block is used to typeset text with an extensible
 syntax called @qq{markup mode}.
@@ -403,8 +418,8 @@ syntax called @qq{markup mode}.
 @cindex syntax, markup
 
 The markup syntax is similar to LilyPond's usual syntax: a
-@code{\markup} expression is enclosed in curly braces @code{@{
-@dots{} @}}.  A single word is regarded as a minimal expression,
+@code{\markup} expression is enclosed in curly braces
+@code{@{@dots{} @}}.  A single word is regarded as a minimal expression,
 and therefore does not need to be enclosed with braces.
 
 Unlike simple @qq{quoted text} indications, @code{\markup} blocks may
@@ -412,14 +427,16 @@ contain nested expressions or markup commands, entered using the
 backslash @code{\} character.  Such commands only affect the first
 following expression.
 
-@lilypond[quote,verbatim,relative=2]
-a1-\markup intenso
-a2^\markup { poco \italic più forte  }
-c e1
-d2_\markup { \italic "string. assai" }
-e
-b1^\markup { \bold { molto \italic  agitato } }
-c
+@lilypond[quote,verbatim]
+\relative {
+  a'1-\markup intenso
+  a2^\markup { poco \italic più forte  }
+  c e1
+  d2_\markup { \italic "string. assai" }
+  e
+  b1^\markup { \bold { molto \italic  agitato } }
+  c
+}
 @end lilypond
 
 @cindex special characters in markup mode
@@ -432,15 +449,17 @@ c
 
 A @code{\markup} block may also contain quoted text strings.  Such
 strings are treated as minimal text expressions, and therefore any
-markup command or special character (such as @code{\} and @code{#})
+markup command or special character (such as @code{\} and@tie{}@code{#})
 will be printed verbatim without affecting the formatting of the text.
 Double quotation marks themselves may be printed by preceding them
 with backslashes.
 
-@lilypond[quote,verbatim,relative=2]
-a1^"\italic markup..."
-a_\markup { \italic "... prints \"italic\" letters!" }
-a a
+@lilypond[quote,verbatim]
+\relative {
+  a'1^"\italic markup..."
+  a_\markup { \italic "... prints \"italic\" letters!" }
+  a a
+}
 @end lilypond
 
 To be treated as a distinct expression, a list of words needs to be
@@ -449,11 +468,13 @@ expressions are defined affects how these expressions will be stacked,
 centered and aligned; in the following example, the second
 @code{\markup} expression is treated the same as the first one:
 
-@lilypond[quote,verbatim,relative=2]
-c1^\markup { \center-column { a bbb c } }
-c1^\markup { \center-column { a { bbb c } } }
-c1^\markup { \center-column { a \line { bbb c } } }
-c1^\markup { \center-column { a "bbb c" } }
+@lilypond[quote,verbatim]
+\relative c'' {
+  c1^\markup { \center-column { a bbb c } }
+  c1^\markup { \center-column { a { bbb c } } }
+  c1^\markup { \center-column { a \line { bbb c } } }
+  c1^\markup { \center-column { a "bbb c" } }
+}
 @end lilypond
 
 Markups can be stored in variables.  Such variables may be
@@ -473,7 +494,6 @@ allegro = \markup { \bold \large Allegro }
 An exhaustive list of @code{\markup}-specific commands can be found in
 @ref{Text markup commands}.
 
-
 @seealso
 Notation Reference:
 @ref{Text markup commands}.
@@ -481,13 +501,11 @@ Notation Reference:
 Snippets:
 @rlsr{Text}.
 
-Installed files:
-@file{scm/@/markup@/.scm}.
-
+Installed Files:
+@file{scm/markup.scm}.
 
 @knownissues
-
-Syntax errors for markup mode can be confusing.
+Syntax error messages for markup mode can be confusing.
 
 
 @node Selecting font and font size
@@ -498,77 +516,92 @@ Syntax errors for markup mode can be confusing.
 @cindex switching fonts
 
 @funindex \italic
-@funindex italic
 @funindex \bold
-@funindex bold
 @funindex \underline
-@funindex underline
 
 Basic font switching is supported in markup mode:
 
-@lilypond[quote,verbatim,relative=2]
-d1^\markup {
-  \bold { Più mosso }
-  \italic { non troppo \underline Vivo }
+@lilypond[quote,verbatim]
+\relative {
+  d''1^\markup {
+    \bold { Più mosso }
+    \italic { non troppo \underline Vivo }
+  }
+  r2 r4 r8
+  d,_\markup { \italic quasi \smallCaps Tromba }
+  f1 d2 r
 }
-r2 r4 r8
-d,_\markup { \italic quasi \smallCaps Tromba }
-f1 d2 r
 @end lilypond
 
 @cindex font size
 @cindex text size
 
+@funindex \abs-fontsize
 @funindex \fontsize
-@funindex fontsize
 @funindex \smaller
-@funindex smaller
 @funindex \larger
-@funindex larger
 @funindex \magnify
-@funindex magnify
 
-The size of the characters can also be altered in different ways:
-@itemize
-@item
-the font size can be set to predefined standard sizes,
+The font size can be altered, relative to the global staff size, in a
+number of different ways.
 
-@item
-the font size can be set to an absolute value,
+It can be set to predefined size.
 
-@item
-the font size can also be changed relatively to its previous value.
-@end itemize
+@lilypond[quote,verbatim]
+\relative b' {
+  b1_\markup { \huge Sinfonia }
+  b1^\markup { \teeny da }
+  b1-\markup { \normalsize camera }
+}
+@end lilypond
 
-@noindent
-The following example demonstrates these three methods:
+It can be set relative to its previous value.
 
-@lilypond[quote,verbatim,relative=1]
-f1_\markup {
-  \tiny espressivo
-  \large e
-  \normalsize intenso
+@lilypond[quote,verbatim]
+\relative b' {
+  b1_\markup { \larger Sinfonia }
+  b1^\markup { \smaller da }
+  b1-\markup { \magnify #0.6  camera }
 }
-a^\markup {
-  \fontsize #5 Sinfonia
-  \fontsize #2 da
-  \fontsize #3 camera
+@end lilypond
+
+It can be increased or decreased relative to the value set by the
+global staff size.
+
+@lilypond[quote,verbatim]
+\relative b' {
+  b1_\markup { \fontsize #-2 Sinfonia }
+  b1^\markup { \fontsize #1 da }
+  b1-\markup { \fontsize #3 camera }
 }
-bes^\markup { (con
-  \larger grande
-  \smaller emozione
-  \magnify #0.6 { e sentimento } )
+@end lilypond
+
+It can also be set to a fixed point-size, regardless of the global staff
+size.
+
+@lilypond[quote,verbatim]
+\relative b' {
+  b1_\markup { \abs-fontsize #20 Sinfonia }
+  b1^\markup { \abs-fontsize #8 da }
+  b1-\markup { \abs-fontsize #14 camera }
 }
-d c2 r8 c bes a g1
+@end lilypond
+
+If the text includes spaces, then it is best to put it all inside quote
+marks, so that the size of each space is appropriate for the size of the
+other characters.
+
+@lilypond[quote,verbatim]
+\markup \fontsize #6 \bold { Sinfonia da camera }
+\markup \fontsize #6 \bold { "Sinfonia da camera" }
 @end lilypond
 
 @cindex subscript
 @cindex superscript
 
 @funindex \super
-@funindex super
 @funindex \sub
-@funindex sub
+@funindex \normal-size-super
 
 Text may be printed as subscript or superscript.  By default these are
 printed in a smaller size, but a normal size can be used as well:
@@ -603,11 +636,11 @@ example, there is no difference between the first and the second word.
 
 @noindent
 Some of these font families, used for specific items such as numbers
-or dynamics, do not provide all characters, as mentioned in @ref{New
-dynamic marks} and @ref{Manual repeat marks}.
+or dynamics, do not provide all characters, as mentioned in
+@ref{New dynamic marks} and @ref{Manual repeat marks}.
 
 @c \concat is actually documented in Align (it is not
-@c a font-switching command). But we need it here. -vv
+@c a font-switching command).  But we need it here. -vv
 
 When used inside a word, some font-switching or formatting commands
 may produce an unwanted blank space.  This can easily be solved by
@@ -635,21 +668,13 @@ Defining custom font sets is also possible, as explained in
 @ref{Fonts}.
 
 @funindex \teeny
-@funindex teeny
 @funindex \tiny
-@funindex tiny
 @funindex \small
-@funindex small
 @funindex \normalsize
-@funindex normalsize
 @funindex \large
-@funindex large
 @funindex \huge
-@funindex huge
 @funindex \smaller
-@funindex smaller
 @funindex \larger
-@funindex larger
 
 
 @predefined
@@ -663,7 +688,6 @@ Defining custom font sets is also possible, as explained in
 @code{\larger}.
 @endpredefined
 
-
 @seealso
 Notation Reference:
 @ref{Font},
@@ -671,14 +695,20 @@ Notation Reference:
 @ref{Manual repeat marks},
 @ref{Fonts}.
 
+Installed Files:
+@file{scm/define-markup-commands.scm}.
+
 Snippets:
 @rlsr{Text}.
 
 Internals Reference:
 @rinternals{TextScript}.
 
-Installed files:
-@file{scm/@/define@/-markup@/-commands@/.scm}.
+@knownissues
+Using the font sizing commands @code{\teeny}, @code{\tiny},
+@code{\small}, @code{\normalsize}, @code{\large}, and
+@code{\huge} will lead to inconsistent line spacing compared to
+using @code{\fontsize}.
 
 
 @node Text alignment
@@ -702,55 +732,53 @@ objects can also be moved as a whole, using the syntax described in
 @cindex horizontal text alignment
 
 @funindex \left-align
-@funindex left-align
 @funindex \center-align
-@funindex center-align
 @funindex \right-align
-@funindex right-align
 
 Markup objects may be aligned in different ways.  By default, a text
 indication is aligned on its left edge: in the following example,
 there is no difference between the first and the second markup.
 
-@lilypond[quote,verbatim,relative=2]
-d1-\markup { poco }
-f
-d-\markup { \left-align poco }
-f
-d-\markup { \center-align { poco } }
-f
-d-\markup { \right-align poco }
+@lilypond[quote,verbatim]
+\relative {
+  d''1-\markup { poco }
+  f
+  d-\markup { \left-align poco }
+  f
+  d-\markup { \center-align { poco } }
+  f
+  d-\markup { \right-align poco }
+}
 @end lilypond
 
 @funindex \halign
-@funindex halign
 
 Horizontal alignment may be fine-tuned using a numeric value:
 
-@lilypond[quote,verbatim,relative=2]
-a1-\markup { \halign #-1 poco }
-e'
-a,-\markup { \halign #0 poco }
-e'
-a,-\markup { \halign #0.5 poco }
-e'
-a,-\markup { \halign #2 poco }
+@lilypond[quote,verbatim]
+\relative {
+  a'1-\markup { \halign #-1 poco }
+  e'
+  a,-\markup { \halign #0 poco }
+  e'
+  a,-\markup { \halign #0.5 poco }
+  e'
+  a,-\markup { \halign #2 poco }
+}
 @end lilypond
 
 @noindent
 Some objects may have alignment procedures of their own, and therefore
 are not affected by these commands.  It is possible to move such
-markup objects as a whole, as shown for instance in @ref{Text marks}.
+markup objects as a whole, as shown for instance in
+@ref{Text marks}.
 
 @cindex text, vertical alignment
 @cindex vertical text alignment
 
 @funindex \raise
-@funindex raise
 @funindex \lower
-@funindex lower
 @funindex \null
-@funindex null
 
 @c QUERY Should the function of ``\null'' be clarified? rp
 
@@ -762,50 +790,51 @@ another markup element or an invisible object.  The following example
 demonstrates these two possibilities; the last markup in this example
 has no anchor point, and therefore is not moved.
 
-@lilypond[quote,verbatim,relative=1]
-d2^\markup {
-  Acte I
-  \raise #2 { Scène 1 }
-}
-a'
-g_\markup {
-  \null
-  \lower #4 \bold { Très modéré }
-}
-a
-d,^\markup {
-  \raise #4 \italic { Une forêt. }
+@lilypond[quote,verbatim]
+\relative {
+  d'2^\markup {
+    Acte I
+    \raise #2 { Scène 1 }
+  }
+  a'
+  g_\markup {
+    \null
+    \lower #4 \bold { Très modéré }
+  }
+  a
+  d,^\markup {
+    \raise #4 \italic { Une forêt. }
+  }
+  a'4 a g2 a
 }
-a'4 a g2 a
 @end lilypond
 
 @funindex \general-align
-@funindex general-align
 @funindex \translate
-@funindex translate
 @funindex \translate-scaled
-@funindex translate-scaled
 
 Some commands can affect both the horizontal and vertical alignment of
 text objects in markup mode.  Any object affected by these commands
 must be preceded with an anchor point:
 
-@lilypond[quote,verbatim,relative=1]
-d2^\markup {
-  Acte I
-  \translate #'(-1 . 2) "Scène 1"
-}
-a'
-g_\markup {
-  \null
-  \general-align #Y #3.2 \bold "Très modéré"
-}
-a
-d,^\markup {
-  \null
-  \translate-scaled #'(-1 . 2) \teeny "Une forêt."
+@lilypond[quote,verbatim]
+\relative {
+  d'2^\markup {
+    Acte I
+    \translate #'(-1 . 2) "Scène 1"
+  }
+  a'
+  g_\markup {
+    \null
+    \general-align #Y #3.2 \bold "Très modéré"
+  }
+  a
+  d,^\markup {
+    \null
+    \translate-scaled #'(-1 . 2) \teeny "Une forêt."
+  }
+  a'4 a g2 a
 }
-a'4 a g2 a
 @end lilypond
 
 @cindex multi-line markup
@@ -816,9 +845,7 @@ a'4 a g2 a
 @cindex columns, text
 
 @funindex \column
-@funindex column
 @funindex \center-column
-@funindex center-column
 
 A markup object may include several lines of text.  In the following
 example, each element or expression is placed on its own line, either
@@ -845,7 +872,6 @@ left-aligned or centered:
 @cindex markup, centering on the page
 
 @funindex \fill-line
-@funindex fill-line
 
 Similarly, a list of elements or expressions may be spread to fill the
 entire horizontal line width (if there is only one element, it will be
@@ -877,9 +903,7 @@ multi-line text or any other markup expression:
 @cindex markup text, justified
 
 @funindex \wordwrap
-@funindex wordwrap
 @funindex \justify
-@funindex justify
 
 Long text indications can also be automatically wrapped accordingly to
 the given line width.  These will be either left-aligned or justified,
@@ -892,7 +916,7 @@ as shown in the following example.
     \line \bold { Acto I }
     \wordwrap \italic {
       (La escena representa el corral de una casa de
-      gitanos en el Albaicín de Granada. Al fondo una
+      gitanos en el Albaicín de Granada.  Al fondo una
       puerta por la que se ve el negro interior de
       una Fragua, iluminado por los rojos resplandores
       del fuego.)
@@ -902,7 +926,7 @@ as shown in the following example.
     \line \bold { Acto II }
     \override #'(line-width . 50)
     \justify \italic {
-      (Calle de Granada. Fachada de la casa de Carmela
+      (Calle de Granada.  Fachada de la casa de Carmela
       y su hermano Manuel con grandes ventanas abiertas
       a través de las que se ve el patio
       donde se celebra una alegre fiesta)
@@ -918,7 +942,6 @@ as shown in the following example.
 An exhaustive list of text alignment commands can be found in
 @ref{Align}.
 
-
 @seealso
 Learning Manual:
 @rlearning{Moving objects}.
@@ -927,15 +950,15 @@ Notation Reference:
 @ref{Align},
 @ref{Text marks}.
 
+Installed Files:
+@file{scm/define-markup-commands.scm}.
+
 Snippets:
 @rlsr{Text}.
 
 Internals Reference:
 @rinternals{TextScript}.
 
-Installed files:
-@file{scm/@/define@/-markup@/-commands@/.scm}.
-
 
 @node Graphic notation inside markup
 @unnumberedsubsubsec Graphic notation inside markup
@@ -957,15 +980,10 @@ commands.
 @cindex markup text, framing
 
 @funindex \box
-@funindex box
 @funindex \circle
-@funindex circle
 @funindex \rounded-box
-@funindex rounded-box
 @funindex \bracket
-@funindex bracket
 @funindex \hbracket
-@funindex hbracket
 
 Some markup commands allow decoration of text elements with graphics,
 as demonstrated in the following example.
@@ -992,13 +1010,9 @@ as demonstrated in the following example.
 @cindex markup text padding
 
 @funindex \pad-markup
-@funindex pad-markup
 @funindex \pad-x
-@funindex pad-x
 @funindex \pad-to-box
-@funindex pad-to-box
 @funindex \pad-around
-@funindex pad-around
 
 Some commands may require an increase in the padding around the text;
 this is achieved with some markup commands exhaustively described in
@@ -1032,17 +1046,11 @@ Flute quartet keeps very uneven time."
 @cindex notation, graphic
 
 @funindex \combine
-@funindex combine
 @funindex \draw-circle
-@funindex draw-circle
 @funindex \filled-box
-@funindex filled-box
 @funindex \triangle
-@funindex triangle
 @funindex \draw-line
-@funindex draw-line
 @funindex \arrow-head
-@funindex arrow-head
 
 Other graphic elements or symbols may be printed without requiring any
 text.  As with any markup expression, such objects can be combined.
@@ -1069,9 +1077,7 @@ text.  As with any markup expression, such objects can be combined.
 @cindex postscript
 
 @funindex \epsfile
-@funindex epsfile
 @funindex \postscript
-@funindex postscript
 
 Advanced graphic features include the ability to include external
 image files converted to the Encapsulated PostScript format
@@ -1079,8 +1085,8 @@ image files converted to the Encapsulated PostScript format
 native PostScript code.  In such a case, it may be useful to
 explicitly specify the size of the drawing, as demonstrated below:
 
-@lilypond[quote,verbatim,relative=1]
-c1^\markup {
+@lilypond[quote,verbatim,fragment]
+c'1^\markup {
   \combine
     \epsfile #X #10 #"./context-example.eps"
     \with-dimensions #'(0 . 6) #'(0 . 10)
@@ -1096,17 +1102,22 @@ c1^\markup {
       closepath
       stroke"
   }
-c
+c'
 @end lilypond
 
 An exhaustive list of graphics-specific commands can be found in
 @ref{Graphic}.
 
-
 @seealso
 Notation Reference:
-@ref{Graphic},
-@ref{Editorial annotations}.
+@ref{Align},
+@ref{Dimensions},
+@ref{Editorial annotations},
+@ref{Graphic}.
+
+Installed Files:
+@file{scm/define-markup-commands.scm},
+@file{scm/stencil.scm}.
 
 Snippets:
 @rlsr{Text}.
@@ -1114,10 +1125,6 @@ Snippets:
 Internals Reference:
 @rinternals{TextScript}.
 
-Installed files:
-@file{scm/@/define@/-markup@/-commands@/.scm},
-@file{scm/@/stencil@/.scm}.
-
 
 @node Music notation inside markup
 @unnumberedsubsubsec Music notation inside markup
@@ -1131,79 +1138,82 @@ markup object.
 
 Notes and accidentals can be entered using markup commands:
 
-@lilypond[quote,verbatim,relative=2]
-a2 a^\markup {
+@lilypond[quote,verbatim,fragment]
+a'2 a'^\markup {
   \note #"4" #1
   =
   \note-by-number #1 #1 #1.5
 }
-b1_\markup {
+b'1_\markup {
   \natural \semiflat \flat
   \sesquiflat \doubleflat
 }
 \glissando
-a1_\markup {
+a'1_\markup {
   \natural \semisharp \sharp
   \sesquisharp \doublesharp
 }
-\glissando b
+\glissando b'
 @end lilypond
 
 Other notation objects may also be printed
 in markup mode:
 
-@lilypond[quote,verbatim,relative=1]
-g1 bes
-ees-\markup {
-  \finger 4
-  \tied-lyric #"~"
-  \finger 1
-}
-fis_\markup { \dynamic rf }
-bes^\markup {
-  \beam #8 #0.1 #0.5
-}
-cis
-d-\markup {
-  \markalphabet #8
-  \markletter #8
+@lilypond[quote,verbatim]
+\relative {
+  g1 bes
+  ees\finger \markup \tied-lyric #"4~1"
+  fis_\markup { \dynamic rf }
+  bes^\markup {
+    \beam #8 #0.1 #0.5
+  }
+  cis
+  d-\markup {
+    \markalphabet #8
+    \markletter #8
+  }
 }
 @end lilypond
 
 More generally, any available musical symbol may be included
 separately in a markup object, as demonstrated below; an exhaustive
-list of these symbols and their names can be found in @ref{The Feta
-font}.
-
-@lilypond[quote,verbatim,relative=2]
-c2
-c'^\markup { \musicglyph #"eight" }
-c,4
-c,8._\markup { \musicglyph #"clefs.G_change" }
-c16
-c2^\markup { \musicglyph #"timesig.neomensural94" }
+list of these symbols and their names can be found in
+@ref{The Emmentaler font}.
+
+@lilypond[quote,verbatim]
+\relative {
+  c''2
+  c'^\markup { \musicglyph #"eight" }
+  c,4
+  c,8._\markup { \musicglyph #"clefs.G_change" }
+  c16
+  c2^\markup { \musicglyph #"timesig.neomensural94" }
+}
 @end lilypond
 
-Another way of printing non-text glyphs is described in @ref{Fonts
-explained}.  This is useful for printing braces of various sizes.
+Another way of printing non-text glyphs is described in
+@ref{Fonts explained}.  This is useful for printing braces of various
+sizes.
 
 The markup mode also supports diagrams for specific
 instruments:
 
-@lilypond[quote,verbatim,relative=2]
-c1^\markup {
-  \fret-diagram-terse #"x;x;o;2;3;2;"
-}
-c^\markup {
-  \harp-pedal #"^-v|--ov^"
-}
-c
-c^\markup {
-  \combine
-    \musicglyph #"accordion.accDiscant"
+@lilypond[quote,verbatim]
+\relative {
+  c''1^\markup {
+    \fret-diagram-terse #"x;x;o;2;3;2;"
+  }
+  c^\markup {
+    \harp-pedal #"^-v|--ov^"
+  }
+  c
+  c^\markup {
     \combine
-      \raise #0.5 \musicglyph #"accordion.accDot"
-      \raise #1.5 \musicglyph #"accordion.accDot"
+      \musicglyph #"accordion.discant"
+      \combine
+       \raise #0.5 \musicglyph #"accordion.dot"
+       \raise #1.5 \musicglyph #"accordion.dot"
+  }
 }
 @end lilypond
 
@@ -1219,38 +1229,39 @@ A whole score can even be nested inside a markup object.  In such a
 case, the nested @code{\score} block must contain a @code{\layout}
 block, as demonstrated here:
 
-@lilypond[quote,verbatim,relative=1]
-c4 d^\markup {
-  \score {
-    \relative c' { c4 d e f }
-    \layout { }
+@lilypond[quote,verbatim]
+\relative {
+  c'4 d^\markup {
+    \score {
+      \relative { c'4 d e f }
+      \layout { }
+    }
   }
+  e f |
+  c d e f
 }
-e f |
-c d e f
 @end lilypond
 
 An exhaustive list of music notation related commands can be found in
 @ref{Music}.
 
-
 @seealso
 Notation Reference:
 @ref{Music},
-@ref{The Feta font},
+@ref{The Emmentaler font},
 @ref{Fonts explained}.
 
+Installed Files:
+@file{scm/define-markup-commands.scm},
+@file{scm/fret-diagrams.scm},
+@file{scm/harp-pedals.scm}.
+
 Snippets:
 @rlsr{Text}.
 
 Internals Reference:
 @rinternals{TextScript}.
 
-Installed files:
-@file{scm/@/define@/-markup@/-commands@/.scm},
-@file{scm/@/fret@/-diagrams@/.scm},
-@file{scm/@/harp@/-pedals@/.scm}.
-
 
 @node Multi-page markup
 @unnumberedsubsubsec Multi-page markup
@@ -1260,19 +1271,16 @@ Installed files:
 @cindex markup text, multi-page
 @cindex text spread over multiple pages
 
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
 @funindex \justified-lines
-@funindex justified-lines
 @funindex \wordwrap-lines
-@funindex wordwrap-lines
 
 Although standard markup objects are not breakable, a specific syntax
 makes it possible to enter lines of text that can spread over multiple
 pages:
 
 @lilypond[quote,verbatim]
-\markuplines {
+\markuplist {
   \justified-lines {
     A very long text of justified lines.
     ...
@@ -1298,29 +1306,26 @@ a list of markup lists.
 An exhaustive list of markup list commands can be found in
 @ref{Text markup list commands}.
 
-
 @seealso
 Notation Reference:
-@ref{Text markup list commands},
+@ref{Text markup list commands}.
+
+Extending LilyPond:
+@rextend{New markup list command definition}.
+
+Installed Files:
+@file{scm/define-markup-commands.scm}.
 
 Snippets:
 @rlsr{Text}.
 
-Extending:
-@rextend{New markup list command definition}.
-
 Internals Reference:
 @rinternals{TextScript}.
 
-Installed files:
-@file{scm/@/define@/-markup@/-commands@/.scm}.
-
-
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
 
 @predefined
-@code{\markuplines}.
+@code{\markuplist}.
 @endpredefined
 
 
@@ -1352,12 +1357,11 @@ detect available fonts on the system; the selected fonts are rendered
 using Pango.
 
 Music notation fonts can be described as a set of specific glyphs,
-ordered in several families.  The following syntax allows various
-LilyPond @code{feta} non-text fonts to be used directly in markup
-mode:
+ordered in several families.  The following syntax allows LilyPond's
+various @emph{Feta} glyphs to be used directly in markup mode:
 
-@lilypond[quote,verbatim,relative=2]
-a1^\markup {
+@lilypond[quote,verbatim,fragment]
+a'1^\markup {
   \vcenter {
     \override #'(font-encoding . fetaBraces)
     \lookup #"brace120"
@@ -1382,30 +1386,74 @@ value must be determined by trial and error.  These glyphs are all
 left braces; right braces may be obtained by rotation, see
 @ref{Rotating objects}.
 
-Three families of text fonts are made available: the @emph{roman}
-(serif) font, that defaults to New Century Schoolbook, the @emph{sans}
-font and the monospaced @emph{typewriter} font -- these last two
-families are determined by the Pango installation.
+Three families of text fonts are made available:
+the @emph{roman} (serif) font,
+the @emph{sans} font, and the @emph{typewriter} font.
+
+For @code{svg} backend:
+@multitable @columnfractions .15 .30
+@headitem Family @tab Default font
+@item @emph{roman} @tab @code{serif}
+@item @emph{sans} @tab @code{sans-serif}
+@item @emph{typewriter} @tab @code{monospace}
+@end multitable
+
+@code{serif}, @code{sans-serif}, and @code{monospace} are
+@code{generic-family} in SVG and CSS specifications.
+
+For other backends:
+@multitable @columnfractions .15 .30 .55
+@headitem Family @tab Default font (alias) @tab Alias definition lists
+@item @emph{roman}
+@tab @code{LilyPond Serif}
+@tab
+TeX Gyre Schola,
+C059, Century SchoolBook URW, Century Schoolbook L,
+DejaVu Serif,
+..., serif
+@item @emph{sans}
+@tab @code{LilyPond Sans Serif}
+@tab
+TeX Gyre Heros,
+Nimbus Sans, Nimbus Sans L, DejaVu Sans,
+..., sans-serif
+@item @emph{typewriter}
+@tab @code{LilyPond Monospace}
+@tab
+TeX Gyre Cursor,
+Nimbus Mono PS, Nimbus Mono, Nimbus Mono L,
+DejaVu Sans Mono,
+..., monospace
+@end multitable
+
+@code{LilyPond Serif}, @code{LilyPond Sans Serif},
+and @code{LilyPond Monospace} are font aliases defined
+in the LilyPond dedicated FontConfig configuration file
+@code{00-lilypond-fonts.conf}.
+Where a character dosen't exist in the first font listed,
+the next font listed will be used instead for that character.
+For details of alias definitions, please see
+to @code{00-lilypond-fonts.conf} under the installed directory.
 
 Each family may include different shapes and series.  The following
 example demonstrates the ability to select alternate families, shapes,
 series and sizes.  The value supplied to @code{font-size} is the
 required change from the default size.
 
-@lilypond[quote,verbatim,relative=2]
-\override Score.RehearsalMark #'font-family = #'typewriter
+@lilypond[quote,verbatim,fragment]
+\override Score.RehearsalMark.font-family = #'typewriter
 \mark \markup "Ouverture"
-\override Voice.TextScript #'font-shape = #'italic
-\override Voice.TextScript #'font-series = #'bold
-d2.^\markup "Allegro"
-\override Voice.TextScript #'font-size = #-3
-c4^smaller
+\override Voice.TextScript.font-shape = #'italic
+\override Voice.TextScript.font-series = #'bold
+d''2.^\markup "Allegro"
+\override Voice.TextScript.font-size = #-3
+c''4^smaller
 @end lilypond
 
 @noindent
 A similar syntax may be used in markup mode; however in this case it
-is preferable to use the simpler syntax explained in @ref{Selecting
-font and font size}:
+is preferable to use the simpler syntax explained in
+@ref{Selecting font and font size}:
 
 @lilypond[quote,verbatim]
 \markup {
@@ -1429,15 +1477,51 @@ font and font size}:
 }
 @end lilypond
 
+@noindent
+When using OpenType fonts, font features can be used.
+OpenType font scripts and languages can not be specified.
+Note: Not all OpenType fonts have all functions.
+If you request a feature that doesn't exist in the chosen font,
+then the feature is simply ignored.
+
+@lilypond[quote,verbatim]
+% True small caps
+\markup { Normal Style: Hello HELLO }
+\markup { \caps { Small Caps: Hello } }
+\markup { \override #'(font-features . ("smcp"))
+          { True Small Caps: Hello } }
+
+% Number styles
+\markup { Normal Number Style: 0123456789 }
+\markup { \override #'(font-features . ("onum"))
+          { Old Number Style: 0123456789 } }
+
+% Stylistic Alternates
+\markup { \override #'(font-features . ("salt 0"))
+          { Stylistic Alternates 0: εφπρθ } }
+\markup { \override #'(font-features . ("salt 1"))
+          { Stylistic Alternates 1: εφπρθ } }
+
+% Multiple features
+\markup { \override #'(font-features . ("onum" "smcp" "salt 1"))
+          { Multiple features: Hello 0123456789 εφπρθ } }
+@end lilypond
+
+@noindent For the full OpenType font feature list please see:
+@uref{https://www.microsoft.com/typography/otspec/featurelist.htm}
+
+@noindent For identifying features of OpenType fonts please see:
+@uref{http://lists.gnu.org/archive/html/lilypond-devel/2017-08/msg00004.html}
+
 Although it is easy to switch between preconfigured fonts, it is also
 possible to use other fonts, as explained in the following sections:
 @ref{Single entry fonts} and @ref{Entire document fonts}.
 
-
 @seealso
 Notation Reference:
-@ref{The Feta font},
+@ref{The Emmentaler font},
 @ref{Music notation inside markup},
+@ref{Rotating objects},
 @ref{Selecting font and font size},
 @ref{Font}.
 
@@ -1448,14 +1532,14 @@ Notation Reference:
 Any font that is installed on the operating system and recognized by
 FontConfig may be used in a score, using the following syntax:
 
-@lilypond[quote,verbatim,relative=2]
-\override Staff.TimeSignature #'font-name = #"Bitstream Charter"
-\override Staff.TimeSignature #'font-size = #2
+@lilypond[quote,verbatim,fragment]
+\override Staff.TimeSignature.font-name = #"Bitstream Charter"
+\override Staff.TimeSignature.font-size = #2
 \time 3/4
 
-a1_\markup {
-  \override #'(font-name . "Vera Bold")
-    { Vera Bold }
+a'1_\markup {
+  \override #'(font-name . "Bitstream Vera Sans,sans-serif, Oblique Bold")
+    { Vera Oblique Bold }
 }
 @end lilypond
 
@@ -1464,16 +1548,21 @@ a1_\markup {
 @cindex listing available fonts
 @cindex available fonts, listing
 
+@var{font-name} can be described using a comma-separated list of @q{fonts}
+and a white-space separated list of @q{styles}.
+As long as the @q{font} in the list is installed
+and contains requested glyph, it will be used,
+otherwise the @emph{next} font in the list will be used instead.
+
 @funindex show-available-fonts
 
-The following command displays a list of all available fonts on the
-operating system:
+Running lilypond with the following option displays a list of all
+available fonts on the operating system:
 
 @example
 lilypond -dshow-available-fonts x
 @end example
 
-
 @seealso
 Notation Reference:
 @ref{Fonts explained},
@@ -1483,8 +1572,8 @@ Snippets:
 @rlsr{Text}.
 
 @c A source file gets never installed...
-@c Installed files:
-@c @file{lily/@/font@/-config@/-scheme@/.cc}.
+@c Installed Files:
+@c @file{lily/font-config-scheme.cc}.
 
 
 @node Entire document fonts
@@ -1492,8 +1581,11 @@ Snippets:
 
 It is possible to change the fonts to be used as the default fonts in
 the @emph{roman}, @emph{sans} and @emph{typewriter} font families by
-specifying them, in that order, as shown in the example below.  For an
-explanation of fonts, see @ref{Fonts explained}.
+specifying them, in that order, as shown in the example below, which
+automatically scales the fonts with the value set for the global staff
+size. Similar to @ref{Single entry fonts}, it can be described using a
+comma-separated list of @q{fonts}. However, font @q{styles} can not be
+described. For an explanation of fonts, see @ref{Fonts explained}.
 
 @cindex font families, setting
 @cindex fonts, changing for entire document
@@ -1502,12 +1594,11 @@ explanation of fonts, see @ref{Fonts explained}.
 
 @lilypond[verbatim,quote]
 \paper  {
-  myStaffSize = #20
   #(define fonts
     (make-pango-font-tree "Times New Roman"
-                          "Nimbus Sans"
+                          "Nimbus Sans,Nimbus Sans L"
                           "Luxi Mono"
-                           (/ myStaffSize 20)))
+                          (/ staff-height pt 20)))
 }
 
 \relative c'{
@@ -1521,7 +1612,6 @@ explanation of fonts, see @ref{Fonts explained}.
 @c we don't do Helvetica / Courier, since GS incorrectly loads
 @c Apple TTF fonts
 
-
 @seealso
 Notation Reference:
 @ref{Fonts explained},