【问题标题】:ANSI Terminal layering characters one on top of anotherANSI 终端将字符一层一层叠加
【发布时间】:2021-02-16 01:10:08
【问题描述】:

在 ANSI 终端(或模拟器,它可以是任何风格)的上下文中,是否可以将两个字符相互叠加?或者,至少,有没有办法在其上打印一个字符和一个条形(如下划线,与线向上)?

【问题讨论】:

    标签: terminal terminal-emulator


    【解决方案1】:
    1. 在终端中无法一个接一个地绘制字符。这完全违反了终端的基本原则,即每个单元格包含1个字符。

    2. 如果您的终端支持 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̅

    这与你想要的差不多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 2019-03-02
      • 2011-09-23
      • 1970-01-01
      相关资源
      最近更新 更多