Replies: 3 comments
|
补充一个数据点,方向与 #8179 相同,依次给出设置对象、注入点与字体族常量三处代码级的依据。 同题检索我先检索了讨论区(2026-09-30,检索词覆盖:字体、字号、字体族、字型、界面字体、代码字体、字体自定义、字体选项、外观设置、主题设置、font、font family、fontFamily、Monospace、typeface、UI 字体),与本诉求相关的串如下。
我检索到的评论里没有一条落在「字体族」这一层,也没有看到对两端运行时上的同一个客户端包做过逐字节比对。以下是这次的主要增量,我尽量分清哪些是回读结论、哪些没有验证。 环境
现象在 Web UI 与桌面端的设置里,能改的排版项只有会话内容的字号(10 至 22 px)。它的说明文字自述「仅影响会话内容的字号」。界面自身的字体(字体族)没有任何配置入口:Web UI 与桌面端用的是同一套前端产物,两端的「通用」分区里都只有「外观」与「字号大小」两行。 证据(发布产物逐行回读,
|
| 文件 | 桌面端 | CLI 侧 | 逐字节相等 |
|---|---|---|---|
lib/index.js |
4227 B,sha256 2bbd6d5f2c0f44776185ad555b13afe920de9e7f9ea27ddc6a04a5fd8d25b433 |
同字节数、同 sha256 | 是 |
lib/styles/brand-font.css |
554 B,sha256 d0733ee69620e686561800ac788e54fc0bb9e02af5294c8b6f74c109132210cf |
同字节数、同 sha256 | 是 |
lib/client.js |
101729 B | 101885 B | 否 |
package.json |
2206 B | 2280 B | 否 |
lib/index.js 逐字节相同,说明上面那条 Config 闭集在两端是同一份实现,不是某一条运行时各自的问题。
两个不相等的文件差异与本次主张无关,但如实写出来:lib/client.js 的差异只在构建时嵌入的源码路径(桌面端为 /home/runner/work/…)与 CSS Modules 生成的类名哈希(_8HJdBW_ 对 v01cdW_ 等),逻辑代码逐行相同;package.json 的差异是 devDependencies 的排序与 scripts 字段在打包时被裁掉。
影响
- 用户侧没有字体族配置项。 字号能放大,但字体族不变;代码块与正文的等宽字体同样固定,界面文字的字体栈无法在设置里改。
- 缺的是用户可配置的入口,不是修改通道。
ui-theme命名空间下只有preference与fontSize两个字段,界面字体族在源码里是常量的默认值;插件侧的 token 覆盖层确实存在(见上),但那是写代码的通道,普通用户在设置里做不到。因此现状是:用户能在界面上改的排版项只有字号一项。 - 跨平台一致性。 内置字体栈里中文只列了
PingFang SC、Hiragino Sans GB、Microsoft YaHei三种;其它平台的用户同样没有调整入口。 - 这与 [Feature] Zoom the whole client UI with ⌘+ / ⌘- #7769、MacOS client - possible to make the UI font bigger? its tiny #8283 是同一类缺口的不同面。 那两条落在「字号 / 整界面缩放」,本条落在「字体族」。三者的共同点是:客户端排版里只有字号存在用户配置面。
建议
为 Web UI 与官方桌面端都加入字体设置。 两端运行的是同一份前端产物(上表),因此一份实现可以同时覆盖两端,不需要分别做。
具体建议:
- 在
ui-theme命名空间下增加字体族键,分别作用于界面文字与代码文字(例如fontFamily与monospaceFontFamily),与既有的preference、fontSize同一处,取值写进当前 profile 的cordis.patch.yml。 - 默认值取当前内置的两条字体栈,使不改动的部署行为完全不变。留空或
system时回退到内置栈。 - 通道建议复用插件侧已有的那套:把取值经
ctx.theme的 token 覆盖层写入(overrideTokens已支持按 token 名覆盖任意--dsw-*变量),从而与第三方主题走同一条合成路径,而不是新增一套 CSS 注入。 - 在设置里的「通用」分区增加对应的输入行,位置与「字号大小」一致(当前
ui-theme已在该分区注册「外观」与「字号大小」两行)。 - 若为控制改动面,先只做界面字体族一项、代码字体族维持内置栈,也是完整的一步。
这样做的直接收益是:现在要靠第三方插件才能得到的「正文字体 / 代码字体」两个设置行变成产品自带,且取值由官方 schema 校验、随设置一起持久化。
复现
- 在 Web UI 或桌面端打开设置,进入「通用」分区:可见「外观」与「字号大小」两行,没有字体相关行。
- 在安装树里读
ui-theme的Config(dsh-client-ui-theme/lib/index.js:80-83):只有preference与fontSize两个字段。 - 在安装树里检索
--dsw-font-family与--ds-font-family-code:定义只出现在包内内联的样式表里;插件侧可经ctx.theme.overrideTokens()覆盖它们,但用户侧没有任何配置键。
未验证
- 我没有在运行中的客户端上实测「插件经
ctx.theme.overrideTokens()覆盖--dsw-font-family后界面字体的实际变化」,该通道的可用性判定来自它的参数形状与运行时校验(lib/types/client/index.d.ts:178、lib/client.js:1474),没有取得运行期读数。 - 我没有实测「往配置面写入一个字体族键会被如何处置」(忽略、报错或落到未知键),该判定只基于「
Config只声明两个字段」与「全树检索没有字体族键」这两个源码事实。 - 桌面端的结论全部来自对安装目录与
resources/app.asar的只读回读,观测时桌面端未运行,因此没有桌面端的运行期读数。
|
已收到这条反馈。 |
|
同一诉求的另一面补充(字数从简,避免分散): 我在 #8355 追加了一份 0.2.0-rc.2 Windows 桌面端的数据点,与「界面文字过小 / 只能改会话内容字号」直接相关,其中包含:
|
Uh oh!
There was an error while loading. Please reload this page.
之前自己写了个字体修改的插件,但是还是希望官方能支持,就像vscode里的字体修改功能
All reactions