refactor(client): Phase 0.1 统一中文字体地基(golden 消豆腐块,可与原型保真比对)

- 打包 Noto Sans SC(pubspec fonts:),ThemeData.fontFamily 全平台统一
- golden_harness 用 FontLoader 注入 ttf + withGoldenFont,golden 渲染真实中文
- 修复 data_table_card 根因:DefaultTextStyle → .merge(替换式会吞掉继承字体,
  导致所有表格屏表头/单元格渲染豆腐块);顺手 hover 硬编码色 → context.tokens.rowHover
- 全部 golden 用新字体重生成;test/golden/failures/ 加入 gitignore

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
This commit is contained in:
wangjia
2026-06-25 17:39:23 +08:00
parent b06bd3f577
commit 243b37e81d
75 changed files with 34 additions and 5 deletions
+2 -1
View File
@@ -18,7 +18,8 @@ ThemeData buildTheme(String key) {
brightness: brightness,
colorScheme: scheme,
scaffoldBackgroundColor: t.bg,
fontFamily: null, // 系统中文字体;字号梯度后续在组件层接入
// 全平台统一中文字体(与原型截图、golden 保真 diff 一致);打包内置。
fontFamily: 'NotoSansSC',
extensions: <ThemeExtension<dynamic>>[t],
);
}
+3 -3
View File
@@ -156,7 +156,7 @@ class _DataTableCardState extends State<DataTableCard> {
children: widget.columns.map((col) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
child: DefaultTextStyle(
child: DefaultTextStyle.merge(
style: TextStyle(
fontSize: 13,
fontWeight: FontWeight.w600,
@@ -187,10 +187,10 @@ class _DataTableCardState extends State<DataTableCard> {
constraints: const BoxConstraints(minHeight: 48),
alignment:
col.numeric ? Alignment.centerRight : Alignment.centerLeft,
color: hovered == rowIndex ? const Color(0xFFF5F7FF) : null,
color: hovered == rowIndex ? context.tokens.rowHover : null,
padding:
const EdgeInsets.symmetric(horizontal: 16, vertical: 10),
child: DefaultTextStyle(
child: DefaultTextStyle.merge(
style: TextStyle(
fontSize: 13, color: context.tokens.text),
child: cell.child,