把手写体(衡水体风格)一键应用到 VSCode 编辑区。字体已经过等宽化改造,所以代码缩进和列对齐不会被破坏。
衡水体是手写体,天生不等宽。直接把原始手写体设成 editor.fontFamily,代码会立刻散架 —— 缩进错位、表格对不齐、注释挂不到列上。
本项目的做法是把字体的所有字形统一到同一个字格宽度并水平居中,删掉 kerning/GPOS,再向系统声明 isFixedPitch。改造后的字体在 fonts/mono/,样张在 preview/。
实测结果:ASCII 全字符集 advance width 收敛到单一值,同列竖线跨行偏差 0.000 px。
code --install-extension hengshui-mono-0.1.0.vsix装完完全退出 VSCode 再重新打开(不是 Reload Window),否则命令面板里看不到新命令。
命令面板(Ctrl+Shift+P)里搜「衡水体」:
| 命令 | 作用 |
|---|---|
衡水体: 启用编辑区字体 |
安装字体(如未装)并改写 editor.fontFamily |
衡水体: 切换变体(立即生效) |
快速选变体,选中即生效,不用改设置再跑一遍 |
衡水体: 停用并还原原字体 |
从备份一键还原 |
衡水体: 安装字体到系统(当前用户) |
只装字体,不改设置 |
衡水体: 从系统卸载字体 |
删字体文件和注册表项 |
衡水体: 查看当前状态 |
看设置里选的、实际生效的、安装/备份情况 |
衡水体: 打开样张对比图 |
看四个变体的渲染对比 |
改 hengshuiMono.variant 设置也会立即生效 —— 扩展监听配置变更并自动重新应用,不需要再手动跑一次「启用」。
首次启用后必须完全退出 VSCode 再启动 —— 新装的字体对已经在跑的进程不可见(字体枚举发生在进程启动时),Reload Window 有时不够。
| 设置 | 默认 | 说明 |
|---|---|---|
hengshuiMono.variant |
PH |
变体:PH / CN / HL / AD |
hengshuiMono.applyToTerminal |
false |
是否同时改集成终端字体 |
hengshuiMono.keepOriginalAsFallback |
true |
把原字体追加到回退链,保住中文字体 |
| id | 基座 | 观感 |
|---|---|---|
PH |
Patrick Hand | 圆润规整,最接近衡水体观感(默认) |
CN |
Comic Neue | 最均匀、最像印刷体,笔画偏细 |
HL |
Handlee | 记号笔手写感,笔画最细 |
AD |
Architects Daughter | 工程制图手写体,字形偏方正 |
- 只覆盖拉丁字符。这些字体没有汉字,中文会走回退链里的中文字体(所以你原来的中文字体设置不会丢)。中文注释和拉丁字符混排时列宽天然对不齐 —— 这是 CJK 双宽的问题,跟本扩展无关。
- 自动安装只实现了 Windows(用户级安装,无需管理员权限、无需重启电脑)。macOS / Linux 请手动安装
fonts/mono/下的 ttf。 - 工作区级
editor.fontFamily会覆盖本扩展写的全局值,这时启用会提示你手动改工作区设置。 - VSCode 整个 UI 的界面字体没有官方设置入口,本扩展管不到,也不打算用非官方注入手段(VSCode 一升级就失效)。
- 扩展代码:MIT(见
LICENSE)。 - 字体:由 SIL Open Font License 1.1 授权的 Google Fonts 手写体派生而来。按 OFL 要求,派生字体已重命名(不使用原字体的 Reserved Font Name)、保留版权声明,许可证原文随扩展分发在
fonts/licenses/。
如果你要换成真正的衡水体字体文件:把 ttf 丢进 fonts/mono/,改 src/extension.js 顶部的 VARIANTS,重新打包即可 —— 字体名是从文件里读的,不需要额外配置。但请先确认那个字体文件的授权允许你这样分发。
# 重新生成等宽字体(需要 Python + fontTools)
python tools/build_fonts.py
python tools/render_preview.py
# 跑扩展逻辑测试(会真的把字体装到当前用户)
node tools/test_extension.js
# 打包
npx @vscode/vsce package