When I open SVG files in Emacs they appear blurry. The SVG files themselves are fine (when I open them in Firefox they scale perfectly). My Emacs is compiled with svg support (librsvg), so it should use that for rendering, right?
(init-image-library 'svg)
returns t
.
Additionally, I looked at the image overlay properties with describe-char
and I'm seeing
(image :type svg :file "/home/matt/src/blog/org/img/test.svg" :scale 1.726482213438735)
which as far as I can tell looks right.
I did notice that display-mm-width
and height were way too big and I thought that might be giving librsvg a wrong DPI, so I changed them with
(setq display-mm-dimensions-alist '(t . (126 . 37)))
But that had no effect, even after clearing the image cache.
I also thought maybe imagemagick was getting in the way, so I disabled imagemagick for svg with
(add-to-list 'imagemagick-types-inhibit 'SVG)
(imagemagick-register-types)
but that also had no effect.
How can I get SVGs to display properly?
I'm using Emacs v28, although I had the same issue with 27 and if I remember correctly, 26 as well. In any event I don't think it's a version issue.
Edit: I was able to get this to work by changing the dvisvgm command options I was using to generate the file. I still don't understand what the issue was because firefox was able to display the SVG fine in either case.
Edit 2: Here's a MWE of the issue. Note the comment above is wrong, I'd simply changed the dvisvgm scale with the -c flag. This hides the issue, but doesn't seem to fix it and messes up image sizes.
I start with a tex document input:
\documentclass{standalone}
\usepackage{xcolor}
\begin{document}
$a=b+c$
\end{document}
then convert it to pdf with
pdflatex file.tex
and then use dvisvgm with
dvisvgm --pdf file.pdf -n -b min -c 1 -o file.svg
Here's how it appears in an emacs buffer after several image-increase-size
commands:
Here's the same file zoomed to 300% in my browser
In reference to the first edit, here's what happens when I change the dvisvgm scale (-c
) to 10
That looks nice now, but its much larger and when you zoom in you start to see the blurriness reappear
dvisvgm
parameters you currently have and, if you remember, the previous settings?