【问题标题】:Italicizing text in urwidurwid 中的斜体文本
【发布时间】:2014-10-05 21:46:46
【问题描述】:

我正在使用urwid 来设计一个curses ui。我可以使用显示属性来显示粗体、下划线或突出显示的文本。可以用斜体吗?

【问题讨论】:

    标签: python urwid


    【解决方案1】:

    简答

    理论上是的。

    在实践中:还没有。

    长答案

    基本上,curses 使用 ECMA-48 中所谓的“ANSI 转义序列”来进行光标移动、颜色或任何非纯线性文本输出。 (确实比这更令人费解,参见 terminfo,但这就是它最终归结为的原因。)

    颜色、粗体文本等被指定为 SGR(“选择图形再现”)命令的一部分:CSI $n mCSI 是“控制序列引入器”^[[,即ESC +[)。在一系列令人费解的怪异事物中(甚至支持 blackletter!在控制台上!),斜体文本的控制序列:^[[3m to启用,^[[23m 禁用。

    维基百科有一个list of SGR commands。然而,大多数更……深奥的序列“几乎不被支持”。粗体和突出几乎得到普遍支持,下划线很常见。虽然斜体似乎越来越受欢迎,但许多(?)终端仿真器仍然不支持它——如果您的程序需要在异构环境中运行,这可能是一个问题。最好不要对即将推出的黑信支持下任何赌注。

    目前,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.pycurses_display.pyraw_display.py)。我想修补对斜体文本的支持应该不会太难,但作为一个 Urwid 初学者,我现在对我来说是遥不可及的。

    【讨论】:

    • 该转义序列在 xterm、urxvt 和 st 中有效,因此它的支持范围似乎比您说的要广泛。
    • 感谢您的指点!似乎我设法与那些没有尝试过的人一起尝试过。 ^^ 我会在有时间处理一些 xterm 时尽快更新我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 2013-05-23
    • 2012-04-10
    • 1970-01-01
    相关资源
    最近更新 更多