Code Monkey home page Code Monkey logo

ios-emoji-webpng's Introduction

ios-emoji-webpng

搜狗iOS系统表情跨平台展示解决文案

大概在两年前,在项目中遇到了"用户在iPhone手机上输入iOS系统自带表情时,输入的emoji code在windows浏览器等其他平台下会显示为乱码"的问题,对于UGC内容的显示非常不友好,通过进一步分析发现,不同iOS版本下 emoji code编码规则也比较繁杂,为了解决这一问题,问问在实际项目中探索实现了一套比较完整的将iOS自带emoji code转换为web png跨平台展示的方法,最近iOS和macOS相继发布了新版本,因此现在总结开放出来,希望对大家有帮助,目前已经支持iOS10.2.1、macOS Sierra。

##获取emoji code与emoji web png图片文件之间的映射关系表 将代码下载至本地:

git clone https://github.com/mopduan/ios-emoji-webpng.git

进入ios-emoji-webpng目录执行:

unzip emoji_png.zip

emoji_png.zip包中的表情图片文件是基于github/gemoji,多肤色表情支持基于s0meone/gemoji来导出,非常感谢这两个项目带来的启示!在iOS和macOS后续升级中大家后续可以关注这两个项目。

解压图片完成后再执行:

node ./parse.js

如果执行成功会看到如下结果:

已成功处理表情文件: 1761个

同时会在当前目录下生成一个map.json文件,这个JSON文件包含了emoji code与emoji png格式图片文件名之间的映射关系。

对用户输入内容进行解析

由于某些iOS版本会对部分表情添加\ufe0f编码,并且添加的位置不确定,如果不能精确匹配的话,\ufe0f会在iOS系统下显示一个奇怪的占位符,影响整体内容的展示,因此需要在后端进行预处理,先将内容中的\ufe0f替换为空白字符,再在预处理后的内容中利用map.json生成的映射关系来进行Trie树匹配,也就是需要查找最长emoji code字符串,因为肤色表情文件会有多个,并且有相关的前缀,所以必须在生成map.json之前对映射关系进行降序排列,例如:圣诞老人这个表情,不同肤色的圣诞老人拥有相当的前缀1f385圣诞老人圣诞老人圣诞老人圣诞老人圣诞老人圣诞老人

在线演示

大家可以使用iPhone手机扫描以下二维码,进入演示页面后点击右下角发布按钮,在提问框内输入iOS系统表情,点击发布后即可看到转换效果。

lds


如果ios-emoji-webpng对您有帮助,欢迎打赏:)

欢迎打赏

作者: mop
2016 年 11月 02日

ios-emoji-webpng's People

Contributors

mopduan avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.