Subject: Re: bug#21557: 25.0.50; HTML renders text invisible

From: Katsumi Yamaoka <[email-masked]>
Date: Mon, 28 Sep 2015 15:43:16 +0900

On Fri, 25 Sep 2015 04:28:46 -0400, Richard Stallman wrote:
> I received a message whose text was rendered as invisible when I
> viewed it in Rmail.  I think it is because of 'color:#000'.

I tried this with the form below and found no problem.  Increasing
the value of shr-color-visible-luminance-min raises the contrast.

> I think that if HTML specifies the same color for foreground and
> background, rendering should use different colors so that the text
> can be seen.

shr-color.el should do that.  But if you have the fg color of
the variable-pitch face set (to #000), it will have no effect.
Because the new color that shr-color.el chooses is appended, not
prepended to the existing one:

(defun shr-colorize-region (start end fg &optional bg)
[...]
          (add-face-text-property start end
                                  (list :foreground (cadr new-colors))
                                  t))
----------------------------------^
I'm not sure whether changing it to nil causes another problem.

My recipe:
emacs -Q -fg white -bg black

(let ((tmp (get-buffer-create "*tmp*")))
  (require 'rmailmm)
  (with-current-buffer tmp
    (erase-buffer)
    (insert (quoted-printable-decode-string "\
<html><body><span style=\"font-family:Verdana; color:#000; font-size:10pt;\"><div>Hi Jeanne</div><div><br></div><div>I know I gave you an address for the books to be sent. I am sending you an address at Kent for the books to be sent. It makes more sense for the books to be sent there:<br></div><div><br></div></span></body></html>
"))
    (insert (prog1
                (with-temp-buffer
                  (rmail-mime-render-html-shr tmp)
                  (buffer-string))
              (erase-buffer)))
    (display-buffer tmp)))