14.8 Text Faces
Emacs can display text in several different styles, called faces. Each face can specify various face attributes, such as the font, height, weight, slant, foreground and background color, and underlining or overlining. Most major modes assign faces to the text automatically, via Font Lock mode. See Font Lock mode, for more information about how these faces are assigned.
To see what faces are currently defined, and what they look like,
type M-x list-faces-display
. With a prefix argument, this
prompts for a regular expression, and displays only faces with names
matching that regular expression (see Syntax of Regular Expressions).
It’s possible for a given face to look different in different
frames. For instance, some text terminals do not support all face
attributes, particularly font, height, and width, and some support a
limited range of colors. In addition, most Emacs faces are defined so
that their attributes are different on light and dark frame
backgrounds, for reasons of legibility. By default, Emacs
automatically chooses which set of face attributes to display on each
frame, based on the frame’s current background color. However, you
can override this by giving the variable frame-background-mode
a non- nil
value. A value of dark
makes Emacs treat all
frames as if they have a dark background, whereas a value of
light
makes it treat all frames as if they have a light
background.
You can customize a face to alter its attributes, and save those customizations for future Emacs sessions. See Customizing Faces, for details.
The default
face is the default for displaying text, and all
of its attributes are specified. Its background color is also used as
the frame’s background color. See Colors for Faces.
Another special face is the cursor
face. On graphical
displays, the background color of this face is used to draw the text
cursor. None of the other attributes of this face have any effect;
the foreground color for text under the cursor is taken from the
background color of the underlying text. On text terminals, the
appearance of the text cursor is determined by the terminal, not by
the cursor
face.
You can also use X resources to specify attributes of any particular face. See X Resources.
Emacs can display variable-width fonts, but some Emacs commands, particularly indentation commands, do not account for variable character display widths. Therefore, we recommend not using variable-width fonts for most faces, particularly those assigned by Font Lock mode.