Name Date Size

..29-Nov-20194 KiB

.gitignoreH A D12-Jun-20181.1 KiB

.gitlab-ci.ymlH A D30-Oct-20196 KiB

.rustfmt.tomlH A D08-Mar-2019354

acinclude.m4H A D09-Apr-201810.4 KiB

appveyor.ymlH A D12-Jun-2018585

ARCHITECTURE.mdH A D13-Nov-20199.5 KiB

AUTHORSH A D09-Apr-20181.8 KiB

autogen.shH A D09-Apr-20181 KiB

cargo-vendor-configH A D09-Apr-2018303

Cargo.lockH A D08-Jan-202073.8 KiB

Cargo.tomlH A D27-Dec-2019116

ChangeLog.oldH A D09-Apr-2018123.7 KiB

code-of-conduct.mdH A D09-Apr-20183.2 KiB

COMPILING.mdH A D10-Nov-201911 KiB

configure.acH A D19-Dec-201913 KiB

CONTRIBUTING.mdH A D13-Nov-201911.1 KiB

COPYING.LIBH A D15-Oct-201925.9 KiB

doc/H15-Oct-20194 KiB

gdk-pixbuf-loader/H15-Oct-20194 KiB

glib-tap.mkH A D09-Apr-20186.3 KiB

INSTALLH A D09-Apr-20189 KiB

librsvg/H14-Jan-20204 KiB

librsvg-uninstalled.pc.inH A D09-Apr-2018364

librsvg-zip.inH A D09-Apr-20181.1 KiB

librsvg.doapH A D17-Aug-20191.6 KiB

librsvg.pc.inH A D09-Apr-2018371

librsvg_crate/H08-Jan-20204 KiB

m4/H09-Apr-20184 KiB

MAINTAINERSH A D09-Apr-201867

Makefile.amH A D14-Jan-20209.6 KiB

NEWSH A D15-Jan-202052.3 KiB

po/H06-Jan-20204 KiB

README.mdH A D31-Oct-20196 KiB

Rsvg-2.0-custom.valaH A D09-Apr-20182.1 KiB

Rsvg-2.0.metadataH A D09-Apr-201896

rsvg-c-srcs.mkH A D02-Jul-2019405

rsvg-convert.1H A D09-Apr-20182.6 KiB

rsvg-convert.cH A D14-Jan-202020.9 KiB

rsvg_internals/H08-Jan-20204 KiB

tap-driver.shH A D09-Apr-201819.1 KiB

tap-testH A D09-Apr-201884

tests/H22-Oct-20194 KiB

tools/H15-Oct-20194 KiB

win32/H16-Jan-20204 KiB

README.md

1Librsvg
2=======
3
4This is librsvg - A small library to render Scalable Vector Graphics
5([SVG][svg]), associated with the [GNOME Project][gnome].  It renders
6SVG files to [Cairo][cairo] surfaces.  Cairo is the 2D, antialiased
7drawing library that GNOME uses to draw things to the screen or to
8generate output for printing.
9
10Do you want to render non-animated SVGs to a Cairo surface with a
11minimal API?  Librsvg may be adequate for you.
12
13***GITHUB WILL DELETE YOUR PULL REQUESTS!***  We use
14[`gitlab.gnome.org`](https://gitlab.gnome.org/GNOME/librsvg) instead.
15Please see [`CONTRIBUTING.md`][contributing] for details.
16
17Using librsvg
18-------------
19
20* [C API documentation][c-docs]
21* [Rust API documentation][rust-docs]
22
23**Compiling:** Librsvg uses a mostly normal [autotools] setup.  You
24may run into some peculiarities due to the Rust internals library if
25you are **cross-compiling** or if you are in a **build system with no
26network access**, or if you are **building binary packages from a
27librsvg tarball**.  In those cases, please refer to the
28[`COMPILING.md`][compiling] file.
29
30**Documentation:** You can read the documentation for librsvg's [C
31API][c-docs] or the [Rust API][rust-docs].  Please [file an
32issue][reporting-bugs] if you don't find something there that you
33need.
34
35**Bug tracking:** If you have found a bug, take a look at [our bug
36tracker][bugs].  Please see the "[reporting bugs][reporting-bugs]"
37section in the file [CONTRIBUTING.md][contributing] to see how to
38provide a good bug report.
39
40**Asking questions:** Feel free to ask questions about using librsvg
41in the [desktop-devel-list][d-d-l] mailing list.
42
43**Programming languages:** Librsvg exports its API through [GObject
44Introspection][gi].  This way, it is available in many programming
45languages other than C.  Please see your language binding's
46documentation for information on how to load the `Rsvg` namespace.
47
48[c-docs]: https://developer.gnome.org/rsvg/stable/
49[rust-docs]: https://gnome.pages.gitlab.gnome.org/librsvg/doc/librsvg/index.html
50
51Contributing to librsvg's development
52-------------------------------------
53
54There is a code of conduct for contributors to librsvg; please see the
55file [`code-of-conduct.md`][coc].
56
57For information on how to report bugs, or how to contribute to librsvg
58in general, please see the file [`CONTRIBUTING.md`][contributing].
59
60Goals of librsvg
61----------------
62
63Librsvg aims to be a low-footprint library for rendering SVG images.
64It is used primarily in the [GNOME project](https://www.gnome.org) to
65render SVG icons and vector images that appear on the desktop.  It is
66also used in Wikimedia to render the SVG images that appear in
67Wikipedia, so that even old web browsers can display them.  Many
68projects which casually need to render static SVG images use librsvg.
69
70We aim to be a "render this SVG for me, quickly, and with a minimal
71API" kind of library.
72
73Feature additions will be considered on a case-by-case basis.
74
75Non-goals of librsvg
76--------------------
77
78We don't aim to:
79
80* Implement every single SVG feature that is in the spec.
81
82* Implement scripting or external access to the SVG's DOM.
83
84* Implement support for CSS-based animations (but if you can think of
85  a nice API to do this, we would be glad to know!)
86
87* Replace the industrial-strength SVG rendering machinery in modern
88  web browsers.
89
90Of course, [contributions are welcome][contributing].  In particular,
91if you find nice ways of doing the above while still maintaining the
92existing API of librsvg, we would love to know about it!
93
94Who uses librsvg?
95-----------------
96
97Librsvg is part of the [GNOME platform][platform].  Inside GNOME,
98librsvg takes multiple roles:
99
100* Loads SVGs from the generic gdk-pixbuf loader infrastructure, so any
101  application which uses gdk-pixbuf can load SVGs as if they were
102  raster images.
103
104* Loads SVG icons for the desktop.
105
106* Creates SVG thumbnails for the file manager.
107
108* Loads SVGs within GNOME's default image viewer, Eye of Gnome.
109
110Outside of GNOME's core:
111
112* GNOME games (chess, five-or-more, etc. to draw game pieces)
113
114* GIMP
115
116* GCompris
117
118* Claws-mail
119
120* Darktable
121
122* Mate-panel
123
124* Evas/Enlightenment
125
126* Emacs
127
128* ImageMagick
129
130* Wikipedia, to render SVGs as raster images for old browsers.
131  *Special thanks to Wikimedia for providing excellent bug reports.*
132
133
134Presentations on librsvg
135------------------------
136
137"[Replacing C library code with Rust: What I learned with
138librsvg][guadec-presentation-1]" was presented at GUADEC 2017.  It gives
139a little history of librsvg, and how/why it is being ported to Rust
140from C.
141
142"[Patterns of refactoring C to Rust: the case of
143librsvg][guadec-presentation-2]" was presented at GUADEC 2018.  It
144describes ways in which librsvg's C code was refactored to allow
145porting it to Rust.
146
147
148Maintainers
149-----------
150
151The maintainer of librsvg is [Federico Mena Quintero][federico].  Feel
152free to contact me for any questions you may have about librsvg, both
153its usage and its development.  You can contact me in the following
154ways:
155
156* [Mail me][mail] at federico@gnome.org.
157
158* IRC: I am `federico` on `irc.gnome.org` in the `#rust` or
159  `#gnome-hackers` channels.  I'm there most weekdays (Mon-Fri)
160  starting at about UTC 14:00 (that's 08:00 my time; I am in the UTC-6
161  timezone).  If this is not a convenient time for you, feel free to
162  [mail me][mail] and we can arrange a time.
163
164[svg]: https://en.wikipedia.org/wiki/Scalable_Vector_Graphics
165[gnome]: https://www.gnome.org/
166[cairo]: https://www.cairographics.org/
167[coc]: code-of-conduct.md
168[autotools]: https://autotools.io/index.html
169[compiling]: COMPILING.md
170[mail]: mailto:federico@gnome.org
171[bugs]: https://gitlab.gnome.org/GNOME/librsvg/issues
172[gi]: https://wiki.gnome.org/Projects/GObjectIntrospection
173[contributing]: CONTRIBUTING.md
174[reporting-bugs]: CONTRIBUTING.md#reporting-bugs
175[d-d-l]: https://mail.gnome.org/mailman/listinfo/desktop-devel-list
176[federico]: https://people.gnome.org/~federico/
177[platform]: https://developer.gnome.org/
178[guadec-presentation-1]: https://people.gnome.org/~federico/blog/docs/fmq-porting-c-to-rust.pdf
179[guadec-presentation-2]: https://people.gnome.org/~federico/blog/docs/fmq-refactoring-c-to-rust.pdf
180