gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 00:57:47 35 4
gpt4 key购买 nike

我正在尝试使用 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 指定的还是我正在使用的库实现的一个怪癖?

最佳答案

是的,这就是 Unicode 换行算法指定的内容。规则 LB3 位于 UAX #14: Unicode Line Breaking Algorithm, section 6.1 "Non-tailorable Line Breaking Rules"说:

Always break at the end of text.



该规范进一步解释了:

[This rule is] designed to deal with degenerate cases, so that there is [...] at least one line break for the whole text.

关于unicode - Unicode 的换行规则是否要求最后一个字符是强制换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34098701/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com