]> git.eshelyaron.com Git - emacs.git/commitdiff
Encode non-ASCII SVG texts
authorLars Ingebrigtsen <larsi@gnus.org>
Wed, 18 Oct 2017 22:25:22 +0000 (00:25 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Wed, 18 Oct 2017 22:25:44 +0000 (00:25 +0200)
* lisp/svg.el (svg--encode-text): Encode non-ASCII texts.

lisp/svg.el

index 6a0c49b46987435a26c5237f98cff1e5d3971da9..8639bf1124335846b766a3fb6f19fc11b27f4610 100644 (file)
@@ -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 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)