From: "Clément Pit-Claudel" <cpitclaudel@gmail.com>
To: 40845@debbugs.gnu.org
Subject: bug#40845: SVG rendering issues
Date: Sat, 25 Apr 2020 08:19:01 -0400 [thread overview]
Message-ID: <72ebf5eb-6b00-ebb4-dab3-a047e35ae1ae@gmail.com> (raw)
Hi all,
As discussed on the mailing list, a number of issues currently exist with our SVG rendering implementation. I have tried to summarize the ones I'm aware of in the following example.
(with-current-buffer (get-buffer-create "*svg bugs*")
(erase-buffer)
(require 'face-remap)
(setq text-scale-mode-amount 10)
(text-scale-mode)
(let ((svg (svg-create 16 16)))
(svg-ellipse svg 8 8 4 4)
(insert "Text: ")
(print (svg-image svg :ascent 100))
(insert-image (svg-image svg :ascent 100))
(insert-image (svg-image svg :scale 5.0 :ascent 'center :foreground "red" :background "darkgreen"))
(add-text-properties
(point-min) (point-max)
'(face (:foreground "orange" :background "purple")
mouse-face '(:foreground "purple" :background "orange"))))
(pop-to-buffer (current-buffer)))
The issues:
1. 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.
2. The SVG images don't inherit the background of the current face; instead, they inherit the background of the default face.
3. The SVG images don't inherit the foreground of the current face; instead, they use a black foreground.
4. The :foreground keyword has no effect on svg images.
5. The images are not scaled with the text: changing text-scale-mode-amount doesn't change the size of the images.
For 1, 2, 3, and 4, the expected behavior is easy to define:
- For 1, the image should be scaled before being rasterized.
- For 2 and 3, the image should inherit the characteristics of the current face, and be re-rendered if that face changes (e.g. when mouse-face applies, which is important for buttons)
- For 4, the :foreground property should be respected
For 5, it's a bit trickier. One option would be to accept a float-valued :height specification and treat that as a multiple of the current font size.
A partial workaround for 2 is to add an explicit :background, but it doesn't help with face changes, such as applying a mouse-face. For 1 and 5 it can be enough to set the size in the SVG and add hooks, but that only works easily for SVGs created within emacs. For 3 and 4, I don't know of a workaround except modifying the SVG.
Cheers,
Clément.
next reply other threads:[~2020-04-25 12:19 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-25 12:19 Clément Pit-Claudel [this message]
2020-04-25 14:34 ` bug#40845: SVG rendering issues Pip Cet
2020-04-25 15:30 ` Eli Zaretskii
2020-04-25 15:48 ` Pip Cet
2020-04-25 16:10 ` Eli Zaretskii
2020-04-25 17:38 ` Pip Cet
2020-04-25 18:07 ` Eli Zaretskii
2020-04-25 19:41 ` Pip Cet
2020-04-25 20:11 ` Eli Zaretskii
2020-04-26 10:15 ` Pip Cet
2020-04-26 14:38 ` Eli Zaretskii
2020-04-26 19:00 ` Pip Cet
2020-04-27 15:47 ` Eli Zaretskii
2020-04-25 15:46 ` Eli Zaretskii
2020-04-25 16:42 ` Clément Pit-Claudel
2020-04-25 17:02 ` Eli Zaretskii
2020-04-25 17:24 ` Clément Pit-Claudel
2020-04-25 17:46 ` Alan Third
2020-04-25 18:07 ` Pip Cet
2020-04-26 21:17 ` Alan Third
2020-04-26 22:48 ` Clément Pit-Claudel
2020-04-27 15:22 ` Alan Third
2020-04-27 16:04 ` Clément Pit-Claudel
2020-05-03 14:13 ` Alan Third
2020-05-03 14:18 ` Lars Ingebrigtsen
2020-05-03 16:07 ` Eli Zaretskii
2020-05-03 16:24 ` Alan Third
2020-05-03 16:49 ` Eli Zaretskii
2020-05-03 18:38 ` Alan Third
2020-05-03 19:17 ` Eli Zaretskii
2020-05-09 14:27 ` Alan Third
2020-05-09 19:54 ` Alan Third
2020-05-15 11:09 ` Eli Zaretskii
2020-05-15 21:40 ` Alan Third
2020-08-22 16:15 ` Alan Third
2020-08-22 16:28 ` Lars Ingebrigtsen
2020-08-22 16:54 ` Eli Zaretskii
2020-08-22 18:57 ` Alan Third
2020-08-22 19:17 ` Eli Zaretskii
2020-08-22 21:35 ` Alan Third
2020-08-23 5:47 ` Eli Zaretskii
2020-08-23 9:09 ` Alan Third
2020-08-23 9:11 ` Eli Zaretskii
2020-08-23 11:48 ` Alan Third
2020-08-23 12:05 ` Eli Zaretskii
2020-08-23 12:19 ` Alan Third
2020-08-23 12:23 ` Eli Zaretskii
2020-08-23 15:29 ` Alan Third
2020-08-23 15:43 ` Lars Ingebrigtsen
2020-08-23 16:08 ` Alan Third
2020-08-23 16:38 ` Lars Ingebrigtsen
2020-04-27 2:27 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=72ebf5eb-6b00-ebb4-dab3-a047e35ae1ae@gmail.com \
--to=cpitclaudel@gmail.com \
--cc=40845@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).