标准C库的wcwidth
调用返回亚洲字符的2
。然后是Unicode符号,例如箭头。对于那些返回1
。通常情况下,字符要比单列宽,但是库不是错的,因为终端在单列中打印它们并允许视觉重叠,有时会给出不错的结果,例如ndash“ –”。
是否有明显遭受苦难的角色?我想知道亚洲人和其他地区的人如何使用终端,他们开发了什么解决方案。例如,显示一个跨越整个行并包含当前目录名称的shell提示可能是一个严重的问题。可以修补wcwidth
以获得更好的结果吗?例如,以github/wcwidth.c为起点。
最佳答案
歧义宽度字符有所不同。 xterm既有Markus Kuhn的original(您显示的链接似乎是他的链接,已删除comment-header),还有一个经过调整以适应CJK(东亚)的alternate version。除此之外,它还会在启动时检查usable system locale tables。有些足够好;其他不是。没有人对实际的优点做过系统的(公正的)调查(您可能会在这方面看到一些意见,作为答案)。