Files
ycode/docs/reference/ygent-font-parity.md
T

48 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ygent 字体渲染对齐与验收(2026-10-08)
本轮对齐真实字库、字号继承、六档管理、行高和用户文字行框。两端真实视口1335×916、DPR1;WorkBuddy9223、YG原生WebView2 9335,同一真实会话。通过真实键盘快捷键逐档变化,测试后两端恢复默认2档;没有替换IPC或模拟会话。
## 统一管理
- 六档Markdown根字号:16、17.143、18.286、20.571、22.857、26.286px。
- 普通UI偏移:-1、0、1、2、2、2px;用户文字、输入、折叠标题、取消提示采用15px基准,即14、15、16、17、17、17px。
- 正文通过Markdown根字号的`.875em`缩放;不要用UI封顶规则覆盖Markdown正文。
- `--yg-font-sans`显式加入Noto Sans SC,匹配本机WorkBuddy真实中文字体;Latin仍使用Segoe UI。
- `--yg-font-agent`遵循参照名称栈,本机实际命中Arial Bold。
- `--yg-font-markdown-code`使用SFMono-Regular/Consolas/Liberation Mono/Menlo;终端使用独立`--yg-font-terminal`,本机实际命中Courier New、中文回退NSimSun。
- 本机Noto Sans SC为已安装系统字库,本轮没有把字体文件复制进项目;其他机器若缺少字库会回退,不能声称跨机器字形已经保证一致。
- 字号变化由设置与Ctrl+-/Ctrl++/Ctrl+0共用Zustand/SQLite链路。没有新增运行时样式表扫描,现有组件通过CSS变量显式接入,剩余裸字号已清理;新增组件遵守AGENTS约束。
## 内层文字与行框
用户气泡外壳保持13px基准,内层15px/1.75;p为1.78行高、1.78em最小高度,内容span垂直居中,对齐Slate混合中英文的实际行框。没有为了对标引入Slate或改变消息数据。
输入textarea实际文字15px/1.75;过程/工具组摘要15px/1.75;取消提示15px、固定20px行高。命令与结果拆成两块:命令12px/1.6,stdout/stderr固定18px行高,块间4px。UI偏移只应用字号一次,结果行高不随字号变化,这是参照实测规则。
设置界面只显示字号档位,移除Markdown像素数值。普通行内代码和Markdown代码块保持Consolas族,不能一并换成终端Courier New。
## 原生验证结果
[两端六档原始测量摘要](reference/workbuddy/font-parity-2026-10-08.json)仅含字号、行高、字体族和几何,不含对话正文或凭据。
| 验收项 | 结果 |
| --- | --- |
| 六档根字号 | 两端全部一致 |
| 9个位置×6档×字号/行高 | 108组对比全部一致:助手名称、正文、用户编辑器、用户p、输入、过程标题、取消、命令、输出 |
| 用户文字宽度、p实际高度、名称宽度 | 每项六档均一致,共18组几何对比 |
| 实际命中字库 | 中文Noto Sans SC及Bold、名称Arial Bold、终端Courier New/NSimSun;平台字体接口确认 |
| 默认用户气泡 | 外框355.15625×44.59375,与参照一致,未硬编码宽高 |
| 设置滑杆 | 原生输入ArrowRight:2→3,根17.143→18.286;ArrowLeft恢复2 |
| 调试版桌面重启 | 原会话5、829条消息恢复;默认档从真实设置恢复,窗口1335×916 |
以上不等于整个对话区1:1通过。工具意图独立折叠、reasoning占位、回合尾部操作栏、滚动条等仍以原差异清单为准;第三方widget iframe的自带字体不在本轮9位置验收内。
## 重复验收
按[原生调试SOP](ygent-debug.md)连接两端,确认同一字号和视口。可通过DevTools的Computed查看内层实际文字,DOM/CSS接口读取`CSS.getPlatformFontsForNode`确认字库。先Ctrl+0回默认,Ctrl+-到1档,再连续Ctrl++采集1—6档,最后恢复原档。设置测试使用真实滑杆,不直接写style模拟字号。
测试时保存草稿,不发送对话。先记录原档位,验证后恢复;本轮原档为2。更新差异状态时须保留原测量记录并说明已修范围,不能删除未修的结构问题。
2026-10-08 视觉优化补充:按用户要求,工作台与对话的 Markdown 围栏代码共同使用根字号 0.8125em、行高 1.7,取代原 0.75em;表格使用 0.875em、行高 1.65。六档仍由同一根字号管理,终端字体不受该 Markdown 样式影响。此调整优先可读性,不再代表这两个行高/比例与 WorkBuddy 原始值完全一致。