-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNEWS
2310 lines (1713 loc) · 84.7 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
===============
Version 2.52.10
===============
This is a security release for bug #996.
- #996 - Fix arbitrary file read when href has special characters.
==============
Version 2.52.9
==============
- #823 - Fix regressions when computing element geometries.
==============
Version 2.52.8
==============
Just a bug fix:
- #721 - Catch circular references when rendering patterns.
==============
Version 2.52.7
==============
Backport a fix for the regression that was introduced in the last
release:
- #851 - Output filled text as text for PDF; fixes regression due to
outputting all text as paths.
==============
Version 2.52.6
==============
Backport a fix from the main branch:
- #599 - Fix incorrect text rendering when text has different scales
in the X/Y axes. This regressed after librsvg 2.52.5, when Pango
had to revert its fix for the same bug. Now librsvg renders all
text as paths, and does the scaling itself. Please file a bug if
you have evidence that this presents a performance problem for you.
==============
Version 2.52.5
==============
Just bugfixes this time:
- #812 - Fix mangled output in rsvg-convert when redirecting output to
a pipe on Windows (Michael Howell).
- #766 - When outputting to SVG, rsvg-convert now uses the
width/height units specified in the command line; it always used
pixels before (Daniel Petri Rocha).
- #814 - Fix incorrect top/left margins for SVG/PS/EPS/PDF output
(Daniel Petri Rocha).
- #599 - Fix incorrect placement of glyphs when text has non-uniform
scaling in the X/Y axes. This is not a librsvg bug, but is fixed by
Pango 1.49.3 and later. Hopefully Pango 1.48.11 will be released
soon with this fix as well. Note that this release of librsvg
cannot increase the minimum Pango version to 1.48.11 because it is
not released yet.
Miscellaneous:
- Updated crate dependencies: assert_cmd, cast, clap cssparser,
float-cmp, itertools, nalgebra, png, proptest, rctree, selectors,
system-deps.
==============
Version 2.52.4
==============
New features:
- #816 - Support the isolation property from the Compositing and
Blending Level 1 specification.
- Support Visual Studio 2022 (Chun-wei Fan).
Fixes:
- #818 - The opacity and mix-blend-mode properties were not being
applied when an element has a mask.
- Fix panic when an empty group has a pattern fill and filters.
- Fix the tests on Windows; the still only work when Fontconfig is
present (Chun-wei Fan).
- Work around a bug in the cairo-rs bindings in the test suite, that
only manifests itself in s/390x due to its calling convention. See
https://github.com/gtk-rs/gtk-rs-core/issues/335
==============
Version 2.52.3
==============
Bugfixes, mostly for text layout. Also, text links in PDF!
- #17 - Support text-decoration=overline.
- #249 - Basic support for the unicode-bidi property. Librsvg still
considers each tspan independently of others, which is incorrect, but
at least bidi-override works now for a single embedding level.
- #804 - Fix placement of tspan that changes the text direction.
- #805 - :lang() selector should now match lang attribute from an
element's parent. (Michael Howell)
- #806 - Fix the text-anchor property for right-to-left text.
- #807 - PDF now includes links inside text elements. (Michael Howell)
==============
Version 2.52.2
==============
Bugfixes and new features!
## New features
Thanks to Michael Howell, rsvg-convert now supports generating
multi-page PDFs in a sensible way.
With one SVG document per page, each page with the
SVG's natural size:
rsvg-convert --format=pdf -o out.pdf a.svg b.svg c.svg
With all pages sized as portrait US Letter, and each SVG scaled to fit
so that there is a 1in margin around each page:
rsvg-convert --format=pdf -o out.pdf \
--page-width=8.5in --page-height=11in \
--width=6.5in --height=8.5in --keep-aspect-ratio \
--top=1in --left=1in \
a.svg b.svg c.svg
Please see the man page for details.
- #738 - Support <a> elements inside <text>. Also, support the CSS :link
pseudo-class for matching against links. (Michael Howell)
- #649 - Support the CSS :lang() pseudo-class for matching against an
element's xml:lang attribute. (Michael Howell)
- #790 - Support the mask-type property from SVG2.
## Fixes
- #800 - Don't panic when a shorthand property is set to
inherit. (Michael Howell)
- #788 - Fix regression with the viewport size of interior <svg>
elements. (Michael Howell)
- #731 - Allow length units to be case-insensitive, per SVG2. (Kolja Lampe)
## Documentation
- There is now a FEATURES.md in the repository, where you can see all
the elements, attributes, and properties that librsvg supports. We
will be adding detail to this gradually.
- For developers, there is now devel-docs/adding-a-property.md with a
tutorial on how to add support for new CSS properties.
==============
Version 2.52.1
==============
This is a bugfix release; there are no new features this time.
## Changes:
- #791 - Fix ordering of tspan inside text elements for right-to-left
languages.
- #789 - Fix text-anchor positioning for right-to-left languages.
- #797 - Fix regression in computing sizes when an SVG has only one of
width/height and a viewBox. Thanks to Joshua Fogg for compiling a
list of test cases for this.
- #565 - Spec compliance - the writing-mode property applies only to
text elements, no to individual tspan elements.
- #794 - Fix build on big-endian platforms.
- Clarify documentation for the rsvg_handle_write() /
rsvg_handle_close() deprecated APIs.
==============
Version 2.52.0
==============
This is a big release! What follows is a summary from the 2.51.x
release notes; you can also read them for more detail.
The biggest user-visible change is that rsvg-convert has been ported
to Rust (Sven Neumann, Paolo Borelli), and it has new features!
## New features in rsvg-convert
### Support for physical units
rsvg-convert is now aware of physical units, and
fixes a bug where PDFs were created at the wrong size. Do you need to
render an SVG in a PDF file, scaled to 10x10 cm, placed at a certain
position of a landscape A4 page?
rsvg-convert --format=pdf \
--page-width=297mm --page-height=210mm \
--width=10cm --height=10cm --keep-aspect-ratio \
--top=5cm --left=8cm \
foo.svg > foo.pdf
Please see the rsvg-convert(1) man page for more details and plenty of
examples.
### Support for Accept-Language
Previously, librsvg picked up the user's language preferences through
environment variables like LANG and LC_MESSAGES. This is inconvenient
for applications that call rsvg-convert but don't want to synthesize a
LANG variable.
There is a new option in rsvg-convert so you can pass
--accept-language=<languages> formatted as an HTTP Accept-Language
header. This is used to specify which languages will be chosen from
elements with the "systemLanguage" attribute:
rsvg-convert --accept-language=es-MX,en foo.svg
That command will select Mexican Spanish and English from suitable SVG
elements. Please see the man page for details.
### Miscellaneous
rsvg-convert's default DPI is now 96, to better match W3C
standards. It was 90 before for historical reasons. We can change
this back to 90 if it breaks too many scripts. You can use the
options "--dpi-x=90 --dpi-y=90" to restore the old behavior.
rsvg-convert no longer supports the "xml" or "recording" output
formats. These are useful only for debugging Cairo, not for general
usage.
## SVG2/CSS3 features
The following features are supported now. Madds H, John Ledbetter,
worked on these features.
- transform property from SVG2; previously librsvg only supported the
transform attribute from SVG1.1, which has different syntax.
- context-fill and context-stroke for <marker> and <use> elements.
- markers now support orient="auto-start-reverse".
- paint-order for text elements.
- "auto" values for the width and height attributes of the <image>,
<rect>, and <svg> elements.
- All the <filter-function> types from the Filter Effects Module Level
1 specification: blur(), brightness(), contrast(), drop-shadow(),
grayscale(), hue-rotate(), invert(), opacity(), sepia(), saturate().
- The filter property now supports chains of uri() filters or
<filter-function> shortcuts.
- Support CSS selectors for attribute matching, like rect[attr^="prefix"]
## New APIs
See the HTML documentation for details:
- rsvg_handle_get_intrinsic_size_in_pixels()
- rsvg_major_version / rsvg_minor_version / rsvg_micro_version
variables - used to obtain the librsvg version from languages other
than C, since they do not have access to the C macros like
LIBRSVG_MAJOR_VERSION.
## Deprecations
The following APIs are deprecated but still available:
- rsvg_handle_render_cairo() - use rsvg_handle_render_document() instead.
- rsvg_handle_render_cairo_sub() - use rsvg_handle_render_layer() or
rsvg_handle_render_element() depending on what you want to do.
Please see the "Migrating from old APIs" chapter in the HTML
documentation for details.
## News for developers
If you want to run the librsvg test suite easily, there are now Docker
scripts to do so. Please see the tools/docker/README.md file for
details. (Madds H)
There is no leftover C code in the library; all of the implementation
and the publically-visible symbols are defined in the Rust code. The
remaining .h files are all public and do not reflect any .c
code. (Sven Neumann)
The test suite is now ported to Rust. The only remaining tests in C
are for the C API itself (tests/api.c). With the test suite in
Rust, the tests are automatically run in parallel across CPU cores,
making test runs much faster. (Sven Neumann, Dunja Lalic)
"cargo build", "cargo test" now work without running autotools first,
so you can in general develop librsvg as a normal Rust project.
The HTML documentation has new chapters; you may find interesting
things there!
## News for distributors
There is a new list of librsvg releases with security fixes in
SECURITY.md. That file also contains security-related information
on librsvg's dependencies.
The Minimum Supported Rust Version (MSRV) is now Rust 1.52.
## Special thanks
Paolo Borelli and Sven Neumann did a lot of painstaking work to finish
porting the library and rsvg-convert to Rust.
Sven Neumann and Dunja Lalic ported the test suite to Rust, making it
much faster.
Dunja Lalic rewrote the Continuous Integration infrastructure, making
it MUCH faster.
Madds H did their Outreachy internship for librsvg and implemented a
bunch of useful SVG2/CSS3 features.
John Ledbetter methodically went through all the <filter-function>
shortcuts and implemented them for SVG2.
Ismael Luceno has been cleaning up our autotools scripts.
Andre Klapper has been wrangling numerous bug reports from Wikimedia
as usual.
Chun-wei Fan, Abraham Toriz, Christian Hergert, Ignacio Casal Quinteiro
have been keeping the Windows and MacOS builds working.
==============
Version 2.51.4
==============
- #618 - SVG2: Implement context-fill and context-stroke for markers
(Madds H).
- #727 - SVG2: Implement paint-order for text elements (Madds H).
- #747 - SVG2: Support width="auto" and height="auto" for the image element.
- Fix the Windows build (Chun-wei Fan).
- The tools/docker directory now has scripts that developers can use
to test librsvg on containers for various Linux distributions.
- Gtk-rs dependency is updated to 0.14.0 (Bilal Elmoussaoui, Chun-wei Fan).
- #758 - Panic when rendering with masks or opacity to a non-image surface.
- #757 - Fix 32-bit builds.
==============
Version 2.51.3
==============
The big news is that rsvg-convert is now aware of physical units, and
fixes a bug where PDFs were created at the wrong size. Do you need to
render an SVG in a PDF file, scaled to 10x10 cm, placed at a certain
position of a landscape A4 page?
rsvg-convert --format=pdf \
--page-width=297mm --page-height=210mm \
--width=10cm --height=10cm --keep-aspect-ratio \
--top=5cm --left=8cm \
foo.svg > foo.pdf
Please see the rsvg-convert(1) man page for more details and plenty of
examples.
SVG2 features:
Markers now implement orient="auto-start-reverse". The work on
markers is by Madds H., who is doing their Outreachy internship for
librsvg.
All the <filter-function> types in SVG2 are now supported, thanks to
John Ledbetter.
- The Minimum Supported Rust Version (MSRV) is now Rust 1.52. This
takes care of CVE-2021-28878 in the Rust standard library.
- #514 - rsvg-convert is now aware of physical units.
- #484 - Markers can now have orient="auto-start-reverse" per SVG2
(Madds H - Outreachy internship).
- #711 - Implement the drop-shadow() filter function (John Ledbetter).
- #713 - Implement the hue-rotate() filter function (John Ledbetter).
- #677 - rsvg-convert, do not clip the rightmost/bottomost pixels of
an image with partial pixel coverage.
- Partial fix for #668 - Render small caps for fonts that support the
"smcp" OpenType feature. Librsvg and Pango are not yet able to
synthesize small caps for fonts that do not support them, but for
those that do, they should work fine now.
- #566 - Restrict which elements can appear inside a clipPath, to be
spec compliant.
- #746 - Possible cairo_save() without cairo_restore() in render_layer().
- Various updates to the developer's documentation.
==============
Version 2.51.2
==============
This release fixes an important bug about text spacing. The bug fix
requires an update to at least Pango 1.44. Sorry for the increased
requirements!
Librsvg now supports most of the filter function shortcuts in SVG2;
see below.
Previously, librsvg picked up the user's language preferences through
environment variables like LANG and LC_MESSAGES. This is inconvenient
for applications that call rsvg-convert but don't want to synthesize a
LANG variable.
There is a new option in rsvg-convert so you can pass
--accept-language=<languages> formatted as an HTTP Accept-Language
header. This is used to specify which languages will be chosen from
elements with the "systemLanguage" attribute:
rsvg-convert --accept-language=es-MX,en foo.svg
That command will select Mexican Spanish and English from suitable SVG
elements. Please see the man page for details.
- The Minimum Supported Rust Version (MSRV) is now Rust 1.51.
- Librsvg now requires at least Pango 1.44.
- #730 - Incorrect text spacing when the transform is not 1:1. You
can see this when a small font-size is scaled up due to a
transform. It is less visible for a large font-size scaled down.
- #709 #710 #712 714 #715 #716 #717 - The "filter" attribute now
accepts lists of "<filter-function>" per SVG2. There is support for
blur(), contrast(), grayscale(), invert(), opacity(), saturate(),
sepia() (John Ledbetter).
- #356 - Add --accept-language option to rsvg-convert.
- #704 - Fix circle/ellipse in paths when they are made out of a
single Arc command.
- #691 - Don't allow number lists with unbounded lengths in
tableValues attributes, for feComponentTransfer and
feConvolveMatrix (Madds H).
- #718 - Negative rx/ry in rect element should be ignored.
- #687 - Reduce memory pressure when rendering text.
- Fix build on 32-bit ARM (Lovell Fuller).
- Update the Rust crate dependencies (Bastien Orivel).
- Refactoring parsers (Paolo Borelli).
- There is a new list of librsvg releases with security fixes in
SECURITY.md. That file also contains security-related information
on librsvg's dependencies.
Special thanks to John Ledbetter for carefully implementing each of
the new shortcuts for filter functions in SVG2.
==============
Version 2.51.1
==============
- The Minimum Supported Rust Version is now 1.48.
- rsvg-convert should fully work on Windows again (Abraham Toriz).
- rsvg-convert's SVG output format uses pixel units instead of points again.
- #699 - Images embedded as data: URLs didn't render if they had a
MIME type with a charset parameter.
- #698 - Add limit for too-large radiuses on the feMorphology filter (Madds H).
- #686 - Reduced stack usage (Sebastian Dröge).
- #261 - Parse the enable-background property.
- #703 - Properly ignore elements in an error state inside the "switch" element.
- #695 - Fix cascading mode for the "feImage" element.
- Fix cascading for the "filter" element and filter primitives in general.
- Remove constraints on the types of units used within the "filter"
element and filter primitives.
- Reduced memory consumption in general by about 300 bytes per SVG element.
- Update vulnerable crates:
smallvec to 1.6.1 (RUSTSEC-2021-0003)
generic-array to 0.13.3 (RUSTSEC-2020-0146)
- Lots of cleanups to the build (Sven Neumann).
- Update to gtk-rs 0.9 (Bilal Elmoussaoui).
- Updated ARCHITECTURE.md and documentation in general.
Special thanks to Dunja Lalic for adding the start of code coverage
analysis to the build.
==============
Version 2.51.0
==============
There are many changes in this development release! This experimental
release is meant for early testing, with the understanding that some
things may be broken, especially since we have large changes to the
way librsvg's artifacts are built.
The biggest user-visible change is that rsvg-convert has been ported
to Rust (Sven Neumann, Paolo Borelli).
Please file bugs at https://gitlab.gnome.org/GNOME/librsvg/-/issues/new
if these changes break your scripts; they are experimental for the
2.51.x development series:
- #646 - rsvg-convert's default DPI is now 96, to better match W3C
standards. It was 90 before for historical reasons. We can change
this back to 90 if it breaks too many scripts. You can use the
options "--dpi-x=90 --dpi-y=90" to restore the old behavior.
- rsvg-convert's --export-id (-i) option should now have more useful
behavior. This extracts a particular element from the SVG document
and renders it scaled to the size specified by the --width/--height
arguments, or to the pixel size of the element as if it had no
transformations applied.
- rsvg-convert no longer supports the "xml" or "recording" output
formats. These are useful only for debugging Cairo, not for general
usage.
Known missing features, which should be restored for the stable release:
- rsvg-convert does not allow stdin/stdout streams on Windows; this is
being tracked in issue #676.
The following are changes related to porting to Rust; they are not
necessarily user-visible, but important for developers of the library:
- There is no leftover C code in the library; all of the
implementation and the publically-visible symbols are defined in the
Rust code. The remaining .h files are all public and do not reflect
any .c code. (Sven Neumann)
- The test suite is now ported to Rust. The only remaining tests in C
are for the C API itself (tests/api.c). With the test suite in
Rust, the tests are automatically run in parallel across CPU cores,
making test runs much faster. (Sven Neumann, Dunja Lalic)
- "cargo build", "cargo test" should now work without running
autotools first.
- The C API is now implemented on top of the public Rust API, without
special hooks into the library's internals.
The following APIs are deprecated but still available:
- rsvg_handle_render_cairo() - use rsvg_handle_render_document() instead.
- rsvg_handle_render_cairo_sub() - use rsvg_handle_render_layer() or
rsvg_handle_render_element() depending on what you want to do.
- These deprecations are because the new APIs conform with the web
world's view of how SVGs should be positioned and scaled in
surrounding content. Whereas the old APIs were about rendering SVGs
to whatever current transformation matrix a Cairo context may
contain, the new APIs take a rectangular viewport and librsvg
automatically scales the SVG document to fit in it. The "natural
sizing" that was implicit in the deprecated APIs is now explicitly
documented, and available through the new API
rsvg_handle_get_intrinsic_size_in_pixels().
New APIs:
- rsvg_handle_get_intrinsic_size_in_pixels() converts an SVG
document's intrinsic dimensions to pixels, i.e. transforms the SVG
document's "width" and "height" attributes to CSS pixels.
New features and bug fixes:
- #615: SVG2: Support a chain of uri() filters in the "filter" property
(John Ledbetter, Sven Neumann).
- #483: Support CSS selectors for attribute matching, like rect[attr^="prefix"]
- #554: Fixed the geometry_for_layer() APIs to not ignore the passed viewport.
- Fixed CSS "import" so it allows only files from the same base directory
(Lars Schmertmann).
- #642 - Fix dx/dy offsets in nested <tspan> elements.
- #601 - Compute correct bounds for objects with stroke-width=0.
- Slight speed improvements in the RGBA premultiplication code (Sven Neumann).
- #623 - The pkg-config files (*.pc) do not define the 'svgz_supported' and
'css_supported' variables anymore. These variables were hardcoded
to 'true' and unchanged since 2011.
- #624 - The source repository no longer produces a librsvg-uninstalled.pc file.
- Fix the MacOS build (Christian Hergert, Ignacio Casal Quinteiro).
- Deal with missing pkg-config (Ismael Luceno).
- For cross-compilation, check for target-specific prefixed tools like
rustc/cargo (Heiko Becker).
Changes in the Rust API:
- #597 - The LoadingError and RenderingError enums have changed, and
are now marked #[non_exhaustive]. They will probably change again
to hide details of error variants before we make librsvg available
as a crate on crates.io.
Special thanks for this release:
- Dunja Lalic for revamping the CI infrastructure and making our CI
runs much, much faster - !398.
- Sven Neumann, Dunja Lalic for porting the test suite to Rust.
- Sven Neumann, Paolo Borelli for porting rsvg-convert to Rust and
unraveling all the little historical details that were embedded in
it.
- Paolo Borelli for constant refactoring.
==============
Version 2.50.7
==============
Two cairo-related bug fixes:
- #745 - Fix mismatched cairo_save/restore when running in inside the Cairo test suite.
- #746 - Possible cairo_save() without cairo_restore() in render_layer().
==============
Version 2.50.6
==============
This release fixes an important bug about text spacing. The bug fix
requires an update to at least Pango 1.44. Sorry for the increased
requirements!
- Librsvg now requires at least Pango 1.44.
- #730 - Incorrect text spacing when the transform is not 1:1. You
can see this when a small font-size is scaled up due to a
transform. It is less visible for a large font-size scaled down.
- #704 - Fix circle/ellipse in paths when they are made out of a
single Arc command.
==============
Version 2.50.5
==============
- #699 - Images embedded as data: URLs didn't render if they had a
MIME type with a charset parameter.
- #691 - Don't allow number lists with unbounded lengths in
tableValues attributes, for feComponentTransfer and
feConvolveMatrix (Madds H).
- #718 - Negative rx/ry in rect element should be ignored.
==============
Version 2.50.4
==============
Update dependent crates that had security vulnerabilities:
generic-array to 0.13.3 - RUSTSEC-2020-0146
- #686 - Reduced stack usage (Sebastian Dröge).
- #698 - Add limit for too-large radiuses on the feMorphology filter (Madds H).
- #703 - Properly ignore elements in an error state inside the "switch" element.
Version 2.50.3
- #601 - Compute correct bounds for objects with stroke-width=0.
- #545 - Fix MacOS build (Ignacio Casal Quinteiro, Christian Hergert).
- Fix test suite on Rust 1.49 (Sven Neumann).
Version 2.50.2
- #642 - Fix dx/dy offsets in nested <tspan> elements.
Version 2.50.1
- #615: SVG2: Support a chain of uri() filters in the "filter" property
(John Ledbetter, Sven Neumann).
- #483: Support CSS selectors for attribute matching, like rect[attr^="prefix"]
- #554: Fixed the geometry_for_layer() APIs to not ignore the passed viewport.
- Fixed CSS "import" so it allows only files from the same base directory
(Lars Schmertmann).
- #623 - The pkg-config files (*.pc) do not define the 'svgz_supported' and
'css_supported' variables anymore. These variables were hardcoded
to 'true' and unchanged since 2011.
- #624 - The source repository no longer produces a librsvg-uninstalled.pc file.
Version 2.50.0
- The following is a summary of changes between 2.48.x and 2.50.0. For
full details, please see the 2.49.x release notes below.
- This release requires at least Rust 1.40.
- Windows builds now support ARM64, thanks to Chun-wei Fan.
- Librsvg now consumes much less memory for large SVG files. The limit for
the maximum number of elements in an SVG is bigger now at 1 million
elements (this limit exists to avoid unbounded memory consumption by
maliciously large files, and is plenty to render even very detailed
maps). Thanks to Sergey "Shnatsel" Davidoff and Adam Reichold for making
this possible.
- #34 - The 'font' shorthand in is now supported in CSS. Librsvg
ignores the 'line-height' sub-property because it cannot be done
easily with Pango, but everything else in 'font' should work now.
- Many new features from SVG2:
- #508 - radialGradient now supports the "fr" property from SVG2
(Dunja Lalic, Corentin Rossignon).
- #568 - Support href attribute in addition to xlink:href per SVG2.
- #560 - Ignore missing filter references per SVG2.
- #607 - Support the mix-blend-mode property from SVG2 and the
Compositing and Blending Level 1 specification, so layers can be
composited with operators like multiply/screen/color-burn, etc.
https://www.w3.org/TR/compositing-1/ (John Ledbetter).
- #473 - Support the paint-order property from SVG2, so one can pick
the order in which a path's fill/stroke/markers are drawn (John Ledbetter).
- Many bug fixes and little optimizations; see the 2.49.x release notes for
details. Thanks to Paolo Borelli, Daniel Kolesa, Ernestas Kulik.
Sven Neumann, Bastien Orivel, Jordan Petridis, Emile Snyder.
- Special thanks to Sven Neumann for fixing all the cargo-clippy lints.
Version 2.49.5
- #607 - Support the mix-blend-mode property from SVG2 and the
Compositing and Blending Level 1 specification, so layers can be
composited with operators like multiply/screen/color-burn, etc.
https://www.w3.org/TR/compositing-1/ (John Ledbetter).
- #473 - Support the paint-order property from SVG2, so one can pick
the order in which a path's fill/stroke/markers are drawn (John Ledbetter).
- Cleanups of the basic drawing and paint-handling code (Paolo Borelli).
- Many style fixes per cargo-clippy (Sven Neumann).
- Improved documentation on the library's internals.
Version 2.49.4
- Support ARM64 Windows builds (Chun-wei Fan).
- #165 - Draw zero-length paths with square caps correctly (Bastien Orivel).
- #568 - Support href attribute in addition to xlink:href per SVG2.
- #560 - Ignore missing filter references per SVG2.
- #609 - Support the transform attribute again in clipPath (Sven Neumann).
- Update Criterion benchmarks (Ernestas Kulik).
- Update to newer dependencies (Bastien Orivel).
- Many style fixes per cargo-clippy (Dunja Lalic, Sven Neumann).
Version 2.49.3
- #34 - The 'font' shorthand in is now supported in CSS. Librsvg
ignores the 'line-height' sub-property because it cannot be done
easily with Pango, but everything else in 'font' should work now.
- #605 - Compute 'bolder' and 'lighter' font-weight correctly.
- #219 - Make the path parser have a tokenizer/parser (Emile Snyder).
- Fixes for the CI after the gitlab.gnome.org changes (Jordan Petridis).
- Fixed some typos in the documentation (codespell is awesome!).
Version 2.49.2
- Fix failing tests.
Version 2.49.1
- (#604) - Fix build on big-endian machines. Thanks to Daniel Kolesa
for testing this repeatedly.
Version 2.49.0
- Memory consumption of parsed SVG data is greatly reduced. Property
values, path data, and text nodes now use much less memory than
before. Thanks to Sergey "Shnatsel" Davidoff and Adam Reichold for
their contributions.
- With that reduction in memory consumption, librsvg can now load up
to 1 million XML elements. This is a hard limit to avoid malicious
files consuming arbitrary amounts of memory.
- #508 - radialGradient now supports the "fr" property from SVG2
(Dunja Lalic, Corentin Rossignon).
- Sven Neumann has written a fantastic test suite for rsvg-convert(1).
Now we can modify this program with confidence.
- Many, many cleanups (Paolo Borelli).
- #594 - Only compute locale information for elements that need it.
- As usual, thanks to Bastien Orivel for keeping dependent crates updated.
- Fix Windows builds without PangoFT2.
- Benchmarks of internal functions work now. You can run "cargo bench"
in librsvg/ and rsvg_internals/.
Version 2.48.5
- #577 - Support multiple fonts in the font-family property (Bastien Orivel).
Previously in font-family="Foo, Bar, Baz" only Foo would get used.
- #591 - Catch overflow when rendering files with a huge viewBox.
- #593 - Don't panic with an empty objectBoundingBox for a mask.
- #596 - Fix introspection data for rsvg_handle_set_stylesheet (Sutou Kouhei).
- Fixes to the librsvg_crate documentation (Abraham Toriz).
- Loading raster images for inclusion in an SVG and producing
GdkPixbufs is now faster.
Version 2.48.4
- #590 - Fix regression when rendering masks.
- #588 - Fix panic when a big viewBox creates an invalid transform.
- #592 - Fix invalid argument to g_log_structured_array()
Version 2.48.3
- Librsvg now requires glib 2.50.0 or later.
- rsvg-convert's --background-color option now accepts colors with
transparency like #rrggbbaa, rgba(...), hsla(...); the transparency
value was ignored before (Hao Guan).
- #584 - Fix arithmetic overflow when rendering to large GdkPixbufs.
- #582 - Make librsvg build with Rust 1.39 again.
- #581 - Don't require upcalls into C code for Debian powerpc.
Version 2.48.2
- Fix linking of the test suite against Harfbuzz.
Version 2.48.1
- #129 - Fix baseline-shift for simple subscripts/superscripts and
absolute offsets. This should fix a lot of Wikimedia images with
formulas.
- #548 - Support images with data: URLs that don't have a MIME-type.
This fixes some Open Clip Art images generated by old versions
of Adobe Illustrator.
- Fix build of the test suite on Windows (Chun-wei Fan).
- Support running the rsvg_internals tests on Windows (Chun-wei Fan).
Version 2.48.0
- The following is a summary of changes between 2.46.x and 2.48.0.
For full details, please see the 2.47.x release notes below.
- This release requires at least Rust 1.39.
- #379 - New API, rsvg_handle_set_stylesheet(), to set a CSS
stylesheet independent of the SVG document.
- #510 - support opacity in patterns.
- Librsvg's XML parser now supports namespaces (xmlns), and is
stricter than before about it. Files may fail to parse if there are
attributes or elements with namespace prefixes (e.g. foo:bar instead
of plain bar), but without a corresponding namespace declaration
(e.g. xmlns:foo="http://example.com/foo").
This may happen especially with incorrectly-written SVGs that use
xlink:href or xi:include attributes without the corresponding
namespace declarations. If you run into this, just add the
following to your toplevel SVG element:
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude">
^^^^^^^^^ these ones
- Librsvg no longer depends on libcroco, and now does all CSS
processing using Rust crates from Mozilla Servo. As a result,
librsvg can now handle much more complex CSS selectors than before.
- Link-time optimization (LTO) is disabled by default on release
builds, as this increased build time too much. Downstream
distributors may want to turn it back on in the toplevel Cargo.toml.
- #515 (CVE-2019-20446) - Librsvg now has limits on the number of
loaded XML elements, and the number of referenced elements within an
SVG document. This is to mitigate malicious SVGs which try to
consume all memory, and those which try to consume an exponential
amount of CPU time.
- Many bugfixes; please see the 2.47.x release notes below.
Version 2.47.4
- (#240) - Fix rsvg-convert's multipage PDF output when the zoom
option is used (Sven Neumann).
- (#547) - Do not stop rendering if an <image> element references a