一、含義
Emoji 是可以插入文字的圖形符號。
它是一個日語詞,e
表示"絵",moji
表示"文字"。連在一起,就是"絵文字"。
Emoji 在上個世紀90年代,由日本電信商引入服務,最早用於在短訊息之中插入表情。2007年,蘋果公司的 iPhone 支援了 Emoji,導致它在全世界範圍的流行。
二、Unicode 標準化
早期的 Emoji 是將一些特定的符號組合替換成圖片,比如將:)
替換成?。這種方法很難標準化,能夠表達的範圍也有限。
2010年,Unicode 開始為 Emoji 分配碼點。也就是說,現在的 Emoji 符號就是一個文字,它會被渲染為圖形。
由於越來越受歡迎,Emoji 的國際標準在 2015 年出臺,目前已經是 5.0 版了。
- Emoji 1.0:2015年8月
- Emoji 2.0:2015年11月
- Emoji 3.0:2016年6月
- Emoji 4.0:2016年11月
- Emoji 5.0 (beta):2017年3月
截止2017年4月,列入 Unicode 的 Emoji 共有2389個。
三、渲染實現
Unicode 只是規定了 Emoji 的碼點和含義,並沒有規定它的樣式。舉例來說,碼點U+1F600
表示一張微笑的臉,但是這張臉長什麼樣,則由各個系統自己實現。
因此,當我們輸入這個 Emoji 的時候,並不能保證所有使用者看到的都是同一張臉。如果使用者的系統沒有實現這個 Emoji 符號,使用者就會看到一個沒有內容的方框,因為系統無法渲染這個碼點。
目前,蘋果系統、安卓系統、Twitter、Github、Facebook 都有自己的 Emoji 實現。
四、使用方式
Emoji 雖然是文字,但是無法書寫,必須使用其他方法插入文件。
(1)最簡單的方法當然是複製/貼上,你可以到 getEmoji.com 選中一個 Emoji 貼在自己的文件即可。
(2)另一種方法是透過碼點輸入 Emoji。以 HTML 網頁為例,將碼點U+1F600
寫成 HTML 實體的形式😀
(十進位制)或😀
(十六進位制),就可以插入網頁。碼點到這個頁面查詢。
(3)JavaScript 輸入 Emoji,可以使用 node-emoji 這個庫。
var emoji = require('node-emoji'); // 返回 coffee 的 Emoji emoji.get('coffee'); // 返回文字標籤對應的 Emoji // https://www.webpagefx.com/tools/emoji-cheat-sheet/ emoji.get(':fast_forward:'); // 將文字替換成 Emoji emoji.emojify('I :heart: :coffee:!'); // 隨機返回一個 Emoji emoji.random(); // 查詢 Emoji // 返回結果是一個陣列 emoji.search('cof');
(4)還可以透過 CSS 插入 Emoji。
<link href="https://afeld.github.io/emoji-css/emoji.css" rel="stylesheet"> <i class="em em-baby"></i>
五、Emoji 組合
Unicode 除了使用單個碼點表示 Emoji,還允許多個碼點組合表示一個 Emoji。
其中的一種方式是"零寬度連線符"(ZERO WIDTH JOINER,縮寫 ZWJ)U+200D
。舉例來說,下面是三個 Emoji 的碼點。
- U+1F468:男人
- U+1F469:女人
- U+1F467:女孩
上面三個碼點使用U+200D
連線起來,U+1F468 U+200D U+1F469 U+200D U+1F467
,就會顯示為一個 Emoji ???,表示他們組成的家庭。如果使用者的系統不支援這種方法,就還是顯示為三個獨立的 Emoji ???。
六、趣聞
根據 emojitracker 的調查,全世界最流行的 emoji,第一名是笑出眼淚 ?,第二名是紅心❤️。
日曆的 Emoji ?(U+1F4C5) 在蘋果系統之中,一律是7月17日。這是蘋果公司釋出 iCal 的日子。有人戲稱這個日子是"世界 Emoji 日"。
七、參考連結
(完)