我想编写一个在终端中运行的游戏。我做了一些终端着色,并想使用一些 unicode 字符来制作漂亮的 ascii 艺术“图形”。但是linux终端不支持很多unicode字符(非X终端,我不知道你怎么称呼它...VT100?我的意思是使用文本模式输出的终端,没有图形模式,因此使用与BIOS中相同的字体来显示文本。)
例如,我想使用“半块”字符 U+2580 (▀) 和 U+2584 (▄) 绘制半字符“像素”,但终端不支持这些。 (这些只是示例 - 我想使用更多特殊字符......)
该字体支持哪些字符?有没有列出这些字符的文件或表格?这是与设备相关的还是有任何“标准”?
答案1
该终端称为 Linux 控制台,有时也称为“vt”(虚拟终端的缩写)。这些术语可能会令人困惑,特别是因为它的使用不一致,有时甚至是错误的。您可以通过阅读找到有关术语的更多信息“终端”、“shell”、“tty”和“控制台”之间的确切区别是什么?。
Linux 控制台支持用户配置的字体,因此您的问题的答案是“无论用户设置什么”。更改字体的实用程序consolechars
是Linux 控制台工具。硬件仅支持 8 位字体,尽管您可以通过支持 unicode 编码输出但只有 256 个字形(其他字符被忽略)来部分解决此问题。阅读LCT文档(在撰写本文时在线,它应该包含在您的发行版包中)以获取更多信息。
如果你使用Linux帧缓冲区,您可以直接或通过适当的 unicode 支持FB术语。
半块字符包含在IBM 代码页 437,大多数 PC 视频适配器的 ROM 均支持该功能。根据您需要的角色,这可能就足够了。
请注意,现在很少有人使用 Linux 控制台。有些人由于各种原因无法使用它(不运行 Linux、在远程 X 终端上运行、使用文本模式有问题的视频适配器……)。我不建议花太多精力去支持它。