zsh:印度字体支持渲染问题,在 bash 上运行良好

Akh*_*hil 6 zsh unicode

我正在使用 gnome-terminal 3.36 版本
\nbash 我可以毫无问题地输入

\n
$ \xe0\xa4\x85\xe0\xa4\x96\xe0\xa4\xbf\xe0\xa4\xb2\xe0\xa5\x8d \n
Run Code Online (Sandbox Code Playgroud)\n

zsh 没有正确显示

\n
$ \xe0\xa4\x85\xe0\xa4\x96\xe0\xa4\xbf\xe0\xa4\xb2<094d>\n
Run Code Online (Sandbox Code Playgroud)\n

zsh 印度字体

\n

这是印度字体的 zsh 行为,在 bash 中工作正常。

\n

Sté*_*las 4

如果您运行info zsh \'special characters\'(假设您安装了 info 格式的 zsh 文档),您将看到:

\n
\n

不可打印的多字节字符

\n

此项适用于不在 ASCII 范围内的控制字符,\n以及如下其他字符。如果该MULTIBYTE选项有效,则当该选项打开时,报告为宽度为零的 ASCII 字符集中不存在的多字节字符将被视为组合字符COMBINING_CHARS。如果该选项为\n关闭,或者如果某个字符出现在组合字符无效\n的位置,则该字符将被视为不可打印。

\n

不可打印的多字节字符显示为尖括号之间的\n十六进制数字。该数字是宽字符集中\n字符的代码点;这可能是也可能不是\nUnicode,具体取决于操作系统。

\n
\n
$ unicode $\'\\u94d\'\nU+094D DEVANAGARI SIGN VIRAMA\nUTF-8: e0 a5 8d UTF-16BE: 094d Decimal: &#2381; Octal: \\04515\n\nCategory: Mn (Mark, Non-Spacing); East Asian width: N (neutral)\nUnicode block: 0900..097F; Devanagari\nBidi: NSM (Non-Spacing Mark)\n\nCombining: 9 (Viramas)\n
Run Code Online (Sandbox Code Playgroud)\n

因此 U+094D 角色就属于该类别。

\n

跑步

\n
set -o combiningchars\n
Run Code Online (Sandbox Code Playgroud)\n

如果您希望 zle 处理组合字符。

\n

同样适用于 U+0301 组合锐音重音,Ste\xcc\x81phane例如 zle 在Ste<0301>phane没有该选项的情况下呈现(我个人的偏好,因为我想知道实际上有两个字符组成它,e\xcc\x81而不是通常的 U+00E9 前置字符)组成\xc3\xa9)。

\n