gerard.vermeu...@posteo.net writes: > I have been trying to export SVG images having links to CSS from Org to > HTML > and I have found that the this CSS is not active in Firefox (only > browser I tried). > > I have found that the CCS is only active under two conditions: > 1. The HTML page should manage the CSS that the SVG image links to. > 2. The SVG image should be embedded in the HTML page.
CCing Timothy, the maintainer. Also, does the above mean that Firefox does not support custom CSS user stylesheets? What am I missing? > I wrote an ox-html derived export backend to embed SVG images: > https://forge.chapril.org/gav451/emacs.d/src/branch/main/site-lisp/ox-my-html/ox-my-html.el > and merged the SVG embedding functionality into ox-html.el leading to > the > attached patch. Thanks! I will provide high-level comments from general ox.el perspective. > + (:html-embed-svg-excludes "HTML_EMBED_SVG_EXCLUDES" nil > + org-html-embed-svg-excludes split) > + (:html-embed-svg-includes "HTML_EMBED_SVG_INCLUDES" nil > + org-html-embed-svg-includes split) This is awkward. To do per-image export adjustments, we usually use export attributes (#+ATTR_HTML: ...). And why "split"? > + (:with-html-svg-embedding nil "html-embed-svg" org-html-embed-svg) We have :html-inline-images. Maybe better :html-embed-svg ? > +(defcustom org-html-embed-svg nil > ... > + :version "30.0" We do not use :version tag. Please use :package-version. See Elisp manual section "15.1 Common Item Keywords". Also, maybe instead of t/nil boolean values here, we may allow the value to be a list of regular expressions or a string representing regular expression. This will allow what you are trying to do with HTML_EMBED_SVG_INCLUDES. The list elements might also be (not "..."), replicating HTML_EMBED_SVG_EXLCUDES. Even more generally, we may turn this into HTML_EMBED_IMAGES and embed all the images (possibly filtered by regexp). This will be slightly beyond the scope of this patch though. > +(defun org-html--embed-svg-p (link path info) > + "Check whether LINK and INFO specify to embed the SVG file named PATH. > +LINK must have no contents and link to an SVG file. INFO may contain > +lists of SVG files to include in and/or to exclude from embedding." > + (and (not (org-element-contents link)) Please use `org-export-inline-image-p'. > +(defun org-html-svg-contents (path) > + "Return the SVG contents of the file named PATH." > + (with-temp-buffer > + (insert-file-contents path) > + ;; Delete text preceding something starting as an SVG root element. > + ;; The intent is to remove XML declarations (and XML comments). > + ;; This breaks in case of a preceding XML comment with <svg inside > + ;; or a preceding XML element with an SVG element inside. > + ;; See https://emacs.stackexchange.com/a/57433 for the original code. But the original code is different, no? -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92>