kri*_*ina 5 terminal fonts unicode
我正在编写一个将 UTF-8 字符显示为输出的脚本。在我的 Gnome 终端中,这会打印出一个漂亮的枫叶 ():
$ echo -e '\xF0\x9F\x8D\x81'
Run Code Online (Sandbox Code Playgroud)
在 rxvt 中,它打印出一个框(它用于“未知”的字符)。 locale
两者都是 UTF-8,但字体不同。有没有办法在用户的机器上确定是否支持某些字符?
在终端中运行的应用程序无法从终端中找出终端绘制的字形是什么样的(或者即使它们是替代/占位符)。
应用程序可以做的一件事是确定终端是否完全支持 UTF-8,如果支持,是否支持可变宽度字符。方法如下:
[
6
n
并期待 ESC [
line col 来读取光标位置;
R
"\xc2\xa0"
。如果终端支持 UTF-8,则这是单个不间断空格。如果终端不支持 UTF-8,则它是未知的,但可能占据 2 个字符位置(Â
实际上可能后面跟着不间断的空格)。如果终端确实支持 UTF-8,那么您可以通过基本上使用相同的技巧来确定它是否支持可变字符宽度。读取光标位置,在等宽字体中写入一个应该是双倍宽度的字符,例如?,然后再次读取光标位置。如果终端不支持双角字符,光标可能会天真地只移动一个位置。
归档时间: |
|
查看次数: |
1176 次 |
最近记录: |