docs(design)+test(palette-extract): r2 三条口径修正与常数绑定
- LowChroma 文档:删掉「彩度必然 < 候选门槛 5」(人气门槛也会淘汰高彩度小面积, 实测 0.5% 纯红报 113.36),改为与契约文档 §6 一致的口径;代码臂注释与 score::most_chromatic 同步 - Seed::color / share 改成有边界的说法:≤MAX_SAMPLES 才是图上真实色、share 的分母是有效采样点 - palette-extract 新增 max_edge_stays_within_the_design_sample_budget: MAX_EDGE² ≤ MAX_SAMPLES(256² 当前余量为零,调大就红) - card.rs:把 6.43~6.50 / 7.70~7.76 写成断言(原来只有 ≥4.5 下限,文档却宣称区间) - LowChroma.color 字段注释改成「最接近可用的候选色」(113 那条并不「能用」)
This commit is contained in:
1 parent
f4c48752c2
commit
09b716ae79
4 files changed
+69
-16
No files matched your search
@@ -57,9 +57,11 @@ impl Card {
|
||||
/// 这张卡的 `on-primary` 对 `primary` 的实测对比度。
|
||||
///
|
||||
/// 设置页可以直接显示成「对比度 {:.2}:1」。**2026-11 实测(8 张卡)**:
|
||||
/// 浅色档 6.43~6.49、深色档 7.70~7.75(逐张数值见 `every_card_scheme_meets_wcag_aa`
|
||||
/// 的断言上限与 M87 报告表格)——两种模式都远高于 WCAG AA 的 4.5:1。
|
||||
/// 别在文案里写死一个数:卡换种子后它会变,用本方法的返回值。
|
||||
/// 浅色档 **6.43~6.49**、深色档 **7.70~7.75**——两种模式都远高于 WCAG AA 的 4.5:1。
|
||||
///
|
||||
/// 这两个区间**被测试钉住**(不是口头声明):`every_card_scheme_meets_wcag_aa` 对每张卡
|
||||
/// 断言「下限 [`wcag::AA_TEXT`] + 落在上述区间内」,所以将来改种子/调色板常数把比值
|
||||
/// 拖出区间会当场红——文档里的数字与测试同源。要改数值请连测试区间一起改。
|
||||
pub fn primary_contrast(self, flavor: SchemeFlavor) -> f32 {
|
||||
let scheme = self.scheme(flavor);
|
||||
scheme.contrast(crate::color::Role::OnPrimary, crate::color::Role::Primary)
|
||||
@@ -266,12 +268,24 @@ mod tests {
|
||||
"{} / {flavor:?} 未过门禁",
|
||||
card.key
|
||||
);
|
||||
let ratio = card.primary_contrast(flavor);
|
||||
assert!(
|
||||
card.primary_contrast(flavor) >= wcag::AA_TEXT,
|
||||
"{} / {flavor:?} primary 对 {} 只有 {:.2}",
|
||||
ratio >= wcag::AA_TEXT,
|
||||
"{} / {flavor:?} primary 对 {} 只有 {ratio:.2}",
|
||||
card.key,
|
||||
card.name,
|
||||
card.primary_contrast(flavor)
|
||||
card.name
|
||||
);
|
||||
// 上半区间:文档(`Card::primary_contrast`)向用户承诺的就是这两个区间,
|
||||
// 只钉「≥ 4.5」等于没钉——比值掉到 5.0 也全绿,而文档会继续说 6.43~6.49。
|
||||
// 边界取实测极值 ±0.01:浅色 6.4324~6.4906、深色 7.7024~7.7504。
|
||||
let (low, high) = match flavor {
|
||||
SchemeFlavor::Light => (6.43, 6.50),
|
||||
SchemeFlavor::Dark => (7.70, 7.76),
|
||||
};
|
||||
assert!(
|
||||
(low..=high).contains(&ratio),
|
||||
"{} / {flavor:?} primary 对比度 {ratio:.4} 超出文档区间 {low}~{high}",
|
||||
card.key
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user