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

时间:2018-07-28 13:44:45

标签: terminal xterm

在终端中正确显示Unicode似乎会受益于显示应用程序,因为它知道用于显示文本的字符单元数。像wcwidth()之类的函数是一个合理的开始,但是可能会有很多变化,例如终端显示的字符无效,亚洲字符宽度不明确,在上下文外组合字符等。

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

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

1 个答案:

答案 0 :(得分:0)

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

添加新的控件序列以获取字符的属性(宽度,组合,控件(如制表符))无济于事,因为出于性能原因,应用程序仍必须使用系统的语言环境信息:如果必须在每个字符之后询问光标的实际位置,则会大大降低应用程序的速度。