繁体   English   中英

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

[英]Line breaking behaviour of unicode characters (e.g. 🦄)?

背景

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

🦄w /等于

==============================🦄=================== ================================================== =======================================

🦄带点

..................................🦄............... .................................................. .................................................. .................................................. .......................................

⚠️两个都作为参考

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

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

问题:

  1. 为什么🦄打破了界线(而⚠️没有)?
  2. 在Chrome 63 / Safari 11.0上,为什么换行“=”会使🦄保持在顶线,同时换行“。” 导致🦄下降到第二行?

在以下容器中的JSFiddle中重新创建:

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

它与角色的属性有关。 警告标志等号是在换行符类别中AlphabeticUnicorn Face属于Ideographic完全停止属于类别Infix_Numeric

如果我们参考UAX#14:Unicode换行算法 ,我们可以看到表意字符在前后提供了换行机会,因此线条可以自由地绕过它们。 同时, 字母字符应该“粘在一起”,因此不应出现换行符。 由于⚠是字母的,它会粘贴到等号上,当没有更多的空间扩展时,线就会断开。 然而,表意文字allows允许换行,所以文字一碰到独角兽就会包裹,为等号留出更多的空间,这些空间不会破裂。

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

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

这意味着在🦄之后线不能断开,因为下一个完全停止应该粘合到它,所以它下降到下一行的开头。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM