AskaEth
b74768b7d5
fix(display): 实时赛况不再挤压省略 —— 单位列宽由内容算,字号把单位列一并纳入预算
主人报:大屏「实时赛况」页在两栏显示时,单位名较长、成绩较长(如 1:12.66)会被挤压显示省略号。
实测根因:**单位列宽写死**(`.boards-2 .row` 的 `60px minmax(0,1fr) 190px …`)而单位名墨迹实测
206~343px → 必然进省略态;单栏 524 vs 694、split 166 vs 437 同理。弹性宽度全给了运动员列。
更关键的是 `fitFont.ts` 的 `fitLiveRowFontPx` **只把成绩列纳入字号计算**,单位列从未进过这笔账 ——
所以字号自适应对它一直没生效。
改法:
- `fitFont.ts` 新增 `LiveRowGeometry`(各版式行宽 1710/836/815、名次列、间距、单位列下限与预算)、
`liveTeamColumnPx`(按单位名墨迹定列宽,含 logo 1.28em)、`liveNameColumnPx`;
`fitLiveRowFontPx` 增加 teams/teamsWithLogo 参数,按「名次+名字(≥4 汉字)+单位+成绩装得进一行」逐像素收字号;
`resultTextEm` 更名 `textEm`(成绩与单位名共用同一套字符宽度表)。
- `LivePage.vue` 把单位名喂进字号计算并导出 `--team-width`,网格改用该变量。
- **取舍**:以收字号换完整显示(split 最狠 56→41px);单位列封顶 380/430/900px,超过才由单位名省略
—— **成绩与名次在任何情况下都完整**(观众最关心的先保住)。
肉眼验收(1920×1080,ReadMediaFile 逐张看过):两栏 + 10 字单位名 + 12:34.56 → 全完整,43px(改前 44px);
单栏同样全完整,88px;**对照组短单位名网格改前改后完全一致、0 省略**(常态数据零变化)。
测试:fitFont +5、live-page +1(单位列宽由内容算、网格不得再有写死单位列、必须把单位名喂进 fitFont),
并修正 2 条因网格写法变化而失真的既有断言;改前跑这些用例会红。前端 767/767、vue-tsc 通过。
未验证:真机 4K/投影观感与真实服务端数据(本次数据为接口桩)。