Indeed, that's how it works - correctly - for some attributes, example, :underlin. Setting it to nil clears anything inherited, making emacs fall back to the default.  
:foreground and :background go halfway towards that behavior, providing the ability to set to nil, but then treat it as 'unspecified.




On Thu, Oct 10, 2019 at 11:56 AM Dave Goel <deego3@gmail.com> wrote:

> What do you mean by "default foreground" here?

I mean: The foreground of the face called 'default. That's what emacs picks the attribute from if none is matched.
It seems that the intention of allowing face A to specify an attribute as nil is to /clear/ the inherited attribute (so that emacs can fall back upon the default for that attribute). Unfortunately, nil seems to become 'unspecified at the moment, which => inherit the attribute.