信息分隔符是否构成 Unicode 中的换行符?
Do information separators constitute line-breaks in Unicode?
这Wikipedia article which lists all Unicode whitespaces mentions 7 of them as line/paragraph separating characters (LF, VT, FF, CR, NEL, LS, PS). Here there is nothing given about ASCII 'information separator' characters (FS, GS, RS, US). But surprisingly FS, GS, RS have 'paragraph separator(B)'作为他们的双向class。这令人困惑。
现在,当我在文本中遇到这些 'information separator' 字符之一时,我应该将它们视为换行符吗?换句话说,如果我正在编写一个在换行符处拆分的函数,那么我应该在这三个字符处拆分吗? (Python 中的 string.splitlines()
函数确实将它们视为换行符。我不知道其他实现。)
例如:
在链接的维基百科 table 和 Unicode bidi class 数据库中,LF 都被视为换行符。这样我就可以在遇到那个角色的时候换行了。
在链接的维基百科 table 和 Unicode bidi class 数据库中,SP 都不被视为换行符。所以遇到那个角色我不能断线。 (假设没有自动换行)。
链接的维基百科 table 没有提到 GS 作为换行符。但是 Unicode bidi class 数据库确实提到它是换行符。我很困惑:在这种情况下我该怎么办?在这种情况下,bidi class 指的是什么?
这里我只问Unicode标准。但是如果你知道,你也可以提到 ASCII 标准中的换行符。
PS:我不确定链接的维基百科页面中的 table 是否正确。但是我找不到任何其他列出所有空格的好资源。
FS、GS、RS、US属于换行符classCombining_Mark
(CM
)。 Unicode 字符数据库中与此信息相关的文件是 LineBreak.txt.
UAX #14 (Unicode Line Breaking Algorithm)描述classCM
如下:
Combining character sequences are treated as units for the purpose of
line breaking. The line breaking behavior of the sequence is that of
the base character.
换句话说:Class CM
字符在 之前 禁止换行 – 它们本质上是将自己“粘”到前一个字符上。但是,对于所有其他目的,换行算法 完全忽略 class CM
字符的存在。在 class CM
字符之后是否存在换行机会完全取决于*它所应用的基本字符的换行符 class,即第一个向后的字符不属于 class CM
.
*此规则有一些例外情况,涉及强制中断和一些特殊格式字符,但它们与您的目的无关。
这Wikipedia article which lists all Unicode whitespaces mentions 7 of them as line/paragraph separating characters (LF, VT, FF, CR, NEL, LS, PS). Here there is nothing given about ASCII 'information separator' characters (FS, GS, RS, US). But surprisingly FS, GS, RS have 'paragraph separator(B)'作为他们的双向class。这令人困惑。
现在,当我在文本中遇到这些 'information separator' 字符之一时,我应该将它们视为换行符吗?换句话说,如果我正在编写一个在换行符处拆分的函数,那么我应该在这三个字符处拆分吗? (Python 中的 string.splitlines()
函数确实将它们视为换行符。我不知道其他实现。)
例如:
在链接的维基百科 table 和 Unicode bidi class 数据库中,LF 都被视为换行符。这样我就可以在遇到那个角色的时候换行了。
在链接的维基百科 table 和 Unicode bidi class 数据库中,SP 都不被视为换行符。所以遇到那个角色我不能断线。 (假设没有自动换行)。
链接的维基百科 table 没有提到 GS 作为换行符。但是 Unicode bidi class 数据库确实提到它是换行符。我很困惑:在这种情况下我该怎么办?在这种情况下,bidi class 指的是什么?
这里我只问Unicode标准。但是如果你知道,你也可以提到 ASCII 标准中的换行符。
PS:我不确定链接的维基百科页面中的 table 是否正确。但是我找不到任何其他列出所有空格的好资源。
FS、GS、RS、US属于换行符classCombining_Mark
(CM
)。 Unicode 字符数据库中与此信息相关的文件是 LineBreak.txt.
UAX #14 (Unicode Line Breaking Algorithm)描述classCM
如下:
Combining character sequences are treated as units for the purpose of line breaking. The line breaking behavior of the sequence is that of the base character.
换句话说:Class CM
字符在 之前 禁止换行 – 它们本质上是将自己“粘”到前一个字符上。但是,对于所有其他目的,换行算法 完全忽略 class CM
字符的存在。在 class CM
字符之后是否存在换行机会完全取决于*它所应用的基本字符的换行符 class,即第一个向后的字符不属于 class CM
.
*此规则有一些例外情况,涉及强制中断和一些特殊格式字符,但它们与您的目的无关。