必须同时指定支持中文的等宽字体(如PingFang SC)、勾选“启用结果网格字体”并执行defaults write -g AppleFontSmoothing -int 0后重启系统,三者缺一不可,否则macOS黑暗模式下SQL编辑器及结果网格字体仍模糊。

Navicat 在 macOS 黑暗模式下 SQL 编辑器字体模糊,不是主题问题,而是字体渲染链路断裂——必须同时满足三个条件:指定支持中文的等宽字体、启用结果网格字体独立控制、关闭系统级字体平滑干扰。
macOS 黑暗模式下字体模糊的真正原因
模糊常被误认为是“深色主题适配差”,实际是 Qt 渲染层与 macOS 字体子系统在黑暗模式下协同失效:Navicat(v15+)默认禁用独立网格字体,导致结果表格强行继承系统缩放后的模糊位图;同时 macOS 的 AppleFontSmoothing 在深色背景上会过度柔化等宽字体笔画,尤其影响 Consolas、Menlo 等无中文字形的字体。
常见错误现象包括:
- SQL 编辑区中文边缘发虚、带灰边,但菜单栏和对象树清晰
- 执行查询后,结果网格里的中文比编辑区更糊,甚至出现字重不均
- 切换到浅色模式后模糊消失,一回黑暗模式立刻复现
必须改对的三个地方:编辑器字体 + 网格字体 + 系统渲染
只调其中一项几乎无效。实操顺序不能错:
- 进
Navicat → 设置 → 编辑器 → 字体,字体名选PingFang SC或Heiti SC(不是 Menlo、Consolas、SF Mono),字号设为12或13,行高调至1.35(部分版本在字体对话框里可调) - 在同一页面点开
高级,务必勾选启用结果网格字体——v15+ 默认关闭,不勾选则结果表格永远用系统缩放字体 - 终端执行:
defaults write -g AppleFontSmoothing -int 0,然后重启 macOS(或至少登出重入)。这是关键:AppleFontSmoothing值为2(默认)时在黑暗模式下强制柔化,设为0才启用原生锐利渲染
为什么改了 PingFang SC 还是糊?检查 fallback 是否被绕过
macOS 的字体 fallback 机制在 Qt 应用中不可靠。即使你选了 PingFang SC,Navicat 可能因内部 fontconfig 配置缺失,悄悄 fallback 到无中文的 Menlo 并静默渲染方块或模糊字形。
验证和修复方法:
- 打开一个新查询窗口,输入
SELECT '测试' AS a;并执行,观察结果网格中「测试」二字是否清晰;若模糊,说明 fallback 失效 - 不要依赖字体列表预览——点击字体名右侧的「浏览」按钮,在弹出对话框中手动滚动到
PingFang SC,确认预览区显示中文正常再点确定 - 如果仍无效,临时切到浅色模式操作上述设置,保存后再切回黑暗模式——某些 v15.5–v16.0 版本在黑暗模式下会跳过字体重载
- 完全退出 Navicat(菜单
Navicat → 退出,不是关窗口),再重开,否则设置不生效
别碰这些“看似相关”但实际有害的操作
以下做法不仅无效,还会加剧模糊:
- 在
偏好设置 → 常规或主题页签里调字体——那只会改连接树和弹窗标题,SQL 编辑区完全不受影响 - 用终端跑
defaults write -g NSFontPanelFontSize -int 14这类全局字体命令——Navicat 不读取该键值,且会污染其他 App - 给 Navicat 添加
QT_FONT_DPI=96启动参数——macOS 上 Qt 5/6 已弃用该变量,反而触发降级渲染 - 安装第三方字体渲染补丁(如 fontconfig 自定义配置)——macOS 上无效,且可能破坏系统字体缓存
最易被忽略的是:改完所有设置后,必须彻底退出 Navicat 再重开。仅点「应用」或关闭重开窗口,Qt 字体引擎不会重新初始化,模糊照旧。


















