sublime text原生不支持字间距调节,因底层渲染器未开放字符级横向间隙接口;有效方案是选用fira code、jetbrains mono等专为编程优化的等宽字体,并配合font_size微调视觉密度。

line_padding_top 和 line_padding_bottom 控制行间距,但 Sublime Text **原生不支持字间距(letter-spacing)调节**——这不是设置遗漏,而是底层渲染限制。
为什么font_options或letter_spacing配置无效
Sublime Text 使用系统原生字体渲染器(Windows GDI / macOS Core Text / Linux FreeType),不暴露字符级横向间隙控制接口。所有尝试添加类似 "letter_spacing": 0.5、"font_options": ["letter_spacing"] 的写法都会被忽略。
-
font_options只支持有限值,如"subpixel_antialias"或"no_bold",对字间距零影响 - 第三方插件如 Font Adjuster 实际只做缩放模拟,并非真正改变字符间空隙
- 误以为“等宽字体字宽 = 字间距”,其实是字体设计决定的固定度量,无法运行时拉伸
真正有效的“字间距优化”路径
既然不能调参数,就换更合适的字体——这是唯一稳定、跨平台、无需插件的方案。
- 优先选专为编程设计的等宽字体:
Fira Code、JetBrains Mono、Cascadia Code,它们在 x-height、字怀(counter)和字符横向留白上做了针对性优化 - 注意字体内部名差异:有些系统注册的是
"FiraCode-Regular"而非"Fira Code",配不上会回退到默认字体 - 搭配
font_size微调视觉密度:字号调大 1px,常比强行加字间距更清晰;13–14px 下JetBrains Mono的默认字间距已比Consolas宽约 0.8px
line_height vs line_padding_*:别混用,也别同时设
这两个机制互斥,且行为完全不同:
-
line_height是绝对像素值(如20),直接定义基线间距;设小了会裁切 descender(如 g、y 下延部分) -
line_padding_top/line_padding_bottom是每行文字上下加的像素空白,不依赖字体度量,更适合精细控制“呼吸感” - 两者同时出现在用户设置中时,
line_height会完全覆盖line_padding_*,Sublime 不做叠加计算 - ST4(Build 4143+)起,
line_height支持浮点数(如1.45),会乘以font_size后取整,适合中英文混排防裁切
容易被忽略的兼容性细节
同一组 line_padding_top 和 line_padding_bottom 值,在不同系统上实际渲染高度可能差 1–2px。这不是 bug,是各平台字体度量(ascent/descent)返回值不同导致的。
- macOS 上开启 subpixel antialiasing 时,
line_height占用高度可能略大于设定值 - Windows 高 DPI 缩放下,若未启用
ui_scale,编辑区行距可能与侧边栏不协调(后者需改主题文件中的row_padding) - 折叠标记、断点图标、光标线垂直居中都依赖
line_padding_top和line_padding_bottom对称设置;单侧为 0 会导致它们偏移











