forked from 1b-agent/opencadstudio-upstream
fix(web): force Advanced shaping for dynamic-input canvas text
Dynamic-input value boxes, the prompt pill and the UCS axis labels are drawn with `frame.fill_text`, whose `canvas::Text` defaults to `Shaping::Auto`. Auto picks Basic shaping for ASCII-only strings, which renders on desktop but draws nothing on the web (wgpu/webgl) backend, so the all-digit distance/coordinate boxes and X/Y/Z labels were blank (the angle box rendered only because its `°` upgraded it to Advanced). Typed values landed correctly but were invisible. (#117) Set `shaping: Advanced` on every canvas fill_text in the overlay. Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
864dd6cef7
commit
bf30e57186
1 file changed
+8
@@ -1171,6 +1171,7 @@ fn draw_ucs_icon(frame: &mut canvas::Frame, vp: Mat4, bounds: iced::Rectangle) {
|
||||
position: Point::new(tip.x + nx * 8.0 - 3.5, tip.y + ny * 8.0 - 5.0),
|
||||
color: col,
|
||||
size: iced::Pixels(10.0),
|
||||
shaping: iced::advanced::text::Shaping::Advanced,
|
||||
..Default::default()
|
||||
});
|
||||
}
|
||||
@@ -1285,6 +1286,11 @@ impl DynInputCanvas {
|
||||
position: Point { x: x + DYN_PAD, y: y + DYN_PAD },
|
||||
color: Color { r: 0.92, g: 0.92, b: 0.92, a: 1.0 },
|
||||
size: iced::Pixels(DYN_FONT),
|
||||
// Force Advanced shaping: the default `Auto` uses Basic shaping for
|
||||
// ASCII-only strings, which the web (wgpu/webgl) backend fails to
|
||||
// render — so all-digit value boxes came up blank while the angle
|
||||
// box (containing the non-ASCII `°`) rendered. (#117)
|
||||
shaping: iced::advanced::text::Shaping::Advanced,
|
||||
..Default::default()
|
||||
});
|
||||
}
|
||||
@@ -1327,6 +1333,7 @@ impl DynInputCanvas {
|
||||
position: Point { x: pos.x + DYN_PAD, y: pos.y + DYN_PAD },
|
||||
color: Color { r: 0.70, g: 0.85, b: 0.70, a: 1.0 },
|
||||
size: iced::Pixels(DYN_FONT),
|
||||
shaping: iced::advanced::text::Shaping::Advanced,
|
||||
..Default::default()
|
||||
});
|
||||
}
|
||||
@@ -1562,6 +1569,7 @@ impl DynInputCanvas {
|
||||
position: Point { x: x + DYN_PAD, y: by + DYN_PAD },
|
||||
color: Color { r: 0.92, g: 0.92, b: 0.92, a: 1.0 },
|
||||
size: iced::Pixels(DYN_FONT),
|
||||
shaping: iced::advanced::text::Shaping::Advanced,
|
||||
..Default::default()
|
||||
});
|
||||
x += w + DYN_GAP;
|
||||
|
||||
Reference in new issue
Block a user