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


37.10 表示されるテキストのサイズ

すべての文字が同じ幅をもつ訳ではありませんが、以下の関数により文字の幅をチェックできます。関連する関数についてはPrimitive IndentScreen Linesを参照してください。

Function: char-width char

この関数は文字charがカレントバッファーに表示された場合(つまりそのバッファーのディスプレイテーブルがあれば考慮に入れる。Display Tablesを参照)の幅を列数でリターンする。タブ文字の幅、通常はtab-width (Usual Displayを参照)。

Function: string-width string

この関数は文字列stringがカレントバッファーおよび選択されたウィンドウに表示された場合の幅を列数でリターンする。

Function: truncate-string-to-width string width &optional start-column padding ellipsis

この関数はstringの一部を列数widthにフィット新たな文字列としてリターンする。

stringwidthに満たなければ文字列終端が結果の終端となる。string内の1つの複数列文字が列widthを超えて跨がるようなら、その文字は結果に含まれない。つまり結果はwidthより短くなるかもしれないが超えることはできない。

オプション引数start-columnは開始列を指定する。これが非nilなら、その文字列の最初のstart-column列は値から省かれる。string内の1つの複数列文字が列start-columnを超えて跨がるようなら、その文字は結果に含まれない。

オプション引数paddingが非nilなら、結果となる文字列の幅を正確にwidth列に拡張するためにパディング文字が追加される。結果文字列がwidthより短ければ結果文字列の終端にパディング文字が使用される。string内の1つの複数列文字が列start-columnを跨ぐ場合は先頭にもパディング文字が使用される。

ellipsisが非nilなら、それはstringの表示幅がellipsisの表示幅以下でなければ、widthを超えてしまう場合に、stringの終端(任意のパディングを含む)を置き換える文字列であること。ellipsisが非nil、かつ文字列以外なら、それは"..."を意味する。

(truncate-string-to-width "\tab\t" 12 4)
     ⇒ "ab"
(truncate-string-to-width "\tab\t" 12 4 ?\s)
     ⇒ "    ab  "

以下の関数は、あるテキストが与えられたウィンドウに表示されたときのサイズを、ピクセル単位でリターンします。この関数は、テキストを含むためにウィンドウを十分大きくするために、fit-window-to-buffer(Resizing Windowsを参照)とfit-frame-to-buffer(Size and Positionを参照)により使用されます。

Function: window-text-pixel-size &optional window from to x-limit y-limit mode-and-header-line

この関数はwindowのバッファーのテキストサイズをピクセル単位でリターンする。windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。リターン値は任意のテキスト行の最大ピクセル幅と、すべてのテキスト行の最大ピクセル高さのコンス。

オプション引数fromが非nilなら、それは考慮すべき最初のテキスト位置を指定する。デフォルトはそのバッファーのアクセス可能な最小の位置。fromtなら改行文字ではないアクセス可能な最小位置を使用する。オプション引数toが非nilなら、それは考慮すべき最後のテキスト位置を指定する。デフォルトはそのバッファーのアクセス可能な最大の位置。totなら改行文字ではないアクセス可能な最大位置を使用する。

オプション引数x-limitが非nilなら、それはリターンされ得る最大ピクセル幅を指定する。x-limitnilまたは省略された場合には、windowのbody(Window Sizesを参照)のピクセル幅を使用する。これは呼び出し側がwindowの幅の変更を意図しない場合に有用。それ以外なら呼び出し側はここで想定されるwindowのbodyの最大幅を指定すること。X座標を超えるテキストのx-limitは無視される。長い行の幅の計算には多くの時間を要する可能性があるので、いずれにせよ切り詰められるであろう長い行を含むバッファーの場合には、特に必要に応じてこの引数の値を小さくすることはよいアイデアである。

オプション引数y-limitが非nilなら、それはリターンされ得る最大ピクセル高さを指定する。Y座標を超えるテキストのy-limitは無視される。大きなバッファーのピクセル高さの計算には多くの時間を要する可能性があるので、特に呼び出し側がバッファーのサイズを知らない場合におけるこの変数の指定は合理的である。

オプション引数mode-and-header-linenilまたは省略された場合には、リターン値にwindowのモードラインとヘッダーラインの高さを含めないことを意味する。これがシンボルmode-lineheader-lineのいずれかなら、それらが存在する場合にはリターン値にそのラインの高さだけを含める。これがtなら存在する場合は両方の高さをリターン値に含める。