Next: Displaying Faces, Previous: Defining Faces, Up: Faces
This section describes functions for directly accessing and modifying the attributes of a named face.
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 ist
, this function returns the value of the specified attribute for newly-created frames (this is normallyunspecified
, unless you have specified some value usingset-face-attribute
; see below).If inherit is
nil
, only attributes directly defined by face are considered, so the return value may beunspecified
, 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 beunspecified
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 thedefault
face (which is always completely specified).For example,
(face-attribute 'bold :weight) ⇒ bold
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
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 ornil
, the returned value describes the default attributes of face for newly created frames.
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.
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
tobold
and the attribute:slant
toitalic
.If frame is
t
, this function sets the default attributes for newly created frames. If frame isnil
, 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.
These set the
:foreground
attribute (or:background
attribute, respectively) of face to color.
This sets the
:stipple
attribute of face to pattern.
This sets the
:weight
attribute of face to normal if bold-p isnil
, and to bold otherwise.
This sets the
:slant
attribute of face to normal if italic-p isnil
, and to italic otherwise.
This sets the
:underline
attribute of face to underline.
This sets the
:inverse-video
attribute of face to inverse-video-p.
This swaps the foreground and background colors of face face.
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.
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. And, in this case, if the optional third argument character is supplied, it returns the font name used for character.
These functions return the foreground color (or background color, respectively) of face face, as a string. If the color is unspecified, they return
nil
.
This function returns the name of the background stipple pattern of face face, or
nil
if it doesn't have one.
This function returns a non-
nil
value if the:weight
attribute of face is bolder than normal (i.e., one ofsemi-bold
,bold
,extra-bold
, orultra-bold
). Otherwise, it returnsnil
.
This function returns a non-
nil
value if the:slant
attribute of face isitalic
oroblique
, andnil
otherwise.