The properties a face can specify include the font, the foreground
color, the background color, the background pixmap, the underlining,
the display table, and (for TTY devices) whether the text is to be
highlighted, dimmed, blinking, or displayed in reverse video.
The face can also leave these unspecified, causing them to assume the
value of the corresponding property of the default face.
Here are the basic primitives for working with faces.
This function defines and returns a new face named name, initially with all properties unspecified. It does nothing if there is already a face named name. Optional argument doc-string specifies an explanatory string used for descriptive purposes. If optional argument temporary is non-
nil, the face will automatically disappear when there are no more references to it anywhere in text or Lisp code (otherwise, the face will continue to exist indefinitely even if it is not used).
This function returns a list of the names of all defined faces. If temporary is
nil, only the permanent faces are included. If it ist, only the temporary faces are included. If it is any other non-nilvalue both permanent and temporary are included.
This function defines a new face named new-name which is a copy of the existing face named old-face. If there is already a face named new-name, then it alters the face to have the same properties as old-face.
locale, tag-set, exact-p and how-to-add let you copy just parts of the old face rather than the whole face, and are as in
copy-specifier(see Specifiers).