I have combined all of the 3 svg hook diff and made a 4-hook patch, it only increases the size of the skia hook patch from about 24k to 34k. I use a -DUSE_ADOBE to make 4 object files from 2 source files, and change the "-s" switch to take a number 1,2,3 for the 3 new hooks. And all 4 now write a single line at svg_init() to say what it is. I imagine the Adobe+cairo part will be extracted and upstream first, as it is not too difficult/slow/hard to build. It is better at rendering some *cough* google color *cough* fonts than librsvg. There is an open issue at my harfbuzz-python-demos repo (where the diff is) collecting the rendering issue numbers I filed at librsvg, Adobe svg, and inkscape.
The patch has some harmless colrv1 in the Makefile diff that I don't want to remove; and the small part on static prototype changes to rsvg-port.c/.h can be upstreamed now. (The internal hook routines are only called via the individual hook, so there is no need for their names to be public - hiding them allow me to build 4 object files out of 2 source files, and the result is probably marginally smaller and faster, having fewer public symbols; 3 benefits for one change). Rsvg-port.c/.h probably should be renamed cairo-port.c/.h as it now does both librsvg+cairo and adobe+cairo.
(some can go upstream, some are posted for public review/fun, some are too ugly to be shown in public yet - trying to minimise the differences between the 3 "active" branches I have...)
Pretty-sure some of you want to hear less often from me now :-). I'll update my system binaries with the 4-hook diff at some point(goes to FontVal-extras/binary-archive/), and carry on with colrv1.
On Thursday, 20 July 2023 at 15:01:54 BST, Hin-Tak Leung <htl10@users.sourceforge.net> wrote:
It took less than an hour of quick hack to get rid of librsvg and replace it with Adobe Native + its cairo backend from Suziki san.
There is a rendering bug filed as
https://github.com/adobe/svg-native-viewer/issues/185
I said it is between librsvg and skia.
The code diff is at
https://github.com/HinTak/harfbuzz-python-demos/blob/master/svg-native/ft2-demos-Adobe-SVG-Cairo.diff
(Since I did configure --with-librsvg=no, had to have cairo headers and libs manually... you cam figure out better way of doing that...)
So we have 5 svg-hooks now (in history order):
librsvg + cairo
pycairo + librsvg gobject introspection (python)
skia m103+
Adobe Native + skia (any/older version)
Adobe Native + cairo