Librsvg Explained

librsvg
Author:Raph Levien
Developer:GNOME Project
Programming Language:C, Rust
Genre:Graphics library
License:GPLv2, LGPLv2

librsvg, (occasionally stylized as LibRsvg)[1] is a free software SVG rendering library written as part of the GNOME project, intended to be lightweight and portable.[2] The Linux command-line program rsvg-convert uses the library to turn SVG files into raster images.

Backends

librsvg uses two other libraries to perform tasks from reading the file to rendering to the screen:

Since v2.41.0 many parts have been rewritten in Rust.[3] [4]

Adoption

librsvg is developed for the GNOME desktop environment and as such is used by GNOME Files and GNOME Loupe but is also intended to be used in other software applications. As a notable example, wikis hosted by Wikimedia use librsvg to render SVG images.[5] It was once picked for these web applications because it was decidedly "fast but not very accurate", according to MediaWiki.[6], Wikipedia and Wikimedia Commons use a version of librsvg 2.44 to render SVG as PNG.[7] [8]

Upon switching to the cairo vector rendering engine in 2005,[9] [10] librsvg became more accurate and more visually pleasing. Since 2012 an independent developer published Win32 console ports, version 2.40.20.[11] The manual page is also available online.[12]

Version history

VersionDateComments
1.0.02001-05-08
1.1.62002-03-07
2.0.02002-06-19
2.1.02002-09-27
2.2.02003-01-20
2.3.02003-04-08
2.4.02003-09-08
2.5.02003-12-07
2.6.02004-03-08
2.7.02004-03-10
2.8.02004-09-03
2.9.02005-01-25
2.11.02005-08-25
2.12.02005-09-15
2.13.02005-10-21
2.14.02006-02-25
2.15.02006-05-11
2.16.02006-08-31
2.18.02007-07-24
2.20.02008-01-19
2.22.02008-02-21
2.26.02009-03-16
2.31.02010-07-02
2.32.02010-09-27
2.34.02011-04-03
2.35.02011-11-14
2.36.02012-03-26
2.37.02013-01-10
2.39.02013-08-16
2.40.02013-10-14
2.40.162016-06-09
2.40.172017-04-07
2.40.202017-12-16
2.40.212020-02-262.40.21: Last version without Rust
2.41.02017-01-04
2.42.02018-01-09
2.43.02018-06-12
2.44.02018-08-23
2.44.102018-12-11
2.45.02018-11-17
2.45.6 2019-05-142:45.6: First version only on Rust. Requires Cairo 1.16.0 or later and Rust 1.30.0 or later[13]
2.45.922019-09-02
2.46.02019-09-09
2.47.02019-10-29
2.48.02020-03-07
2.48.92020-11-05
2.49.02020-05-29
2.49.52020-09-04
2.50.02020-09-10
2.50.32021-01-28

version used on Wikimedia Commons as of May 2023[14]

2.51.02021-02-03
2.51.42021-07-09
2.52.02021-09-15
2.53.02022-01-18
2.53.12022-02-12
2.53.22022-03-12
2.54.02022-03-162.54.1 2022-04-23; 2.54.2 2022-05-13; 2.54.3 2022-05-14; 2.54.4 2022-06-10; 2.54.5 2022-08-26
2.55.02022-08-03
2.55.12022-09-05
2.55.22023-03-16
2.57.902024-01-25Latest version as of 2024-01-25First version to use Rust crates for all image loading operations, eliminating gdk-pixbuf dependency.[15]

Usage

On Linux with the librsvg2-bin package installed,[16] an SVG file can be converted to PNG as follows:$ rsvg-convert --format=png --output=diagram.png diagram.svg

Other supported output formats include PDF, XML, and valid SVG.

External links

Notes and References

  1. Web site: Projects/LibRsvg - GNOME Wiki! .
  2. Web site: librsvg is a library to render SVG files using cairo . librsvg . GNOME . May 10, 2012.
  3. Web site: Librsvg 2.41.0 is released. 2017-01-03. mail.gnome.org. 2018-11-20.
  4. Book: Quintero, Federico Mena. Replacing C library code with Rust: What I learned with librsvg. GUADEC. 2017. Manchester, UK. 2018-11-20. 2017-09-28. https://web.archive.org/web/20170928062853/https://people.gnome.org/~federico/blog/docs/fmq-porting-c-to-rust.pdf.
  5. Web site: Manual:Image Administration - MediaWiki . Lucideer . April 27, 2009 . MediaWiki . April 6, 2011 . SVG.
  6. Web site: SVG benchmarks - MediaWiki . MediaWiki . April 6, 2011.
  7. Web site: Update librsvg to ≥2.42.3 (2.44.10) . 2023-11-22 . Wikimedia Phabricator.
  8. Web site: librsvg bugs . 2023-11-22 . Wikimedia Commons . en.
  9. Web site: Worth. Carl. gmane.comp.gnome.lib.librsvg.devel. svg shootout. 29 November 2014. 2 September 2005. the librsvg maintainers … have now added cairo support to librsvg. Many thanks are due to Caleb Moore and Dom Lachowicz for this work. The source can be compiled --with-cairo and it builds separate librsvg-2-cairo.so and librsvg-2-base.so libraries.
  10. Web site: Moore. Caleb. using librsvg cairo. gmane.comp.gnome.lib.librsvg.devel. 29 November 2014. 3 November 2005. Librsvg-2.13 cannot link to libart since that backend was majorly broken when we released 2.13 and thus must link to cairo..
  11. Web site: TumaGonx Zakkum . 2012-06-10 . RSVG-Convert SVG image conversion tool . 2017-01-31 . Open Source Software and Windows 32-bit.
  12. Web site: rsvg-view . Paul Brossier . Dom Lachowicz . Alex Larsson . etal . man page. 2014-12-28. https://web.archive.org/web/20141228181411/http://ait08.us.es/cgi-bin/man/man2html?rsvg-view+1. 2014-12-28.
  13. https://download.gnome.org/sources/librsvg/2.45/librsvg-2.45.6.news
  14. Web site: ⚓ T265549 Update librsvg to version > 2.44.10 (2.50.3) . 2024-06-29 . phabricator.wikimedia.org.
  15. https://download.gnome.org/sources/librsvg/2.57/librsvg-2.57.90.news
  16. Web site: Debian -- Details of package librsvg2-bin in buster.