我正在运行一个 Arch Linux 服务器,我使用 VcXsrv 从几台 Windows 机器连接到该服务器,这样我就可以运行图形应用程序(以及比使用 PuTTY 等获得的更多自定义终端)。但是,我在处理 UTF-8 Dingbats 部分的 urxvt 和 UTF-8 字符时遇到了一些问题,即它们无法呈现。我使用 Dingbats 在我的 shell 提示符中显示 git 状态,并显示命令的退出状态。
区域设置.conf:
LANG=en_US.UTF-8
区域设置输出:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
urxvt 配置(~/.Xdefaults):
URxvt*scrollTtyOutput: false
URxvt*scrollWithBuffer: true
URxvt*scrollTtyKeypress: true
URxvt*scrollBar: false
URxvt*cursorBlink: true
URxvt*background: black
URxvt*foreground: green
URxvt*font: xft:Hack:size=10, xft:Unifont:size=10
URxvt*locale: true
URxvt*skipBuiltinGlyphs: true
URxvt*xftAntialias: true
URxvt*saveLines: 10000
URxvt*eightBitInput: false
urxvt版本信息:
rxvt-unicode (urxvt) v9.22 - released: 2016-01-23
options: perl,xft,styles,combining,blink,iso14755,unicode3,encodings=eu+vn+jp+jp-ext+kr+zh+zh-ext,
fade,transparent,tint,XIM,frills,selectionscrolling,wheel,slipwheel,cursorBlink,
pointerBlank,scrollbars=plain+rxvt+NeXT+xterm
我可以看到所有拉丁文、片假名、平假名、韩文、中文(繁体、简体)、西里尔文、波斯文(大多数)、格鲁吉亚文字符等。但是当我打印它们时,Dingbat 看起来像这样:
如果这很重要的话,我会在 vim 模式下使用 zsh。
在谷歌上查找,我能找到的唯一建议是确保我的语言环境设置为 UTF-8,并且字体具有必要的字形。我相信我已经确保了这两点。
我可能哪里做错了?
答案1
问题在于使用 Unicode 私有使用平面中的字符,而这些字符不能保证具有任何特殊性。Windows XP 系统可以使用命令明确编辑那里的字体eudcedit
,Mac 在该平面的 6400 个字符中的一个字符中有一个 Apple 徽标,简而言之,您使用了错误的符号。
正确的符号是从十进制的 9985 到 10175(十六进制的 2701 到 27bf)。