什么是易碎的非空白字符
What are breakable non-whitespace characters
我发现浏览器(我只测试了 Chrome 行为)在单词中的某些字符上换行以防止文本溢出(在标准行为中,因此:word-wrap: normal
)。我不考虑易碎的空格,而是考虑这些具体的 Unicode 字符:
- 连字符 (-)
- 软连字符 ()
- 破折号 (–)
- 长破折号 (—)
- 全角plus/minus(+/-)
- 减去 (−)
所以问题...
- 这个属性还有其他角色吗?
- 为什么是这些字符而不是任何其他标点字符(如点、逗号或斜杠)?
- 我知道为什么要连字符和破折号,但为什么加号和减号而不是乘法 (×)?
- 这种行为在浏览器中是否一致?在 HTML/CSS 或 Unicode 中标准化?
有一个try:
<div style="width: 50px">
veryvery-veryvery-veryvery-veryvery
veryvery–veryvery–veryvery–veryvery
veryvery—veryvery—veryvery—veryvery
veryveryveryveryveryveryveryvery
veryvery−veryvery−veryvery−veryvery
veryvery+veryvery+veryvery+veryvery
long
</div>
HTML/CSS 文本中的中断通常发生在“soft wrap opportunities”处,但字符出现这种机会的具体行为并未标准化。相反,CSS 规范遵循其他文本格式规范(例如特定于语言的准则)。
但是,流行的通用实现是 Unicode Line Breaking Algorithm。该算法使用一组规则检查相邻字符的 Unicode 属性,以创建、强制或禁止断点。不可能列出可以造成中断的单个字符的完整列表,因为字符出现的上下文是一个相关因素。
我发现浏览器(我只测试了 Chrome 行为)在单词中的某些字符上换行以防止文本溢出(在标准行为中,因此:word-wrap: normal
)。我不考虑易碎的空格,而是考虑这些具体的 Unicode 字符:
- 连字符 (-)
- 软连字符 ()
- 破折号 (–)
- 长破折号 (—)
- 全角plus/minus(+/-)
- 减去 (−)
所以问题...
- 这个属性还有其他角色吗?
- 为什么是这些字符而不是任何其他标点字符(如点、逗号或斜杠)?
- 我知道为什么要连字符和破折号,但为什么加号和减号而不是乘法 (×)?
- 这种行为在浏览器中是否一致?在 HTML/CSS 或 Unicode 中标准化?
有一个try:
<div style="width: 50px">
veryvery-veryvery-veryvery-veryvery
veryvery–veryvery–veryvery–veryvery
veryvery—veryvery—veryvery—veryvery
veryveryveryveryveryveryveryvery
veryvery−veryvery−veryvery−veryvery
veryvery+veryvery+veryvery+veryvery
long
</div>
HTML/CSS 文本中的中断通常发生在“soft wrap opportunities”处,但字符出现这种机会的具体行为并未标准化。相反,CSS 规范遵循其他文本格式规范(例如特定于语言的准则)。
但是,流行的通用实现是 Unicode Line Breaking Algorithm。该算法使用一组规则检查相邻字符的 Unicode 属性,以创建、强制或禁止断点。不可能列出可以造成中断的单个字符的完整列表,因为字符出现的上下文是一个相关因素。