【发布时间】:2021-02-16 01:10:08
【问题描述】:
在 ANSI 终端(或模拟器,它可以是任何风格)的上下文中,是否可以将两个字符相互叠加?或者,至少,有没有办法在其上打印一个字符和一个条形(如下划线,与线向上)?
【问题讨论】:
标签: terminal terminal-emulator
在 ANSI 终端(或模拟器,它可以是任何风格)的上下文中,是否可以将两个字符相互叠加?或者,至少,有没有办法在其上打印一个字符和一个条形(如下划线,与线向上)?
【问题讨论】:
标签: terminal terminal-emulator
在终端中无法一个接一个地绘制字符。这完全违反了终端的基本原则,即每个单元格包含1个字符。
如果您的终端支持 unicode,则有称为 combining characters 的特殊 unicode 字符,其中之一是上划线。它的代码是 U+0305。因此,使用它,您可以在另一个字符上绘制上划线。
这是一个示例 C 代码
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main() {
setlocale(LC_CTYPE, "");
for (wchar_t ch = 'a'; ch <= 'z'; ++ch) {
wprintf(L"%lc\u0305 ", ch);
}
}
应该产生类似的东西
a̅ b̅ c̅ d̅ e̅ f̅ g̅ h̅ i̅ j̅ k̅ l̅ m̅ n̅ o̅ p̅ q̅ r̅ s̅ t̅ u̅ v̅ w̅ x̅ y̅ z̅
这与你想要的差不多。
【讨论】: