DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Yoimiya-Lover-0621-01 /

Yoimiya-Lover-0621-01/dsh-plugin-font-switcher

Verified

Chinese/Latin font switcher plugin for DeepSeek Harness: separate Chinese and Latin font rows with system lists and TTF/OTF upload.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@8e03428e

全局字体切换 · dsh-plugin-font-switcher

license: MIT

给 DeepSeek Harness 的「设置 → 通用」增加中文字体与英文字体两行: 中文字形和西文字形可以用不同的字体,也可以各自上传 TTF/OTF 文件,设置对整个界面生效。

A font switcher plugin for DeepSeek Harness. It adds separate Chinese font and Latin font rows to Settings → General, so Chinese and Latin glyphs can each use their own family — chosen from a curated system-font list or uploaded as a TTF/OTF file. The choice is stored in the Host settings document and applied through the Host's own --dsh-font-family-text mechanism.

安装

插件是标准的 DSH bundle 包,用 DSH 自带的插件管理器安装即可(不需要构建步骤):

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

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

Release v0.1.0 另附 zip / tgz 打包(取自仓库同版本),解压后把得到的目录交给 plugin_manager · install_bundle 一样可用。

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

它怎么工作

不自己存一套设置,而是走宿主自己的字体通路:

  • 写入:ctx.theme.setFontFamily('text', 值) → 主题运行时把字体族写进 宿主设置文档;
  • 生效:ThemePresenter(ui-layout)把字体族写成 <body> 上的 --dsh-font-family-text,而全站样式链是 body{font-family: var(--dsw-font-family, …)} ← body{--dsw-font-family: var(--dsh-font-family-text, 内置栈), 内置栈}, 所以界面文字、侧栏、设置面板、对话正文一起变;代码块仍用 --ds-font-family-code(等宽),不会被改坏;
  • 重启后:启动脚本在首屏绘制前就把同一变量注入,所以不会有闪一下再变的情况。

上传的字体文件(二进制)存在浏览器 IndexedDB(单个上限 64 MB,放得下中文字库),每次启动注册成 FontFace; 字体选择本身由宿主设置文档保存,跨浏览器/重启都保持。

使用

设置 → 通用里有两行:

  1. 中文字体 —— 界面的中文字形用它;右侧「上传字体」上传的字体会落到这一行;
  2. 英文字体 —— 界面的西文字形优先用它;同样带「上传字体」,上传后落到这一行;不设置就跟随中文字体。

两行各自独立切换,两行都能上传。上传字体落在哪一行,就记在哪一行(重开设置不会错位); 删除按钮(×)出现在用了该字体的那一行。行内下拉选「系统默认」表示这一项不指定。

中英文为什么能分开

宿主给文字角色存的是一条字体列表,而 CSS 是逐字形顺序匹配的:第一个含该字形的字体会被用掉。 所以插件把「英文字体」排在前面、「中文字体」排在后面,例如:

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

A 这类西文字形在 Segoe UI 里就有 → 用 Segoe UI;字 这种字形它没有 → 落到微软雅黑。 列表再往后是宿主内置栈,所以两个都没装也不会出方块。

注意:中文字体本身通常也带西文字形,所以不设英文字体时西文会跟着中文字体 —— 这正是"跟随"的含义。

字体列表(按中文习惯组织)

「中文字体」菜单里按组排列:

组 内容
系统默认 这一项不指定
中文字体 · 黑体 / 无衬线 微软雅黑、苹方、思源黑体、Noto Sans 简体、黑体、等线、幼圆、华文细黑
中文字体 · 宋体 / 衬线 宋体、新宋体、思源宋体、Noto Serif 简体、华文中宋、仿宋
中文字体 · 楷体 楷体、华文楷体
已上传字体 自己传的 TTF/OTF

「英文字体」菜单里是:系统默认 + 西文字体一组(Segoe UI、Helvetica Neue、Helvetica、Arial、Verdana、 Tahoma、Trebuchet MS、Georgia、Times New Roman、Cambria、Calibri)+ 已上传字体。

每个中文字体存的是一串双名栈,例如 微软雅黑 → "Microsoft YaHei", "微软雅黑"、 苹方 → "PingFang SC", "苹方-简":Windows 与 macOS 对同一个字体认的名字不同,两个都写上才两边都命中。 界面上显示中文名,存下去的是这套栈。

与宿主自带功能的关系

宿主「字号大小」行右侧的小箭头里其实已经能手打字体族名(text / code / terminal 三个角色)。 本插件只是给其中的 全局文字(text) 角色补了一个看得见、能挑、能传文件的入口; 在那个输入框里填的自定义列表会被原样保留(排在两套字体之后),不会被插件删掉。

文件

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

视觉

行样式直接照宿主自己的设置行抄:.5px --dsw-alias-border-l2 分隔线、16px 0 内边距、 14px/22px 标题、12px/18px --dsw-alias-label-tertiary 说明、36px 高 --dsw-alias-bg-module-platform 圆角胶囊控件。

下拉不是原生 <select>:原生 option 列表由平台绘制,深色主题下会出现白底浅字,也没法跟主题走。 这里自己画列表(padding 6px、--dsw-radius-lg、--dsw-alias-bg-overlay 表面、 条目 min-height:34px、--dsw-radius-md、悬停 --dsw-alias-interactive-bg-hover), 并用 Popover API 把它提升到顶层(popover="auto"):既不会被设置面板的滚动容器裁掉, 又自带点击外部/Esc 关闭。只有浏览器不支持 Popover 时才退回原生 <select>(并给 option 指定 token 配色)。

已知边界

  • 文案在每次渲染时按当前语言求值(不在插件加载那一刻定死),所以切语言、插件热重载之后都不会卡在某一种语言上;语言服务还没就绪时按浏览器语言判断,再兜底中文。
  • 「全局」指文字角色;代码块与终端字号/字体仍归宿主自己的 code / terminal 角色管。
  • 字体族名不在本机时不会报错,会顺着宿主的回退栈落到下一个可用字体。
  • 上传的字体只在这台机器的这个浏览器里可用(二进制在 IndexedDB);其余浏览器会回退。

许可

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

—/ 5

No ratings yet

Verified DSH bundle

Commit 8e03428e9e04

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout