フェイス属性(Face attributes)は、フェイスの視覚的外観を決定します。以下はすべてのフェイス属性と、それらの可能な値と効果に関するテーブルです。
以下の値とは別に各フェイス属性は値unspecified
をもつことができます。この特殊な値はフェイスがその属性を直接指定しないことを意味します。unspecified
属性はEmacsにかわりに親フェイス(以下の:inherit
属性の記述を参照)を参照して、それに失敗したら基礎フェイス(フェイスの表示を参照)を参照することを指示します(ただしdefface
においてunspecified
は有効な値ではない)。
フェイスの属性としてreset
という値をもつこともできます。これはdefault
フェイスの相当する属性を意味する特別な値です。
default
フェイスではすべての属性を明示的に指定しなければならずスペシャル値reset
は使用できません。
これらの属性のいくつかは特定の種類のディスプレイにおいてのみ意味があります。ディスプレイが特定の属性を処理できなければ、その属性は無視されます。
:family
フォントファミリー名(文字列)。フォントファミリーに関する詳細はFonts in The GNU Emacs
Manualを参照のこと。関数font-family-list
(以下参照)は利用可能なファミリー名のリストをリターンする。
:foundry
:family
属性により指定されるフォントファミリーにたいするフォントfoundry (文字列)。Fonts in The GNU Emacs Manualを参照のこと。
:width
相対的な文字幅。これはシンボルultra-condensed
、extra-condensed
、condensed
、semi-condensed
、normal
、regular
、medium
、semi-expanded
、expanded
、extra-expanded
、ultra-expanded
のいずれかであること。
:height
フォントの高さ。もっともシンプルなケースでは1/10ポイントを単位とする整数。
値には基礎フェイス(underlying face)にたいして相対的に高さを指定する浮動小数点数、または関数も指定できる(フェイスの表示を参照)。浮動小数点数は基礎フェイスの高さをスケーリングする量を指定する。関数値は基礎フェイスの高さを単一の引数として呼び出されて、新たなフェイスの高さをリターンする。関数が整数を引数として渡された場合には整数をリターンしなければならない。
デフォルトフェイスの高さは整数を使用して指定しなければならない。浮動小数点数や関数は受け入れられない。
:weight
フォントのweight。シンボルultra-bold
、extra-bold
、bold
、semi-bold
、normal
、semi-light
、light
、extra-light
、ultra-light
(太字から細字順)のいずれか。可変輝度テキストをサポートするテキスト端末では、normalより大なweightはより高輝度、小なweightはより低輝度で表示される。
:slant
フォントのslant。シンボルitalic
、oblique
、normal
、reverse-italic
、reverse-oblique
のいずれか。可変輝度テキストをサポートするテキスト端末ではslantされたテキストはhalf-brightで表示される。
:foreground
フォアグラウンドカラー(文字列)。値にはシステム定義済みカラー、または16進カラー仕様を指定できる。カラー名を参照のこと。白黒ディスプレイでは特定のグレー色調が点描パターンで実装されている。
:distant-foreground
代替えのフォアグラウンドカラー(文字列)。これは:foreground
と似ているが、使用されるであろうフォアグラウンドカラーがバックグラウンドカラーに近いときのみフォアグラウンドカラーとして使用される点が異なる。これはたとえばテキストをマーク時(リージョンフェイス)に有用。そのテキストがリージョンフェイスとして可視なフォアグラウンドをもつ場合には、そのフォアグラウンドが使用される。フォアグラウンドがリージョンフェイスのバックグラウンドに近ければ、テキストを可読にするために:distant-foreground
が使用される。
:background
バックグラウンドカラー(文字列)。値にはシステム定義済みカラー、または16進カラー仕様を指定できる。カラー名を参照のこと。
:underline
文字にアンダーラインを引くべきか否か、およびその方法。:underline
属性として可能な値は以下のとおり:
nil
アンダーラインを引かない。
t
そのフェイスのフォアグラウンドカラーでアンダーラインを引く。
文字列colorで指定されたカラーでアンダーラインを引く。
(:color color :style style :position position)
colorは文字列、またはそのフェイスのフォアグラウンドカラーを意味するシンボルforeground-color
。属性:color
の省略はフェイスのフォアグラウンドカラーの使用を意味する。styleは直線を意味するline
、または波線を意味するwave
いずれかのシンボルであること。属性:style
の省略は直線を意味する。positionが非nil
の場合には、アンダーラインをベースラインではなく、そのテキストのディセントに表示することを意味する。数値の場合には、ディセントの上方何ピクセルにアンダーラインを表示するかを指定する。
:overline
文字にオーバーラインを引くべきか否か、およびそのカラー。値がt
ならフェイスのフォアグラウンドカラーを使用してオーバーラインを引く。値が文字列ならそのカラーを使用してオーバーラインを引く。値nil
はオーバーラインを引かないことを意味する。
:strike-through
文字に取り消し線を引くべきか否か、およびそのカラー。値は:overline
で使用される値と同じ。
:box
文字周囲に枠(box)を描画するか否か、そのカラー、枠線の幅、および3D外観。以下は:box
の可能な値と意味:
nil
枠を描画しない。
t
幅1のフォアグラウンドカラーで枠線を描画する。
幅1のカラーcolorで枠線を描画する。
(:line-width (vwidth . hwidth) :color color :style style)
このフォームのようなplistによって、枠(box)に関するすべての側面を明示的に指定できる。このplistの任意の要素は省略できる。
値vwidthとhwidthはそれぞれ、垂直および水平方向に描画する線幅を指定する。デフォルトは(1
.
1)。負の水平または垂直幅-nは、背後にあるテキスト文字の高さや幅の増加を避けるために、テキストスペースを占める幅nの線の描画を意味する。リストのかわりに簡素化のために単一の数値nを指定でき、この場合には((abs
n) . n)
を指定したのと等しい。
値styleは3D枠線を描画するか否かを指定する。released-button
なら押下された3Dボタンのような外観、pressed-button
なら押下されていない3Dボタンのような外観、nil
、flat-button
、または省略なら2D枠線が使用される。
値colorは描画するカラーを指定する。デフォルトは3D枠線とflat-button
ではフェイスのバックグラウンドカラー、それ以外の枠線ではフェイスのフォアグラウンドカラー。
:inverse-video
文字が反転表示されて表示されるべきか否か。値はt
(反転表示する)かnil
(反転表示しない)のいずれか。
:stipple
バックグラウンドの点描(ビットマップ)。
値には文字列を指定できる。外部形式Xビットマップデータを含むファイルの名前であること。ファイルは変数x-bitmap-file-path
にリストされるディレクトリー内で検索される。
かわりに(width height
data)
という形式のリストによりビットマップで直接値を指定できる。ここでwidthとheightはピクセル単位によるサイズ、dataは行単位でビットマップのrawビットを含む文字列。各行は文字列内で連続する(width
+ 7) / 8バイトを占める(最善の結果を得るためにはユニバイト文字列であること)。これは各行が常に少なくとも1バイト全体を占めることを意味する。
値がnil
なら点描パターンを使用しないことを意味する。
これは特定のグレー色調を処理するために自動的に使用されるので、通常はstipple属性のセットは必要ない。
:font
そのフェイスの表示に使用されるフォント。値はフォントオブジェクトかフォントセットであること。フォントオブジェクトならASCII文字の表示用フェイスに使用されるフォントを指定する。フォントオブジェクト、フォントスペース、フォントエンティティーに関する情報は低レベルのフォント表現、フォントセットに関する情報はフォントセットを参照のこと。
set-face-attribute
やset-face-font
(フェイス属性のための関数を参照)を使用してこの属性を指定する際にはフォントspec、フォントエンティティー、または文字列を与えることもできる。Emacsはそのような値を適切なフォントオブジェクトに変換して、実際の属性値としてそのフォントオブジェクトを格納する。文字列を指定する場合には、その文字列のコンテンツはフォント名であること(Fonts in The GNU Emacs
Manualを参照)。フォント名がワイルドカードを含むXLFDなら、Emacsはそれらのワイルドカードに最初にマッチするフォントを選択する。この属性の指定により:family
、:foundry
、:width
、:height
、:weight
、:slant
の属性値も変更される。
:inherit
属性を継承するフェイス名、またはフェイス名のリスト。継承フェイス由来の属性は基礎フェイスより高い優先度で、基礎フェイスの場合と同じような方法でマージされる(フェイスの表示を参照)。継承元のフェイスがunspecified
ならEmacsは:inherit
属性を決してマージしないのでnil
と同様に扱われる。フェイスのリストが使用された場合には、リスト内先頭側フェイスの属性が末尾側フェイスの属性をオーバーライドする。
:extend
そのフェイスが行末を超えて拡張されるか、および行末とウィンドウのエッジの間の空スペースの表示に影響を与えるかどうか。値は行末とウィンドウのエッジの間の空スペースの表示にそのフェイスを使用するならt
、使用しなければnil
。Emacsが行末を超える空スペースの表示でいくつかのフォントをマージする際に、:extend
が非nil
のフェイスだけがマージされる。デフォルトではこの属性がセットされているのは少数のフェイス、特にregion
だけである。この属性はテーマがフェイスに明示的な値を指定しない際に、値がdefface
によるフェイスの元定義から継承される点において他の属性とは異なる(フェイスの定義を参照)。
hl-line-mode
のようないくつかのモードは、カレント行全体をマークするために:extend
プロパティをもつフェイスを使用する。ただしEmacsはバッファー内の最後の文字の後へのポイントの移動を常に許容するので、バッファーが改行文字で終わる場合にはバッファーの最後にある行のような場所にポイントが配置されるかもしれないことに注意。この“行”は実際は存在しない行なのでEmacsがハイライトすることはできない。
この関数は利用可能なフォントファミリー名のリストをリターンする。オプション引数frameはそのテキストが表示されるフレームを指定する。これがnil
なら選択されたフレームが使用される。
この変数はアンダーラインが引かれたテキスト表示時に、ベースラインとアンダーライン間の最小距離をピクセル単位で指定する。
この変数は:stipple
属性のビットマップファイルを検索するディレクトリーのリストを指定する。
これはobject、:stipple
(上記参照)での使用に適した有効なビットマップ仕様ならt
、それ以外ならnil
をリターンする。