更换正文与代码字体,实时预览并记住设置
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add WuYiBaiZhi/dsh-font-studio该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 字体工坊:给 DeepSeek Harness 换正文/代码字体与字号,预设画廊 + 自定义字体栈 + 实时预览;字体清单由宿主进程直读字体文件,支持 TTC / 超级 TTC / OTC
README
由 DeepSeek 最新模型翻译生成dsh-font-studio · DSH 字体工坊
给 DeepSeek Harness 换字体的第三方插件:在「设置」里多出一节 字体,挑一个字体栈或手写自己的,正文、代码字体立即生效并记住;顺带能调正文 / 代码 / 终端字号。
一句话:官方只开放了字号写入,字体族靠 CSS 令牌覆写——本插件两件事都做了;而「本机装了哪些字体」由宿主进程真读字体文件来回答,.ttc / 超级 TTC 里的每个字面都在。
功能
- 正文 / 代码两组字体,各带预设画廊(苹方、微软雅黑、思源黑体、霞鹜文楷、宋体阅读、更纱黑体、 JetBrains Mono、Cascadia Code、Fira Code、SF Mono、Consolas……),卡片用该字体渲染 Aa 字体 123 实时预览。
- 自定义字体栈:直接手写 "LXGW WenKai", "Microsoft YaHei", serif,回车或点「应用」即生效。
- 扫描本机字体(三级通道,按可靠性排序):
1. 宿主扫盘(首选):宿主半边注册 GET /dsh-font-studio/fonts,在 Node 里直接解析 C:\Windows\Fonts 与用户字体目录下的 .ttf/.otf/.ttc/.otc,读 name 表拿家族名。
展开完整文档(README 剩余 1 节)
dsh-font-studio · DSH 字体工坊
给 DeepSeek Harness 换字体的第三方插件:在「设置」里多出一节 字体,挑一个字体栈或手写自己的,正文、代码字体立即生效并记住;顺带能调正文 / 代码 / 终端字号。
一句话:官方只开放了字号写入,字体族靠 CSS 令牌覆写——本插件两件事都做了;而「本机装了哪些字体」由宿主进程真读字体文件来回答,.ttc / 超级 TTC 里的每个字面都在。
功能
- 正文 / 代码两组字体,各带预设画廊(苹方、微软雅黑、思源黑体、霞鹜文楷、宋体阅读、更纱黑体、 JetBrains Mono、Cascadia Code、Fira Code、SF Mono、Consolas……),卡片用该字体渲染 Aa 字体 123 实时预览。
- 自定义字体栈:直接手写 "LXGW WenKai", "Microsoft YaHei", serif,回车或点「应用」即生效。
- 扫描本机字体(三级通道,按可靠性排序):
1. 宿主扫盘(首选):宿主半边注册 GET /dsh-font-studio/fonts,在 Node 里直接解析 C:\Windows\Fonts 与用户字体目录下的 .ttf/.otf/.ttc/.otc,读 name 表拿家族名。
.ttc / super TTC 是容器,里面每个字面都单独列出(比如 Sarasa-SuperTTC.ttc 里十几种更纱黑体),中英文名各取一个(中文名当主名、英文名当别名一起拼进字体栈,DirectWrite 两种都认)。
一次扫描约 100ms,结果缓存 10 分钟,「重新扫盘」按钮可强制重读。
2. navigator.queryLocalFonts()(若环境支持):浏览器授权后拿全量字体族。
3. 渲染探测(兜底):拿内置 90 个候选家族逐个用 canvas.measureText 量字宽,与「一定不存在的家族」比对,宽度变了就是本机真的有这套字形。只覆盖目录内的字体。
- 字号滑条:正文 10–22、代码 10–16、终端 10–20(与官方 FONT_SIZE_SPECS 一致)。
- 即时保存:状态存在浏览器 localStorage(键 dsh-font-studio:v1),重启后自动应用。
- 全部恢复默认:清掉覆写,并把官方字号还原成插件接管前的快照值。
安装
先取到本地:
git clone https://github.com/WuYiBaiZhi/dsh-font-studio
插件是纯 JS、无依赖、无需构建。把整个目录放进 profile 的 node_modules,再把包名加进 profile 的 package.json 两个地方:
// C:\Users\<你>\.dsh\profiles\desktop\package.json {
"dependencies": { "dsh-font-studio": "link:<克隆到的目录>" },
"dsh": { "profile": { "bundles": [
// …已有的 "dsh-font-studio" ] } } }
或者,如果环境里装了 dsh-super-injector,直接:
dev_install_package({ dir: "<克隆到的目录>", profile: "desktop" })
注意:profile 要用正在运行的那个(缺省值是 web,装错位置页面不会有反应;用 dsh web 启动的常见是 desktop)。
装上后刷新一次页面(客户端模块表在页面加载时拉取),打开 设置 → 字体。
原理
| 目标 | 手段 | 为什么 |
| 正文 / 代码字体族 | 里 body{--dsw-font-family: <栈> !important}、--dsw-font-family-brand、--ds-font-family-code、--dsw-font-mono | 官方 theme 服务只暴露 getTheme/setTheme/setFontSize/register/overrideTokens,没有 setFontFamily;而 ThemePresenter 把 --dsh-font-family-* 写在 body 内联样式上,只有 !important 的作者样式能压过它 |
| 字号 | ctx.theme.setFontSize(role, px) | 走官方设置,持久化由官方负责,UI 各处一致 |
| 字号(服务不在时) | body{--dsh-content-font-size: Npx !important} 兜底 | 服务可能比插件晚就绪或压根没有;applyTypography() 幂等,错峰重试会补上 |
| 本机字体清单 | 宿主 ctx.webServer.register({ kind:"prefix", path:"/dsh-font-studio" }) + 客户端同源 fetch | 浏览器里没有字体枚举接口,但宿主是 Node,能直接读字体文件、解开 TTC 容器;同源路由是生态里 dsh-pet 等插件的既有做法 |
| 持久化 | localStorage | 不需要宿主端存储服务,插件纯客户端即可 |
三条安全线:
1. fail-open:拿不到主题服务、localStorage 不可用、插槽不存在、字体路由没注册——一律降级,绝不抛错,官方界面保持原样;字体路由注册失败还有 0/250/750/1500/3000/6000ms 的错峰重试(宿主各插件加载顺序不保证)。
2. 不写别人的 DOM:只挂两个自持 (#dsh-font-studio-typography / #dsh-font-studio-plugin-css),卸载时按 data-plugin 精确移除。
3. 字体栈先清洗再拼 CSS:剥掉 ;{}<>、!important、换行与超长内容,杜绝把输入拼成样式注入。
接口
GET /dsh-font-studio/fonts(GET/HEAD,?refresh=1 绕过 10 分钟缓存):
{
"ok": true,
"families": [{ "name": "更纱黑体 SC", "alias": "Sarasa Gothic SC", "file": "…\\Sarasa-SuperTTC.ttc" }],
"count": 42,
"files": 57,
"dirs": ["C:\\WINDOWS\\Fonts", "C:\\Users\\<你>\\AppData\\Local\\Microsoft\\Windows\\Fonts"],
"scannedAt": 1700000000000,
"cached": false
}
数值仅示意;count / files 取决于本机装了多少字体。
已知边界
- 终端字号只走官方服务(它没有能兜底的 CSS 变量通路),没有主题服务时不显示这一行。
- 官方设置页自带的「字体」组(settings.general.item 里的正文/代码/终端字体输入框)依然在。
你在那边改字体,本插件的 !important 覆写会赢;想交还官方,本插件里选「系统默认」即可。
- 若同时装了别的改字体的插件,两者都写 body 令牌,后挂的赢——同时只留一个。
- 宿主扫盘只读字体目录:用「临时安装/未落盘」方式加载的字体(例如某些软件的私有字体缓存)扫不到,手写家族名仍然有效。
- 家族名取 name 表的排版家族名(nameID 16,退回 nameID 1),所以 微软雅黑 Light 这类字重会归到 微软雅黑 下——CSS 本来就该按家族选字体、按字重选字形。
开发
node --check lib/client.js # 语法
node test/smoke.mjs # 离线冒烟:假 DOM 跑通 bundle 契约/清洗/探测/宿主路由/令牌/字号双通路/恢复默认
node test/fonts.test.mjs # 宿主字体解析:现场拼 sfnt / TTC 二进制,验证多字面、别名、破损容错
lib/client.js 里的 exports.__internals 只给测试用,宿主不读。
| 文件 | 作用 |
| lib/client.js | 客户端半边:设置页那一节、令牌覆写、字号、localStorage |
| lib/index.js | 宿主半边:让包成为 cordis 树一行 + 注册 /dsh-font-studio/fonts 路由 |
| lib/fonts.js | 宿主侧字体枚举:扫目录、解析 sfnt/TTC name 表、10 分钟缓存 |
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
WuYiBaiZhi/dsh-font-studio
更换正文与代码字体,实时预览并记住设置
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,362已汉化DSH
71.4
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,076已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,814已汉化DSH
71.1
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。