直接修改 custom.css 最可靠,因其不依赖插件、不污染系统字体设置,且可分别控制代码区、Markdown、输出块、提示符等区域字体;而仅调 Windows 系统字体或浏览器缩放无法修正 CodeMirror 内部行高、字符间距与光标对齐,易致行重叠、中文模糊、快捷键框错位等问题。

直接改 custom.css 最可靠,不依赖插件、不污染全局系统字体设置,且能分别控制代码区、Markdown、输出块、提示符等不同区域的字体。
为什么不能只改 Windows 系统字体或浏览器缩放
Windows 控制面板里调系统字体,或 Chrome 按 Ctrl + 放大页面,只影响渲染层,对 CodeMirror 编辑器内部的行高、字符间距、光标对齐毫无作用。实际会出现:文字变大但行距没变 → 行间重叠;中文显示模糊;快捷键提示框错位;甚至某些主题下工具栏被截断。
修改 custom.css 的路径和写法
先确认 Jupyter 的 custom 目录位置:
- Windows 默认路径通常是
C:\Users\<用户名>\.jupyter\custom\(注意是用户级配置,不是 Anaconda 安装目录下的 site-packages) - 如果该目录不存在,手动创建
custom文件夹,再新建custom.css
在 custom.css 中写入类似以下内容:
/* 全局默认字体(影响 Markdown 单元格、标题、菜单等) */
body, .notebook_app, .rendered_html {
font-family: "Microsoft YaHei", "Segoe UI", sans-serif !important;
font-size: 14px !important;
}
<p>/<em> 代码编辑区(CodeMirror) </em>/
.CodeMirror {
font-family: "Fira Code", "Consolas", monospace !important;
font-size: 15px !important;
line-height: 1.5 !important;
}</p><p>/<em> 输入/输出提示符(In [1]: / Out[1]:) </em>/
.input_prompt, .output_prompt {
font-family: "Fira Code", monospace !important;
font-size: 13px !important;
}</p><p>/<em> 输出区域的 <pre class="brush:php;toolbar:false;"> 标签(比如 print() 里的字符串) </em>/
.rendered_html code, .output_area pre {
font-family: "Fira Code", monospace !important;
font-size: 13.5px !important;
}
保存后重启 Jupyter Notebook(不是刷新页面,是关掉服务再 jupyter notebook 重启),否则 CSS 不会加载。
用 jupyterthemes 快速覆盖但有局限
它本质也是生成并注入 CSS,但封装了常用参数,适合快速试主题:
- 安装:
pip install jupyterthemes - 查主题:
jt -l - 应用并指定字体:
jt -t oceans16 -f firacode -fs 14 -nfs 15(-fs是代码区字号,-nfs是 Notebook 主体字号) - ⚠️ 注意:
jt会覆盖你手动写的custom.css,两者不要混用;恢复默认必须运行jt -r,且浏览器缓存要清(尤其 Chrome)
复杂点在于:不同主题对 CSS 选择器的覆盖粒度不一,比如 oceans16 会强制重置 .CodeMirror 的 line-height,如果你只改 font-size,可能行高还是挤;这时得回退到手写 custom.css 并加 !important 强制覆盖。


















