Next: , Previous: , Up: Display   [Contents][Index]


37.11 行の高さ

各ディスプレイ行のトータル高さは、その行のコンテンツ高さにディスプレイ上部や下部にオプションで追加される垂直行スペーシングを加えて構成されます。

行のコンテンツ高さは、もしあれば最後の改行を含む、そのディスプレイ行の文字またはイメージの最大高さです(継続されるディスプレイ行には最後の改行が含まれない)。特にこれより大きい高さを指定しなければ、これがデフォルトの行高さになります(一般的には、これはデフォルトのフレームフォント高さに等しい)。

より大きい行高さを明示的に指定するためにはディスプレイ行の絶対高さ、または垂直スペースを指定する複数の方法が存在します。しかし何を指定したかに関わらず、実際の行高さがデフォルトの高さより小さくなることはありません。

改行はその改行で終わるディスプレイ行のトータル高さを制御するテキストプロパティとオーバーレイプロパティline-heightをもつことができます。

プロパティの値がtなら、改行文字はその行の表示高さにたいして効果をもたず、可視なコンテンツだけが高さを決定します。これはイメージ間に追加のブランク領域をもたない、小さなイメージ(またはイメージスライス)にたいして有用です。

プロパティの値が(height total)という形式のリストなら、これはディスプレイ行の下部に余分なスペースを追加します。最初にEmacsは、その行の上部の余分なスペースを制御するための高さspecとして、heightを使用します。それから行のトータル高さをtotalにするために、行の下部に必要なスペースを追加します。この場合、行のスペーシングを指定する他の方法は無視されます。

他の種類のプロパティ値は高さspec(height spec)です。これは行の高さを指定する数値に変換されます。高さspecを記述するためには複数の方法があります。以下はそれらが数値に変換される方法です:

integer

高さspecが正の整数なら高さの値はその整数。

float

高さspecが浮動小数点数floatなら高さ数値はそのフレームのデフォルト行高さのfloat倍。

(face . ratio)

高さspecがこのフォーマットのコンスなら、高さ数値はフェイスfaceの高さのratio倍。ratioには任意の型の数値を指定でき、nilは1のratioを意味する。facetならカレントフェイスを参照する。

(nil . ratio)

高さspecがこのフォーマットのコンスなら高さ数値はその行のコンテンツ高さのratio倍。

したがって任意の有効な種々の高さspecによりピクセル単位で高さが決定されます。行のコンテンツ高さがこれより小さければ、Emacsは指定されたトータル高さになるように余分な垂直スペースを行の上部に追加します。

line-heightプロパティを指定しない場合には、その行の高さは行のコンテンツ高さとに行スペーシングを追加して構成されます。Emacsの異なるさまざまな部分のテキストにたいして、行スペーシングを指定する複数の方法が存在します。

グラフィカルなディスプレイではフレームパラメーターline-spacing (Layout Parametersを参照)を使用することにより、フレーム内のすべての行にたいして行スペーシングを指定できます。しかしline-spacingのデフォルト値が非nilなら、それはそのフレームのフレームパラメーターline-spacingをオーバーライドします。整数は行の下部に配するピクセル数を指定します。浮動小数点数はフレームのデフォルト行高さに相対的にスペーシングを指定します。

バッファーローカル変数line-spacingを通じて、バッファー内のすべての行の行スペーシングを指定できます。整数は行の下部に配するピクセル数を指定します。浮動小数点数はデフォルトフレーム行高さに相対的にスペーシングを指定します。これはそのフレームにたいして指定された行スペーシングをオーバーライドします。

最後に改行は、改行で終わるディスプレイ行にたいして、デフォルトフレーム行スペーシングおよびバッファーローカル変数line-spacingをオーバーライドする、テキストプロパティまたはオーバーレイプロパティline-spacingをもつことができます。

種々の方法によりこれらのメカニズムは各行のスペーシングにたいするLisp値を指定します。値は高さspecで、これは上述したLisp値に変換されます。しかしこの場合には高さ数値は行高さではなく行スペーシングを指定します。

テキスト端末では行スペーシングは変更できません。