From ef768c790ed83c8fa5c7efb24dc8e94967b5a778 Mon Sep 17 00:00:00 2001 From: Phillip Lord Date: Sun, 17 Jan 2016 22:03:10 +0000 Subject: [PATCH] Cope with multiple overlapping faces. * lisp/htmlfontify.el (hfy-face-to-style-i): Treat inheritance right to left. (hfy-face-resolve-face): Handle font specification as well as font name. Documentation update. (Bug#21990) --- lisp/htmlfontify.el | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el index 178f3a00133..fc309bd62ee 100644 --- a/lisp/htmlfontify.el +++ b/lisp/htmlfontify.el @@ -999,7 +999,7 @@ merged by the user - `hfy-flatten-style' should do this." (append parent (hfy-face-to-style-i - (hfy-face-attr-for-class v hfy-display-class)) )))) + (hfy-face-attr-for-class v hfy-display-class)))))) (setq this (if val (case key (:family (hfy-family val)) @@ -1018,7 +1018,7 @@ merged by the user - `hfy-flatten-style' should do this." (:italic (hfy-slant 'italic)))))) (setq that (hfy-face-to-style-i next)) ;;(lwarn t :warning "%S => %S" fn (nconc this that parent)) - (nconc this that parent))) ) + (nconc this parent that))) ) (defun hfy-size-to-int (spec) "Convert SPEC, a CSS font-size specifier, to an Emacs :height attribute value. @@ -1056,13 +1056,19 @@ haven't encountered them yet. Returns a `hfy-style-assoc'." (nconc r (hfy-size (if x (round n) (* n 1.0)))) )) (defun hfy-face-resolve-face (fn) + "For FN return a face specification. +FN may be either a face or a face specification. If the latter, +then the specification is returned unchanged." (cond ((facep fn) (hfy-face-attr-for-class fn hfy-display-class)) + ;; FIXME: is this necessary? Faces can be symbols, but + ;; not symbols refering to other symbols? ((and (symbolp fn) (facep (symbol-value fn))) - (hfy-face-attr-for-class (symbol-value fn) hfy-display-class)) - (t nil))) + (hfy-face-attr-for-class + (symbol-value fn) hfy-display-class)) + (t fn))) (defun hfy-face-to-style (fn) -- 2.39.5