fix(app-iced): 盒 ≠ RENDER_PX 的图标改走 view_at,线宽回到 1.5px(M86 r1 P2)
r1 视觉/代码复审撞上同一件事:本轮把按钮/chip/switch 的盒子改成 18/18/16,但 SVG 仍按 24 烘焙、靠布局盒缩下去 ⇒ 实测线宽 1.04~1.25px(令牌要 1.5px)。label 的对照证据是同屏 caption (20px,走了 view_at)实测正好 1.50px——差别只在有没有走按盒烘焙。 - buttons/assemble.rs(前置/后置)、selection/chip.rs(前置/后置)、selection/switch.rs 滑块勾 共 5 处改为 icons::view_at(kind, color, geometry.icon); - 新增单测 view_at_bakes_the_requested_size:source(18) 必须是 width=18 + stroke-width=2.0 (视觉 1.5px),并反证「24 烘焙塞进 18 盒只有 1.125px」; - 新增源码级守门 sub_24_boxes_go_through_view_at:icons::view 只允许出现在图标盒=24 的文件, 否则红——谁把上面 5 处改回 view 立刻被抓; - 三处会带偏人的文字订正:icons.rs 模块文档改成「24 盒走 view、其余一律 view_at」; selection/mod.rs 的「图标一律 icons::view」同改;token_contract.rs 明说那条只保证烘焙路径。
This commit is contained in:
1 parent
fa40d798e2
commit
da1fe3aa4f
7 files changed
+155
-16
No files matched your search
@@ -131,6 +131,13 @@ fn icon_stroke_follows_svg_semantics_not_slint() {
|
||||
// - 20px(`IconSize::Nav`,本轮没动)→ 1.5 × 24 / 20 = **1.8**
|
||||
// - 18px(`IconSize::Button`,M86 由 16 收敛到官方 18)→ 1.5 × 24 / 18 = **2.0**
|
||||
//
|
||||
// ⚠️ **这条只保证「烘焙路径」**(`crates/app-iced/src/icons.rs::view_at`:按盒尺寸烘焙 SVG,
|
||||
// 于是一个 viewBox 单位的 stroke 落到盒子后正好是 1.5 视觉像素)。
|
||||
// 它**不**保证「24 烘焙 + 布局缩到 18」那条路径——那条会得到 `1.5 × 18/24 = 1.125px`,
|
||||
// 正是复审 r1 P2-2 实测到的 1.04~1.25px 缺陷。所以组件侧凡是盒 ≠ `RENDER_PX`(24) 的调用点
|
||||
// 都必须走 `view_at`(见 `icons.rs::tests::view_at_bakes_the_requested_size` 与
|
||||
// `crates/app-iced/src/components/gate.rs` 的 Q9 扫描)。
|
||||
//
|
||||
// 之所以写死字面量而不写成 `stroke_width_for(IconSize::Nav.px(), 1.5)`:后者等于拿实现算实现,
|
||||
// 派生式一旦被改坏(例如把 ×24 写成 ×20)它照样绿。写死才会红。
|
||||
// Slint 口径(绝对 1.5px,不乘 viewBox)在这两档都会得到 1.5 —— 那正是这条要防的错。
|
||||
|
||||
Reference in new issue
Block a user