Subject: bug#77841: Some svg image's black color is replaced by emacs's theme foreground color

From: Manuel Giraud <[email-masked]>
Date: Mon, 05 May 2025 16:43:53 +0200

Alan Third <[email-masked]> writes:

> On Sun, May 04, 2025 at 07:17:46PM +0200, Manuel Giraud wrote:
>> Thanks Alan.  I've tested your patch and here is what I observe. What's
>> good:
>> 
>>        - SVG Emacs "widgets" are still using the default face color and
>>          are updating accordingly when changing theme
>> 
>>        - I use Gnus and I see the same behaviour for the SVG icon in the
>>          modeline
>> 
>>        - The german flag example provided by Billy is displayed
>>          correctly (filled with black where needed) whatever the theme
>>          in use
>> 
>>        - The example from Ihor shows 'x²=2' written in white on black
>>          whatever the theme in use
>
> Thanks for checking.
>
>> What's not so good:
>> 
>> I use DocView (with mupdf to generate SVG pages) and I have set
>> 'doc-view-svg-face' to "inherit default" so that DocView buffers are
>> also following the theme.  This used to work but now, with this patch,
>> it does not render correctly.  For example, the text stays black instead
>> of white with a dark background theme.
>> 
>> Maybe, it is something that should be fixed in DocView (?)
>
> We could probably fix it by getting Docview to set the :css property
> for the SVG image to something like:
>
>     svg {
>       fill: currentcolor;
>     }
>
> Is the background OK?

Yes, in DocView, the background follows the theme.

> The attached might work, but only if you're using librsvg 2.48 or
> above... I can think of a way to fix *that* problem, but it'll need a
> little more thought.

I'm using librsvg 2.60 but the attached does not fix the issue: the
foreground is still black no matter what.  I have taken care of cleaning
the DocView cache directory before testing.
-- 
Manuel Giraud