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中更稳定,不会出现偏移问题:- 先定义连字映射规则:
(defvar my-fira-code-ligatures '(("\\(\\|<\\|<<\\|<<<\\|>+\\|>>\\|>>>\\)" . ?←) ("\\(\\|>\\|>>\\|>>>\\|<+\\|<<\\|<<<\\)" . ?→) ("\\(==\\|!==\\|===\\|==>\\|=>\\|<=\\|==<\\)" . ?=) ("\\(!=\\|!=\\|!==\\)" . ?≠) ("\\(--\\|->\\|→\\)" . ?–) ("\\(\\+\\+\\|+++\\)" . ?+) ("\\(\\|::\\|:::\\|:::\\)" . ?∷) ("\\(\\|&&\\|&&&\\)" . ?&) ("\\(\\|\\|\\|\\|\\|\\|\\)" . ?∥) ("\\(\\|->>\\|→>\\)" . ?↣) ("\\(\\|<<-\\|<-\\)" . ?↢) ("\\(\\|==>>\\|==>\\)" . ?⇒) ("\\(\\|<<==\\|<=\\)" . ?⇐) ("\\(\\|//\\|///\\|////\\)" . ?/) ("\\(\\|\\\\\\\\\\|\\\\\\\\\\\\\\)" . ?\\) ("\\(\\|%%\\|%%%\\)" . ?%) ("\\(\\|!!\\|!!!\\)" . ?!) ("\\(\\|??\\|???\\)" . ??))) - 在编程模式中启用该功能:
(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
相关产品推荐
相关产品推荐

