Emacs24未正确呈现字体

Emacs24未正确呈现字体,emacs,fonts,archlinux,Emacs,Fonts,Archlinux,我想知道如何在GNU Emacs中获得与GVim中类似的字体渲染,如下面的屏幕截图所示。在默认情况下,Emacs呈现字体的方式似乎不如Emacs。我尝试过安装Infinality字体补丁,但得到了相同的结果。我正在Arch Linux虚拟机上运行GNU Emacs 24.3。我没有桌面环境,正在使用OpenBox作为我的窗口管理器 我找到的许多论坛帖子似乎暗示Emacs过去使用的libxft库需要修补,但现在不再需要了。根据Emacs的说法,它是用xft编译的,所以这不应该成为问题。下面是两个应

我想知道如何在GNU Emacs中获得与GVim中类似的字体渲染,如下面的屏幕截图所示。在默认情况下,Emacs呈现字体的方式似乎不如Emacs。我尝试过安装Infinality字体补丁,但得到了相同的结果。我正在Arch Linux虚拟机上运行GNU Emacs 24.3。我没有桌面环境,正在使用OpenBox作为我的窗口管理器

我找到的许多论坛帖子似乎暗示Emacs过去使用的libxft库需要修补,但现在不再需要了。根据Emacs的说法,它是用xft编译的,所以这不应该成为问题。下面是两个应用程序的屏幕截图和放大视图,以突出显示渲染中的差异


根据我的经验,Emacs无法从字体配置或Gnome可靠地读取字体设置,因此您可能需要更改Emacs的字体呈现设置

值得注意的是,GVim中字体周围的彩色像素表示GVim使用亚像素渲染,而Emacs中没有这些像素表示它只使用暗示。缺少亚像素渲染通常会使字体看起来模糊

了解GVims首选项 了解GVim使用的字体呈现设置。我假设它从Gnome获取标准字体,所以安装Gnome工具来检查Gnome的字体设置

告诉Emacs您的字体首选项 现在创建一个
.Xresources
文件,告诉Emacs这些设置。以下是我的字体设置,请根据在Gnome工具中找到的内容进行调整:

Xft.antialias:  1
Xft.hinting:    1
Xft.hintstyle:  hintfull
Xft.lcdfilter:  lcddefault
Xft.rgba:       rgb
据我所知,
lcdfilter
设置在Gnome工具中不可用,所以只需将其保持在
lcddefault
上即可。创建文件后

  • 使用
    C-x C-C退出Emacs
  • 使用以下内容加载这些设置:

    $ 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
    命令验证字体设置是否存在

  • 我忘了提到我没有使用Gnome或任何其他桌面环境,我只运行OpenBox。但是,将这些Xft行添加到我的.Xresources中就成功了,谢谢。@user1749222我不管您使用哪个桌面环境。作为Gtk/Gnome应用程序,GVim将从fontconfig或Gnome获取其设置。要进行实验,您可以在命令行上传递Xft设置。通过这种方式,您可以将多个emacs帧并排放置,以便于比较。例如
    emacs-xrm“Xft.hinting:1”-xrm“Xft.hintstyle:hintmedium”
    。找到所需设置后,将其保存到
    ~/.Xresources