Terminal 字符显示宽度的终端控制序列?

Terminal 字符显示宽度的终端控制序列?,terminal,xterm,Terminal,Xterm,在终端中正确显示Unicode似乎会受益于显示应用程序了解用于显示文本的字符单元数。像wcwidth()这样的函数是一个合理的开始,但也可能有很多变化,例如终端显示的无效字符、不明确的亚洲字符宽度、脱离上下文组合字符等 用一个新的控制序列扩展终端应用程序以测量字符串的显示宽度是否合理,哪些显示应用程序可以用来描述终端?如果是,哪些细节值得考虑,例如,使用什么序列,是否指定UTF-8,以及如何处理不知道这个假设的新控制序列的终端?它有可能被广泛采用吗 如果没有,这个想法的缺陷是什么?在显示后读取光

在终端中正确显示Unicode似乎会受益于显示应用程序了解用于显示文本的字符单元数。像wcwidth()这样的函数是一个合理的开始,但也可能有很多变化,例如终端显示的无效字符、不明确的亚洲字符宽度、脱离上下文组合字符等

用一个新的控制序列扩展终端应用程序以测量字符串的显示宽度是否合理,哪些显示应用程序可以用来描述终端?如果是,哪些细节值得考虑,例如,使用什么序列,是否指定UTF-8,以及如何处理不知道这个假设的新控制序列的终端?它有可能被广泛采用吗


如果没有,这个想法的缺陷是什么?在显示后读取光标位置是否是一个更好(并且已经得到支持)的选项?或者有好的不同方法吗?

没有必要,因为现有的游标位置报告(可用于获取打印字符串前后的位置)给出了长度

添加新的控件序列以获取字符的属性(宽度、组合、控件,如制表符)这不会有多大帮助,因为出于性能原因,应用程序仍然必须使用系统的区域设置信息:如果应用程序必须询问光标实际所在的每个字符,则会大大降低应用程序的速度