C++调整行高

Adjusting line height in C++

我正在尝试对我一直在编写的迷宫程序进行最后的润色。我已经使用 Unicode 来分隔墙壁和路径,但是由于(水平)行距,我不能让它看起来足够紧凑。我附上了两个截图。我只是转义换行符“\n”以便打印每一行。线之间的距离可以调整吗?还是我坚持使用这种 "gappy" 表示法?

我的输出:

我想表达的意思是:

TBH,如果您想要像素精确的渲染,请使用适当的渲染 API,例如 OpenGL。

从文本渲染的角度来看,您没有说明要渲染什么。假设像终端控制台或 shell window 这样的东西,那么字符和换行符之外的布局与您的程序无关;视觉表现完全取决于您要渲染的shell。

首先,检查您是否真的在每条迷宫扫描线打印一行,并且没有与虚假的换行符交错。假设排除了,问题是 unicode 字形不是一个完整的块。所以你必须以某种方式设置字体或选择另一个完整块的字形。

通常控制台 windows 为 80 个字符宽 x 22 或 24 个字符高,字符为 8 像素宽 x 19 像素高。所以它离正方形网格很远,你可能想使迷宫有偏差以反映这一点并提供更好的视觉外观(例如,使 2 个像素宽的垂直走廊比 2 个像素宽的水平走廊更常见)。

检查二进制图像库字体,您可能会发现它们很有用。

https://github.com/MalcolmMcLean/binaryimagelibrary

假设您不打印双换行符,这超出了标准 C++ 的范围,它不提供以标准方式控制终端的工具。

解决方案:

  • 您可以提供一个启动器脚本,它会打开一个新终端 window 并使用特定字体并在其中运行您的应用程序。
  • 您可以使用一些特定于平台的方法来更改背景颜色(ANSI 代码在 unixy 终端中工作,或者对 Windows 终端使用 Win32 API,在类 Unix 环境中使用 ncurses 库)并打印只是不同颜色的空格。
  • 使用 GUI library/framework 来完全控制所绘制的内容(我会使用 Qt 作为 C++ GUI 应用程序)。