顔属性は、顔の視覚的な外観を決定します。以下の表に、すべての顔属性とその取り得る値、およびそれらの効果を記載します。
以下に示す値のほか、各フェイス属性には unspecified
という値を指定できます。この特殊な値は、そのフェイスが当該属性を直接指定していないことを意味します。unspecified 属性は、Emacs に対して代わりに親フェイス(後述の :inherit 属性の説明を参照)、あるいはそれがなければ下位のフェイス(フェイスの表示 を参照)を参照するように指示します。(ただし、defface において unspecified
は有効な値ではありません。)
顔属性には reset という値を指定することもできます。この特殊な値は、default 顔の対応する属性の値を表します。
default フェイスはすべての属性を明示的に指定する必要があり、特殊値 reset は使用できません。
これらの属性の中には、特定の種類のディスプレイでのみ意味を持つものがあります。ディスプレイが特定の属性に対応していない場合、その属性は無視されます。
:familyフォントファミリー名(文字列)。フォントファミリーの詳細については、The GNU Emacs
ManualのFontsを参照してください。関数
font-family-list(後述)は、利用可能なファミリー名の一覧を返します。
:foundry:family 属性(文字列)で指定されたフォントファミリーの フォントファウンドリ 名。The GNU Emacs Manual
の Fonts
を参照。
:width相対文字幅。ultra-condensed、extra-condensed、condensed、semi-condensed、normal、regular、medium、semi-expanded、expanded、extra-expanded、またはultra-expandedのいずれかの記号である必要があります。
:heightフォントの高さ。最も単純な場合は、1/10ポイント単位の整数となります。
値には浮動小数点数や関数を指定することもでき、その場合は基となる面に対する高さを指定します(面の表示を参照)。浮動小数点数の値は、基となる面の高さをどの程度スケールさせるかを指定します。関数の値は、基となる面の高さという1つの引数で呼び出され、新しい面の高さを返します。関数に整数の引数が渡された場合は、整数を返す必要があります。
デフォルトフェイスの高さは整数で指定する必要があり、浮動小数点数や関数値は指定できません。
:weightフォントウェイト—記号の一つ(最も濃いものから最も薄いものまで) ultra-bold, extra-bold, bold, semi-bold, normal, semi-light, light, extra-light, または ultra-light。 可変輝度テキストに対応したテキスト端末では、normal より太いウェイトはすべて
extra bright として、normal より細いウェイトはすべて half-bright として表示されます。
:slant ¶フォントスラント—記号 italic、oblique、normal、reverse-italic、または reverse-oblique
のいずれか。可変輝度テキストに対応したテキスト端末では、スラントテキストは半輝度で表示される。
:foreground前景色(文字列)。値には、システム定義の色名、または16進数による色指定を指定できます。色名を参照してください。白黒ディスプレイでは、特定のグレーの階調がスティップルパターンで表現されます。
:distant-foreground代替前景色(文字列)。これは :foreground
と同様ですが、背景色が本来使用されるはずの前景色に近い場合にのみ、前景色が使用されます。これは、例えばテキスト(すなわちリージョン面)にマークを付ける際に有用です。テキストの前景色がリージョン面に対して視認できる場合は、その前景色が使用されます。前景色がリージョン面の背景に近い場合は、テキストが読み取れるよう、代わりに
:distant-foreground が使用されます。
:background背景色(文字列)。値には、システムで定義された色名、または16進数による色指定を指定できます。色名を参照してください。
:underline ¶文字に下線を引くべきか否か、またどのような方法で引くか。:underline属性の取り得る値は以下の通りです:
nil下線は引かないでください。
t顔の前景色で下線を引く。
色付き下線 color。色を指定する文字列です。これは、端末が下線の色を設定できる場合、テキスト端末でも動作します(terminfo
の Smulx および Su
機能が利用可能である必要があります)。
(:color color :style style :position position)color は文字列、または面の前景色を示すシンボル foreground-color のいずれかです。属性 :color を省略すると、面の前景色が使用されます。style
は、下線の線種を設定するシンボルです。これは line、double-line、wave、dots、または dashes
のいずれかである必要があります。ほとんどのウィンドウシステムにおける GUI
フレームは前述のすべての下線スタイルをサポートしていますが、テキスト端末では double-line、wave、および dots は terminfo の Smulx または
Su 機能の有無に依存します。属性 :style
を省略すると、直線が使用されます。position が nil
以外の場合、下線をベースラインレベルではなく、テキストのディセント位置に表示します。数値の場合は、ディセント位置から上方向に何ピクセルの位置に下線を表示するかを指定します。
:overline ¶文字にオーバーラインを引くか否か、およびその色について。値が t
の場合、オーバーラインには面の前景色が使用されます。テキスト端末では、この機能のサポートは terminfo 機能 Smol
の有無に依存します。値が文字列の場合、その色がオーバーラインに使用されます(これは現在、テキスト端末では動作しません)。値 nil は、オーバーラインを引かないことを意味します。
:strike-through ¶文字に打ち消し線を引くか否か、およびその色について。この値は :overline
と同様に使用されます。テキスト端末でこれがサポートされるかどうかは、terminfo の smxx
機能が利用可能かどうかに依存します。
:box ¶文字を囲むボックスの有無、その色、ボックス線の太さ、および3D表示の有無。以下に :box
属性の取り得る値とその意味を示します。
nil枠を引かないで。
t前景色で、幅1の線を用いてボックスを描いてください。
幅1の線で、色colorのボックスを描画する。
(:line-width (vwidth . hwidth) :color color :style style)次のような形式のplistを用いて、ボックスのあらゆる要素を明示的に指定できます。このplist内の任意の要素は省略可能です。
vwidth および hwidth
の値は、それぞれ描画する垂直線と水平線の幅を指定し、デフォルトは (1 . 1) です。負の水平または垂直幅 −n は、下層のテキストの領域を占める幅 n
の線を描画することを意味し、これにより文字の高さや幅の増加を避けることができます。簡略化のため、リストの代わりに単一の数値 n のみで幅を指定することもでき、この場合は ((abs n) . n) と同等となります。
color の値で、描画に使用する色を指定します。デフォルトは、3Dボックスおよび flat-button の場合は面の背景色、それ以外のボックスの場合は面の前景色となります。
style の値で、3Dボックスを描画するかどうかを指定します。released-button の場合、ボックスは押されていない3Dボタンのように見えます。pressed-button の場合、ボックスは押されている3Dボタンのように見えます。nil、flat-button
の場合、または省略した場合は、通常の2Dボックスが使用されます。
display テキストプロパティを介してバッファテキストの代わりに表示される文字列に :box フェイス属性を使用する場合、周囲のバッファテキストにも :box フェイス属性が付与されていれば、特別な考慮事項が適用される場合があります。テキストを置換する表示仕様
を参照してください。また、ボックスの垂直線は、:box 属性が nil から非 nil
へ、またはその逆に変化したときにのみ描画される点に注意してください。非 nil :box 属性を持つフェイスプロパティが2つ連続する場合、その間の垂直線は表示されません。
:inverse-video文字を反転表示するかどうか。値は t(あり)または nil(なし)とします。
:stipple背景のスティップル、ビットマップ。
値は文字列であってもよく、これは外部形式のXビットマップデータを含むファイル名である必要があります。このファイルは、変数 x-bitmap-file-path に列挙されているディレクトリ内に存在します。
あるいは、値でビットマップを直接指定することもでき、その形式は (width height data) となります。ここで、width と height はピクセル単位のサイズを指定し、data
はビットマップの生のビットを行単位で格納した文字列です。各行は、文字列内の (width + 7) / 8
個の連続するバイトを占有します(最適な結果を得るには、ユニバイト文字列である必要があります)。つまり、各行は常に少なくとも1バイト分を占有することになります。
値が nil の場合は、スティップルパターンを使用しないことを意味します。
通常、stipple属性を設定する必要はありません。特定のグレーの階調を処理するために、自動的に使用されるためです。
:fontフェイスの表示に使用されるフォント。その値は、フォントオブジェクトまたはフォントセットである必要があります。フォントオブジェクトの場合、そのフェイスがASCII文字の表示に使用するフォントを指定します。フォントオブジェクト、フォント仕様、およびフォントエンティティに関する情報については、低レベルフォント表現を参照してください。フォントセットに関する情報については、フォントセットを参照してください。
set-face-attribute または set-face-font を用いてこの属性を指定する場合(フェイス属性関数
を参照)、フォント指定、フォントエンティティ、または文字列を指定することもできます。Emacs
はこうした値を適切なフォントオブジェクトに変換し、そのフォントオブジェクトを実際の属性値として格納します。文字列を指定する場合、その内容はフォント名である必要があります(The GNU Emacs Manual の Fonts
を参照)。フォント名がワイルドカードを含む 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 を返します。