一、含义
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 日"。
七、参考链接
(完)
小胡子哥 说:
额,原来评论不支持 emoji 的呀(,,•́.•̀,,)
2017年4月13日 08:11 | # | 引用
刘 说:
我一直搞不清楚,要这个东西有什么用?另外一种语言吗?
2017年4月13日 09:59 | # | 引用
鹏没图案 说:
实现个emoji手写输入法应该是可能的。Google不是发布了AutoDraw嘛
2017年4月13日 10:16 | # | 引用
馒头 说:
讲讲 浏览器的 SVGinOT
2017年4月13日 10:29 | # | 引用
Moo木 说:
很多时候世界是多元的,一句话或者说一个对话场景中,对面的人看见你打字的 “微笑” 和 emoji 真正的笑脸显然是不一样的内心感受的,所以这就是 emoji 的作用,往大说便于沟通,往小了说跟小姐姐聊天你纯纯的打字儿么?发图片表情?这都什么年代了?
2017年4月13日 11:05 | # | 引用
业余草 说:
阮老师可以把自己的博客评论支持emoji的!
2017年4月13日 11:09 | # | 引用
郭腾虎 说:
http://www.typeisbeautiful.com/2016/11/11221/
字谈字畅 035:Kerning Panic·字谈字串(三)
2017年4月13日 11:12 | # | 引用
CODE大全 说:
Emoji表情以拟人化的生动形象,超越国籍和文化,已经成为当下最流行的网络表情。其中,“笑中带泪”的表情更是在去年被牛津词典评为年度词汇。
2017年4月13日 11:26 | # | 引用
teynui 说:
那几张笑脸我一直以为是从QQ的聊天表情中来的,原来已经作为国际标准了
2017年4月13日 12:49 | # | 引用
gaojiren 说:
最主要的是不好看啊,不如QQ的表情经典
2017年4月13日 12:50 | # | 引用
南 靖男 说:
补充一个:MySQL 标准的 utf8 只支持三字节字符,所以不支持保存 emoji 字符。这是导致大多数网站支持 utf8 但不支持 emoji 的主要问题。解决方法是,MySQL 需要使用 utf8mb4。
2017年4月13日 14:42 | # | 引用
牧羊人 说:
很棒的一篇科普文
2017年4月13日 16:12 | # | 引用
victor 说:
多亏看了这篇文章,检查发现用的emoji符号在不同的系统果然表现不同,在界面上改用了图标
2017年4月14日 01:21 | # | 引用
woodong 说:
严格来讲支不支持Emoji需要看字体,对吗?
2017年4月14日 10:00 | # | 引用
tanchao90 说:
重新认识emoji。
有个疑问:由于不同的平台有不同的表情样式,所以同一个表情在不同的平台上,用户看了会不会产生不一样的感受或者信息呢?
2017年4月14日 17:09 | # | 引用
riverli 说:
挺有意思的。
2017年4月16日 17:20 | # | 引用
Showfom 说:
所以建议现在 MySQL 可以用 utf8mb4 编码
2017年4月26日 02:27 | # | 引用
damon 说:
QQ 不是好多年前就有表情包了吗?难道那些不算是 emoji ?怎么会变成苹果普及了的,不明白。
2017年5月 9日 22:55 | # | 引用
管管 说:
2017年5月12日 11:32 | # | 引用
mango3403 说:
用处很大,文字交流往往会造成误会,因为不了解语境。没有emoji表情,会造成很多误会
2017年5月14日 16:23 | # | 引用
sophie 说:
很喜欢SKYPE下的各种moji表情,是简单的动画,感觉比emoji复杂些,但是制作的团队对聊天时候的表情有独到的理解,所以我总能比微信5毛的表情包找到更有意思的情感表达,就是不知道为什么不怎么红。比FB上土到渣的表情要好多。技术我还不怎么懂,有空您看下?
2017年5月17日 14:52 | # | 引用
yukihira 说:
滑稽什么时候能登上世界舞台
2017年5月18日 17:18 | # | 引用
wq 说:
😀
2017年5月19日 18:06 | # | 引用
水八口 说:
绘文字真是好东西,跨越种族跨越国界。我也最喜欢用笑着流泪的表情
2017年5月21日 17:09 | # | 引用
钛客志 说:
以前就想过表情与编码转义的过程,一直没去找到相关的解读,没想到在这看到了,就但是补习一下知识吧
2017年5月21日 22:42 | # | 引用
drink 说:
☺️
2017年6月 6日 11:12 | # | 引用
Mazey 说:
☺️
☺️☺️
☺️☺️☺️
☺️☺️☺️☺️
☺️☺️☺️☺️☺️
☺️☺️☺️☺️☺️☺️
2017年6月27日 16:18 | # | 引用
XXZQ 说:
刚好今天7.17我看到了这篇文章
2017年7月17日 16:55 | # | 引用
极智能 说:
所以数据库如果要存的话要用unicode?
2018年6月15日 21:13 | # | 引用
iver 说:
☺️☺️☺️☺️阮老师的文章通俗易懂
2019年7月13日 15:39 | # | 引用
摩西 说:
U+1F468 U+200D U+1F469 U+200D U+1F467
2020年1月10日 18:28 | # | 引用
asaki 说:
其实也有多码点,且不使用u200d连接的emoji,比如各种国家的旗帜
2022年10月29日 11:46 | # | 引用