我正在制作棋盘游戏Blokus的命令行版本,我想让这些棋子占据一行的全部高度。我尝试使用Unicode字符█(U + 2588),但这样在各行中留下了垂直间隙,如下所示:

有谁知道我要如何处理整个过程?

最佳答案

U + 2588应该在终端中占据一行的全部高度,但是由于字体问题,它并不总是这样做。

第15.8节Geometrical symbols中的Unicode字符描述了块元素字符:“遗留的块元素被设计为填充每个显示单元的某些定义部分或为每个显示单元填充一定程度的阴影。 […]在模拟终端应用程序时,应设计实现块元素字符的字体,以便相邻
诸如U + 2588完整块之类的字符的字形创建的实心图案之间没有间隙。”

但是,fonts that support U+2588并不总是正确地实现它。因此,您应该检查是否可以将字体设置为具有U + 2588正确字形的字体,例如DejaVu Sans。

如果您在比简单终端更复杂的环境中使用U + 2588和 friend (例如,模拟简单终端的软件或在文字处理器中),那么您可能还会遇到另一个问题。即使U + 2588,如果以字体正确实现,则会占用字体的整个高度,但通常不会占用行的整个高度。通常,行高大于字体高度(字体大小),并且您需要采取额外的措施以使它们相同(以使文本“设置为实心”)。

10-06 09:12