diff options
Diffstat (limited to 'lisp/svg.el')
-rw-r--r-- | lisp/svg.el | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lisp/svg.el b/lisp/svg.el index 6a0c49b4698..42619ed3519 100644 --- a/lisp/svg.el +++ b/lisp/svg.el @@ -157,7 +157,21 @@ otherwise. IMAGE-TYPE should be a MIME image type, like (dom-node 'text `(,@(svg--arguments svg args)) - text))) + (svg--encode-text text)))) + +(defun svg--encode-text (text) + ;; Apparently the SVG renderer needs to have all non-ASCII + ;; characters encoded. + (with-temp-buffer + (insert (xml-escape-string text)) + (goto-char (point-min)) + (while (not (eobp)) + (let ((char (following-char))) + (if (< char 128) + (forward-char 1) + (delete-char 1) + (insert "&#" (format "%d" char) ";")))) + (buffer-string))) (defun svg--append (svg node) (let ((old (and (dom-attr node 'id) |