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

が表示されます。

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

[image of music]


Unicode

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

[image of music]

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

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

ASCII エイリアス

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

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

\markup "&flqq; – &OE;uvre incomplète… &frqq;"

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

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

[image of music]

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

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

[image of music]

ローカルで作ります:

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

[image of music]

参照

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

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


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