Emoji, 沒想到你是這樣的...

趁著做項(xiàng)目的機(jī)會了解了一下 emoji 編碼的問題。在此文中總結(jié)一下emoji 資料。
P.S. 如果看不到文中的 emoji 渲染效果,請看文末的長圖。

首先 unicode 標(biāo)準(zhǔn)定義了一個(gè)基本 emoji 符號集, 其中共 1182 個(gè)字符。例如 U+26A1 表示高電壓 (?)。emoji 字符可能是以 text 風(fēng)格呈現(xiàn),或者以 emoji 風(fēng)格呈現(xiàn)。具體兩種風(fēng)格呈現(xiàn)出來是什么樣子往往與具體的平臺有關(guān),不過通常情況下,emoji 風(fēng)格呈現(xiàn)的字符是彩色的,而 text 風(fēng)格渲染的字符是黑白的。其中有部分 emoji 字符會默認(rèn)使用 emoji 風(fēng)格呈現(xiàn),這部分 emoji 字符被稱之為emoji_presentation。不過,我們可以通過修飾符(U+FE0F 與 U+FE0F)指定字符以 text 或 emoji 風(fēng)格字符。例如, U+26A1 U+FE0F 則指定高電壓符號號使用 emoji 風(fēng)格渲染,而 U+26A1 U+FE0E 則指定高電壓符號使用 text 風(fēng)格渲染,其中 U+FE0F 與 U+FE0E 又分別被稱之為 emoji 表示風(fēng)格選擇子與 text 表示風(fēng)格選擇子。具有這種變化的集合可參見這里。可以看出 emoji 除了基本字符集外,還可以通過某些控制字符組成新的 emoij 字符串展示為一個(gè)新的 emoji。這也主意味著,我們平時(shí)看到的一個(gè) emoji 既可能是一個(gè) unicode 字符,也可能是多個(gè) unicode 字符組成。接下來,將依次介紹這些組合方式。

  1. Emoji_presentation_sequence 即由基本 emoji 字符加上 U+FE0F 組合而成 emoji 序列串。例如 U+26A1 U+FE0F 。

  2. Modfier_Base_Sequence 。這種是一種Modifier_Base + Modifer 修飾的方式。其中 Modifier 是用于對 Modifier_Base 進(jìn)行修飾的 unicode 字符,目前定義了五種修飾字符,分別表示顏色的由深及淺,1F3FB到1F3FF (??..??) (ps, 如果看不見字符可以在手機(jī)上閱讀)。那么顯然,Modifier_Base 就是被能被修飾的 emoji 字符,顯然不是所有的 emoji 字符都能被修飾,這里有可被修飾的 emoji 字符列表。例如,U+270D(??) 就是一個(gè)可以被修飾的 emoji 字符,那么它被 U+1F3FF 修飾后就會變成U+270D U+1F3FF(????)。如果你在手機(jī)上,應(yīng)該能看出不同之處了, 被修飾的 emoji 顏色變深了,PC 上該新 emoji 會被顯示為兩上方框。

  3. Flag Sequence。這類 emoji 串是通過兩個(gè)地域指示符(regional_indicator) 組合的方式來表示一個(gè)國家的國旗??偣灿?26 個(gè)地域指示符,每個(gè)指示符又對應(yīng)于一個(gè)英文字母含義,例如 U+1F1E8 為地域指示符 C, U+1F1F3 為地域指示符 N。這些指示符兩兩組合表示一個(gè)國旗,U+1F1E8 U+1F1F3 為中國國旗(????)。并不是 26 x 26 種組合是全部合法的,合法的 Flag Sequence 只有 256 種。

  4. KeyCap Sequence。這類 emoji 序列是將數(shù)字(0-9),* 與 # 通過一個(gè) U+20E3 字符轉(zhuǎn)換為鍵帽的樣式。由于這種樣式要求必須以 emoji 風(fēng)格展示,所有會在序列中添加樣式限制 U+FE0F。例如 U+0023 U+FE0F U+20E3 的 emoji 樣式即是 #??,U+0030 U+FE0F U+20E3 的 emoji 樣式即是 0??。其它與此類似。

  5. ZWJ sequence。ZWJ emoji 序列即是通過 ZWJ 字符(U+200D, Zero Width Joiner)將基本 emoji 字符或Emoji_Modifier_Sequence連接起來,形成一個(gè)新的 emoji 表示樣式。ZWJ 序列可參見這里。例如,U+1F468 U+200D U+1F469 U+200D U+1F467 (????????) 這個(gè) emoji 表示家庭即由三個(gè)emoji字符,U+1F468(??), U+1F469(??), U+1F467(??) 經(jīng) ZWJ 連接而成的。

  6. Tag Sequence。Tag Sequence 由 tag_base tag_spec 與 tag_term 拼接而成的 emoji 序列串。其中 tag_base 可以是基本 emoji 字符,也可以是emoji_modifier_sequence 或者 emoji_presentation_sequence。 tag_spec 允許是從 U+E0020 到 U+E007E 的所有字符,而 tag_term 為U+E007F 作為結(jié)束符。目前只有三個(gè)合法 tag sequence,這種方式主要用于未來擴(kuò)展使用。

方便看到 emoji 的效果,以下是文章截圖:

final.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容