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

问题描述 投票:0回答:1

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

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

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

terminal xterm
1个回答
0
投票

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

添加新的控制序列以获取字符的属性(宽度,组合,控件(如选项卡))将无济于事,因为应用程序仍然必须使用系统的区域设置信息,这是出于性能原因:它会大大减慢应用程序的速度如果必须在光标确实存在的每个字符后面询问。

© www.soinside.com 2019 - 2024. All rights reserved.