dsh-fonttune
Manifest validFont plugin for the DeepSeek Harness Web GUI: the conversation gets its own font, size, line height and weight, the interface has a font and a weight of its own and follows the conversation by default
dsh-fonttune
English | 中文
DeepSeek Harness(DSH)字体插件:对话(会话 Markdown 正文)拥有完整的排印控制——字体族、字号、行高、字重;界面(设置页、侧栏、工作区、按钮)提供字体与字重并默认跟随对话;代码独立成轴,另有连字与特性开关;整套配置可存为预设方案。配置入口是 设置 → 插件 → 插件配置 里的原生卡片(分区收起 + 摘要),改完即时生效。
功能
- 三套排印:对话(会话 Markdown 正文、表格与标题)排在第一位、拥有全部轴;界面(设置页、侧栏、工作区与标题按钮)提供字体与字重、默认跟随对话(可关);代码独立成轴
- 界面 / 对话 / 代码字体 —— 各自独立的字体回退列表,拉丁字体在前、中文字体在后;留空表示完全沿用 DSH 的字体栈
- 字号偏移 —— 对话字号 -3 ~ +6 px,加在 DSH 自己的「对话字号」之上(官方数值是基准),段落、标题与行高一起跟随;代码字号独立成轴,-3 ~ +6 px。界面没有字号轴:经实测 DSH 的设置页、侧栏与工作区把字号写死在上游 CSS 里,唯一官方字号接口就是「对话字号」
- 字重 —— 对话、界面与代码各自 300 ~ 600 任意整数(未设置即 400,读数就显示 400)。界面字重是一条把对话 Markdown 整棵子树排除在外的
body, body *规则:真机实测(活页面计算样式)它把界面的文本元素全部改到目标字重、对话 markdown 里的元素一个都没动,所以改界面字重不会碰到对话(对话的粗体、标题粗细也原样保留) - 行高 —— 对话行高用倍率(100% ~ 160%);代码行高用加法偏移(-4 ~ +8 px)。界面没有行高轴(同字号的原因)
- 代码连字 —— 三档开关(默认 / 开启 / 关闭,浏览器默认即开启,关闭可还原
=>、!=这类连字),高级模式另有font-feature-settings特性值输入 - 拒绝合成样式 —— 禁用浏览器为中文伪造的斜体与粗体(中文字体没有斜体字形,浏览器会硬掰)
- 界面跟随对话开关 —— 界面分区顶部的「跟随对话设置」开关(默认开启):开启时界面沿用对话的字体与字重,界面自己的两个控件隐藏;关闭后界面用自己的字体与字重,与对话互不影响。字号与行高只属于对话(界面没有这两个接口)
- 预设方案 —— 编辑模式正下方的下拉选择框:五个默认配置开箱即用,点开选一个即应用;选中方案后所有改动自动存入该方案,右侧「改名 / 导入 / 导出」管理方案(导出 JSON 分享、导入合并)
- 西文 / 中文分栏(简单模式) —— 编辑模式开关:简单模式每套字体只给「西文」「中文」两个单选格,高级模式是完整的字体栈编辑器;两种模式共用同一条栈,来回切换不改动已排好的顺序
- 选字体面板 —— 内置 等宽 / 中文(CJK)/ 拉丁 / 通用 四组预设,Chromium 下再补上「本机已安装」分组;搜索不到的名字可以直接「使用 xxx」新建
- 拖拽排序 —— 已选字体是 chip 列表,可拖动调整回退顺序,同时保留前移 / 后移按钮(键盘与触屏可用)
- 分区预览 —— 对话 / 界面 / 代码分区展开后在分区末尾各有一个预览框,只预览该分区的部分
兼容性
| 插件版本 | 支持的 DSH 版本 |
|---|---|
| 0.2.1(最新) | 0.1.5-rc.2 |
| 0.2.0 | 0.1.5-rc.2 |
engines.dsh 下限为 0.1.5-rc.2,兼容声明只列 0.1.5 线的最新版本:它包含这条线的全部修复,是同一大版本里最稳的一版,而同一大版本内的旧版本按语义化版本约定向上兼容。更早或更新的 DSH 未经验证,不作声明。安装或更新时,DSH 市场会依据 package.json 里的 engines.dsh、dsh.compatibility.dshReleases 与 peerDependencies 做宿主兼容预检。
安装
通过 DSH CLI 安装:
dsh plugin --profile web add dsh-fonttune
也可以从 GitHub 安装:
dsh plugin --profile web add github:LyaxZ/dsh-fonttune
或以本地目录安装:
dsh plugin --profile web add <插件目录路径>
安装后重启一次 DSH 并打开 Web UI;之后改设置不需要重启。
使用
- 打开设置 —— 设置 → 插件 → 插件配置 → 展开「字体增强」卡片
- 分区导航 —— 卡片展开后自上而下是:编辑模式、预设方案、对话 → 界面 → 代码三个收起的分区(对话在最前,因为它拥有全部轴),以及直接平铺在分区下面的「拒绝合成样式」;分区标题行右侧显示当前值摘要、箭头固定在最右,同一时刻最多展开一个分区
- 换字体 —— 简单模式下点「西文/中文」格子选字体;高级模式下用「添加字体」与 chips 编辑器维护完整回退列表
- 调整字号/字重/行高 —— 滑块就在各自分区里,拖动松手即生效(拖动时读数连同单位 % 一起显示);改过的字段标「已修改」并可单独重置,卡片底部有「全部重置」
- 对话优先 —— 对话分区可以设置字体、字号、行高、字重四项;界面分区默认只有「跟随对话设置」开关(默认开启),关掉后才出现界面自己的字体与字重
- 关掉跟随不会跳变 —— 关掉开关的那一刻,界面会把正在显示的字体与字重写成自己的值(跟随期间它本来就是这两项),所以画面零变化、滑块从当前值继续调;对话没设的那一项则清掉界面自己的字段、保持 DSH 默认。想回到 DSH 自己的粗细点该项的「重置」(读数会回到 400)
- 界面字重不会碰到对话 —— 界面字重是唯一必须铺满整页的轴(DSH 把小标签的粗细写死在上游 CSS 的类规则里,窄规则够不到它),实现上是一条把对话 Markdown 整棵子树排除在外的规则,所以对话的段落、标题、粗体都不受影响
- 字重读数 —— 未设置的读数显示 400(DSH 正文的就是 400,滑块也停在 400),不会出现「未设置」这类字眼
- 预设方案 —— 编辑模式下方的下拉选择框(默认配置 1 ~ 5,框内右侧有与卡片一致的下拉箭头),点开选择即切换并自动保存后续改动;「改名」重命名当前方案,「导出」复制 JSON,「导入」粘贴合并。操作结果(如「已复制到剪贴板」)显示在下面那行的右侧,约 2.6 秒后自动淡出,不会顶动任何布局
- 预览 —— 对话 / 界面 / 代码分区展开后,各自分区末尾有一个预览框,只渲染该分区的样式
- 设置保存在 DSH 的设置文档里(
settings.yaml),跟随配置走
开发
src/shared.cjs—— 纯函数核心:字体名消毒与解析、配置归一化、注入样式的生成src/index.mjs—— 宿主半:注册dsh-fonttune设置命名空间(schemastery schema,含长度与取值范围校验),并通过webserver/index-inject把一个打过标记的<style>随首页下发,首帧即是设置里的字体;那个元素随后由浏览器半认领并接管(页面里只有这一份样式表,规则可增可删)src/client.js—— 浏览器半:设置卡片、选字体面板、字体枚举与样式注入build.mjs—— 零依赖构建:内联共享核心、套上window.__ModuleLoader__.load({id, factory})外壳、拷贝宿主半,并校验客户端 bundle 只 require shell 预注入的模块test/run.mjs—— 离线检查(自建 DOM / cordis / 设置面替身、真实 schemastery schema、CSS 生成与注入、消毒对抗用例、双语文案键一致性);test/render-card.mjs用 mini React hooks 运行时真实渲染卡片组件(含强制展开态与强制状态,覆盖 0.1.0 那类发布阻断崩溃);test/weight-verify.mjs在真实页面里量三条字重轴(界面 / 对话 / 代码)的独立性与「样式表只有一份、不刷新关掉跟随立即回落」;test/下另有几个无头浏览器走查脚本,以及市场条目的维护脚本test/market-pr.mjs(status / update / refresh / reopen / open / about)与诊断脚本test/market-inspect.mjs(PR 状态、评论、CI 与分支差异)docs/—— 0.2.0 的背景调研与功能规格(设计阶段的记录,含当时的取舍理由;与最终实现不同的地方以 README/CHANGELOG 为准,两份文件文首都有说明)。不在 npmfiles清单内,不随包发布- 客户端模块能 require 的只有 shell 静态表里的模块(
react、react/jsx-runtime、react-dom、@deepseek-ai/cordis、@deepseek-ai/dsh-client-*等);dsh.client.inject只是加载顺序声明,不是 require 许可 - 改
src/client.js后刷新页面即可看到变化(客户端模块按内容哈希发版,DSH 的客户端 HMR 也会推送重载);改宿主半(src/index.mjs)或cordis.patch.yml需重启 DSH
License
MIT © 2026 LyaxZ
Comments
Loading…
Similar plugins
by xingyingyuzhui
DeepSeek Harness plugin: tune chat font, width, line height, and paragraph spacing
★ 0
MIT
JavaScript
Sep 11, 2026
dsh plugin --profile web add dsh-chat-tuneby rhczz
给 DeepSeek Harness 的 Web 界面换字体。 Change the font for the DeepSeek Harness web interface.
★ 0
MIT
TypeScript
Sep 17, 2026
dsh plugin --profile web add dsh-plugin-ui-font-familyby secyborg
DSH web plugin: a settings card to tune chat reading density — font size, line height, and block spacing of the conversation area (assistant markdown + user bubbles), applied live
★ 0
MIT
JavaScript
Aug 28, 2026
dsh plugin --profile web add dsh-compact-chat-uiby tianyhjg-lab
Font switcher for DeepSeek Harness Web GUI: 99 UI fonts + 31 code fonts with CJK-Latin pairing, instant apply, localStorage persistence
★ 12
JavaScript
Aug 14, 2026
dsh plugin --profile web add dsh-fontby WangPaoPaoLab
Font switcher for DeepSeek Harness Web GUI: 99 UI fonts + 31 code fonts with CJK-Latin pairing, instant apply, localStorage persistence
★ 12
↓ 13/wk
JavaScript
Aug 14, 2026
dsh plugin --profile web add dsh-fontby Gan332
Typography plugin for DeepSeek Harness - independent interface & code fonts, online presets, zero-conversion local font library (woff2/ttf/otf)
★ 0
MIT
JavaScript
Aug 30, 2026
dsh plugin --profile web add dsh-typography