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

LilyPond は Unicode 協会と ISO/IEC 10646 によって定義された文字レパートリを使用します。この文字レパートリは、ほとんどすべての現代言語と他の多くの言語で使用される文字セットに対して、固有の名前とコード位置を定義しています。Uicode はいくつかの異なるエンコーディングを用いて実装することができます。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 があります。

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

FT_Get_Glyph_Name () error: invalid argument

が表示されます。

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

[image of music]

単一の文字 – その文字に対する Unicode エスケープ シーケンスを知っているが、使用しているエディタではその文字を使用できない – を入力するには、\markup ブロック内部で \char ##xhhhh を使用します – ここで hhhh はその文字に対する 16 進コードです。例えば、\char ##x03BE は Unicode U+03BE の文字を入力します – この文字は Unicode 名 “Greek Small Letter Xi (ギリシャ小文字クシー” です。すべての文字を Unicode 16 進コードに置き換えることが可能で、特殊文字をすべてこの形式で入力した場合、その入力ファイルを UTF-8 フォーマットで保存する必要はありません。もちろん、入力された文字をすべて保持しているフォントがインストールされていて、LilyPond で利用可能になっている必要があります。

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

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

[image of music]

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

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

他の言語: English, deutsch, español, français

LilyPond — 記譜法リファレンス

inserted by FC2 system