joo*_*oro 3 emacs fonts archlinux
我想知道如何在GNU Emacs中获得与GVim中类似的字体渲染,如下面的屏幕截图所示.看来Emacs默认情况下渲染字体的方式较差.我已经尝试安装Infinality字体补丁但我得到了相同的结果.我在Arch Linux虚拟机上运行GNU Emacs 24.3.我没有桌面环境,我使用OpenBox作为我的窗口管理器.
我挖出的很多论坛帖子似乎暗示了Emacs过去使用需要修补的libxft库,但现在已经不行了.根据Emacs的说法,它已被编译,--with-xft因此不应成为问题.下面是来自两个应用程序和放大视图的屏幕截图,以突出显示渲染的差异.

根据我的经验,Emacs无法从字体配置或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
Run Code Online (Sandbox Code Playgroud)
据我所知,这个lcdfilter设置在Gnome Tweaktool中不可用,所以请保持开启状态lcddefault.创建文件后
C-x C-c加载这些设置:
$ xrdb -merge ~/.Xresources
Run Code Online (Sandbox Code Playgroud)验证是否已加载设置:
$ xrdb -query | grep Xft
Xft.antialias: 1
Xft.hinting: 1
Xft.hintstyle: hintfull
Xft.lcdfilter: lcddefault
Xft.rgba: rgb
Run Code Online (Sandbox Code Playgroud)重启Emacs
现在检查字体是否看起来一样.请注意,GVim可能会使用不同的字体渲染器(例如Cairo,Harfbuzz或其他任何东西),因此无论如何都会有一些细微差别.
xrdb -query命令验证是否存在字体设置