You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Emacs 26配置Fira Code连字出现偏移问题求助

Windows下Emacs 26中Fira Code连字偏移问题的修复方案

在Windows系统的Emacs 26中,按照Fira Code的Emacs配置指南设置字体及连字功能后,出现连字向后偏移的问题,偏移量与连字包含的字符数对应。测试文本如下:

int test()
{
    ptr->field = (a == b)? 1 : 2;

}

https://www.website.com

连字偏移截图

以下是具体的修复步骤:

  • 确认Fira Code字体已正确设置为默认字体,在配置文件中添加:

    (set-face-attribute 'default nil :font "Fira Code-12")
    

    注意将12替换为你实际使用的字号。

  • 替换原指南中基于font-lock-keywords的连字配置,改用prettify-symbols-mode处理连字,这种方式在Windows Emacs 26中更稳定,不会出现偏移问题:

    1. 先定义连字映射规则:
      (defvar my-fira-code-ligatures
        '(("\\(\\|<\\|<<\\|<<<\\|>+\\|>>\\|>>>\\)" . ?←)
          ("\\(\\|>\\|>>\\|>>>\\|<+\\|<<\\|<<<\\)" . ?→)
          ("\\(==\\|!==\\|===\\|==>\\|=>\\|<=\\|==<\\)" . ?=)
          ("\\(!=\\|!=\\|!==\\)" . ?≠)
          ("\\(--\\|->\\|→\\)" . ?–)
          ("\\(\\+\\+\\|+++\\)" . ?+)
          ("\\(\\|::\\|:::\\|:::\\)" . ?∷)
          ("\\(\\|&&\\|&&&\\)" . ?&)
          ("\\(\\|\\|\\|\\|\\|\\|\\)" . ?∥)
          ("\\(\\|->>\\|→>\\)" . ?↣)
          ("\\(\\|<<-\\|<-\\)" . ?↢)
          ("\\(\\|==>>\\|==>\\)" . ?⇒)
          ("\\(\\|<<==\\|<=\\)" . ?⇐)
          ("\\(\\|//\\|///\\|////\\)" . ?/)
          ("\\(\\|\\\\\\\\\\|\\\\\\\\\\\\\\)" . ?\\)
          ("\\(\\|%%\\|%%%\\)" . ?%)
          ("\\(\\|!!\\|!!!\\)" . ?!)
          ("\\(\\|??\\|???\\)" . ??)))
      
    2. 在编程模式中启用该功能:
      (add-hook 'prog-mode-hook
                (lambda ()
                  (setq prettify-symbols-alist my-fira-code-ligatures)
                  (prettify-symbols-mode 1)))
      
  • 如果仍有偏移问题,添加以下配置修复字符宽度计算:

    (setq prettify-symbols-unprettify-at-point 'right-edge)
    (setq font-lock-extra-managed-props '(composition))
    
  • 最后,确保你安装的是最新版本的Fira Code字体,旧版本可能存在Windows平台的兼容性缺陷。

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 17:36:15