文本终端上的 Emacs 中的斜体 (rxvt-unicode)

文本终端上的 Emacs 中的斜体 (rxvt-unicode)

我正在使用在 urxvt 中运行的 Emacs,尽管终端支持斜体,但我无法在 Emacs 中使用斜体。

这是我当前的设置:

  • 我没有设置过$TERM,所以都是默认的rxvt-unicode-256color
  • 我的~/.Xdefaults定义URxvt.font: xft:Inconsolata:size=15是终端字体。
  • echo "\e[3mitalics\e[m"在 shell 中运行确实会产生italics,所以终端中的斜体工作,基本上。

italic自定义“斜体”字体时,选择、obliquenormal、 或roman作为属性值都没有任何区别,如果我根本Slant不设置该属性也没有任何区别。我也尝试将其与my 中的Slant显式定义结合起来,但无济于事。URxvt.italicFont~/.Xdefaults

粗体效果很好,斜体根本不起作用。有任何想法吗?

答案1

简而言之:您不能使用当前版本的 Emacs(已通过 23.2 检查),但请参阅下面的可能的解决方法。

更长的故事:对斜体的支持编码在 术语信息数据库作为sitm(输入斜体)和ritm(退出斜体)功能(也称为ZHZR用于 termcap 兼容性);您可以通过以下方式检查您的终端是否支持它们:

infocmp $TERM | egrep '(sitm|ritm)'

如果这些不存在,则您的rxvt-unicode-256color终端描述不会向 ncurses 库提供有关终端斜体功能的信息,您可能需要添加它们,否则没有 TTY 应用程序可以使用斜体。

然而,管理终端显示的函数turn_on_face(在 Emacs 源代码中,文件 src/term.c位于第 1919--2012 行)不提供对斜体的支持:它检查脸部的粗体/暗淡/闪烁/下划线属性。实际上,.txt 中没有编码“斜体”属性struct face

事实上,我的 Emacs(Ubuntu 11.04 natty 上的版本 23.1)显示斜体字面(在 X11 中正确显示)为下划线的在 TTY 中。 (这意味着,如果您不关心下划线,您只需更改终端的 terminfo 描述即可使用输入/退出斜体转义序列而不是输入/退出下划线并获得斜体。)

答案2

我添加这个答案是因为其他答案已经过时了。 Emacs 24.5 确实可以在终端中正确显示斜体。

在此输入图像描述

这是在终端 ( emacs -nw) 中运行的 emacs 24.5。终端是uxvrt,我的设置.Xdefaults是:

URxvt*termName: rxvt-unicode-256color
URxvt.font: xft:DejaVu Sans Mono:size=9

答案3

关于 emacs 无法在提供此功能的终端仿真器中使用斜体:这是emacs 错误 #9652由 Chong Yidong 于 2012 年 6 月 10 日修复。

不过,该修复不在任何已发布的 emacs 版本中,但例如在 emacs-snapshot 包中emacs.naquadah.org

相关内容