## 实现原理 我们可以通过CSS注入来使得浏览器加载需要的字体文件, 以JetBrains Mono为例 ## 详细步骤 ### 准备字体文件 从[JetBrains Mono官网](https://www.jetbrains.com/lp/mono/)下载字体文件,并把woff和woff2格式的字体文件放置在fonts目录,并把fonts目录移到code-server安装路径下的 `lib/vscode/out/vs/code/browser/workbench` 位置。 以下是目录树 ``` /usr/lib/code-server/lib/vscode/out/vs/code/browser/workbench ├── fonts │ ├── JetBrainsMono-Bold-Italic.woff │ ├── JetBrainsMono-Bold-Italic.woff2 │ ├── JetBrainsMono-Bold.woff │ ├── JetBrainsMono-Bold.woff2 │ ├── JetBrainsMono-ExtraBold-Italic.woff │ ├── JetBrainsMono-ExtraBold-Italic.woff2 │ ├── JetBrainsMono-ExtraBold.woff │ ├── JetBrainsMono-ExtraBold.woff2 │ ├── JetBrainsMono-Italic.woff │ ├── JetBrainsMono-Italic.woff2 │ ├── JetBrainsMono-Medium-Italic.woff │ ├── JetBrainsMono-Medium-Italic.woff2 │ ├── JetBrainsMono-Medium.woff │ ├── JetBrainsMono-Medium.woff2 │ ├── JetBrainsMono-Regular.woff │ └── JetBrainsMono-Regular.woff2 ``` ### 创建css文件 新建一个 `fonts.css` 放在code-server安装路径下的 `lib/vscode/out/vs/code/browser/workbench` 位置 我的是 `/usr/lib/code-server/lib/vscode/out/vs/code/browser/workbench` ```css @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-Regular.woff2') format('woff2'), url('fonts/JetBrainsMono-Regular.woff') format('woff'); font-weight: 400; font-style: normal; } @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-Italic.woff2') format('woff2'), url('fonts/JetBrainsMono-Italic.woff') format('woff'); font-weight: 400; font-style: italic; } /* 可根据需要添加更多字重和样式 */ /* @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-Medium.woff2') format('woff2'), url('fonts/JetBrainsMono-Medium.woff') format('woff'); font-weight: 500; font-style: normal; } @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-Medium-Italic.woff2') format('woff2'), url('fonts/JetBrainsMono-Medium-Italic.woff') format('woff'); font-weight: 500; font-style: italic; } @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-Bold.woff2') format('woff2'), url('fonts/JetBrainsMono-Bold.woff') format('woff'); font-weight: 700; font-style: normal; } @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-Bold-Italic.woff2') format('woff2'), url('fonts/JetBrainsMono-Bold-Italic.woff') format('woff'); font-weight: 700; font-style: italic; } @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-ExtraBold.woff2') format('woff2'), url('fonts/JetBrainsMono-ExtraBold.woff') format('woff'); font-weight: 800; font-style: normal; } @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-ExtraBold-Italic.woff2') format('woff2'), url('fonts/JetBrainsMono-ExtraBold-Italic.woff') format('woff'); font-weight: 800; font-style: italic; } */ ``` ### 修改 workbench.html 编辑工作台 HTML 文件,在 `` 部分添加 CSS 引用: ```html ``` ### 最终目录结构 没有用到的字体可以不放 ``` /usr/lib/code-server/lib/vscode/out/vs/code/browser/workbench ├── callback.html ├── fonts │ ├── JetBrainsMono-Bold-Italic.woff │ ├── JetBrainsMono-Bold-Italic.woff2 │ ├── JetBrainsMono-Bold.woff │ ├── JetBrainsMono-Bold.woff2 │ ├── JetBrainsMono-ExtraBold-Italic.woff │ ├── JetBrainsMono-ExtraBold-Italic.woff2 │ ├── JetBrainsMono-ExtraBold.woff │ ├── JetBrainsMono-ExtraBold.woff2 │ ├── JetBrainsMono-Italic.woff │ ├── JetBrainsMono-Italic.woff2 │ ├── JetBrainsMono-Medium-Italic.woff │ ├── JetBrainsMono-Medium-Italic.woff2 │ ├── JetBrainsMono-Medium.woff │ ├── JetBrainsMono-Medium.woff2 │ ├── JetBrainsMono-Regular.woff │ └── JetBrainsMono-Regular.woff2 ├── fonts.css ├── workbench.css ├── workbench.html ├── workbench.js └── workbench.js.map ``` ### 设置编辑器字体 修改setting.json的相关内容 ```json { "editor.fontFamily": "'JetBrains Mono', Consolas, 'Courier New'", "editor.fontLigatures": true, //对于连字字体,一定要打开连字符功能 } ``` **注意:** 对于连字字体,一定要打开`fontLigatures` 否则会出现光标错位问题  此时,我的光标所在位置应该是行末 ## 最后效果  Loading... ## 实现原理 我们可以通过CSS注入来使得浏览器加载需要的字体文件, 以JetBrains Mono为例 ## 详细步骤 ### 准备字体文件 从[JetBrains Mono官网](https://www.jetbrains.com/lp/mono/)下载字体文件,并把woff和woff2格式的字体文件放置在fonts目录,并把fonts目录移到code-server安装路径下的 `lib/vscode/out/vs/code/browser/workbench` 位置。 以下是目录树 ``` /usr/lib/code-server/lib/vscode/out/vs/code/browser/workbench ├── fonts │ ├── JetBrainsMono-Bold-Italic.woff │ ├── JetBrainsMono-Bold-Italic.woff2 │ ├── JetBrainsMono-Bold.woff │ ├── JetBrainsMono-Bold.woff2 │ ├── JetBrainsMono-ExtraBold-Italic.woff │ ├── JetBrainsMono-ExtraBold-Italic.woff2 │ ├── JetBrainsMono-ExtraBold.woff │ ├── JetBrainsMono-ExtraBold.woff2 │ ├── JetBrainsMono-Italic.woff │ ├── JetBrainsMono-Italic.woff2 │ ├── JetBrainsMono-Medium-Italic.woff │ ├── JetBrainsMono-Medium-Italic.woff2 │ ├── JetBrainsMono-Medium.woff │ ├── JetBrainsMono-Medium.woff2 │ ├── JetBrainsMono-Regular.woff │ └── JetBrainsMono-Regular.woff2 ``` ### 创建css文件 新建一个 `fonts.css` 放在code-server安装路径下的 `lib/vscode/out/vs/code/browser/workbench` 位置 我的是 `/usr/lib/code-server/lib/vscode/out/vs/code/browser/workbench` ```css @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-Regular.woff2') format('woff2'), url('fonts/JetBrainsMono-Regular.woff') format('woff'); font-weight: 400; font-style: normal; } @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-Italic.woff2') format('woff2'), url('fonts/JetBrainsMono-Italic.woff') format('woff'); font-weight: 400; font-style: italic; } /* 可根据需要添加更多字重和样式 */ /* @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-Medium.woff2') format('woff2'), url('fonts/JetBrainsMono-Medium.woff') format('woff'); font-weight: 500; font-style: normal; } @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-Medium-Italic.woff2') format('woff2'), url('fonts/JetBrainsMono-Medium-Italic.woff') format('woff'); font-weight: 500; font-style: italic; } @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-Bold.woff2') format('woff2'), url('fonts/JetBrainsMono-Bold.woff') format('woff'); font-weight: 700; font-style: normal; } @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-Bold-Italic.woff2') format('woff2'), url('fonts/JetBrainsMono-Bold-Italic.woff') format('woff'); font-weight: 700; font-style: italic; } @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-ExtraBold.woff2') format('woff2'), url('fonts/JetBrainsMono-ExtraBold.woff') format('woff'); font-weight: 800; font-style: normal; } @font-face { font-family: 'JetBrains Mono'; src: url('fonts/JetBrainsMono-ExtraBold-Italic.woff2') format('woff2'), url('fonts/JetBrainsMono-ExtraBold-Italic.woff') format('woff'); font-weight: 800; font-style: italic; } */ ``` ### 修改 workbench.html 编辑工作台 HTML 文件,在 `<head>` 部分添加 CSS 引用: ```html <link rel="stylesheet" href="{{WORKBENCH_WEB_BASE_URL}}/out/vs/code/browser/workbench/fonts.css"> ``` ### 最终目录结构 没有用到的字体可以不放 ``` /usr/lib/code-server/lib/vscode/out/vs/code/browser/workbench ├── callback.html ├── fonts │ ├── JetBrainsMono-Bold-Italic.woff │ ├── JetBrainsMono-Bold-Italic.woff2 │ ├── JetBrainsMono-Bold.woff │ ├── JetBrainsMono-Bold.woff2 │ ├── JetBrainsMono-ExtraBold-Italic.woff │ ├── JetBrainsMono-ExtraBold-Italic.woff2 │ ├── JetBrainsMono-ExtraBold.woff │ ├── JetBrainsMono-ExtraBold.woff2 │ ├── JetBrainsMono-Italic.woff │ ├── JetBrainsMono-Italic.woff2 │ ├── JetBrainsMono-Medium-Italic.woff │ ├── JetBrainsMono-Medium-Italic.woff2 │ ├── JetBrainsMono-Medium.woff │ ├── JetBrainsMono-Medium.woff2 │ ├── JetBrainsMono-Regular.woff │ └── JetBrainsMono-Regular.woff2 ├── fonts.css ├── workbench.css ├── workbench.html ├── workbench.js └── workbench.js.map ``` ### 设置编辑器字体 修改setting.json的相关内容 ```json { "editor.fontFamily": "'JetBrains Mono', Consolas, 'Courier New'", "editor.fontLigatures": true, //对于连字字体,一定要打开连字符功能 } ``` **注意:** 对于连字字体,一定要打开`fontLigatures` 否则会出现光标错位问题  此时,我的光标所在位置应该是行末 ## 最后效果  最后修改:2025 年 11 月 29 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏