当前位置:  开发笔记 > 开发工具 > 正文

Unicode的换行规则是否要求最后一个字符是强制中断?

如何解决《Unicode的换行规则是否要求最后一个字符是强制中断?》经验,为你挑选了1个好方法。

我正在尝试使用libunibreak(https://github.com/adah1972/libunibreak)来标记某些给定的unicode文本中可能的换行符.

Libunibreak在某些文本中为每个代码单元返回了四个可能的选项:

LINEBREAK_MUSTBREAK
LINEBREAK_ALLOWBREAK
LINEBREAK_NOBREAK
LINEBREAK_INSIDEACHAR

希望这些是自我解释的.我希望MUSTBREAK对应于像LF这样的换行符.但是,对于任何给定的文本,Libunibreak始终指示最后一个字符是MUSTBREAK

例如,使用字符串"abc",输出将是[NOBREAK,NOBREAK,MUSTBREAK].对于"abc \n",输出将是[NOBREAK,NOBREAK,NOBREAK,MUSTBREAK].我在绘制文本时使用MUSTBREAK属性开始一个新行,因此第一个案例("abc")创建了一个不应该存在的额外换行符.

这是Unicode指定的行为,还是我正在使用的库实现的怪癖?



1> nwellnhof..:

是的,这是Unicode换行算法指定的内容.UAX#14中的规则LB3 :Unicode断行算法,第6.1节"不可裁剪的断行规则"说:

总是在文本末尾打破.

该规范进一步解释:

[此规则]旨在处理退化情况,因此整个文本至少有一个换行符.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有