From 47abe09cfe33ec8159be4945790281bd98c378cb Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Thu, 16 Apr 2026 18:08:34 +0200 Subject: [PATCH] :bug: Fix problem with position data in Firefox --- frontend/src/app/render_wasm/api.cljs | 4 ++-- render-wasm/src/render.rs | 5 +++++ render-wasm/src/shapes/text.rs | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/render_wasm/api.cljs b/frontend/src/app/render_wasm/api.cljs index c23a872334..07672c8910 100644 --- a/frontend/src/app/render_wasm/api.cljs +++ b/frontend/src/app/render_wasm/api.cljs @@ -1764,11 +1764,11 @@ :direction (dr/translate-direction direction) :font-id (get element :font-id) :font-family (get element :font-family) - :font-size (get element :font-size) + :font-size (dm/str (get element :font-size) "px") :font-weight (get element :font-weight) :text-transform (get element :text-transform) :text-decoration (get element :text-decoration) - :letter-spacing (get element :letter-spacing) + :letter-spacing (dm/str (get element :letter-spacing) "px") :font-style (get element :font-style) :fills (get element :fills) :text text}))))))) diff --git a/render-wasm/src/render.rs b/render-wasm/src/render.rs index d9a5a5ba36..14ad2b8848 100644 --- a/render-wasm/src/render.rs +++ b/render-wasm/src/render.rs @@ -968,6 +968,11 @@ impl RenderState { .draw_rect(bounds, &paint); } + // Uncomment to debug the render_position_data + // if let Type::Text(text_content) = &shape.shape_type { + // text::render_position_data(self, fills_surface_id, &shape, text_content); + // } + self.surfaces.apply_mut(surface_ids, |s| { s.canvas() .concat(&transform.invert().unwrap_or(Matrix::default())); diff --git a/render-wasm/src/shapes/text.rs b/render-wasm/src/shapes/text.rs index 40bdb6d2ec..541747229a 100644 --- a/render-wasm/src/shapes/text.rs +++ b/render-wasm/src/shapes/text.rs @@ -1551,7 +1551,7 @@ pub fn calculate_text_layout_data( for (span_index, span) in text_para.children().iter().enumerate() { let text: String = span.apply_text_transform(); let text_len = text.encode_utf16().count(); - span_ranges.push((cur, cur + text_len + 1, span_index)); + span_ranges.push((cur, cur + text_len, span_index)); cur += text_len; } for (start, end, span_index) in span_ranges {