Emacs
文本終端上 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
、oblique
、normal
還是roman
作為Slant
屬性的值都沒有任何區別,如果我根本不設置Slant
屬性也沒有任何區別。我還嘗試結合URxvt.italicFont
在 my中明確定義~/.Xdefaults
,但無濟於事。粗體可以正常工作,斜體根本不起作用。有任何想法嗎?
簡而言之:您不能使用目前版本的 Emacs(檢查 23.2),但請參閱下面的可能的解決方法。
更長的故事:對斜體的支持在 terminfo數據庫中被編碼為
sitm
(輸入斜體)和ritm
(退出斜體)功能(也稱為ZH
和ZR
termcap 兼容性);您可以通過以下方式檢查您的終端是否支持它們: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 描述以使用輸入/退出斜體轉義序列而不是輸入/退出下劃線並獲取斜體。)