GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Line-Height.html ・ emacs-doc.conao3.com

42.11 行の高さ

各表示行の全高は、その行の内容の高さに、表示行の上下に任意で設けられる追加の垂直行間隔を加えたものです。

行内容の高さとは、その表示行にある任意の文字や画像の最大高さのことであり、末尾に改行がある場合はそれも含まれます。(継続される表示行には、末尾の改行は含まれません。)より大きな高さを指定しない場合、これがデフォルトの行高さとなります。(最も一般的なケースでは、これは対応するフレームのデフォルトフォントの高さと一致します。フレームフォントを参照してください。)

行の高さを明示的に高く指定する方法はいくつかあり、表示行に絶対高さを指定するか、垂直方向のスペースを指定します。ただし、どのような指定をしても、実際の行の高さがデフォルトより小さくなることはありません。

改行には line-height の text または overlay プロパティを指定でき、これによりその改行で終わる表示行の全高を制御できます。プロパティの値には、いくつかの形式があります。

t

プロパティ値が t の場合、改行文字は行の表示高さに影響を与えず、可視コンテンツのみで高さが決まります。後述する改行の line-spacing プロパティも、この場合は無視されます。これは、画像間に空白を設けずに小さな画像(または画像のスライス)をタイル状に配置する際に有用です。

(height total)

プロパティ値が図に示す形式のリストである場合、表示行の下に余分なスペースが追加されます。まずEmacsは、行の上の余分なスペースを制御するために高さ指定としてheightを使用し、次に、行全体の高さをtotalにするために、行の下に十分なスペースを追加します。この場合、改行に対するline-spacingプロパティの値は無視されます。

その他のプロパティ値は「高さ指定」であり、これは数値――すなわち指定された行高さ――に変換されます。高さ指定の記述方法はいくつかあり、それぞれがどのように数値に変換されるかを以下に示します。

integer

高さの仕様が正の整数である場合、高さの値はその整数となる。

float

高さの指定が浮動小数点数 float の場合、数値としての高さの値はフレームのデフォルトの行高さの float 倍となります。

(face . ratio)

高さの指定が表示されているフォーマットの制約である場合、数値としての高さは面 face の高さの ratio 倍となります。ratio は任意の数値、または比率 1 を意味する nil とすることができます。face が t である場合、それは現在の面を指します。

(nil . ratio)

高さの指定が表示形式の制約である場合、数値としての高さは行の内容の高さの ratio 倍となります。

したがって、有効な高さ指定があれば、いずれにせよ高さはピクセル単位で決定されます。行の内容の高さがそれ未満の場合、Emacsは指定された合計高さに達するよう、行の上に追加の垂直スペースを設けます。

line-height プロパティを指定しない場合、行の高さはコンテンツの高さに行間を加えたものになります。Emacs テキストのさまざまな箇所で行間を指定する方法はいくつかあります。

グラフィカル端末では、line-spacing フレームパラメータを使用して、フレーム内のすべての行の行間を指定できます(レイアウトパラメータを参照)。ただし、line-spacing のデフォルト値が nil 以外の場合、フレームの line-spacing パラメータよりも優先されます。整数を指定すると、行の下に配置されるピクセル数が指定されます。浮動小数点数を指定すると、フレームのデフォルトの行高さに対する相対的な間隔が指定されます。

バッファローカル変数 line-spacing を使用して、バッファ内のすべての行の行間を指定できます。整数を指定すると、行の下に配置されるピクセル数が指定されます。浮動小数点数を指定すると、デフォルトのフレーム行高さに対する相対的な間隔が指定されます。整数または浮動小数点数のコンスセルを指定すると、行の上下に配置される間隔が指定され、テキストを垂直方向に中央揃えすることが可能です。これにより、フレームに指定された行間が上書きされます。

最後に、改行には line-spacing テキストまたはオーバーレイプロパティを指定でき、これによりデフォルトのフレーム行間隔やバッファローカル変数 line-spacing を拡大できます。その値がバッファやフレームのデフォルト値よりも大きい場合、その大きな値が代わりに使用され、その改行で終わる表示行に適用されます(ただし、その改行に line-height プロパティが付与されており、その値が line-spacing を無視させる特殊値のいずれかである場合はこの限りではありません。詳細は上記を参照してください)。

いずれにせよ、これらの仕組みによって各行の間隔を示すLisp値が指定されます。この値は高さの指定であり、前述の通りLisp値に変換されます。ただし、この場合、数値による高さの値は行の高さではなく、行間を指定するものです。

テキスト端末では、行間を変更することはできません。