diff options
author | Federico Mena Quintero <federico@gnome.org> | 2020-11-03 19:45:30 -0600 |
---|---|---|
committer | Federico Mena Quintero <federico@gnome.org> | 2020-11-05 12:50:23 -0600 |
commit | c529089800a4b461a2c9dd8fd62a812ec0c457f2 (patch) | |
tree | d1866b584e61a6394e9a1fa9a62622b0f491a1e2 | |
parent | 5d10a047a215d748f4487765b32570613ba4c1a0 (diff) | |
download | librsvg-c529089800a4b461a2c9dd8fd62a812ec0c457f2.tar.gz |
text: Propagate dx/dy across nested <tspan>
-rw-r--r-- | rsvg_internals/src/text.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/rsvg_internals/src/text.rs b/rsvg_internals/src/text.rs index 32223ea2..03f2be5d 100644 --- a/rsvg_internals/src/text.rs +++ b/rsvg_internals/src/text.rs @@ -293,6 +293,8 @@ fn children_to_chunks( &cascaded, draw_ctx, chunks, + dx, + dy, depth + 1, ); } @@ -603,6 +605,8 @@ impl TSpan { cascaded: &CascadedValues<'_>, draw_ctx: &mut DrawingCtx, chunks: &mut Vec<Chunk>, + dx: f64, + dy: f64, depth: usize, ) { let values = cascaded.get(); @@ -611,8 +615,11 @@ impl TSpan { let x = self.x.map(|l| l.normalize(&values, ¶ms)); let y = self.y.map(|l| l.normalize(&values, ¶ms)); - let dx = self.dx.map_or(0.0, |l| l.normalize(&values, ¶ms)); - let dy = self.dy.map_or(0.0, |l| l.normalize(&values, ¶ms)); + let span_dx = self.dx.map_or(0.0, |l| l.normalize(&values, ¶ms)); + let span_dy = self.dy.map_or(0.0, |l| l.normalize(&values, ¶ms)); + + let dx = dx + span_dx; + let dy = dy + span_dy; chunks.push(Chunk::new(values, x, y)); |