When Emacs displays a given piece of text, the visual appearance of the text may be determined by faces drawn from different sources. If these various sources together specify more than one face for a particular character, Emacs merges the attributes of the various faces. Here is the order in which Emacs merges the faces, from highest to lowest priority:
region
face. See Standard Faces in The GNU Emacs Manual. nil
face
property, Emacs applies the face(s) specified by that property. If the overlay has a mouse-face
property and the mouse is near enough to the overlay, Emacs applies the face or face attributes specified by the mouse-face
property instead. See Overlay Properties. When multiple overlays cover one character, an overlay with higher priority overrides those with lower priority. See Overlays.
face
or mouse-face
property, Emacs applies the specified faces and face attributes. See Special Properties. (This is how Font Lock mode faces are applied. See Font Lock Mode.) mode-line
face. For the mode line of a non-selected window, Emacs applies the mode-line-inactive
face. For a header line, Emacs applies the header-line
face. For a tab line, Emacs applies the tab-line
face. before-string
or after-string
properties (see Overlay Properties), or from a display string (see Other Display Specs), and the string doesn’t contain a face
or mouse-face
property, or these properties leave some face attributes undefined, but the buffer text affected by the overlay/display property does define a face or those attributes, Emacs applies the face attributes of the “underlying” buffer text. Note that this is so even if the overlay or display string is displayed in the display margins (see Display Margins). default
face. At each stage, if a face has a valid :inherit
attribute, Emacs treats any attribute with an unspecified
value as having the corresponding value drawn from the parent face(s). see Face Attributes. Note that the parent face(s) may also leave the attribute unspecified; in that case, the attribute remains unspecified at the next level of face merging.
Copyright © 1990-1996, 1998-2019 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Displaying-Faces.html