这些emoji表情正则表达式哪里有?

Android(7)
先说结论,在android4.4以前,无法使用像苹果那样的emoji字体样式,最简单的解决方案是使用ImageSpan配合SpannableString,而在4.4及之后的版本,则可以直接采用类似iOS/OSX的方案进行快速渲染。
Apple Color Emoji
表情,最初是从日本的“绘文字”演化过来,在没有正式定下规范之前,日本的三大电信运营商,NTT DoCoMo,au/KDDI,Softbank都各自有一套关于Emoji的编码规范,而且在这个时候,每个Emoji表情对应的表情图片也是没有统一规范的。这时候,应用最广泛的是应该的属于日本软银(Softbank)的Softbank编码了,在iOS系统的早期的版本上,采用的也是这个编码规范。
后来,在2010年10月,随着Unicode6.0的发布,Emoji的编码以及对应的表情图片正式被规范化,核心Emoji表情包含722个Emoji编码。而到了Unicode 7.0(2014年6月发行)之后,更多的Emoji表情被加入了进来,包括一些其他比较偏门的Emoji表情组,例如,,也被编入了Unicode
7.0规范,此时,整个Emoji编码集合已经有大概1000个左右,而在表情图片的规范上,除了我们常见的ios style之外,还有Android Style,Twitter Style等,在,有一份比较详细的Emoji表情列表,包含了不同的表情样式以及对应的编码。
而在iOS系统上,在Unicode 6.0规范出来之前,原来也是采用Softbank编码(iOS 4以及之前版本),而Unicode 6.0规范之后(iOS 5以及之后的版本,或者OSX Lion之后的系统),则改为使用了Unicode编码。
那么,iOS/OSX是怎么把这些Emoji表情渲染出来的呢?
在OSX 10.7之后,OSX引入Color Emoji,这是苹果第一次在自己的桌面操作系统引入Emoji,用户可以直接在Mail或者iMessage之类的客户端直接输入Emoji字符。OSX(其实iOS也是用基本相同的实现)上的实现是通过一个叫做Apple Color Emoji的字体来实现的,这个字体文件被放在了/System/Library/Fonts/Apple
Color Emoji.ttf目录中。关于这个字体的细节,在Typophile中曾经有进行过相关的,最后有工程师使用逆向工程分析了这个字体文件的格式,得出来的结论是,苹果扩展了OpenType标准,在ttf文件中直接嵌入了包含Emoji表情的图片,然后输入的时候通过根据Emoji表情的Unicode编码,找到对应的图片,将表情渲染出来。
国外的程序员总是不用加班,因此他们很有空的研究了Apple Color Emoji的具体实现。前面提到,有工程逆向分析了Apple Color Emoji的采用的技术,下面我们来具体操作一下,最后我们可以提取出Apple
Color Emoji.ttf中的所有Emoji图片,以下的流程来自Typophile的一篇:
安装FontTools,这是一个将ttf文件转换成xml,或者将xml转换成ttf文件的工具,使用python编写,如果已经安装了pip,可以通过pip
install FontTools来安装。上述文章中作者提供了一个FontTools的扩展,叫做sbix_code.zip,之后解压缩,将里面的文件复制到FontTools在python的site-packages目录下,如果是在OSX上,假设你使用的是python
2.7,那一般是在/Library/Python/2.7/site-packages/FontTools目录下。该作者还提供了一个使用的demo:,解压缩之后编辑里面的extractSbixImages.py,修改如下:
#! /usr/bin/env/python
from fontTools.ttLib import TTFont
from os.path import exists, join
from os import makedirs
def main():
f = TTFont(&Apple Color Emoji.ttf&)
if f.has_key(&sbix&):
sbix = f[&sbix&]
for bs in sbix.bitmapSets.itervalues():
setpath = join(&extracted&, &set_%i& % bs.size)
if not exists(setpath):
makedirs(setpath)
print &Writing bitmap set to &%s&& % setpath
for bm in bs.bitmaps.itervalues():
if bm.imageFormatTag is not None:
filename = join(setpath, &%s.png& % bm.glyphName)
pf = file(filename, &wb&)
pf.write(bm.imageData)
pf.close()
print &Font has no sbix table.&
if __name__ == &__main__&:
其中&Apple Color
Emoji.ttf&请改成Apple Color Emoji.ttf这个文件对应的目录
执行脚本,然后我们看到在同目录下多了一个叫做extracted文件夹,里面分别存放着不同分辨率的Emoji表情图片:
set_**目录分辨对应不同的分辨率,可以看出,Apple
Color Emoji.ttf这个字体内嵌了多达8中不同分辨率的Emoji图片,难怪这个字体文件的大小达到了34M。
非常感谢这位程序员的工作,使得我们能够一窥这个字体的大致实现,但是很可惜,这个实现是苹果自己的私有标准,没有合入到OpenType的正式标准中,而苹果官方对这里的实现也没有更多的资料,所以具体的技术标准,目前暂时找不到更加详细的资料。
Google Extension
Google一直以来都是程序员的救星,在Apple Color Emoji推出多年之后,在2013年,Google终于也推出了自己的开源Color Font标准:,Google同样扩展了OpenType的标准,并且提供了一个开源的实现:。Google通过以下方式扩展OpenType,使其支持Color Emoji:
复用在ttf文件结构中的EBDT/EBLC表,直接内嵌Emoji图片的ARGB信息到这两个表当中,根据Google的标准,目前采用的是每个像素24位来存储,以BGRA顺序存储。值得一提的是,在ttf文件中,这两个表本来就是设计用于内嵌图片数据的,用于小分辨率字体的渲染,本来一般每像素只用8位存储,因此只能存储黑白图片,详细可以看下微软的官方,不过在这种情况下,内嵌的图片是未经压缩的。另外一种方法是Google在ttf文件中新增了两个表,叫做CBDT/CBLC,在这两个表中可以存储经过压缩的图片格式,目前只支持PNG这一种格式。
注:ttf文件的格式大致是以表为单位存储各种不同的数据,关于ttf文件的格式,可以查看微软的官方
可以看出,Google的实现大致也苹果的类似,都是内嵌了图片在ttf文件中。而在Google提供的开源实现当中,主要包括以下几个项目的扩展:
freetype的扩展,Google扩展了freetype这个库,使其支持Google的ttf扩展skia,支持freetype扩展之后的字体解析输出cairo,支持了freetype扩展之后的输出,并且对于不能渲染的状况,fallback成使用Xlib作为后端(cairo也是和skia一样的2D矢量绘图库,可以选择多个后端,例如选择OpenGL为后端可以实现硬件加速)
其中,这个项目的freetype以及skia的实现被带入了Android 4.4中,也就是说,在Android 4.4之后的版本,我们终于可以像iOS一样使用Color Emoji Font了!!
Using in Android
上文提到,在Android 4.4之后,Google终于支持了Color Emoji Font,实际上,如果你用的是Google输入法,则可以发现在这个面板上输入到所有Google Style的Emoji表情:
但是,很明显,Google提供的Emoji字体的样式实在是太丑了,很多人还是喜欢原来苹果的Emoji样式:
既然Android 4.4之后新增了Color Emoji Font的支持,根据上面的叙述,我们是否可以自己制作一个iOS Style Emoji字体给我们使用呢,答案当然是可以了,在xda论坛上,已经有人进行了这种,原理是利用OSX中的Apple
Color Emoji.ttf提取出来的图片,然后使用FontTools以及项目中的相关脚本即可生成对应的ttf文件。
由于整个生成过程比较复杂,涉及比较多的依赖,有兴趣的可以看下color-emoji项目中的example的Makefile文件的内容,可以看到每一步是怎么生成的,在这里由于篇幅有限就不再赘述了。根据此方法生成的ttf文件,大家可以在这里
在生成了这个emoji字体文件之后,我们就可以直接在android中使用了,有以下两种方式:
root了手机之后,更改系统的字体配置文件,使其作为系统的默认emoji字体。在TextView中使用setTypeface来设置字体,只要TextView中包含的内容含有emoji指定的unicode编码,就可以直接显示emoji表情了。
对比起使用SpannableString那一套,直接通过setTypeface来显示emoji文字的性能差距究竟有多少呢?接下来我们来简单的测试一下。
在测试用例的选择方面,我们选择一条3000多行的emoji表情字符串,算是一个非常极端例子(每个表情后面跟上一个换行符):
测试基准为,从startActivity开始,到包含表情的Activity的中展示emoji的TextView第一次调用dispatchDraw方法为止所消耗的时间,测试的环境为Nexus
5,Android 5.0,测试10次,计算平均时间:
使用Emoji Font,平均时间为433ms使用SpannableString(不带cache),平均时间为9457ms如果SpannableString带上cache之后,可以省去了重复setSpan的耗时了,此时的平均时间为8357ms
可以看出,Emoji Font比SpannableString的方案快了一个数量级,而且即使带上cache,使用SpannableString出来的效果也没有想象中好,究其原因,或许是由于在绘制时,getSpans操作中的反射消耗了大量时间。
Backport to pre-KitKat
Color Emoji Font是Android4.4才加上的新功能,那对于4.4之前的版本,有没有办法也能使用Emoji Font呢,我想到了两点,但似乎都不大可行:
将skia和freetype带入app中,使用其中的API去解析,然后构建一个Typeface给TextView使用。先不讨论是否可行,首先skia编译出来的so已经是非常大了,skia官方的android app demo中的的libskia_android.so大小达到36M,完全不可能放在普通app中。重造TextView,自行解析emoji符号,不使用SpannableString,而是直接画出来。使用这个方案之后,Emoji Font就不是必须的了,但重造TextView的成本也是太高了。
因此,最终的结论仍然是开头中所说的,在android4.4以前,无法使用像iOS/OSX那样的Emoji Font,最简单的解决方案是使用ImageSpan配合SpannableString,而在4.4及之后的版本,则可以直接采用类似iOS/OSX的方案进行快速渲染。
转载地址:http://ragnraok.github.io/android-emoji-font-method.html
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2385次
排名:千里之外
(2)(1)(1)(2)(2)(1)没有emoji表情,你是不是就不会打字了?--百度百家
没有emoji表情,你是不是就不会打字了?
分享到微信朋友圈
表情使用最多的是呲牙,一年内「呲牙」使用次数超过10亿次,人均至少1次
文:师北宸& 微信公号:数字弥母(digital_meme)
11月16日,牛津辞典宣布了2015年年度单词。但是,这并不是一个严格意义上的单词,因为它是一个Emoji表情,这个表情意味着「喜极而泣」(Face with Tears of Joy)。
再往前推一个月,腾讯发过一份《中国网民表情报告》,报告显示2014年8亿QQ用户中,超过90%在聊天时使用过表情。表情使用最多的是呲牙,一年内「呲牙」使用次数超过10亿次,人均至少1次。几乎每个人都在使用表情与别人沟通。
Emoji表情正在成为席卷全球的文化,过去一年的诸多事实正在催化这个趋势:
o&&&&&& 苹果在今年年初更新的iOS 8.3中,一口气新增了300个表情,推出了六种肤色表情,虽然——比如黄灿灿的肤色根本不像亚洲人,更像辛普森……基于多元性考量,加上了同性夫妻,可是红头发的姑娘们开始表示很没有归属感……——但越来越多的人,在iPhone里玩这些新表情;
o&&&&&& 在10月份更新的iOS 9.1中,苹果又新增了150多种表情,清真寺、犹太礼拜堂、独角兽(因为现在独角兽公司太多的缘故?)、热狗都加了进来;
o&&&&&& 在早前的Windows 10上,微软甚至推出了竖中指的表情,供蓝屏死机之后用户情绪抒发……
o&&&&&& Facebook自2009年推出「赞」按钮之后的六年多时间内,用户只能通过「赞」来表达情绪,今年10月份,Facebook增加了6种表情,终于有了七种情绪可以表达。 表情在用户沟通中的占比也越来越高,Instagram也已经支持用表情来打标签,在它们最近的一份报告里,Instagram称至少有40%的评论里含有表情;而Instagram发布的报告显示,在使用表情最为激进的国家——并不是日本,而是芬兰,其表情使用率更是高达60%。在Instagram这种通过图像进行表达的社交应用里面,表情已经在事实上成为人们沟通的语言了。
Emoji表情的进阶:布朗熊、暴走漫画、阿鸡米德们
Emoji表情并不是智能手机时代才有的新事物。有史可考最早将表情应用在文字沟通中的场景发生日,卡内基梅隆大学的史考特·法尔曼(Scott Fahlman)在大学内部的电子公告板上(也就是最早的在线聊天室)发出了 「:-)」 和「:-)」,因为这一个小小的举动,史考特成为了改变互联网的40个人之一。
在过去很多年里,表情符号逐渐演化出 XD、(^__^) 、:P、( ^_^ )/~~,从1995年开始,日本运营商NTT推出了带有不同表情符号的传呼机,深得年轻人喜爱,表情符号第一次以「杀手级功能」(killing feature)成为核心竞争力,帮助数字设备大卖,这款传呼机也因此获得将近40%的市场份额。
在智能手机普及之后,即时通讯工具成为最广泛使用的应用,让Emoji表情有了广泛的生长土壤。而Line将表情开启了新的阶段:贴图。
布朗熊和可妮兔们成为了移动互联网时代的唐老鸭和米老鼠,除了成为聊天中的贴图,Line给他们拍了动画片,为Line热门游戏当主角,并制作大量线下周边:玩偶、贴纸、实体店,全方位触及粉丝。根据Line在2013年年底的数据,每天Line在全球信息发送量大约有95亿条,其中有15亿到16亿条是贴图,大约占比1/6左右。也就是说,用户发的每六句话中,就有一句是贴图。
Line在表情上的投入也是其它即时通讯应用难以达到的:Line公司内部至少有200人在负责表情的品牌形象的推广、经营和线下实体商品的制作和销售。Line在去年4月份推出了支持网友上传表情贴图的Line Creators Market之后,整个市场积累了10万个表情,而表情销售也成为Line的重要收入来源。
在国内,微信也采取类似的行动——不过步子迈得要小很多。推出了大量官方表情,并开放了第三方投稿,但是仅限在微信聊天中运营,而在贴纸品牌的经营上,并没有看到什么动作。虽然Line在国内使用量不大,因为对布朗熊们的品牌经营,在国内也收获了非常多的粉丝。
微信并没有在贴纸品牌打造上做投入,国内另一家即使通讯应用易信反倒在贴纸品牌上下了不少功夫。一只「又萌又贱」的阿鸡是他们主打的贴图形象,易信为此还拍摄了一系列短片:,从故事场景设定在校园、情节安排了作弊和追女神可以看出来,95后是他们的核心目标受众。
人们印象中国内使用表情贴图的用户更多会在三四线城市、女性居多,但根据易信发布的《表情贴图用户使用数据报告》,实际的数据与人们印象相反:一二线城市比三四线城市更爱使用贴图,男性比女性贴图使用率更高。
贴图是如此地流行,以至于《纽约时报》曾有一篇文章专门探讨在?,报道中,《纽约时报》找到哥伦比亚大学语言学家John McWhorter对男性使用表情这一现象进行分析:
o&&&& 在语言方面女性往往更有表现力,不过女性在语言方面的变化最终也会影响到男性。男性使用表情符号对其而言是有利;
o&&&& Emoji表情符号能够将口语转换为具有表现力的拟人文本,那些傻乎乎的符号实际上为发信人提供了传达语气的工具,「应该有男性化地使用表情符号的方法」。
Emoji表情流行的背后:缓解尴尬 治愈社交恐惧症
很多人或许有过类似的经历:在输入框中敲下一句话,小心翼翼删掉两个字,换了一个词之后,觉得不行,继续删掉,重写,反复几遍,最终这条消息也没发出去。
文字的诞生,让人类拥有了持久记忆——每个人的知识、经验、智慧都可以通过文字传承给后一代,并且拥有了理性的表达符号——使用文字进行交流也是人类区别于其它动物的重要技能。
在文字出现之前,人们正是通过手势、动作以及表情沟通的;在移动互联网时代,Emoji表情在人们沟通中占据了越来越大的比例。在腾讯发布的《中国网民表情报告》中发现,男性使用Emoji表情时更爱用骚贱的表情,而女性更喜欢可爱萌的表情,而易信在《贴图使用报告》中对用户使用表情的背后心理的解释为:
o&&&& 用户使用表情贴图主要为了更形象地传达喜怒哀乐的心情,活跃聊天气氛和缓解聊天中出现的尴尬/紧张场面,快捷回复,或表达敏感/尴尬的请求。 其中要求他人帮忙,邀约陌生人和要求请客是主要的敏感请求,而忙于工作和外出走路是快捷表达的主要场景。
o&&&& 表情贴图达到的沟通效果和对应场景(城市级别差异):一二线城市用户使用贴图的目的性更为明显,或许跟其面临更紧张的社会节奏和要承受更大的社会压力有关:他们工作更为繁忙、更多会议而且更多需要他人的帮忙。
此外,在互联网出现之前,因为沟通工具的匮乏,人们有更多面对面沟通交流的机会,面对面沟通除了通过语言,还可以通过表情、肢体动作乃至肢体接触来帮助交流的双方更好地互相理解与互动,到了互联网时代,在「能通过社交软件交流的绝不见面」的宅文化的蔓延之下,面对面社交的机会大量减少,由此产生了一大批社交恐惧症患者。
曾有一位朋友和我说,他在网络上认识的一个人,聊天的时候几乎每次回复都会带上一个「呲牙」的表情,后来有一次见面,发现这位喜欢「呲牙」咧嘴笑的人非常平静内向不善表达——他其实很有表达欲,只是在「宅」惯了之后,恐怕是更擅长使用手机输入框内的文字和表情来表达自己罢。
麦克卢汉说,媒介即人的延伸,那么Emoji表情何尝不是人类情感表达的延伸?至少,它拯救了那些社交恐惧症患者。:-)
阅读:15759
分享到微信朋友圈
在手机阅读、分享本文
还可以输入250个字
推荐文章RECOMMEND
阅读:7243
阅读:4665
阅读:10万
热门文章HOT NEWS
很多影城经理这个月的KPI任务,通过一部《速8》就已经超额完成了。
娱乐资本论
不执着财经 张平
百度新闻客户端
百度新闻客户端
百度新闻客户端
扫描二维码下载
订阅 "百家" 频道
观看更多百家精彩新闻用好这些Emoji表情,可大幅提高约会成功率
扫描到手机,看更多国搜资讯
您可以用手机或平板电脑的二维码应用拍下左侧二维码,您可以在手机国搜客户端继续浏览本文,并可以分享给你的好友。
核心提示:这家网站除了帮人撮合爱情之外,还会不定期地发布一些非常有趣的数据,让人眼前一亮。迎新年,OkCupid发布了2015年的珍藏大数据分析结果,其中最让人感兴趣的是什么?Emoji表情与你喜欢的人回复消息的速度的关系。
在某些应用程序里,一直以来就存在这个非常重要的问题:如果你想成功约炮,应该用什么Emoji表情呢?根据国外约会网站OkCupid的统计数据,我们现在知道聊天中常用一个表情是可以提高约炮成功率的!
这家网站除了帮人撮合爱情之外,还会不定期地发布一些非常有趣的数据,让人眼前一亮。迎新年,OkCupid发布了2015年的珍藏大数据分析结果,其中最让人感兴趣的是什么?Emoji表情与你喜欢的人回复消息的速度的关系。
根据数据统计,最常用的是这些Emoji:
然而,这些最常用的表情根本没有卵用,你对女神发这些表情,她们根本就不回复你,连一个「呵呵」都得不到。拥有最高回复率的表情是这5个:
值得注意的是,最常用的Emoji表情都是快乐、积极的,但是能得到最多回复的竟然都是一些负面的或悲伤的表情。
虽然没有明确的证据表明用这些表情能直接约到女神见面,但是起码约出来就有机会对不对?而且也与OkCupid的其他数据契合到了一块。
今年1月份,OkCupid还发布了一份针对用户头像资料的数据分析结果。OkCupid的创始人Rudder通过数据统计证明,不笑的照片更容易获得别人的关注。「如果男性拍照的时候不看镜头或者不笑,女性看到他们资料的点击率比看镜头和笑脸的要高。」
「对于女性而言,笑脸照并没有增加点击量,反而是那些对着镜头摆出性感、妖娆的表情能收获更多的点击量。」
从小到大,大人们都告诉我们拍照的时候要喊「茄子」,但是如果你用这一套来找女朋友或男朋友,劝你还是放弃。同理,Emoji表情也一样。
所以有什么好方法吗?交友网站的拍照请不要笑,要点情绪,跟别人聊天的时候也要带点小情绪。多用伤感、悲伤的Emoji可以提高与约会对象交流的机会。
女士交友App的照片,请改为“直视镜头咬嘴唇或嘟嘴”,
以便提高约会成功率。
责任编辑:李楚君
免责声明:
凡发布在本网上的内容,除标注为“中国搜索”或“国搜”的稿件外,其他均转自第三方网站,是为传递更多信息和学习之目的,不意味着本网认可其观点或证实其内容的真实性、准确性。如有意见建议,请点击页面下方的“对国搜说”,欢迎及时反馈。
版权说明:
凡来源标注为“中国搜索”的本网稿件,转载时请注明出处。
互联网热搜词
黄金周哪些景点最受欢迎,会不会被挤成饼干?

我要回帖

更多关于 emoji表情矢量图 的文章

 

随机推荐