在终端中显示 Unicode 俄罗斯方块 - 或者如何动态降低行高

在终端中显示 Unicode 俄罗斯方块 - 或者如何动态降低行高

我使用黑色方块\xe2\x97\xbc◼ 和白色方块\xe2\x97\xbb◻ 在 shell 中显示俄罗斯方块。遗憾的是,行与行之间的行距明显较大,看起来不太好看。

我在 Mac (zsh) 上,有一个行距设置。当我将其减小到最小 (0.5) 时,它看起来相当不错。但不幸的是,终端的其余部分看起来很糟糕 ;)

因此,理想情况下,我需要一种方法来动态设置行高/行距等。或者另一个显示漂亮俄罗斯方块棋盘的创意。

欢迎任何帮助。

答案1

终端在字体面板中有用于控制水平和垂直间距的控件,您可以通过单击更改按钮打开它:

终端 > 首选项 > 设置 > [您的设置] > 文本 > 字体 > 更改

此外,如果您使用 VT100“图形”字符,终端将通过“手动”绘制线条来确保它们连接,而不是使用字符字形来呈现它们。不幸的是,它不包含单字符单元格框。您必须使用四个字符来绘制框来绘制角。例如:

tput smacs; echo 'lk'; echo 'mj'; tput rmacs

按照 Miles 的建议,使用带有背景颜色的空格字符是填充一个字符单元格的最佳方法。

答案2

几乎可以保证在终端中支持这些,即使在非 Unicode 模式下也是如此:

  • U+2588 全块
  • U+2593 深色阴影
  • U+2592 中等阴影
  • U+2591 浅色

还有 ANSI 颜色。

答案3

Mac OS X 似乎对以下方面支持不够方框绘制字符,就以适当的间距显示它们而言。使用 xterm 或 iTerm.app 等替代终端可能会更好。如果您想继续使用 Terminal.app,您可以尝试一件事,即输出具有不同背景颜色的空白,这至少会为您提供中间没有空格的块(如果没有太多其他的话)。

例如,

TERM=nsterm
for j in {0..25}; do
    for i in {0..15}; do
        tput setb $i
        echo -n '   '
    done
done; echo

产量

终端截图

相关内容