1.8.3 フォント

このセクションでは、フォントを扱う方法と、楽譜の中でフォントを変更する方法について説明します。


フォントの説明

フォントはいくつかのライブラリを通じて扱われます。FontConfig は利用可能なフォントを検出するために使用されます。選択されたフォントは Pango を用いて描かれます。

オペレーティング システムに既にインストールされているフォントに加えて、次のコマンドを使用して、FontConfig によって検出された (したがって LilyPond スコアで利用できる) セットに追加のフォントを追加できます:

#(ly:font-config-add-font "path/to/font-file.otf")

#(ly:font-config-add-directory "path/to/directory/")

これらのコマンドはどちらも、絶対パスまたは相対パスのいずれかを受け入れます。これにより、関連するフォントファイルをソースコードとともにコピーするだけで、任意のシステムで楽譜をコンパイルできます。

検出されたフォントは、個々に登録するフォント および ドキュメント全体のフォント で説明されている方法を使用して選択する必要があります。使用可能なフォントの完全なリストをコンソールログに出力するときに、 #(ly:font-config-display-fonts) コマンドを使用して、実際に検出されたフォントとその名前を確認することができます (これらはファイル名自体とは異なる場合があるため)。

音楽記譜フォントはいくつかのファミリに分類された特殊な図柄のセットと言うことができます。以下の構文により、LilyPond のさまざまな Feta グリフをマークアップ モードの中で直接使用することが可能になります:

a'1^\markup {
  \vcenter {
    \override #'(font-encoding . fetaBraces)
    \lookup "brace120"
    \override #'(font-encoding . fetaText)
    \column { 1 3 sf }
    \override #'(font-encoding . fetaMusic)
    \lookup "noteheads.s0petrucci"
  }
}

[image of music]

しかしながら、これらの図柄はすべて – fetaBraces で保持されているさまざまサイズの波括弧を除いて – は、マークアップ内部での音楽記譜法 で記述されている、もっと簡単な構文を用いて利用することができます。

fetaBraces に保持されている図柄を使う場合、波括弧のサイズは図柄名の一部となっている任意の数値によって指定されます。0 から 575 までの整数すべてを指定でき、0 は最小の波括弧を提供します。最適な値はトライ&エラーで決定する必要があります。これらの図柄はすべて左波括弧です。右波括弧は回転によって得ることができます – オブジェクトを回転させる を参照してください。

3 ファミリのテキスト フォントが利用可能になっています:

roman (serif) フォント、 sans フォント、typewriter フォントです。

svg バックエンドでは:

ファミリデフォルト フォント
romanserif
sanssans-serif
typewritermonospace

serif, sans-serif, and monospace は、SVG や CSS の仕様における generic-family です。

他のバックエンドでは:

ファミリデフォルト フォント (エイリアス)エイリアス定義のリスト
romanLilyPond SerifTeX Gyre Schola, C059, Century SchoolBook URW, Century Schoolbook L, DejaVu Serif, ..., serif
sansLilyPond Sans SerifTeX Gyre Heros, Nimbus Sans, Nimbus Sans L, DejaVu Sans, ..., sans-serif
typewriterLilyPond MonospaceTeX Gyre Cursor, Nimbus Mono PS, Nimbus Mono, Nimbus Mono L, DejaVu Sans Mono, ..., monospace

LilyPond Serif, LilyPond Sans Serif, LilyPond Monospace は、LilyPond 専用の FontConfig 設定ファイル 00-lilypond-fonts.conf に定義されたフォント エイリアスです。ある文字がリストの最初にあるフォントに存在しない場合、その文字を持つリストの次のフォントが代わりに使用されます。エイリアス定義の詳細については、インストール ディレクトリ中の 00-lilypond-fonts.conf を参照してください。

それぞれのファミリには異なる形状とセットのフォントが保持されています。以下の例は、ファミリ、形状、セットそれにサイズを変更する様子を示しています。デフォルト サイズから変更する場合、font-size に提供する値が必要となります。

\override Score.RehearsalMark.font-family = #'typewriter
\mark \markup "Ouverture"
\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

[image of music]

同様の構文をマークアップ モードの中で使用することができます。しかしながら、マークアップ モードの中では、フォントとフォント サイズを選択する で説明されている、もっと簡単な構文を使用するほうが良いでしょう:

\markup {
  \column {
    \line {
      \override #'((font-shape . italic) (font-size . 4))
      Idomeneo,
    }
    \line {
      \override #'(font-family . typewriter)
      {
        \override #'(font-series . bold)
        re
        di
      }
      \override #'(font-family . sans)
      Creta
    }
  }
}

[image of music]

OpenType フォントを使用している場合、フォント機能を使用することができます。OpenType フォントの script と language は指定できません。注: 全ての OpenType フォントが機能をサポートしているとは限りません。使用するフォントに無い機能を使用しようとした場合、機能は単純に無視されます。

% 真のスモール キャピタル
\markup { Normal Style: Hello HELLO }
\markup { \caps { Small Caps: Hello } }
\markup { \override #'(font-features . ("smcp"))
          { True Small Caps: Hello } }

% 数字スタイル
\markup { Normal Number Style: 0123456789 }
\markup { \override #'(font-features . ("onum"))
          { Old Number Style: 0123456789 } }

% 代替スタイル
\markup { \override #'(font-features . ("salt 0"))
          { Stylistic Alternates 0: εφπρθ } }
\markup { \override #'(font-features . ("salt 1"))
          { Stylistic Alternates 1: εφπρθ } }

% 機能の組み合わせ
\markup { \override #'(font-features . ("onum" "smcp" "salt 1"))
          { Multiple features: Hello 0123456789 εφπρθ } }

[image of music]

OpenType 機能の完全な一覧は以下を参照してください: https://www.microsoft.com/typography/otspec/featurelist.htm

OpenType フォントの機能を識別するには以下を参照してください: https://lists.gnu.org/archive/html/lilypond-devel/2017-08/msg00004.html

あらかじめ構成されているフォント間で切り替えを行う方が簡単ですが、他のフォントを使用することも可能です。他のフォントを使用する方法は以下のセクションで説明されています: 個々に登録するフォントドキュメント全体のフォント

参照

記譜法リファレンス: Emmentaler フォント, マークアップ内部での音楽記譜法, オブジェクトを回転させる, フォントとフォント サイズを選択する, フォント


個々に登録するフォント

以下の構文を用いることで、オペレーティング システムにインストールされていて、FontConfig に認識されている任意のフォントを楽譜の中で使用することができます:

\override Staff.TimeSignature.font-name = "Bitstream Charter"
\override Staff.TimeSignature.font-size = #2
\time 3/4

a'1_\markup {
  \override #'(font-name . "Bitstream Vera Sans,sans-serif, Oblique Bold")
    { Vera Oblique Bold }
}

[image of music]

font-name はカンマ区切りの ‘フォント’ のリストと、スペース区切りの ‘スタイル’ のリストを記述できます。リスト中の ‘フォント’ がインストールされていて、要求されたグリフを含んでいれば、それが使われます。そうでないなら代わりにリストの のフォントが使われます。

lilypond を以下のオプションを付けて実行するとオペレーティング システムで利用可能なすべてのフォントのリストを表示します:

lilypond -dshow-available-fonts

参照

記譜法リファレンス: フォントの説明, ドキュメント全体のフォント

コード断片集: Text


ドキュメント全体のフォント

以下の例で示す方法に従ってフォント ファミリを指定することにより、roman, sans それに typewriter フォント ファミリとして使用されるデフォルト フォントを変更することができます。この例ではグローバル譜サイズにセットされた値で自動的にフォントのサイズを伸縮しています。個々に登録するフォント のように、カンマ区切りの ‘フォント’ のリストを記述できます。しかし、フォント ‘スタイル’ は記述できません。フォントについての説明は、フォントの説明 を参照してください。

\paper  {
  #(define fonts
    (make-pango-font-tree "Linux Libertine O"
                          "Nimbus Sans, Nimbus Sans L"
                          "DejaVu Sans Mono"
                          (/ staff-height pt 20)))
}

\relative c'{
  c1-\markup {
    roman,
    \sans sans,
    \typewriter typewriter. }
}

[image of music]

注: make-pango-font-tree は記譜フォントをデフォルトの Emmentaler にリセットします。

次の構文を使用することで、他をデフォルトの値のままにしつつ、特定のフォントを変更することができます。次の例は、上の make-pango-font-tree の例と同じ結果になります。make-pango-font-tree と同様に、roman, sans, typewriter カテゴリに対してコンマ区切りの‘フォント’のリストを指定します。譜のサイズをデフォルトの 20 pt から変更する必要がない場合、#:factor (/ staff-height pt 20) は不要です。

\paper {
  #(define fonts
    (set-global-fonts
     #:roman "Linux Libertine O"
     #:sans "Nimbus Sans, Nimbus Sans L"
     #:typewriter "DejaVu Sans Mono"
     #:factor (/ staff-height pt 20) ; 譜サイズを変更しない場合は不要
    ))
}

記譜フォントを指定することもできます。次の例は、記譜フォントをデフォルトと同様に設定しているため、上の例と同じ結果になります。 詳しい情報は、記譜フォントを置換する を参照してください。

\paper {
  #(define fonts
    (set-global-fonts
     #:music "emmentaler"            ; デフォルト
     #:brace "emmentaler"            ; デフォルト
     #:roman "Linux Libertine O"
     #:sans "Nimbus Sans, Nimbus Sans L"
     #:typewriter "DejaVu Sans Mono"
     #:factor (/ staff-height pt 20) ; 譜サイズを変更しない場合は不要
    ))
}

注: set-global-fonts を呼び出すたびに、記譜フォントとテキスト フォントの両方を完全にリセットします。あるカテゴリが未指定であった場合、そのカテゴリのデフォルト値が使用されます。また、set-global-fonts は、その後の全ての \book ブロックに影響します。\book ブロックが複数あり、ブック毎に異なるフォントを使用したい場合、set-global-fonts を以下のように複数回呼び出します:

\paper {
  #(define fonts
    (set-global-fonts
     …
    ))
}
\book {
  …
}

\paper {
  #(define fonts
    (set-global-fonts
     …
    ))
}
\book {
  …
}

参照

記譜法リファレンス: フォントの説明, 個々に登録するフォント, フォントとフォント サイズを選択する, フォント, 記譜フォントを置換する


LilyPond — 記譜法リファレンス v2.23.82 (開発版).