The parts of the rust gtk stack used by resvg are now installable again after having been broken for some time, so I decided to take a look and see if I could get
The first thing I did was change the dependency on pico-args to 0.4 so that I could attempt a build. I then discovered that the dependenices in Cargo.toml were often more restrictive than those in the Debian package, I relaxed these. Unfortunately I then discovered that the API of the cairo crate seems to have changed quite substantially, I started trying to port it but quickly reached the point where I was not confident either that my changes would work correctly or that patching was the right approach. When I look at resvg upstream, the cairo code seems to have disappeared from the repository. Work in progress debdiff attatched, do with it as you see fit.
diff -Nru resvg-0.8.0/debian/changelog resvg-0.8.0/debian/changelog --- resvg-0.8.0/debian/changelog 2021-01-02 15:48:41.000000000 +0000 +++ resvg-0.8.0/debian/changelog 2021-12-29 00:24:20.000000000 +0000 @@ -1,3 +1,11 @@ +resvg (0.8.0-4.1) unstable; urgency=medium + + * Non-maintainer upload. + * Bump the pico-args dependency to 0.4. + * Adjust dependencies for rust gtk stack 0.14 + + -- Peter Michael Green <plugw...@debian.org> Wed, 29 Dec 2021 00:24:20 +0000 + resvg (0.8.0-4) unstable; urgency=high * Fix the librust-jpeg-decoder-0.1-dev dependency. diff -Nru resvg-0.8.0/debian/control resvg-0.8.0/debian/control --- resvg-0.8.0/debian/control 2021-01-02 15:48:41.000000000 +0000 +++ resvg-0.8.0/debian/control 2021-12-29 00:24:20.000000000 +0000 @@ -9,7 +9,7 @@ librust-base64-0+default-dev (>= 0.10-~~), librust-cairo-rs-0+default-dev (>= 0.7-~~), librust-cairo-rs-0+png-dev (>= 0.7-~~), - librust-cairo-sys-rs-0+default-dev (>= 0.7.0-~~), + librust-cairo-sys-rs-0+default-dev (>= 0.9.0-~~), librust-cc-1+default-dev, librust-data-url-0+default-dev, librust-fern-0+default-dev (>= 0.5-~~), @@ -24,7 +24,7 @@ librust-log-0+default-dev (>= 0.4-~~), librust-lyon-geom-0+default-dev (>= 0.12-~~), librust-memmap-0+default-dev (>= 0.7-~~), - librust-pico-args-0.3+default-dev, + librust-pico-args-0.4+default-dev, librust-pango-0+default-dev (>= 0.5-~~), librust-pangocairo-0+default-dev (>= 0.6-~~), librust-pkg-config-0+default-dev (>= 0.3-~~), diff -Nru resvg-0.8.0/debian/patches/0009-rust-gtk-stack-0.14.patch resvg-0.8.0/debian/patches/0009-rust-gtk-stack-0.14.patch --- resvg-0.8.0/debian/patches/0009-rust-gtk-stack-0.14.patch 1970-01-01 00:00:00.000000000 +0000 +++ resvg-0.8.0/debian/patches/0009-rust-gtk-stack-0.14.patch 2021-12-29 00:24:20.000000000 +0000 @@ -0,0 +1,240 @@ +Index: resvg-0.8.0/capi/Cargo.toml +=================================================================== +--- resvg-0.8.0.orig/capi/Cargo.toml ++++ resvg-0.8.0/capi/Cargo.toml +@@ -12,11 +12,11 @@ name = "resvg" + crate-type = ["cdylib", "staticlib"] + + [dependencies] +-fern = "0.5" ++fern = ">= 0.5" + log = "0.4" + resvg = { path = "../" } + # cairo backend +-cairo-sys-rs = { version = "0.9.0", optional = true } ++cairo-sys-rs = { version = ">= 0.9.0", optional = true } + + [features] + cairo-backend = ["resvg/cairo-backend", "cairo-sys-rs"] +Index: resvg-0.8.0/Cargo.toml +=================================================================== +--- resvg-0.8.0.orig/Cargo.toml ++++ resvg-0.8.0/Cargo.toml +@@ -31,7 +31,7 @@ png = { version = "0.15", default-featur + jpeg-decoder = { version = "0.1.15", default-features = false } + + # cairo backend +-cairo-rs = { version = "0.7.1", default-features = false, features = ["png"], optional = true } ++cairo-rs = { version = ">= 0.7.1", default-features = false, features = ["png"], optional = true } + + # qt backend + resvg-qt = { path = "bindings/resvg-qt", version = "0.8", optional = true } +Index: resvg-0.8.0/src/backend_cairo/clip_and_mask.rs +=================================================================== +--- resvg-0.8.0.orig/src/backend_cairo/clip_and_mask.rs ++++ resvg-0.8.0/src/backend_cairo/clip_and_mask.rs +@@ -17,10 +17,10 @@ pub fn clip( + let clip_surface = try_opt!(layers.get()); + let clip_surface = clip_surface.borrow_mut(); + +- let clip_cr = cairo::Context::new(&*clip_surface); ++ let clip_cr = cairo::Context::new(&*clip_surface).unwrap(); + clip_cr.set_source_rgba(0.0, 0.0, 0.0, 1.0); + clip_cr.paint(); +- clip_cr.set_matrix(cr.get_matrix()); ++ clip_cr.set_matrix(cr.matrix()); + clip_cr.transform(cp.transform.to_native()); + + if cp.units == usvg::Units::ObjectBoundingBox { +@@ -29,7 +29,7 @@ pub fn clip( + + clip_cr.set_operator(cairo::Operator::Clear); + +- let matrix = clip_cr.get_matrix(); ++ let matrix = clip_cr.matrix(); + for node in node.children() { + clip_cr.transform(node.transform().to_native()); + +@@ -84,10 +84,10 @@ fn clip_group( + let clip_surface = try_opt!(layers.get()); + let clip_surface = clip_surface.borrow_mut(); + +- let clip_cr = cairo::Context::new(&*clip_surface); ++ let clip_cr = cairo::Context::new(&*clip_surface).unwrap(); + clip_cr.set_source_rgba(0.0, 0.0, 0.0, 0.0); + clip_cr.paint(); +- clip_cr.set_matrix(cr.get_matrix()); ++ clip_cr.set_matrix(cr.matrix()); + + draw_group_child(&node, opt, &clip_cr); + +@@ -132,8 +132,8 @@ pub fn mask( + let mut mask_surface = mask_surface.borrow_mut(); + + { +- let mask_cr = cairo::Context::new(&*mask_surface); +- mask_cr.set_matrix(cr.get_matrix()); ++ let mask_cr = cairo::Context::new(&*mask_surface).unwrap(); ++ mask_cr.set_matrix(cr.matrix()); + + let r = if mask.units == usvg::Units::ObjectBoundingBox { + mask.rect.bbox_transform(bbox) +@@ -153,7 +153,7 @@ pub fn mask( + + { + let mut data = try_opt_warn!( +- mask_surface.get_data().ok(), ++ mask_surface.data().ok(), + "Failed to borrow a surface for mask '{}'.", mask.id + ); + +Index: resvg-0.8.0/src/backend_cairo/filter.rs +=================================================================== +--- resvg-0.8.0.orig/src/backend_cairo/filter.rs ++++ resvg-0.8.0/src/backend_cairo/filter.rs +@@ -31,17 +31,17 @@ pub fn apply( + + impl ImageExt for cairo::ImageSurface { + fn width(&self) -> u32 { +- self.get_width() as u32 ++ self.width() as u32 + } + + fn height(&self) -> u32 { +- self.get_height() as u32 ++ self.height() as u32 + } + + fn try_clone(&self) -> Result<Self, Error> { + let new_image = create_image(self.width(), self.height())?; + +- let cr = cairo::Context::new(&new_image); ++ let cr = cairo::Context::new(&new_image).unwrap(); + cr.set_source_surface(self, 0.0, 0.0); + cr.paint(); + +@@ -49,7 +49,7 @@ impl ImageExt for cairo::ImageSurface { + } + + fn clip(&mut self, region: ScreenRect) { +- let cr = cairo::Context::new(self); ++ let cr = cairo::Context::new(self).unwrap(); + cr.set_source_rgba(0.0, 0.0, 0.0, 0.0); + cr.set_operator(cairo::Operator::Clear); + +@@ -62,7 +62,7 @@ impl ImageExt for cairo::ImageSurface { + } + + fn clear(&mut self) { +- let cr = cairo::Context::new(self); ++ let cr = cairo::Context::new(self).unwrap(); + cr.set_operator(cairo::Operator::Clear); + cr.set_source_rgba(0.0, 0.0, 0.0, 0.0); + cr.paint(); +@@ -115,7 +115,7 @@ fn copy_image( + + let new_image = create_image(region.width(), region.height())?; + +- let cr = cairo::Context::new(&new_image); ++ let cr = cairo::Context::new(&new_image).unwrap(); + cr.set_source_surface(&*image, -x, -y); + cr.paint(); + +@@ -216,7 +216,7 @@ impl Filter<cairo::ImageSurface> for Cai + // TODO: do not use an additional buffer + let buffer = create_image(input.width(), input.height())?; + +- let cr = cairo::Context::new(&buffer); ++ let cr = cairo::Context::new(&buffer).unwrap(); + cr.set_source_surface(input.as_ref(), dx, dy); + cr.paint(); + +@@ -234,7 +234,7 @@ impl Filter<cairo::ImageSurface> for Cai + let input2 = input2.into_color_space(cs)?; + + let buffer = create_image(region.width(), region.height())?; +- let cr = cairo::Context::new(&buffer); ++ let cr = cairo::Context::new(&buffer).unwrap(); + + cr.set_source_surface(input2.as_ref(), 0.0, 0.0); + cr.paint(); +@@ -303,7 +303,7 @@ impl Filter<cairo::ImageSurface> for Cai + return Ok(Image::from_image(buffer, cs)); + } + +- let cr = cairo::Context::new(&buffer); ++ let cr = cairo::Context::new(&buffer).unwrap(); + + cr.set_source_surface(&input2, 0.0, 0.0); + cr.paint(); +@@ -333,7 +333,7 @@ impl Filter<cairo::ImageSurface> for Cai + canvas: &cairo::ImageSurface, + ) -> Result<Image, Error> { + let buffer = create_image(region.width(), region.height())?; +- let cr = cairo::Context::new(&buffer); ++ let cr = cairo::Context::new(&buffer).unwrap(); + + for input in &fe.inputs { + let input = Self::get_input(input, region, &results, canvas)?; +@@ -352,7 +352,7 @@ impl Filter<cairo::ImageSurface> for Cai + ) -> Result<Image, Error> { + let buffer = create_image(region.width(), region.height())?; + +- let cr = cairo::Context::new(&buffer); ++ let cr = cairo::Context::new(&buffer).unwrap(); + cr.set_source_color(fe.color, fe.opacity); + cr.paint(); + +@@ -374,7 +374,7 @@ impl Filter<cairo::ImageSurface> for Cai + patt.set_extend(cairo::Extend::Repeat); + patt.set_filter(cairo::Filter::Best); + +- let cr = cairo::Context::new(&buffer); ++ let cr = cairo::Context::new(&buffer).unwrap(); + let mut m: cairo::Matrix = brush_ts.to_native(); + m.invert(); + patt.set_matrix(m); +@@ -397,7 +397,7 @@ impl Filter<cairo::ImageSurface> for Cai + match fe.data { + usvg::FeImageKind::None => {} + usvg::FeImageKind::Image(ref data, format) => { +- let cr = cairo::Context::new(&buffer); ++ let cr = cairo::Context::new(&buffer).unwrap(); + + let dx = (subregion.x() - region.x()) as f64; + let dy = (subregion.y() - region.y()) as f64; +@@ -468,7 +468,7 @@ impl Filter<cairo::ImageSurface> for Cai + ) -> Result<(), Error> { + let input = input.into_color_space(ColorSpace::SRGB)?; + +- let cr = cairo::Context::new(canvas); ++ let cr = cairo::Context::new(canvas).unwrap(); + + cr.set_operator(cairo::Operator::Clear); + cr.set_source_rgba(0.0, 0.0, 0.0, 0.0); +Index: resvg-0.8.0/tools/rendersvg/Cargo.toml +=================================================================== +--- resvg-0.8.0.orig/tools/rendersvg/Cargo.toml ++++ resvg-0.8.0/tools/rendersvg/Cargo.toml +@@ -8,7 +8,7 @@ edition = "2018" + workspace = "../../" + + [dependencies] +-fern = "0.5" ++fern = ">= 0.5" + log = "0.4" + pico-args = "0.4" + resvg = { path = "../../" } +Index: resvg-0.8.0/tools/usvg/Cargo.toml +=================================================================== +--- resvg-0.8.0.orig/tools/usvg/Cargo.toml ++++ resvg-0.8.0/tools/usvg/Cargo.toml +@@ -13,7 +13,7 @@ workspace = "../../" + travis-ci = { repository = "RazrFalcon/resvg" } + + [dependencies] +-fern = "0.5" ++fern = ">= 0.5" + log = "0.4" + pico-args = "0.4" + usvg = { version = "0.8", path = "../../usvg" } diff -Nru resvg-0.8.0/debian/patches/pico-args-0.3.patch resvg-0.8.0/debian/patches/pico-args-0.3.patch --- resvg-0.8.0/debian/patches/pico-args-0.3.patch 2021-01-02 15:48:41.000000000 +0000 +++ resvg-0.8.0/debian/patches/pico-args-0.3.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ -From: Andrej Shadura <andrew.shad...@collabora.co.uk> -Date: Sat, 21 Nov 2020 22:24:22 +0100 -Subject: pico-args 0.3 - ---- - tools/rendersvg/Cargo.toml | 2 +- - tools/rendersvg/src/args.rs | 28 ++++++++++++++-------------- - tools/usvg/Cargo.toml | 2 +- - tools/usvg/src/main.rs | 18 +++++++++--------- - 4 files changed, 25 insertions(+), 25 deletions(-) - -diff --git a/tools/rendersvg/Cargo.toml b/tools/rendersvg/Cargo.toml -index b2c0a48..211e531 100644 ---- a/tools/rendersvg/Cargo.toml -+++ b/tools/rendersvg/Cargo.toml -@@ -10,7 +10,7 @@ workspace = "../../" - [dependencies] - fern = "0.5" - log = "0.4" --pico-args = "0.2" -+pico-args = "0.3" - resvg = { path = "../../" } - time = "0.1" - -diff --git a/tools/rendersvg/src/args.rs b/tools/rendersvg/src/args.rs -index 976d4bf..95211c5 100644 ---- a/tools/rendersvg/src/args.rs -+++ b/tools/rendersvg/src/args.rs -@@ -104,26 +104,26 @@ fn collect_args() -> Result<CliArgs, pico_args::Error> { - Ok(CliArgs { - help: input.contains("--help"), - version: input.contains(["-V", "--version"]), -- backend: input.value_from_str("--backend")?.unwrap_or(default_backend()), -- width: input.value_from_fn(["-w", "--width"], parse_length)?, -- height: input.value_from_fn(["-h", "--height"], parse_length)?, -- zoom: input.value_from_fn(["-z", "--zoom"], parse_zoom)?, -- dpi: input.value_from_fn("--dpi", parse_dpi)?.unwrap_or(96), -- background: input.value_from_str("--background")?, -- font_family: input.value_from_str("--font-family")? -+ backend: input.opt_value_from_str("--backend")?.unwrap_or(default_backend()), -+ width: input.opt_value_from_fn(["-w", "--width"], parse_length)?, -+ height: input.opt_value_from_fn(["-h", "--height"], parse_length)?, -+ zoom: input.opt_value_from_fn(["-z", "--zoom"], parse_zoom)?, -+ dpi: input.opt_value_from_fn("--dpi", parse_dpi)?.unwrap_or(96), -+ background: input.opt_value_from_str("--background")?, -+ font_family: input.opt_value_from_str("--font-family")? - .unwrap_or_else(|| "Times New Roman".to_string()), -- font_size: input.value_from_fn("--font-size", parse_font_size)?.unwrap_or(12), -- languages: input.value_from_fn("--languages", parse_languages)? -+ font_size: input.opt_value_from_fn("--font-size", parse_font_size)?.unwrap_or(12), -+ languages: input.opt_value_from_fn("--languages", parse_languages)? - .unwrap_or(vec!["en".to_string()]), // TODO: use system language -- shape_rendering: input.value_from_str("--shape-rendering")?.unwrap_or_default(), -- text_rendering: input.value_from_str("--text-rendering")?.unwrap_or_default(), -- image_rendering: input.value_from_str("--image-rendering")?.unwrap_or_default(), -+ shape_rendering: input.opt_value_from_str("--shape-rendering")?.unwrap_or_default(), -+ text_rendering: input.opt_value_from_str("--text-rendering")?.unwrap_or_default(), -+ image_rendering: input.opt_value_from_str("--image-rendering")?.unwrap_or_default(), - query_all: input.contains("--query-all"), -- export_id: input.value_from_str("--export-id")?, -+ export_id: input.opt_value_from_str("--export-id")?, - perf: input.contains("--perf"), - pretend: input.contains("--pretend"), - quiet: input.contains("--quiet"), -- dump_svg: input.value_from_str("--dump-svg")?, -+ dump_svg: input.opt_value_from_str("--dump-svg")?, - free: input.free()?, - }) - } -diff --git a/tools/usvg/Cargo.toml b/tools/usvg/Cargo.toml -index 1e046fc..e54d92f 100644 ---- a/tools/usvg/Cargo.toml -+++ b/tools/usvg/Cargo.toml -@@ -15,7 +15,7 @@ travis-ci = { repository = "RazrFalcon/resvg" } - [dependencies] - fern = "0.5" - log = "0.4" --pico-args = "0.2" -+pico-args = "0.3" - usvg = { version = "0.8", path = "../../usvg" } - - [[bin]] -diff --git a/tools/usvg/src/main.rs b/tools/usvg/src/main.rs -index 01437c4..4e09775 100644 ---- a/tools/usvg/src/main.rs -+++ b/tools/usvg/src/main.rs -@@ -87,18 +87,18 @@ fn collect_args() -> Result<Args, pico_args::Error> { - version: input.contains(["-V", "--version"]), - stdout: input.contains("-c"), - keep_named_groups: input.contains("--keep-named-groups"), -- dpi: input.value_from_fn("--dpi", parse_dpi)?.unwrap_or(96), -- font_family: input.value_from_str("--font-family")? -+ dpi: input.opt_value_from_fn("--dpi", parse_dpi)?.unwrap_or(96), -+ font_family: input.opt_value_from_str("--font-family")? - .unwrap_or_else(|| "Times New Roman".to_string()), -- font_size: input.value_from_fn("--font-size", parse_font_size)?.unwrap_or(12), -- languages: input.value_from_fn("--languages", parse_languages)? -+ font_size: input.opt_value_from_fn("--font-size", parse_font_size)?.unwrap_or(12), -+ languages: input.opt_value_from_fn("--languages", parse_languages)? - .unwrap_or(vec!["en".to_string()]), // TODO: use system language -- shape_rendering: input.value_from_str("--shape-rendering")?.unwrap_or_default(), -- text_rendering: input.value_from_str("--text-rendering")?.unwrap_or_default(), -- image_rendering: input.value_from_str("--image-rendering")?.unwrap_or_default(), -- indent: input.value_from_fn("--indent", parse_indent)? -+ shape_rendering: input.opt_value_from_str("--shape-rendering")?.unwrap_or_default(), -+ text_rendering: input.opt_value_from_str("--text-rendering")?.unwrap_or_default(), -+ image_rendering: input.opt_value_from_str("--image-rendering")?.unwrap_or_default(), -+ indent: input.opt_value_from_fn("--indent", parse_indent)? - .unwrap_or(usvg::XmlIndent::Spaces(4)), -- attrs_indent: input.value_from_fn("--attrs-indent", parse_indent)? -+ attrs_indent: input.opt_value_from_fn("--attrs-indent", parse_indent)? - .unwrap_or(usvg::XmlIndent::None), - quiet: input.contains("--quiet"), - free: input.free()?, diff -Nru resvg-0.8.0/debian/patches/pico-args-0.4.patch resvg-0.8.0/debian/patches/pico-args-0.4.patch --- resvg-0.8.0/debian/patches/pico-args-0.4.patch 1970-01-01 00:00:00.000000000 +0000 +++ resvg-0.8.0/debian/patches/pico-args-0.4.patch 2021-12-29 00:23:50.000000000 +0000 @@ -0,0 +1,117 @@ +Patch for pico args 0.4 by Peter Michael Green <plugw...@debian.org> + +Based on patch for pico args 0.3 by Andrej Shadura <andrew.shad...@collabora.co.uk> + +Date: Wed, 29 Dec 2021 00:23:40 +0000 +Subject: pico-args 0.4 + +--- + tools/rendersvg/Cargo.toml | 2 +- + tools/rendersvg/src/args.rs | 28 ++++++++++++++-------------- + tools/usvg/Cargo.toml | 2 +- + tools/usvg/src/main.rs | 18 +++++++++--------- + 4 files changed, 25 insertions(+), 25 deletions(-) + +diff --git a/tools/rendersvg/Cargo.toml b/tools/rendersvg/Cargo.toml +index b2c0a48..211e531 100644 +--- a/tools/rendersvg/Cargo.toml ++++ b/tools/rendersvg/Cargo.toml +@@ -10,7 +10,7 @@ workspace = "../../" + [dependencies] + fern = "0.5" + log = "0.4" +-pico-args = "0.2" ++pico-args = "0.4" + resvg = { path = "../../" } + time = "0.1" + +diff --git a/tools/rendersvg/src/args.rs b/tools/rendersvg/src/args.rs +index 976d4bf..95211c5 100644 +--- a/tools/rendersvg/src/args.rs ++++ b/tools/rendersvg/src/args.rs +@@ -104,26 +104,26 @@ fn collect_args() -> Result<CliArgs, pico_args::Error> { + Ok(CliArgs { + help: input.contains("--help"), + version: input.contains(["-V", "--version"]), +- backend: input.value_from_str("--backend")?.unwrap_or(default_backend()), +- width: input.value_from_fn(["-w", "--width"], parse_length)?, +- height: input.value_from_fn(["-h", "--height"], parse_length)?, +- zoom: input.value_from_fn(["-z", "--zoom"], parse_zoom)?, +- dpi: input.value_from_fn("--dpi", parse_dpi)?.unwrap_or(96), +- background: input.value_from_str("--background")?, +- font_family: input.value_from_str("--font-family")? ++ backend: input.opt_value_from_str("--backend")?.unwrap_or(default_backend()), ++ width: input.opt_value_from_fn(["-w", "--width"], parse_length)?, ++ height: input.opt_value_from_fn(["-h", "--height"], parse_length)?, ++ zoom: input.opt_value_from_fn(["-z", "--zoom"], parse_zoom)?, ++ dpi: input.opt_value_from_fn("--dpi", parse_dpi)?.unwrap_or(96), ++ background: input.opt_value_from_str("--background")?, ++ font_family: input.opt_value_from_str("--font-family")? + .unwrap_or_else(|| "Times New Roman".to_string()), +- font_size: input.value_from_fn("--font-size", parse_font_size)?.unwrap_or(12), +- languages: input.value_from_fn("--languages", parse_languages)? ++ font_size: input.opt_value_from_fn("--font-size", parse_font_size)?.unwrap_or(12), ++ languages: input.opt_value_from_fn("--languages", parse_languages)? + .unwrap_or(vec!["en".to_string()]), // TODO: use system language +- shape_rendering: input.value_from_str("--shape-rendering")?.unwrap_or_default(), +- text_rendering: input.value_from_str("--text-rendering")?.unwrap_or_default(), +- image_rendering: input.value_from_str("--image-rendering")?.unwrap_or_default(), ++ shape_rendering: input.opt_value_from_str("--shape-rendering")?.unwrap_or_default(), ++ text_rendering: input.opt_value_from_str("--text-rendering")?.unwrap_or_default(), ++ image_rendering: input.opt_value_from_str("--image-rendering")?.unwrap_or_default(), + query_all: input.contains("--query-all"), +- export_id: input.value_from_str("--export-id")?, ++ export_id: input.opt_value_from_str("--export-id")?, + perf: input.contains("--perf"), + pretend: input.contains("--pretend"), + quiet: input.contains("--quiet"), +- dump_svg: input.value_from_str("--dump-svg")?, ++ dump_svg: input.opt_value_from_str("--dump-svg")?, + free: input.free()?, + }) + } +diff --git a/tools/usvg/Cargo.toml b/tools/usvg/Cargo.toml +index 1e046fc..e54d92f 100644 +--- a/tools/usvg/Cargo.toml ++++ b/tools/usvg/Cargo.toml +@@ -15,7 +15,7 @@ travis-ci = { repository = "RazrFalcon/resvg" } + [dependencies] + fern = "0.5" + log = "0.4" +-pico-args = "0.2" ++pico-args = "0.4" + usvg = { version = "0.8", path = "../../usvg" } + + [[bin]] +diff --git a/tools/usvg/src/main.rs b/tools/usvg/src/main.rs +index 01437c4..4e09775 100644 +--- a/tools/usvg/src/main.rs ++++ b/tools/usvg/src/main.rs +@@ -87,18 +87,18 @@ fn collect_args() -> Result<Args, pico_args::Error> { + version: input.contains(["-V", "--version"]), + stdout: input.contains("-c"), + keep_named_groups: input.contains("--keep-named-groups"), +- dpi: input.value_from_fn("--dpi", parse_dpi)?.unwrap_or(96), +- font_family: input.value_from_str("--font-family")? ++ dpi: input.opt_value_from_fn("--dpi", parse_dpi)?.unwrap_or(96), ++ font_family: input.opt_value_from_str("--font-family")? + .unwrap_or_else(|| "Times New Roman".to_string()), +- font_size: input.value_from_fn("--font-size", parse_font_size)?.unwrap_or(12), +- languages: input.value_from_fn("--languages", parse_languages)? ++ font_size: input.opt_value_from_fn("--font-size", parse_font_size)?.unwrap_or(12), ++ languages: input.opt_value_from_fn("--languages", parse_languages)? + .unwrap_or(vec!["en".to_string()]), // TODO: use system language +- shape_rendering: input.value_from_str("--shape-rendering")?.unwrap_or_default(), +- text_rendering: input.value_from_str("--text-rendering")?.unwrap_or_default(), +- image_rendering: input.value_from_str("--image-rendering")?.unwrap_or_default(), +- indent: input.value_from_fn("--indent", parse_indent)? ++ shape_rendering: input.opt_value_from_str("--shape-rendering")?.unwrap_or_default(), ++ text_rendering: input.opt_value_from_str("--text-rendering")?.unwrap_or_default(), ++ image_rendering: input.opt_value_from_str("--image-rendering")?.unwrap_or_default(), ++ indent: input.opt_value_from_fn("--indent", parse_indent)? + .unwrap_or(usvg::XmlIndent::Spaces(4)), +- attrs_indent: input.value_from_fn("--attrs-indent", parse_indent)? ++ attrs_indent: input.opt_value_from_fn("--attrs-indent", parse_indent)? + .unwrap_or(usvg::XmlIndent::None), + quiet: input.contains("--quiet"), + free: input.free()?, diff -Nru resvg-0.8.0/debian/patches/series resvg-0.8.0/debian/patches/series --- resvg-0.8.0/debian/patches/series 2021-01-02 15:48:41.000000000 +0000 +++ resvg-0.8.0/debian/patches/series 2021-12-29 00:24:20.000000000 +0000 @@ -1,8 +1,9 @@ no-raqote-or-skia.patch deps.patch rgb-compat.patch -pico-args-0.3.patch +pico-args-0.4.patch unicode-script-0.5.patch 0006-resvg-qt-Do-not-use-a-deprecated-method.patch 0007-resvg-qt-Check-Qt-version-before-using-modern-API.patch 0008-qt-backend-Fix-building-with-Qt-5.15.patch +0009-rust-gtk-stack-0.14.patch