马儿慢些走

人生惶惶,悲喜一场。

Emacs中文等宽字体设置(要用英文名称,系统中的名称)

本文为和AI大模型KIMI对话记录,仅供参考。

Emacs中文等宽字体设置(要用英文名称,系统中的名称)

直接在菜单栏的Option-Default Font设置没用,这样保存配置时候配置文件里写的是中文字体名称,再次启动无法识别。


User: 为什么Emacs中设置了默认字体为文泉驿等宽字体,并且保存了配置,重启后依然没起作用,配置文件是正常的。

Kimi: 在 Emacs 里,「文泉驿等宽」只是给人类看的“友好名称”,在底层 X11 或 fontconfig 眼里它对应的是

文泉驿等宽正黑
WenQuanYi Zen Hei Mono
WenQuanYi Zen Hei Sharp
……

等一串别名。
如果你写的字体名跟系统里注册的那个“真名”哪怕只差一个字母,Emacs 会静悄悄地 fallback 到别的字体,于是出现
“配置写了、保存了、重启却无效”的现象——配置文件其实被读了,只是没匹配到字库。

解决思路:

  1. 先确认系统到底给这个字体登记了什么名字
    fc-list | grep -i wenq | grep -i mono
    典型输出
    /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei Mono:style=Regular
    把冒号前第一段整串当作 family 名称,这才是 fontconfig 能认的“真名”。

  2. 在 Emacs 里用 set-fontset-font/set-frame-font 时,严格按上面查到的名字写,
    例如

    (set-frame-font "WenQuanYi Zen Hei Mono-13" nil t)
    

    或者只改中文部分

    (set-fontset-font t 'han "WenQuanYi Zen Hei Mono")
    
  3. 如果想保留“文泉驿等宽”这种中文别名,就在 ~/.fonts.conf
    ~/.config/fontconfig/fonts.conf 里显式加一段别名映射,
    让 fontconfig 把“文泉驿等宽”指向真正的 family 名,Emacs 就能认得。

  4. 确认文件编码与加载顺序

    • 配置写在 ~/.emacs.d/init.el 最末尾,确保没有被后面的语句覆盖;
    • 文件保存为 utf-8,避免中文被截断;
    • 启动时加 --debug-init,看是否报 “Font not available” 之类的警告。

只要字体名和系统注册名完全一致,重启后就能立即生效,无需再反复调试。

posted on 2025-11-13 00:53  马儿慢些走  阅读(0)  评论(0)    收藏  举报

导航