我想知道如何在GNU Emacs中获得与GVim中类似的字体渲染,如下面的屏幕截图所示。看来Emacs默认情况下渲染字体的方式较差。我尝试过安装Infinality字体补丁,但结果相同。我在Arch Linux虚拟机上运行GNU Emacs 24.3。我没有桌面环境,并且使用OpenBox作为我的窗口管理器。
我挖出的很多论坛帖子似乎暗示了Emacs过去需要修补的libxft库,但现在已经不行了。根据Emacs的说法,它已编译成--with-xft
,因此不应成为问题。下面是来自两个应用程序和放大视图的屏幕截图,以突出显示渲染的差异。
答案 0 :(得分:8)
根据我的经验,Emacs无法从font config或Gnome中可靠地读取字体设置,因此您可能需要更改Emacs的字体渲染设置。
值得注意的是,GVim中字体周围的彩色像素表示GVim使用子像素渲染,而Emacs中缺少这些像素表明它仅使用提示。没有子像素渲染通常会使字体看起来模糊。
找出GVim使用的字体渲染设置。我认为它需要Gnome的标准版,所以安装Gnome Tweaktool来检查Gnome的字体设置。
现在创建一个.Xresources
文件,告诉Emacs这些设置。以下代表我的字体设置,根据您在Gnome Tweaktool中找到的内容进行调整:
Xft.antialias: 1
Xft.hinting: 1
Xft.hintstyle: hintfull
Xft.lcdfilter: lcddefault
Xft.rgba: rgb
据我所知,Gnome Tweaktool中没有lcdfilter
设置,因此请将其保留在lcddefault
上。创建文件后
C-x C-c
使用以下方式加载这些设置:
$ xrdb -merge ~/.Xresources
确认已加载设置:
$ xrdb -query | grep Xft
Xft.antialias: 1
Xft.hinting: 1
Xft.hintstyle: hintfull
Xft.lcdfilter: lcddefault
Xft.rgba: rgb
重新启动Emacs
现在检查字体现在是否相同。请注意,GVim可能会使用不同的字体渲染器(例如Cairo,Harfbuzz或其他任何字体),因此无论如何都会有一些细微差别。
xrdb -query
命令验证字体设置是否存在