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

42.12.3 顔属性関数

この節では、名前付きフェイスの属性に直接アクセスし、変更するための関数について説明します。

関数: face-attribute face attribute &optional frame inherit

この関数は、frame 上の face に対する attribute 属性の値を返します。サポートされている属性については、Face Attributes を参照してください。

frame が省略されているか、あるいは nil である場合、それは選択されたフレーム(入力フォーカス を参照)を意味します。frame が t である場合、この関数は新しく作成されたフレームに対する指定属性の値、すなわち face の defface 定義で face 仕様を適用する前の属性値(face の定義 を参照)、または face-spec-set で設定された仕様の値を返します。この attribute のデフォルト値は通常 unspecified ですが、set-face-attribute を使用して別の値を指定した場合はこの限りではありません。詳細は以下を参照してください。

inherit が nil の場合、face で直接定義された属性のみが考慮されるため、戻り値は unspecified または相対値となる場合があります。inherit が nil 以外の場合、face による attribute の定義は、その :inherit 属性で指定されたフェイスとマージされます。ただし、戻り値は依然として unspecified または相対値となる場合があります。inherit がフェイスまたはフェイスのリストである場合、その結果はさらに当該フェイス(または複数のフェイス)とマージされ、最終的に指定済みかつ絶対値となります。

戻り値が常に指定済みかつ絶対値となるよう、inherit には default の値を使用してください。これにより、未指定または相対値が、default 面(常に完全に指定済み)とマージされることで解消されます。

例えば、

(face-attribute 'bold :weight)
     ⇒ bold
関数: face-attribute-relative-p attribute value

この関数は、face属性attributeの値として使用されるvalueが相対値である場合に、nil以外の値を返します。つまり、faceリスト内の後続のfaceから得られる値や、別のfaceから継承された値を完全に上書きするのではなく、修正することになります。

unspecified はすべての属性における相対値です。:height では、浮動小数点数や関数値も相対値となります。

例えば:

(face-attribute-relative-p :height 2.0)
     ⇒ t
関数: face-all-attributes face &optional frame inherit

この関数は、face の属性を格納したアリストを返します。結果の要素は、(attr-name . attr-value) 形式の名前と値のペアです。オプション引数 frame は、face の定義を返すフレームを指定します。これを省略するか nil を指定した場合、返される値は新しく作成されたフレームにおける face のデフォルト属性、すなわち face の defface 定義で face 仕様を適用する前、あるいは face-spec-set で設定された仕様が適用される前にこれらの属性が持っていた値を表します。これらの属性のデフォルト値は、set-face-attribute を用いて別の値を指定していない限り、通常は unspecified となります(後述)。オプション引数 inherit は、face-attribute の対応する引数と同じ意味を持ちます(参照)。これは face 属性を unspecified ではなく絶対値にしたい場合に有用です。

関数: merge-face-attribute attribute value1 value2

value1 が face 属性 attribute の相対値である場合は、基となる値 value2 とマージして返します。そうでない場合、value1 が face 属性 attribute の絶対値である場合は、value1 をそのまま返します。

通常、Emacsは各フェイスのフェイス仕様を用いて、各フレームにおける属性を自動的に算出します(フェイスの定義を参照)。関数 set-face-attribute を使用すると、特定のフレームまたはすべてのフレームに対してフェイスに属性を直接割り当てることで、この算出を上書きできます。この関数は主に内部利用を目的としています。

関数: set-face-attribute face frame &rest arguments

この関数は、frame に対して face の属性を1つ以上設定します。このように指定された属性は、face に属するフェイス仕様を上書きします。サポートされている属性については、フェイス属性を参照してください。

追加の引数 arguments は、設定する属性とその値を指定します。これらは、属性名(:family や :underline など)と値を交互に並べた形式で記述する必要があります。したがって、

(set-face-attribute 'foo nil :weight 'bold :slant 'italic)

属性 :weight を bold に、属性 :slant を italic に設定します。

frame が t の場合、この関数は新しく作成されるフレームのデフォルト属性を設定します。これにより、defface で指定された属性値が実質的に上書きされます。 frame が nil の場合、この関数は既存のすべてのフレーム、および新しく作成されるフレームの属性を設定します。

To reset the value of an attribute, that is, to indicate that the face doesn’t by itself specify a value for the attribute, use the special value unspecified (not nil!) for the attribute, and set the frame argument to t, in addition to the call with frame set to nil. This is because the default attributes for newly created frames are merged with the face’s spec in defface when a new frame is created, and so having unspecified in the default attributes for new frames will be unable to override defface; the special call to this function as described above will arrange for defface to be overridden.

なお、属性と値のペアは指定された順に評価されますが、:family および :foundry 属性だけは例外で、最初に評価されます。つまり、ある属性が複数回指定された場合、最後の値のみが使用されます。また、場合によっては属性の順序によって結果が異なることもあります。例えば、:weight が :font より前に配置された場合、ウェイト値はフェイスの現在のフォントに適用され、そのフォントで利用可能な最も近いウェイトに丸められる可能性があります。一方、:font が :weight より前に配置された場合、ウェイト値は指定されたフォントに適用されます。

以下のコマンドおよび関数は、主に旧バージョンのEmacsとの互換性を提供するためのものです。これらはset-face-attributeを呼び出すことで動作します。frame引数におけるtおよびnilの値(または省略)は、set-face-attributeおよびface-attributeと同様に扱われます。これらのコマンドは、対話的に呼び出された場合、ミニバッファを使用して引数を読み込みます。

コマンド: set-face-foreground face color &optional frame
コマンド: set-face-background face color &optional frame

これらは、face の :foreground 属性(またはそれぞれ :background 属性)を color に設定します。

コマンド: set-face-stipple face pattern &optional frame

これにより、face の :stipple 属性が pattern に設定されます。

コマンド: set-face-font face font &optional frame

face のフォント関連属性を font の属性(文字列またはフォントオブジェクト)に変更します。font 引数でサポートされている形式については、face-font-attribute を参照してください。この関数は、フェイスの属性 :font を設定し、フォントで定義されている :family、:foundry、:width、:height、:weight、および :slant 属性も間接的に設定します。frame が nil 以外の場合は、指定されたフレームの属性のみを変更します。

関数: set-face-bold face bold-p &optional frame

これにより、bold-p が nil の場合は face の :weight 属性を normal に、それ以外の場合は bold に設定します。

関数: set-face-italic face italic-p &optional frame

これにより、italic-p が nil の場合は face の :slant 属性を normal に、それ以外の場合は italic に設定します。

コマンド: set-face-underline face underline &optional frame

これにより、face の :underline 属性が underline に設定されます。

コマンド: set-face-inverse-video face inverse-video-p &optional frame

これにより、face の :inverse-video 属性が inverse-video-p に設定されます。

コマンド: invert-face face &optional frame

これにより、顔 face の前景色と背景色が入れ替わります。

コマンド: set-face-extend face extend &optional frame

これにより、face の :extend 属性が extend に設定されます。

以下の関数は、フェイスの属性を調べます。これらは主に、旧バージョンのEmacsとの互換性を提供するためのものです。frame を指定しない場合は選択中のフレームを、t は新しいフレームのデフォルトデータを参照します。フェイスがその属性に値を定義していない場合は、unspecified を返します。inherit が nil である場合、フェイスで直接定義された属性のみが返されます。inherit が nil 以外である場合は、その :inherit 属性で指定されたフェイスも考慮され、さらに inherit がフェイスまたはフェイスのリストである場合は、指定された属性が見つかるまでそれらも考慮されます。戻り値が常に指定されるようにするには、inherit に default の値を指定してください。

関数: face-font face &optional frame character

この関数は、指定された face で使用されているフォント名を返します。

オプション引数 frame が指定された場合、そのフレームにおける face のフォント名を返します。frame は、nil であるか、あるいは省略された場合に、デフォルトで選択中のフレームとなります。frame が t である場合、この関数は新しいフレームで使用される face のフォントのデフォルト設定を報告します。

デフォルトでは、返されるフォントはASCII文字の表示用ですが、frameがt以外であり、かつ省略可能な第3引数characterが指定されている場合、この関数はその文字に対してfaceで使用されているフォント名を返します。

関数: face-foreground face &optional frame inherit
関数: face-background face &optional frame inherit

これらの関数は、face face の前景色(またはそれぞれ背景色)を文字列として返します。色が指定されていない場合は、nil を返します。

関数: face-stipple face &optional frame inherit

この関数は、面 face の背景スティップルパターンの名前を返します。パターンがない場合は nil を返します。

関数: face-bold-p face &optional frame inherit

この関数は、face の :weight 属性が通常よりも太い(すなわち、semi-bold、bold、extra-bold、ultra-bold のいずれかである)場合に、nil 以外の値を返します。それ以外の場合は、nil を返します。

関数: face-italic-p face &optional frame inherit

この関数は、face の :slant 属性が italic または oblique の場合は非 nil 値を、それ以外の場合は nil を返します。

関数: face-underline-p face &optional frame inherit

この関数は、face face が non-nil :underline 属性を指定している場合、non-nil を返します。

関数: face-inverse-video-p face &optional frame inherit

この関数は、face face が non-nil :inverse-video 属性を指定している場合、non-nil を返します。

関数: face-extend-p face &optional frame inherit

この関数は、face face が non-nil :extend 属性を指定している場合に non-nil を返します。inherit 引数は face-attribute に渡されます。