Abstract character 和 grapheme cluster 有哪些區別

時間 2021-05-30 19:10:48

1樓:賀師俊

以下是我個人的理解,謹供參考。

簡單來說,abstract character 就是一般意義上的「字元」,所以叫做「抽象」字元;字素簇(grapheme cluster)則大體上是終端使用者感知的「字元」,或可理解為「具體」字元。「抽象」和「具體」的差別是,「抽象」字元是脫離了具體文字的抽象存在;而「具體」字元是在一段具體文字裡的。

字素簇,由字素簇定界規範所確定,即把 unicode code points 序列(表示一段具體文字)轉換為使用者所感知的字串行,故而字素簇不能脫離具體文字而存在。

從乙個 code points 序列得到乙個字素簇序列,其每個字素簇通常都可對應到乙個 abstract character,但該字素簇本身可能是有多個 code points,而這每個 code point 本身單獨來說也通常可對應到乙個 abstract character。

不過注意,理論上說,也不是所有 code point 都對應到 abstract character,比如 noncharacter、surragate、unassigned code point 都不是 abstract character。

所以,對於乙個字串,只有從 code units -> code points -> grapheme clusters 的精確定義(由 Unicode 規範所定義的演算法)和迭代器,而不存在所謂基於 abstract character 的迭代器,因為:

不嚴格地說,code points 和 grapheme clusters 都可對應到 abstract characters;

嚴格意義上說,又都不是,因為它們可能包含不是 abstract character 的 code point;同理,我們稱之為基於 code point 的迭代,而不說基於 unicode scalar value 的迭代 —— 因為程式設計實踐上通常無法也沒有必要排除字串可能包含 illegal surrogate 的情形。

本質上說,既然 abstract character 是脫離具體文字的抽象存在,而迭代是基於具體文字字串的,那麼「基於 abstract character 的迭代器」在定義上就是不成立的。以上。

Nikon 和 Canon 的對焦系統有哪些區別?什麼是十字對焦和輔助對焦?

不同品牌的對焦系統 不同相機品牌的對焦系統各有千秋,主要在分布上會不太一樣,就算是同乙個品牌的相機,不同系列的對焦系統特性也會有差別,對焦點多的好處是可以讓你更精確地在畫面中進行選擇,但是對焦點多,不代表對焦迅速或對焦更果斷。對焦系統的型別 對焦系統按照型別來分有兩種 相位檢測對焦和對比檢測對焦,具...

嘲羊區和嘲羊區群眾做過哪些惡

我不是張藝興的粉絲,但是不知道為什麼首頁刷出了這個問題 這個號我也有聽說過,看了一下粉絲數量還不少,但我比較好奇為啥這種粉絲數量這麼大的號能夠留到現在,我有個喜歡的歌手也被開了類似bot這樣的賬號,挺討厭的,希望微博早日實名化。 嘲羊號幹的事。說難聽一點,跟知乎那個 謝娜為什麼這麼招人討厭 一樣。有...

cheer up 和 get a life 有什麼區別嗎?

天美timi CHEER UP 就是高興點 振作點 GET A LIFE 就是換一種新生活 找點事情做 別煩我去別的地方這個是要根據語氣和當時的情況而定 這倆意思差別很大啊,一定要注意如何正確使用。Cheer up,是出於善意的鼓勵,就是 振作起來!的意思,是褒義的。Get a life,是出於鄙視...