]> git.eshelyaron.com Git - emacs.git/commitdiff
(display-supports-face-attributes-p): New function.
authorMiles Bader <miles@gnu.org>
Sun, 9 Jun 2002 12:57:35 +0000 (12:57 +0000)
committerMiles Bader <miles@gnu.org>
Sun, 9 Jun 2002 12:57:35 +0000 (12:57 +0000)
lisp/faces.el

index ea391ae6149bbb0d1e197a129d614d16fffc38a5..83832f2b47f8b120407bccdfa424484d7496442f 100644 (file)
@@ -1477,6 +1477,30 @@ If omitted or nil, that stands for the selected frame's display."
      (t
       (> (tty-color-gray-shades display) 2)))))
 
+(defun display-supports-face-attributes-p (attributes &optional display)
+  "Return non-nil if all the face attributes in ATTRIBUTES are supported.
+The optional argument DISPLAY can be a display name, a frame, or
+nil (meaning the selected frame's display)
+
+The definition of `supported' is somewhat heuristic, but basically means
+that a face containing all the attributes in ATTRIBUTES, when merged
+with the default face for display, can be represented in a way that's
+
+ (1) different in appearance than the default face, and
+ (2) `close in spirit' to what the attributes specify, if not exact.
+
+Point (2) implies that a `:weight black' attribute will be satisified by
+any display that can display bold, and a `:foreground \"yellow\"' as long
+as it can display a yellowish color, but `:slant italic' will _not_ be
+satisified by the tty display code's automatic substitution of a `dim'
+face for italic."
+  (let ((frame (car (frames-on-display-list display))))
+    ;; For now, we assume that non-tty displays can support everything.
+    ;; Later, we should add the ability to query about specific fonts,
+    ;; colors, etc.
+    (or (memq (framep frame) '(x w32 mac))
+       (tty-supports-face-attributes-p attributes frame))))
+
 \f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Background mode.