DeepSeek Harness 全局字体切换插件

前言

DeepSeek Harness(DSH)允许通过插件扩展功能。本插件在「设置 → 通用」增加中文字体与英文字体两行,让界面中文形和西文字形可以分别使用不同的字体族,同时支持从系统列表选择或上传 TTF/OTF 文件。

插件定位

插件名称为 dsh-plugin-font-switcher,由 Yoimiya-Lover-0621-01 维护,版本为 v0.1.0,许可证为 MIT。它属于 DSH 生态中的「趣味换装」分类插件,用于统一控制界面文字的字体呈现方式。

核心功能

安装后在「设置 → 通用」的「字号大小」下方会出现两行新设置:

  1. 中文字体:控制界面中文字形的字体族。行内下拉菜单包含系统默认、黑体/无衬线、宋体/衬线、楷体等类别,以及「已上传字体」。
  2. 英文字体:控制界面西文字形的字体族。包含系统默认、西文字体列表和已上传字体。

两行各自独立,都能上传 TTF/OTF 文件。上传后文件存储在浏览器的 IndexedDB 中(单个上限 64 MB),并在每次启动时注册为 FontFace。字体选择本身保存在宿主设置文档中,重启后保持。

插件不自己存储一套设置,而是通过宿主的字体通路生效:写入 ctx.theme.setFontFamily('text', 值),主题运行时将字体族写入宿主设置文档;UI 层通过 --dsh-font-family-text 变量应用字体,代码块与终端仍由宿主自己的 code / terminal 角色管理。

安装与启用

插件是标准的 DSH bundle 包,无需构建步骤。

  1. 把本仓库放到任意目录,例如 ~/plugins/dsh-plugin-font-switcher。
  2. 在 DSH 会话里让 Agent 安装该目录:
plugin_manager · action: install_bundle · target: <该目录的绝对路径>
  1. 刷新 Harness 页面(Ctrl+R)。

安装完成后,在「设置 → 通用」的「字号大小」下方会出现「中文字体」和「英文字体」两行;插件管理器里也会出现名为「全局字体切换」的条目,可随时停用或卸载。

使用方式

在「设置 → 通用」中,对「中文字体」和「英文字体」分别进行配置:

  1. 点击行内下拉菜单,选择系统字体或「已上传字体」。
  2. 点击右侧「上传字体」按钮,选择本地 TTF 或 OTF 文件。
  3. 上传后字体会自动落到对应的行;再次点击行内下拉菜单即可切换。
  4. 如需移除已上传的字体,点击行右侧的删除按钮 ×。

「系统默认」表示这一项不指定字体族,将跟随宿主的回退栈。未设置英文字体时,西文会跟随中文字体。

工作原理

插件利用 CSS 逐字形匹配的机制实现中英文分离。宿主为文字角色存储的是一条字体列表,而 CSS 按顺序匹配每个字形。插件将「英文字体」排在前面、「中文字体」排在后面,例如:

"Segoe UI", "Microsoft YaHei", "微软雅黑", <宿主内置栈>

西文字形(如 A)在 Segoe UI 中即可匹配,优先使用 Segoe UI;中文字形(如 字)在 Segoe UI 中不存在,则落到微软雅黑;再往后是宿主内置栈。

中文字体菜单中的每项存的是双名栈,例如微软雅黑 → "Microsoft YaHei", "微软雅黑"、苹方 → "PingFang SC", "苹方-简",确保 Windows 与 macOS 下的字体名称都能被识别。界面上显示中文名,存储的是这套栈。

文件结构

插件包含以下文件:

文件 作用
package.json bundle 清单
cordis.patch.yml 插入 font-switcher 这一行
index.js Host 半边,空实现
client.js 设置行 + 字体应用 + IndexedDB 存取
locale/en.json、locale/zh.json 插件列表里的标题与说明
icon.svg 插件图标
LICENSE MIT 许可证

视觉与兼容性

行样式直接照宿主自己的设置行样式,下拉列表不是原生 <select>,而是使用 Popover API 自绘,确保在深色主题下也能正常显示。

兼容性:在 DSH 0.2.1-rc.2 上开发并验证。依赖的宿主入口是 ctx.theme.setFontFamily()、settings.general.item 插槽和 --dsh-font-family-* 变量。

已知边界

  • 文案在每次渲染时按当前语言求值,切语言或插件热重载后不会卡在某种语言上。
  • 「全局」指文字角色;代码块与终端的字号/字体仍归宿主自己的 code / terminal 角色管理。
  • 字体族名不在本机时不会报错,会顺着宿主的回退栈落到下一个可用字体。
  • 上传的字体只在这台机器的这个浏览器里可用,其余浏览器会回退。

许可证

MIT。字体本身不在本仓库内分发;上传的字体文件只留在你自己的浏览器里,请自行遵守所上传字体的许可。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜