2

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: enter image description here

Here's the same file zoomed to 300% in my browser enter image description here

In reference to the first edit, here's what happens when I change the dvisvgm scale (-c) to 10 enter image description here

That looks nice now, but its much larger and when you zoom in you start to see the blurriness reappear enter image description here

MattHusz
  • 177
  • 8
  • could you post the dvisvgm parameters you currently have and, if you remember, the previous settings? – Wojciech Gac Feb 07 '20 at 10:51
  • @WojciechGac I've updated the question with more specific information. Let me know if I've omitted any other useful info. – MattHusz Feb 07 '20 at 18:05

1 Answers1

1

This is a known issue with Emacs, documented as issue #1 in bug report 40845. I've copied that portion of the report here for convenience

Manually scaling an image, as is done for the second image, doesn't re-render the svg: is scales the bitmap-rendered version of it, causing blurriness.

There's a patch in that chain, although it doesn't seem to have been thoroughly tested and has not yet been accepted. I'll update this answer when there's a fix in master.


As of August 23, 2020 this is now fixed (see linked bug report for details).

MattHusz
  • 177
  • 8
  • I still have this problem in Emacs 29.1 built with the RSVG library ... however, using the functions in this post, I can scale .svg LaTeX previews fine. However, non-preview .svg images don't scale well at all, and appear blurred. – nonreligious Sep 18 '23 at 14:36