Emacs

文本終端上 Emacs 中的斜體 (rxvt-unicode)

  • April 3, 2020

我正在使用在 urxvt 中執行的 Emacs,儘管終端支持斜體,但我無法在 Emacs 中使用斜體。

這是我目前的設置:

  • 我沒有設置$TERM,所以是預設的rxvt-unicode-256color
  • 我的~/.Xdefaults定義URxvt.font: xft:Inconsolata:size=15為終端字型。
  • echo "\e[3mitalics\e[m"在 shell 中執行確實會產生*italics,所以終端中的斜體字基本上可以*工作。

自定義“斜體”面時,無論我選擇italicobliquenormal還是roman作為Slant屬性的值都沒有任何區別,如果我根本不設置Slant屬性也沒有任何區別。我還嘗試結合URxvt.italicFont在 my中明確定義~/.Xdefaults,但無濟於事。

粗體可以正常工作,斜體根本不起作用。有任何想法嗎?

簡而言之:您不能使用目前版本的 Emacs(檢查 23.2),但請參閱下面的可能的解決方法。

更長的故事:對斜體的支持在 terminfo數據庫中被編碼為sitm(輸入斜體)和ritm(退出斜體)功能(也稱為ZHZRtermcap 兼容性);您可以通過以下方式檢查您的終端是否支持它們:

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

如果這些不存在,那麼您的rxvt-unicode-256color終端描述不會向 ncurses 庫提供有關終端斜體功能的資訊,您可能需要添加它們,否則沒有 TTY 應用程序可以使用斜體。

但是,管理終端顯示的函式turn_on_face(在 Emacs 原始碼中, src/term.c第 1919–2012 行的文件)不提供對斜體的支持:它檢查面部的粗體/暗淡/閃爍/下劃線屬性。實際上,沒有“斜體”屬性編碼在struct face.

事實上,我的 Emacs(Ubuntu 11.04 natty 上的 23.1 版)顯示斜體面孔(在 X11 中正確顯示),如TTY 中的下劃線所示。(這意味著,如果您不關心下劃線,您只需更改終端的 terminfo 描述以使用輸入/退出斜體轉義序列而不是輸入/退出下劃線並獲取斜體。)

引用自:https://unix.stackexchange.com/questions/17680