49.1.5 Customizing Faces
You can customize faces (see Text Faces), which determine how Emacs displays different types of text. Customization groups can contain both variables and faces.
For example, in programming language modes, source code comments are
shown with font-lock-comment-face
(see Font Lock mode). In a
customization buffer, that face appears like this, after you click on
the ‘ [Show All Attributes]
’ link:
[Hide] Font Lock Comment Face:[sample]
[State] : STANDARD.
Font Lock mode face used to highlight comments.
[ ] Font Family: --
[ ] Font Foundry: --
[ ] Width: --
[ ] Height: --
[ ] Weight: --
[ ] Slant: --
[ ] Underline: --
[ ] Overline: --
[ ] Strike-through: --
[ ] Box around text: --
[ ] Inverse-video: --
[X] Foreground: Firebrick [Choose] (sample)
[ ] Background: --
[ ] Stipple: --
[ ] Inherit: --
[Hide Unused Attributes]
The first three lines show the name, ‘ [State]
’ button, and
documentation for the face. Below that is a list of face
attributes. In front of each attribute is a checkbox. A filled
checkbox, ‘ [X]
’, means that the face specifies a value for this
attribute; an empty checkbox, ‘ [ ]
’, means that the face does not
specify any special value for the attribute. You can activate a
checkbox to specify or unspecify its attribute.
A face does not have to specify every single attribute; in fact,
most faces only specify a few attributes. In the above example,
font-lock-comment-face
only specifies the foreground color.
Any unspecified attribute is taken from the special face named
default
, whose attributes are all specified. The
default
face is the face used to display any text that does not
have an explicitly-assigned face; furthermore, its background color
attribute serves as the background color of the frame.
The ‘ [Hide Unused Attributes]
’ button, at the end of the
attribute list, hides the unspecified attributes of the face. When
attributes are being hidden, the button changes to ‘ [Show All Attributes]
’, which reveals the entire attribute list. The
customization buffer may start out with unspecified attributes hidden,
to avoid cluttering the interface.
When an attribute is specified, you can change its value in the usual ways.
Foreground and background colors can be specified using either color
names or RGB triplets (see Colors for Faces). You can also use the
‘ [Choose]
’ button to switch to a list of color names; select a
color with RET
in that buffer to put the color name in the
value field.
Setting, saving and resetting a face work like the same operations for variables (see Changing a Variable).
A face can specify different appearances for different types of
displays. For example, a face can make text red on a color display,
but use a bold font on a monochrome display. To specify multiple
appearances for a face, select ‘ For All Kinds of Displays
’ in the
menu you get from invoking ‘ [State]
’.