summaryrefslogtreecommitdiff
path: root/lisp/svg.el
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2017-10-26 21:48:46 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2017-10-26 21:49:00 +0200
commit1ad56d0a6bdd07c722a3c161096a16f70d1cbb35 (patch)
treef4923d7f52e604a6af14948b435c951908a01993 /lisp/svg.el
parenta0e5a02125a62d3c4f09abea3a0085111ddffa77 (diff)
downloademacs-1ad56d0a6bdd07c722a3c161096a16f70d1cbb35.tar.gz
Fix up svg text encoding
* lisp/svg.el (svg--encode-text): The SVG driver doesn't like it if we use &apos; for apostrophe, so use our own encoding function instead of relying on the xml one.
Diffstat (limited to 'lisp/svg.el')
-rw-r--r--lisp/svg.el10
1 files changed, 8 insertions, 2 deletions
diff --git a/lisp/svg.el b/lisp/svg.el
index 42619ed3519..ae7f1c57c02 100644
--- a/lisp/svg.el
+++ b/lisp/svg.el
@@ -161,9 +161,15 @@ otherwise. IMAGE-TYPE should be a MIME image type, like
(defun svg--encode-text (text)
;; Apparently the SVG renderer needs to have all non-ASCII
- ;; characters encoded.
+ ;; characters encoded, and only certain special characters.
(with-temp-buffer
- (insert (xml-escape-string text))
+ (insert text)
+ (dolist (substitution '(("&" . "&amp;")
+ ("<" . "&lt;")
+ (">" . "&gt;")))
+ (goto-char (point-min))
+ (while (search-forward (car substitution) nil t)
+ (replace-match (cdr substitution) t t nil)))
(goto-char (point-min))
(while (not (eobp))
(let ((char (following-char)))