在终端中正确显示Unicode似乎将受益于知道用于显示文本的字符单元的数量的显示应用程序。像wcwidth()这样的函数是一个合理的开始,但可能会有很多变化,例如终端显示的无效字符、宽度不明确的亚洲字符、脱离上下文的组合字符等。
用新的控制序列来扩展终端应用程序以测量字符串的显示宽度是否合理,哪些显示应用程序可以用来表征终端?如果是,那么有哪些细节值得考虑,例如使用什么序列,是否指定UTF-8,以及如何处理不知道这个假设的新控制序列的终端?它有可能被广泛采用吗?
如果不是,这个想法的缺陷是什么?也许在显示之后读取光标位置是一个更好的(并且已经被支持的)选项?或者有一种好的不同的方法?
发布于 2018-09-09 07:40:21
不需要,因为现有的光标位置报告(可用于获取打印字符串之前和之后的位置)提供了长度。
添加一个新的控制序列来获取字符的属性(宽度、组合、诸如制表符之类的控件)不会有太大帮助,因为出于性能原因,应用程序仍然必须处理系统的区域设置信息:如果应用程序必须询问每个字符的实际位置,它将大大减慢应用程序的速度。
https://stackoverflow.com/questions/51571958
复制相似问题