39.12.3 Face Attribute Functions
This section describes functions for directly accessing and modifying the attributes of a named face.
function
face-attribute face attribute \&optional frame inheritβ
This function returns the value of the attribute
attribute for face
on frame
.
If frame
is omitted or nil
, that means the selected frame (see Input Focus). If frame
is t
, this function returns the value of the specified attribute for newly-created frames (this is normally unspecified
, unless you have specified some value using set-face-attribute
; see below).
If inherit
is nil
, only attributes directly defined by face
are considered, so the return value may be unspecified
, or a relative value. If inherit
is non-nil
, face
βs definition of attribute
is merged with the faces specified by its :inherit
attribute; however the return value may still be unspecified
or relative. If inherit
is a face or a list of faces, then the result is further merged with that face (or faces), until it becomes specified and absolute.
To ensure that the return value is always specified and absolute, use a value of default
for inherit
; this will resolve any unspecified or relative values by merging with the default
face (which is always completely specified).
For example,
(face-attribute 'bold :weight)
β bold
function
face-attribute-relative-p attribute valueβ
This function returns non-nil
if value
, when used as the value of the face attribute attribute
, is relative. This means it would modify, rather than completely override, any value that comes from a subsequent face in the face list or that is inherited from another face.
unspecified
is a relative value for all attributes. For :height
, floating point and function values are also relative.
For example:
(face-attribute-relative-p :height 2.0)
β t
function
face-all-attributes face \&optional frameβ
This function returns an alist of attributes of face
. The elements of the result are name-value pairs of the form (attr-nameΒ .Β attr-value)
. Optional argument frame
specifies the frame whose definition of face
to return; if omitted or nil
, the returned value describes the default attributes of face
for newly created frames.
function
merge-face-attribute attribute value1 value2β
If value1
is a relative value for the face attribute attribute
, returns it merged with the underlying value value2
; otherwise, if value1
is an absolute value for the face attribute attribute
, returns value1
unchanged.
Normally, Emacs uses the face specs of each face to automatically calculate its attributes on each frame (see Defining Faces). The function set-face-attribute
can override this calculation by directly assigning attributes to a face, either on a specific frame or for all frames. This function is mostly intended for internal usage.
function
set-face-attribute face frame \&rest argumentsβ
This function sets one or more attributes of face
for frame
. The attributes specifies in this way override the face spec(s) belonging to face
.
The extra arguments arguments
specify the attributes to set, and the values for them. They should consist of alternating attribute names (such as :family
or :underline
) and values. Thus,
(set-face-attribute 'foo nil :weight 'bold :slant 'italic)
sets the attribute :weight
to bold
and the attribute :slant
to italic
.
If frame
is t
, this function sets the default attributes for newly created frames. If frame
is nil
, this function sets the attributes for all existing frames, as well as for newly created frames.
The following commands and functions mostly provide compatibility with old versions of Emacs. They work by calling set-face-attribute
. Values of t
and nil
(or omitted) for their frame
argument are handled just like set-face-attribute
and face-attribute
. The commands read their arguments using the minibuffer, if called interactively.
command
set-face-foreground face color \&optional frameβ
command
set-face-background face color \&optional frameβ
These set the :foreground
attribute (or :background
attribute, respectively) of face
to color
.
command
set-face-stipple face pattern \&optional frameβ
This sets the :stipple
attribute of face
to pattern
.
command
set-face-font face font \&optional frameβ
Change the font-related attributes of face
to those of font
(a string or a font object). See face-font-attribute, for the supported formats of the font
argument. This function sets the attribute :font
of the face, and indirectly also the :family
, :foundry
, :width
, :height
, :weight
, and :slant
attributes, as defined by the font. If frame
is non-nil
, only change the attributes on the specified frame.
function
set-face-bold face bold-p \&optional frameβ
This sets the :weight
attribute of face
to normal
if bold-p
is nil
, and to bold
otherwise.
function
set-face-italic face italic-p \&optional frameβ
This sets the :slant
attribute of face
to normal
if italic-p
is nil
, and to italic
otherwise.
command
set-face-underline face underline \&optional frameβ
This sets the :underline
attribute of face
to underline
.
command
set-face-inverse-video face inverse-video-p \&optional frameβ
This sets the :inverse-video
attribute of face
to inverse-video-p
.
command
invert-face face \&optional frameβ
This swaps the foreground and background colors of face face
.
command
set-face-extend face extend \&optional frameβ
This sets the :extend
attribute of face
to extend
.
The following functions examine the attributes of a face. They mostly provide compatibility with old versions of Emacs. If you donβt specify frame
, they refer to the selected frame; t
refers to the default data for new frames. They return unspecified
if the face doesnβt define any value for that attribute. If inherit
is nil
, only an attribute directly defined by the face is returned. If inherit
is non-nil
, any faces specified by its :inherit
attribute are considered as well, and if inherit
is a face or a list of faces, then they are also considered, until a specified attribute is found. To ensure that the return value is always specified, use a value of default
for inherit
.
function
face-font face \&optional frame characterβ
This function returns the name of the font of face face
.
If the optional argument frame
is specified, it returns the name of the font of face
for that frame. If frame
is omitted or nil
, the selected frame is used. In the latter case, if the optional third argument character
is supplied, it returns the font name used for character
.
function
face-foreground face \&optional frame inheritβ
function
face-background face \&optional frame inheritβ
These functions return the foreground color (or background color, respectively) of face face
, as a string. If the color is unspecified, they return nil
.
function
face-stipple face \&optional frame inheritβ
This function returns the name of the background stipple pattern of face face
, or nil
if it doesnβt have one.
function
face-bold-p face \&optional frame inheritβ
This function returns a non-nil
value if the :weight
attribute of face
is bolder than normal (i.e., one of semi-bold
, bold
, extra-bold
, or ultra-bold
). Otherwise, it returns nil
.
function
face-italic-p face \&optional frame inheritβ
This function returns a non-nil
value if the :slant
attribute of face
is italic
or oblique
, and nil
otherwise.
function
face-underline-p face \&optional frame inheritβ
This function returns non-nil
if face face
specifies a non-nil
:underline
attribute.
function
face-inverse-video-p face \&optional frame inheritβ
This function returns non-nil
if face face
specifies a non-nil
:inverse-video
attribute.
function
face-extend-p face \&optional frameβ
This function returns non-nil
if face face
specifies a non-nil
:extend
attribute.