libera te tutemet ex inferis == Overview == This package builds a GDK Pixbuf Loader for the SVG format that uses libsvgtiny: https://www.netsurf-browser.org/projects/libsvgtiny/ Why? I'm glad you asked! GTK (https://www.gtk.org/) is a toolkit that powers many modern desktop environments and applications. GTK uses an abstraction called a GdkPixbuf for all of its images. When GTK wants to display an icon, it first loads that icon into a GdkPixbuf before displaying the result on the screen. GTK itself knows how to import many common formats like PNG and JPEG into a GdkPixbuf and can handle those formats out-of-the-box. The programs that handle the importing of the various formats are called "pixbuf loaders." Problem: GTK doesn't know the size of your screen, but it needs to display icons and images at an appropriate size. How big is that? Good question: nobody knows. For that reason, GTK makes heavy use of Scalable Vector Graphics (SVGs). It's much wiser to store one SVG and scale it to the desired size -- once you know what that is -- than it would be to store multiple copies of a non-scalable image at each of the sizes you might need. But, as you may have guessed, GTK itself doesn't know how to import an SVG into a GdkPixbuf. It doesn't come with the corresponding pixbuf loader. The blessed solution to this problem is to use librsvg: https://wiki.gnome.org/Projects/LibRsvg That package builds a pixbuf loader that can be plugged into GTK, allowing it to import SVG files into a GdkPixbuf, and everything is great. Or was, until January 3rd, 2017. On that day, librsvg-2.41.0 became the only dependency of GTK that requires Rust, which in turn requires LLVM. The rest of GTK (and its dependencies) are written in C or C++. This has several downsides: * Rust is big and slow to compile * LLVM is big and slow to compile * Rust is far less portable than C; it doesn't run on as many CPUs * The Rust ecosystem ironically burdens you with easily-avoidable security vulnerabilities [0]. It's not feasible to keep the old librsvg around forever, because that will ALSO result in security vulnerabilities. Which brings us to... == Why == Because if you have a problem with any of the bullet points above, then you need to replace librsvg if you want to keep using GTK. And, * libsvgtiny is written in portable C * libsvgtiny is still maintained; there are no open security issues * libsvgtiny is already packaged on a few distributions as part of the netsurf browser == Caveats == The main downside is that libsvgtiny isn't as robust as librsvg. It renders some things wrong, or a bit uglier than its counterpart. These are in theory all fixable upstream however, and you will help the netsurf browser by doing so. One especially relevant shortcoming is that libsvgtiny doesn't handle