如何在 vim 中将字符显示为正方形?字符本身不需要是正方形,但如果您要通过字符的所有中心点绘制一个网格,它应该会形成一个正方形网格。
我想这样做,因为我正在设计一个堡垒布局矮人要塞. 游戏在正方形/立方体网格上进行。
答案1
在 Windows 上,conhost.exe(cmd 和 PowerShell 使用的默认终端)中默认有一些方形等宽字体,例如 8x8 字体,但我从未听说过 Linux 中有这种字体。我搜索了一下,找到了正方形字体专为您的目的而制作
Square 是一款专为 roguelike 游戏设计的 TTF 字体
Roguelike 游戏完全由文字组成网格单元但问题是大多数等宽字体的高度都比宽度大很多,这意味着 roguelike 游戏要么有非正方形的单元格,要么有正方形的单元格并且角色不占据整个方格,这两种情况看起来都不美观。
正方形的设计使得字符尽可能均匀、一致地填充正方形空间。它的灵感来自于日文字符无论其设计如何,总是均匀地填充一个方框。它放弃了小写字符中典型的上升/下降字符,而是让小写字符看起来像大写字符的较轻版本。
跨站点重复:
我还发现了许多其他同类别的字体,尽管我没有机会测试它们
- http://www.1001fonts.com/monospaced+square-fonts.html
- http://www.fontspace.com/category/mono,monospace,square
- http://www.fontspace.com/category/mono,square,monospaced
然而,如果你的文字仅限于小字符集(特别是 ASCII 21 到 7E 加上一些东亚字符)那么你就可以使用全角表格直接使用,无需其他字体
下面是一个小的 shell 脚本,用于将半角转换为全角。要转换的字符串从标准输入读取
halfwidth='!"#$%&'\''()*+,-.\/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⦅⦆¢£¬¯¦¥₩ '
fullwidth='!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~⦅⦆¢£¬ ̄¦¥₩ '
sed -e "y/$halfwidth/$fullwidth/"
例子
$ cat square.txt 0123456789 1-方格8 2####text7 3$$$$$$$$6 4@@@@@@@5 5(正方形)4 6~~~文本3 7>>>2 8////\\\\1 9876543210 $ cat square.txt | sh fullwidth.sh 0123456789 1-s正方形8 2####文本7 3$$$$$$$$6 4@@@@@@@@5 5(SQUARE)4 6~~~技术にはへる 3 7<<<<>>>>2 8////\\\\1 9876543210
由于字体的原因,在许多情况下结果可能不是完美的正方形,因此如果纵横比不符合您的要求,您可能仍需要检查系统上是否有带有正方形全宽字符的字体
答案2
答案3
我正在寻找一种字体来使用python 二维码生成器。这个库似乎假设字符的高度与宽度之比精确为 8:7,因此上面的方形字体实际上产生的二维码比其高度要宽。在我的 Mac 上,点大小为 14 或 28 的 Andale Mono 字体可以产生完美的方形二维码。在终端例如,下图所示的二维码正好是168:168。