GNU bug report logs -
#64908
29.1; svg parse failure
Previous Next
Reported by: Daniel Vianna <dmlvianna <at> gmail.com>
Date: Fri, 28 Jul 2023 01:12:02 UTC
Severity: normal
Tags: unreproducible
Found in version 29.1
Done: Alan Third <alan <at> idiocy.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
On 05/08/2023 11:58, Alan Third wrote:
> Hi David, I did a bit of thinking about what a percentage in the width
> or height attributes actually means and how librsvg handles it.
>
> I think we should always ignore it.
>
> A percentage is intended as a percentage of the enclosing box. this
> means if we set an image width of 100 pixels in Emacs, and the width
> in the SVG is 50%, the image should be 50 pixels wide.
>
> However we requested a width of 100 pixels, and Emacs will give us
> that no matter what, even scaling it back up.
>
> Additionally, librsvg will scale the drawn image to a width of 50%
> anyway.
>
> What this means is if we set the image width to 100 pixels, librsvg
> will scale its drawing down by 50% and it should come out the correct
> size within the 100 pixel wide image.
>
> I hope that made sense, it took me a bit of thinking about it before I
> came to this conclusion. It was really the fact that librsvg scales
> its drawing anyway that made me decide there's no point in us also
> scaling it.
>
> I've attached a patch, can you give it a go and let me know how it
> works.
>
> Or if you disagree with my analysis above, let me know, because I'm
> not 100% sure of it.
Hi Alan,
I did test your V2 patch, and it seems to work well.
I tend to agree with your reasoning, even if I am not enough a
librsvg expert to fully understand all the details.
One case however is not working, when the svg image just specify
percentage for width and height without a viewbox, like this:
'(image :type svg :data
"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">
<defs id=\"defs3051\">
<style type=\"text/css\" id=\"current-color-scheme\">
.ColorScheme-Text {
color:#232629;
}
</style>
</defs>
<path
style=\"fill:currentColor;fill-opacity:1;stroke:none\"
d=\"m7.707031 3l-.707031.707031 6.125 6.125 1.167969 1.167969-1.167969 1.167969-6.125 6.125.707031.707031 6.125-6.125 1.875-1.875-1.875-1.875-6.125-6.125\"
class=\"ColorScheme-Text\"
/>
</svg>"
:scale 1)
I can display a such image in firefox, gwenview, or inkscape, but not in Emacs.
I guess it works in applications that provide a default viewbox when not defined.
And it is failing in Emacs because no default viewbox is provided.
What could be questionable is if it makes sense to fail when image also specifies
:width and :height, like this:
'(image :type svg :data
"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">
<defs id=\"defs3051\">
<style type=\"text/css\" id=\"current-color-scheme\">
.ColorScheme-Text {
color:#232629;
}
</style>
</defs>
<path
style=\"fill:currentColor;fill-opacity:1;stroke:none\"
d=\"m7.707031 3l-.707031.707031 6.125 6.125 1.167969 1.167969-1.167969 1.167969-6.125 6.125.707031.707031 6.125-6.125 1.875-1.875-1.875-1.875-6.125-6.125\"
class=\"ColorScheme-Text\"
/>
</svg>"
:scale 1 :width 22 :height 22)
I wonder if it could make sense to provide a default viewbox having image :width and :height?
Not sure it will be useful, though.
Thanks
This bug report was last modified 1 year and 287 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.