🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

字体工坊 WuYiBaiZhi/dsh-font-studio

DeepSeek Harness
WuYiBaiZhi11 天前有提交已提供中文文档扫描:含敏感能力

更换正文与代码字体,实时预览并记住设置

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add WuYiBaiZhi/dsh-font-studio
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 11 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 3 处,展示前 3 条)
  • 读取本地文件
    lib/index.js:37
    const bundle = readFileSync(fileURLToPath(new URL("./client.js", import.meta.url)), "utf8");
  • 读取本地文件
    lib/fonts.js:186
    entries = readdirSync(dir, { withFileTypes: true });
  • 读取本地文件
    lib/fonts.js:197
    if (statSync(full).isFile()) files.push(full);
扫描于 2026/11/5(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

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
预览分享卡片长什么样 ↓WuYiBaiZhi/dsh-font-studio
分享 · DeepSeek Harness Hub
WuYiBaiZhi/dsh-font-studio

更换正文与代码字体,实时预览并记住设置

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部