LilyPond 記譜法リファレンス: 3.3.3 特殊文字

### 3.3.3 特殊文字

#### テキスト エンコーディング

LilyPond は Unicode 協会と ISO/IEC 10646 によって定義された文字レパートリを使用します。この文字レパートリは、ほとんどすべての現代言語と他の多くの言語で使用される文字セットに対して、固有の名前とコード位置を定義しています。Unicode はいくつかの異なるエンコーディングを用いて実装することができます。LilyPond は UTF-8 エンコーディング (UTF は Unicode Transformation Format を意味します) を使用します – UTF-8 はすべての共通ラテン文字を 1 バイトで表し、他の文字を可変バイト長形式 (最大 4 ビット) で表します。

文字の実際の見た目は利用可能なある特定のフォントの中にあるグリフ (図柄) によって決定されます – フォントはグリフを指す Unicode コードのサブセット (部分集合) の写像を定義しています。LilyPond は多言語テキストを、Pango ライブラリを用いて、レイアウトして描画します。

LilyPond は入力のエンコーディング変換をまったく行いません。これは非 ASCII 文字を含むすべてのテキスト – タイトル、歌詞テキストあるいは演奏指示 – を UTF-8 でエンコードして入力する必要があるということを意味します。そのようなテキストを入力する最も容易な方法は Unicode を認識するエディタを用いて、ファイルを UTF-8 で保存することです。人気のある現代的なエディタのほとんどが UTF-8 をサポートします – 例えば、vim, Emacs, jEdit, Gedit です。NT より後の MS Windows システムはすべてネイティブ キャラクタ エンコーディングとして Unicode を使用します。そのため、Notepad でさえ UTF-8 フォーマットのファイルを編集して保存することができます。Windows 用のもっと機能的なエディタに BabelPad があります。

非 ASCII 文字を保持している LilyPond 入力ファイルが UTF-8 フォーマットで保存されていない場合、エラー メッセージ

>     FT_Get_Glyph_Name () error: invalid argument

が表示されます。

ここでキリル文字、ヘブライ文字、ポルトガル語のテキストを表示する例を挙げます:

#### Unicode

単一の文字 – その文字に対する Unicode コード ポイントを知っているが、使用しているエディタではその文字を使用できない – を入力するには、`\markup` ブロック内部で `\char ##xhhhh` あるいは `\char ##dddd` を使用します – ここで `hhhh` はその文字に対する 16 進コードであり、`dddd` はそれに対応する 10 進数値です。先頭の 0 は省略可能ですが、16 進表記では 4 文字で指定する方法が一般的です。(`\char` の後に UTF-8 エンコーディングのコード ポイントを使うべきではありません。なぜなら、UTF-8 エンコーディングはバイト数を表すための余分なビットを保持しているからです。) 任意の文字に対する 16 進のコード ポイントを調べるための、Unicode コード表と文字名インデックスは Unicode コンソーシアム Web サイト http://www.unicode.org/ にあります。

例えば、`\char ##x03BE` と `\char #958` はどちらも Unicode U+03BE の文字を入力します – この文字は Unicode 名 “Greek Small Letter Xi” (ギリシャ小文字クシー) です。

この方法で任意の Unicode コード ポイントを入力することができます。すべての特殊文字がこの方法で入力されている場合、入力ファイルを UTF-8 フォーマットで保存する必要はありません。もちろん、入力された文字を保持しているフォントがすべてインストールされていて、LilyPond で利用可能になっている必要があります。

以下の例は UTF-8 コード化された文字を 4 箇所 – リハーサル記号の中、アーティキュレーション テキストとして、歌詞の中、楽譜の下にある独立したテキストの中 – で使用しています:

>     \score {
>       \relative {
>         c''1 \mark \markup { \char ##x03A8 }
>         c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } }
>       }
>       \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
>     }
>     \markup { "Copyright 2008--2020" \char ##x00A9 }

著作権についての注意書きの中で著作権記号を入力するには、以下のようにします:

>     \header {
>       copyright = \markup { \char ##x00A9 "2008" }
>     }

#### ASCII エイリアス

特殊文字の ASCII エイリアスのリストを含めることができます:

>     \paper {
>       #(include-special-characters)
>     }

>     \markup "&flqq; &ndash; &OE;uvre incomplète&hellip; &frqq;"

>     \score {
>       \new Staff { \repeat unfold 9 a'4 }
>       \addlyrics {
>         This is al -- so wor -- kin'~in ly -- rics: &ndash;_&OE;&hellip;
>       }
>     }

>     \markup \column {
>       "特殊文字への置換を無効にすることができます:"
>       "&ndash; &OE; &hellip;"
>       \override #'(replacement-alist . ()) "&ndash; &OE; &hellip;"
>     }

また、エイリアスを作ることもできます。グローバルに作るか:

>     \paper {
>       #(add-text-replacements!
>         '(("100" . "hundred")
>           ("dpi" . "dots per inch")))
>     }
>     \markup "A 100 dpi."

ローカルで作ります:

>     \markup \replace #'(("100" . "hundred")
>                         ("dpi" . "dots per inch")) "A 100 dpi."

#### 参照

記譜法リファレンス: 特殊文字の一覧

インストールされているファイル: ‘`ly/text-replacements.ly`’

#### LilyPond — 記譜法リファレンス v2.22.2 (安定版).

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