OP的实际问题是:Linux控制台支持哪些Unicode值,并且可以在运行时检测到这些Unicode值screen
。原则上,可以通过检索控制台的Unicode映射来做到这一点。
该kbd
源代码树包含getunimap
(和它的手册页)。手册页上说
getunimap程序很旧且过时。现在是setfont的一部分
这是不完全正确的。 setfont
具有大致相同的功能的选项:
-ou file
Save previous Unicode map in file
区别:
setfont
写入文件,而getunimap
写入标准输出
getunimap
显示将要映射的字符作为注释。
例如:
0x0c4 U+2500 # ─
0x0c4 U+2501 # ━
0x0b3 U+2502 # │
0x0b3 U+2503 # ┃
0x0da U+250c # ┌
0x0da U+250d # ┍
0x0da U+250e # ┎
0x0da U+250f # ┏
0x0bf U+2510 # ┐
0x0bf U+2511 # ┑
0x0bf U+2512 # ┒
0x0bf U+2513 # ┓
0x0c0 U+2514 # └
0x0c0 U+2515 # ┕
0x0c0 U+2516 # ┖
0x0c0 U+2517 # ┗
与
0xc4 U+2500
0xc4 U+2501
0xb3 U+2502
0xb3 U+2503
0xda U+250c
0xda U+250d
0xda U+250e
0xda U+250f
0xbf U+2510
0xbf U+2511
0xbf U+2512
0xbf U+2513
0xc0 U+2514
0xc0 U+2515
0xc0 U+2516
0xc0 U+2517
如果您正在运行screen
(或例如在控制台上运行,xterm
而不是在控制台上运行),则会收到权限错误,可以使用解决该错误sudo
。
如果我碰巧知道加载了哪种字体,则可以使用进行检查(无特殊权限)psfgettable
,例如,
zcat /usr/share/consolefonts/Lat2-Fixed16.psf.gz | psfgettable -
并查看setfont
用于加载字体的映射数据(使用Unicode映射):
#
# Character table extracted from font -
#
0x000 U+00a9
0x001 U+00ae
0x002 U+00dd
0x003 U+0104
0x004 U+2666 U+25c8 U+fffd
0x005 U+0105
0x006 U+0111
0x007 U+0150
0x008 U+0151
0x009 U+0162
0x00a U+0164
0x00b U+0170
0x00c U+0171
0x00d U+021a
0x00e U+02dd
0x00f U+2014 U+2015
0x010 U+2020
0x011 U+2021
0x012 U+2022 U+25cf
...
两者getunimap
和setfont
赋予数据未排序的内容,而psfgettable
看上去却是排序的(以及合并映射到同一字形的Unicode值的行)。因此存在差异,但是信息是可访问的。
进一步阅读(说明为什么无法使用它showconsolefont
来解决此问题):