> Not if your code does > (set-face-foreground FACE (face-foreground 'default)) > With this, if the default face changes the color, FACE will follow suit. I don't see that at all here in my emacs24: (progn (defface a nil "") (defface b nil "") (set-face-attribute 'b nil :foreground "yellow") (set-face-attribute 'a nil :inherit 'b) (set-face-foreground 'a (face-foreground 'default)) ;; let's chase how 'a would render: (let ((init (face-attribute 'a :foreground nil t)) final) (set-face-foreground 'default "pink") (setq final (face-attribute 'a :foreground nil t)) (message "%S %S" init final))) "\"white\" \"white\"" Per your assertion, the message should have been: white, pink. Also, your point seems to be: We shouldn't allow nil (to clear inheritances) for :fg and :bg (unlike for other faces) because: "*we only allow strings*". I don't get that logic.