我正在使用在 urxvt 中运行的 Emacs,尽管终端支持斜体,但我无法在 Emacs 中使用斜体。
这是我目前的设置:
$TERM,所以它是默认的rxvt-unicode-256color。~/.Xdefaults定义URxvt.font: xft:Inconsolata:size=15为终端字体。echo "\e[3mitalics\e[m"在 shell 中运行确实会产生italics,所以终端中的斜体基本上可以工作。在定制“斜体”的脸,它没有任何区别是否我选择italic,oblique,normal,或roman作为值Slant属性,也不会,如果我不设置Slant在所有的属性。我还尝试结合URxvt.italicFont在 my 中明确定义~/.Xdefaults,但无济于事。
粗体很好用,斜体根本不起作用。有任何想法吗?
Ric*_*rri 11
简而言之:您不能使用当前版本的 Emacs(已检查 23.2),但请参阅下文以了解可能的解决方法。
长话短说:对斜体的支持在terminfo数据库中被编码
为sitm(输入斜体)和ritm(退出斜体)功能(也称为ZH和ZRtermcap 兼容性);您可以通过以下方式检查您的终端是否支持它们:
infocmp $TERM | egrep '(sitm|ritm)'
Run Code Online (Sandbox Code Playgroud)
如果这些不存在,那么您的rxvt-unicode-256color终端描述不会向 ncurses 库提供有关终端斜体功能的信息,您可能想要添加它们,否则没有 TTY 应用程序可以使用斜体。
但是,管理终端显示的函数turn_on_face(在 Emacs 源代码中,文件
src/term.c在 1919--2012 行)不提供对斜体的支持:它检查人脸的粗体/暗淡/闪烁/下划线属性。实际上,在struct face.
事实上,我的 Emacs(Ubuntu 11.04 natty 上的 23.1 版)在 TTY 中显示斜体(在 X11 中正确显示)作为下划线。(这意味着,如果您不关心下划线,您可以更改终端的 terminfo 描述以使用进入/退出斜体转义序列而不是进入/退出下划线并获得斜体。)