Emojificiate, a server-side implementation of web-accessible emoji written in Python

Solving the cross-platform emoji problem

Emojificiate is a server-side implementation of web-accessible emoji written in Python.

Solving the cross-platform emoji problem
Image by : 


Who doesn't enjoy emoji? 😍  Some extra flair to communications can turn a basic message into something just a little bit fancy. ✨

However, as nice as they look on some platforms, not everyone is able to see emoji in the same way. Even though Unicode declares a standard to ensure that characters are strictly defined and are compatible across any system that uses Unicode, they aren't responsible for the design of emoji.

If you have, say, a Windows desktop machine and an iPhone, you'll notice that emoji don't look the same across these two devices. You can see the differences if you check websites like Emojipedia. The differences for characters, such as Sparkles, may not be that confusing, but for characters like Smiling Face With Heart Eyes there are some interesting interpretations across platforms.

Given the evolution of Android-platform emoji from black and white, to side views, to front views, the differences in these emoji can change the interpretation of the symbols. An example of this is the Flushed Face emoji. On Apple, it always looks like an expression of shock ("uh oh") and embarrassment. However, on Android 4.4, it could imply a "naw-shucks" flushed face. If you are sending that emoji from an older Android phone to someone with an Apple device, they won't see the "naww" that you see, and thus may interpret the emoji very differently. Without having any control over the visuals that are used for the characters, the potential for miscommunication is huge.

A study out of the University of Minnesota shows that this issue is not only a cross-platform one but also an inter-platform one. Since this study, one of the characters specifically mentioned, Grinning face with smiling eyes, has been improved on many platforms so that it is observably different from Grimacing face.

On top of this, being able to see the small differences in details is not something all users are able to do. Depending on if you're using mobile or web, and the size of your screen, emoji can be extremely small and hard to see. Allowing some sort of mechanism so the user can see the name of the emoji is great for usability and accessibly.

GitHub's web interface does this by showing the short-code for emoji if a user hovers their mouse over the emoji. However, typically GitHub relies on the native system implementation of the emoji. Twitter's web interface takes this a step further by substituting the emoji character for an embedded image, complete with full descriptive text on the title attribute of the image tag. Furthermore, Twitter uses the alt attribute to store the original character, so if you select the block of text and copy it to your clipboard, the Unicode character is copied. This is a feature of HTML <img> tags, which is a fantastic feature given inline images.

Unfortunately, this entire full-form web accessibly provided by Twitter is not available as open source. Twitter does provide twemoji, a client-side emoji-replacement script, that handles the emoji-to-image replacement, but not the descriptive text. For a client-side script to do this, it would need to have local knowledge of all the descriptions of all emoji, which is several megabytes of data (warning: large file link).

The solution?

Emojificiate is a proof-of-concept, server-side implementation of completely web-accessible emoji, written in Python. It sources its information from the unicodedata module, which is compiled from the Unicode Standard directly. The version used depends on which version of Python is used. The newer the version of Python, the newer the version of Unicode, the more emoji that can brecognizeded. 

In lieu of any script to enable more effective communication of the emoji characters themselves, it's on users of emoji to ensure that their meaning isn't incorrectly assumed by any readers of their communication. By limiting the potential for miscommunication, emoji can add a bit of sparkle to text communication, without taking any meaning away. ✨

Katie McLaughlin will be giving her talk, The Power ⚡️ and Responsibility 😓 of Unicode Adoption ✨ , at OSCON 2017 in Austin, Texas. If you're interested in attending the conference use this discount code when you register, for our readers: PCOS.



"Who doesn't enjoy emoji?"
Me for one. I would much rather receive and send a properly worded communication, without stupid smiley faces and silly abbreviations.

Back in the day when I had a mobile phone (before I got better), rather than sending a text message "Pub tonite?", I would send "Hi John, Are you going to the Royal Oak tonight? I plan to be there about 8:15pm. Hope to see you. Best wishes, Marty".

Vote up!
Vote down!

Hi Marty, Are you going to the Royal Oak tonight? I plan on being there at 20:15. We should hang out. Best wishes, Seth.

Vote up!
Vote down!

Comment now