X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fnotation%2Ftext.itely;h=fabee1a937628909748f2d94d01e25dd157cb045;hb=07125596018d32e3235e80627915cfac77323272;hp=14ff59f636bd9d47ab4c0099b456cba79b36c78d;hpb=ff6a7dbf042a49cf966b09f6a0a9b744c8211dbe;p=lilypond.git diff --git a/Documentation/notation/text.itely b/Documentation/notation/text.itely index 14ff59f636..fabee1a937 100644 --- a/Documentation/notation/text.itely +++ b/Documentation/notation/text.itely @@ -7,7 +7,7 @@ Guide, node Updating translation committishes.. @end ignore -@c \version "2.13.36" +@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,28 +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}. -Text spanners are part of the @code{Dynamics} context; see -@rinternals{Dynamics}. - @funindex \textSpannerUp -@funindex textSpannerUp @funindex \textSpannerDown -@funindex textSpannerDown @funindex \textSpannerNeutral -@funindex textSpannerNeutral @predefined @@ -190,24 +185,24 @@ LilyPond is only able to handle one text spanner per voice. @snippets -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@lilypondfile[verbatim,quote,texidoc,doctitle] {dynamics-text-spanner-postfix.ly} -@lilypondfile[verbatim,lilyquote,texidoc,doctitle] +@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{Expressive marks}. Internals Reference: -@rinternals{TextSpanner}, -@rinternals{Dynamics}. +@rinternals{TextSpanner}. @node Text marks @@ -223,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] -1 -\mark \markup { \italic { colla parte } } -2 -1 +@lilypond[quote,verbatim] +\relative { + 1 + \mark \markup { \italic { colla parte } } + 2 + 1 +} @end lilypond @noindent @@ -255,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] -2 -\mark \markup { \musicglyph #"scripts.ufermata" } -1 +@lilypond[quote,verbatim] +\relative { + 2 + \mark \markup { \musicglyph #"scripts.ufermata" } + 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}. @@ -314,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 @@ -350,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}, @@ -404,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}. @@ -415,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 @@ -424,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 @@ -444,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 @@ -461,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 @@ -485,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}. @@ -496,10 +504,8 @@ Snippets: 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 @@ -510,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: @@ -615,8 +636,8 @@ 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 @@ -647,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 @@ -675,7 +688,6 @@ Defining custom font sets is also possible, as explained in @code{\larger}. @endpredefined - @seealso Notation Reference: @ref{Font}, @@ -683,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 @@ -714,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 @@ -774,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 @@ -828,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 @@ -857,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 @@ -889,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, @@ -930,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}. @@ -939,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 @@ -969,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. @@ -1004,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 @@ -1044,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. @@ -1081,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 @@ -1091,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) @@ -1108,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}. @@ -1126,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 @@ -1143,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.discant" +@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.dot" - \raise #1.5 \musicglyph #"accordion.dot" + \musicglyph #"accordion.discant" + \combine + \raise #0.5 \musicglyph #"accordion.dot" + \raise #1.5 \musicglyph #"accordion.dot" + } } @end lilypond @@ -1231,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 @@ -1272,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. ... @@ -1310,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}, - -Snippets: -@rlsr{Text}. +@ref{Text markup list commands}. -Extending: +Extending LilyPond: @rextend{New markup list command definition}. -Internals Reference: -@rinternals{TextScript}. - Installed Files: @file{scm/define-markup-commands.scm}. +Snippets: +@rlsr{Text}. + +Internals Reference: +@rinternals{TextScript}. -@funindex \markuplines -@funindex markuplines +@funindex \markuplist @predefined -@code{\markuplines}. +@code{\markuplist}. @endpredefined @@ -1364,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" @@ -1394,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 { @@ -1441,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}. @@ -1460,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 @@ -1476,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}, @@ -1504,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 @@ -1514,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'{ @@ -1533,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},