Hello Tomaž,
I think there can be a good rationale for using Skia, or other good
external SVG libraries, considering the use case of the two SVG import
filters, which includes converting an SVG unchanged:
1) svgio: For Insert -> Image -> From File
2) filter/source/svg used to open SVG file
Quoting from Fernand:
From a users point of view:
Inserting a SVG-image in Writer, Calc or Impress must been done
"unchanged" because users will in 99% off all cases not edit a Image.
Opening in Draw is a different game where in most cases the user has
the
intention tot edit a image and save back SVG or as a other format.
https://lists.freedesktop.org/archives/libreoffice/2015-November/070909.html
In this way, converting documents containing embedded unchanged SVG
files is an important use case, and it is meaningful to have a faster
conversion with more SVG features supported.
Theoretically, If we convert the document to PDF using Skia/PDF backend,
and before that, convert the embedded SVG files to the Skia vector
representation, then it may be possible to bypass the drawinglayer, and
create a document consisting of SVG files (and not only the SVG files
separately) to PDF, and have the embedded SVG files as vector in the
output, not as bitmap.
This the usual use case for many users, as those who are interested in
editing SVG files usually use other tools like Inkscape.
Regards,
Hossein
On 28.04.2023 09:47, Tomaž Vajngerl wrote:
Hi Hossein,
On Tue, Apr 25, 2023 at 9:59 PM Hossein Nourikhah
<hossein@xxxxxxxxxxxxxxx> wrote:
Hello,
I have studied some of the bugs from the svgio module of
LibreOffice. As
described in the svgio/README.md, "svgio module uses sax for reading
xml
and turns it into drawinglayer primitives. The rendering is done via
drawinglayer primitives".
As you say - SVG is turned into drawinglayer primitives, so we keep
the SVG in a vector graphic form and can - if needed - transform that
into another vector graphic format (EMF for example). If you want to
implement it with Skia, you also have to import it into drawinglayer
primitives and not render the vector graphic into a bitmap (like we do
for example with "PDF as an image", where we render the PDF into a
bitmap, which has major flaws). This is IMHO not that easy to achieve
and not sure if skia supports that (it probably is possible to convert
into skia internal vector representation and convert that to drawing
layer primitives).
The only place where rendering the SVG to a bitmap would be useful is
for icons, but then I have always said - why spend time on integrating
another SVG library instead of fixing svgio instead...
Tomaž