unicode字符的换行行为(例如)?

时间:2018-02-07 10:18:36

标签: css unicode

背景

以下所有内容都是一行,您应该会看到不同的换行行为

w /等于

=============================================== ================================================== =========================================

w / dots

............................................... .................................................. .................................................. .................................................. .........................................

⚠️w / both参考

==============================⚠️=============== ================================================== ================================================== ================================================== ================================================== =

..................................⚠️........... .................................................. .................................................. .................................................. .................................................. .................................................. ...........

的问题:

  1. 为什么断线(而⚠️没有)?
  2. 在Chrome 63 / Safari 11.0上,为什么换行“=”会导致保持在顶行,同时换行“。”导致下降到第二行?
  3. 在以下容器中的JSFiddle中重新创建:

    div {
      width: 200px;
      display: block;
      ...
    }
    

1 个答案:

答案 0 :(得分:3)

它与角色的属性有关。 Warning SignEquals Sign位于换行符类别DEBUG [12:30:46] com.package1.web - some debug onto com.package1.web DEBUG [12:30:46] com.package2.web - some debug onto com.package2.web DEBUG [12:30:46] com.package3.web - some debug onto com.package3.web INFO [12:30:46] com.package1.web - some info onto com.package1.web INFO [12:30:46] com.package2.web - some info onto com.package2.web INFO [12:30:46] com.package3.web - some info onto com.package3.web INFO [12:30:46] com.package3.notweb - some info onto com.package3.notweb 中,Unicorn Face位于Alphabetic类别中,Full Stop属于Ideographic类别1}}。

如果我们咨询UAX #14: Unicode Line Breaking Algorithm,我们可以看到ideographic characters提供了之前和之后的换行机会,因此可以自由地绕过它们。同时,alphabetic characters应该“粘在一起”,因此不应发生换行。由于⚠是字母的,它会粘贴到等号上,当没有更多的空间扩展时,线就会断开。然而,表意文字允许换行,所以文字一碰到独角兽就会包裹,以便为等号留出更多的空间,而不会破坏。

现在,关于为什么完全停止的行为与等号不同:Infix numeric characters应该粘合到直接跟随它们的任何数字字符。由于这不是这种情况,因此适用另一条规则:

  

如果未在数字上下文中使用,则使用中缀分隔符   句末标点符号。因此他们总是防止休息   之前。

这意味着该行不能破坏,因为下一个句号应该粘贴到它上面,所以它会下降到下一行的开头。

请记住,大多数这些换行符类别都是可定制的。它们是默认值,对于大多数应用程序可能非常有用,但如果更需要不同的行为,则可以覆盖它们。例如,在Firefox中,在完整停止和等号示例中,换行符都在之前。