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

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

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

$ अखिल् 

zsh 它没有正确显示的情况下

$ अखिल<094d>

zsh 印度字体

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

答案1

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

不可打印的多字节字符

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

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

$ unicode $'\u94d'
U+094D DEVANAGARI SIGN VIRAMA
UTF-8: e0 a5 8d UTF-16BE: 094d Decimal: &#2381; Octal: \04515

Category: Mn (Mark, Non-Spacing); East Asian width: N (neutral)
Unicode block: 0900..097F; Devanagari
Bidi: NSM (Non-Spacing Mark)

Combining: 9 (Viramas)

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

跑步

set -o combiningchars

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

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

相关内容