LilyPond 記譜法リファレンス: 1.8.3 フォント

### 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"
>       }
>     }

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

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

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

- roman (serif) フォントのデフォルトは LilyPond Serif （TeX Gyre Schola のエイリアス）です。
- sans フォントのデフォルトは LilyPond Sans Serif （TeX Gyre Heros のエイリアス）です。
- typewriter (monospaced) フォントのデフォルトは LilyPond Monospace （TeX Gyre Cursor のエイリアス）です。

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

`svg` バックエンドでは:

ファミリ | デフォルト フォント
--- | ---
roman | `serif`
sans | `sans-serif`
typewriter | `monospace`

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

他のバックエンドでは:

ファミリ | デフォルト フォント (エイリアス) | エイリアス定義のリスト
--- | --- | ---
roman | `LilyPond Serif` | TeX Gyre Schola, C059, Century SchoolBook URW, Century Schoolbook L, DejaVu Serif, ..., serif
sans | `LilyPond Sans Serif` | TeX Gyre Heros, Nimbus Sans, Nimbus Sans L, DejaVu Sans, ..., sans-serif
typewriter | `LilyPond Monospace` | TeX 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

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

>     \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
>         }
>       }
>     }

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 εφπρθ } }

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

OpenType フォントの機能を識別するには以下を参照してください: http://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 }
>     }

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

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

>     lilypond -dshow-available-fonts

#### 参照

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

コード断片集: Text

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

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

>     \paper  {
>       #(define fonts
>         (make-pango-font-tree "Times New Roman"
>                               "Nimbus Sans,Nimbus Sans L"
>                               "Luxi Mono"
>                               (/ staff-height pt 20)))
>     }

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

注: `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 "Times New Roman"
>          #:sans "Nimbus Sans,Nimbus Sans L"
>          #:typewriter "Luxi Mono"
>          #:factor (/ staff-height pt 20) ; 譜サイズを変更しない場合は不要
>         ))
>     }

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

>     \paper {
>       #(define fonts
>         (set-global-fonts
>          #:music "emmentaler"            ; デフォルト
>          #:brace "emmentaler"            ; デフォルト
>          #:roman "Times New Roman"
>          #:sans "Nimbus Sans,Nimbus Sans L"
>          #:typewriter "Luxi 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.22.2 (安定版).

- 2. 専門的な記譜法
- 3. 入出力全般
- 4. スペースの問題
- 5. デフォルトを変更する
- A. 付表
- B. カンニング ペーパー
- C. GNU Free Documentation License
- D. LilyPond コマンド インデックス
- E. LilyPond インデックス