我正在使用 urwid 设计一个 curses ui。我可以使用显示属性将文本显示为粗体、下划线或突出显示。是否可以使用斜体?
最佳答案
简答
理论上,是的。
在实践中:还没有。
长答案
基本上,curses 使用来自 ECMA-48 的所谓“ANSI 转义序列”来进行光标移动、颜色或任何非纯线性文本输出。 (它确实比这更复杂,参见 terminfo,但这就是它最终归结为的内容。)
颜色、粗体文本等被指定为 SGR(“选择图形再现”)命令的一部分:CSI $n m
(CSI
是“控制” Sequence Introducer'^[[
,即ESC
+[
)。在一系列令人费解的离奇事物中(甚至还支持 blackletter!在控制台上!), 有一个用于斜体文本的控制序列:^ [[3m
启用,^[[23m
禁用。
维基百科有一个 list of SGR commands .然而,大多数更……深奥的序列“几乎从未得到支持”。粗体和突出显示几乎得到普遍支持,下划线很常见。虽然斜体似乎越来越受欢迎,但许多(?)终端仿真器仍然不支持它——如果您的程序需要在异构环境中运行,这可能是一个问题。最好不要押注 blackletter 支持很快就会到来。
目前,xterm、urxvt 和 st 支持它; PuTTy 没有。
如果你的终端支持,你可以自己试试。您必须使用 Ctrl+V+Esc 来获得“真正的”转义字符,而不是 ^[
,它只是一种符号速记。
print 'plain text ^[[3m italic text ^[[0m plain text'
ncurses already seems to support italic text. 然而,Urwid 还没有(从 1.3.0 版开始)。我查看了源代码(有趣的部分是 display_common.py
、curses_display.py
和 raw_display.py
)。我想打补丁以支持斜体文本应该不会太难,但作为一个 Urwid 初学者,我现在还遥不可及。
关于python - urwid 中的斜体文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26207552/