From b74768b7d545a815b22bbdac63c86ba3f77f8c5e Mon Sep 17 00:00:00 2001 From: AskaEth Date: Sun, 13 Sep 2026 23:52:52 +0800 Subject: [PATCH] =?UTF-8?q?fix(display):=20=E5=AE=9E=E6=97=B6=E8=B5=9B?= =?UTF-8?q?=E5=86=B5=E4=B8=8D=E5=86=8D=E6=8C=A4=E5=8E=8B=E7=9C=81=E7=95=A5?= =?UTF-8?q?=20=E2=80=94=E2=80=94=20=E5=8D=95=E4=BD=8D=E5=88=97=E5=AE=BD?= =?UTF-8?q?=E7=94=B1=E5=86=85=E5=AE=B9=E7=AE=97=EF=BC=8C=E5=AD=97=E5=8F=B7?= =?UTF-8?q?=E6=8A=8A=E5=8D=95=E4=BD=8D=E5=88=97=E4=B8=80=E5=B9=B6=E7=BA=B3?= =?UTF-8?q?=E5=85=A5=E9=A2=84=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 主人报:大屏「实时赛况」页在两栏显示时,单位名较长、成绩较长(如 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/投影观感与真实服务端数据(本次数据为接口桩)。 --- web/src/display/components/pages/LivePage.vue | 52 ++++-- web/src/display/fitFont.ts | 168 +++++++++++++++++- web/src/display/tests/fitFont.test.ts | 112 ++++++++++-- web/src/display/tests/live-page.test.ts | 33 +++- 4 files changed, 331 insertions(+), 34 deletions(-) diff --git a/web/src/display/components/pages/LivePage.vue b/web/src/display/components/pages/LivePage.vue index 0e487a0..34fc9e8 100644 --- a/web/src/display/components/pages/LivePage.vue +++ b/web/src/display/components/pages/LivePage.vue @@ -1,6 +1,6 @@