Text 是否可以在控制台中显示具有穿透效果的文本?

Text 是否可以在控制台中显示具有穿透效果的文本?,text,terminal,console,ansi-escape,strikethrough,Text,Terminal,Console,Ansi Escape,Strikethrough,我已经研究了ANSI转义码,但看起来只支持下划线 我是错过了什么还是有其他选择 如果不可能,是否存在“这是不推荐的”含义中的等效内容?根据终端标准,SGR(选择图形格式副本)代码9应启用划线文本。然而,维基百科的页面上说,它没有得到广泛的支持,我也不知道有哪种支持。我怀疑这是因为DEC的VTxxx系列。对于用C11或C++11编写的应用程序,另一种解决方案是使用Unicode字符 在C++11中,您可以编写如下代码: #include <iostream> #include <

我已经研究了ANSI转义码,但看起来只支持下划线

我是错过了什么还是有其他选择


如果不可能,是否存在“这是不推荐的”含义中的等效内容?

根据终端标准,SGR(选择图形格式副本)代码9应启用划线文本。然而,维基百科的页面上说,它没有得到广泛的支持,我也不知道有哪种支持。我怀疑这是因为DEC的VTxxx系列。

对于用C11或C++11编写的应用程序,另一种解决方案是使用Unicode字符

在C++11中,您可以编写如下代码:

#include <iostream>
#include <string>

std::string strikethrough(const std::string& text) {
  std::string result;
  for (auto ch : text) {
    result.append(u8"\u0336");
    result.push_back(ch);
  }
  return result;
}

int main() {
  std::cout << strikethrough("strikethrough") << std::endl;
}
#包括
#包括
标准::字符串删除线(常量标准::字符串和文本){
std::字符串结果;
用于(自动切换:文本){
结果。追加(u8“\u0336”);
结果:推回(ch);
}
返回结果;
}
int main(){
这对我来说很有效


$echo-e`echo“这是一个删除线文本“| sed's/\{1\}/\\\\\u0336/g`

My
libvterm
/
pangoterm
可以很好地完成。请看第二个屏幕截图,实际上一组好的主要shell终端似乎支持它(包括
guake
terminator
gnome terminal
,…)…快速测试:
echo-e“\e[9mtest\e[0m”
。Kitty支持SGR代码9用于删除文本(以及一系列其他未充分使用的模式)。大多数常见的linux终端都使用libvterm,因此至少在linux上,此模式得到广泛支持。但是Putty不支持此模式。如果在每个字符后添加
\u0336
,而不是在每个字符前添加,则有时会产生“拉直”字符的效果,并且还应划破每个字符。