オブジェクトを白で描く

レイアウト オブジェクトはそれぞれ color プロパティを持っていて、デフォルトでは black にセットされています。このプロパティが white にセットされてると、そのオブジェクトは白い背景と区別が付かなくなります。しかしながら、そのオブジェクトが他のオブジェクトと交差している場合、交差している場所の色はオブジェクトの描画順序によって決定されます。これにより、以下に示すように、白いオブジェクトの画像が幽霊のように浮かび上がることがあります:

\override Staff.Clef.color = #white
a'1

[image of music]

オブジェクトの描画順序を変更することにより、これを回避することができます。すべてのレイアウト オブジェクトは layer プロパティを持っており、このプロパティには整数がセットされています。より小さな値の layer を持つオブジェクトが最初に描画され、より大きな値の layer を持つオブジェクトが後になってから描画されます。このため、より大きな値を持つオブジェクトがより小さな値を持つオブジェクトを上書きします。デフォルトでは、たいていのオブジェクトの layer には 1 が代入されています。しかしながら、いくつかのオブジェクト – StaffSymbolBarLine など – には 0 が代入されています。同じ値の layer を持つオブジェクトを描画する順番は不確定です。

上記の例において、白い音部記号 (この layer のデフォルト値は 1 です) は譜線 (この layer のデフォルト値は 0 です) の後に描画されます。そのため、音部記号は譜線を上書きしています。これを変更するには、Clef オブジェクトの layer により小さな値 – 例えば、-1 – を与えて、音部記号を先に描画させる必要があります:

\override Staff.Clef.color = #white
\override Staff.Clef.layer = #-1
a'1

[image of music]

LilyPond 記譜法リファレンス v2.25.22 (development-branch).