簡體   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