JS Plays With Emojis!
Muhammad MP
Posted on April 26, 2023
Do you see the cover image? I saw that in a post, someone wondered about why it happens as if he had suddenly discovered one of Javascript's hidden features. But what is really happening there?
Let's have some fun with emojis:
const family = 'π¨βπ©βπ§βπ¦'
console.log([...family])
// ['π¨', 'β', 'π©', 'β', 'π§', 'β', 'π¦']
As you see, we have seven elements in the array, not only the member families; We got some emojis glued together with the zero with joiner character.
console.log(family.includes('π¦'))
// do they have a son? returns true!
let familyWithTwoDoughters = family.replace('π¦', 'π§')
// we get this: π¨βπ©βπ§βπ§
Happily this is true not only about family emojis, but also for many emojies we may never use. Here is the technologist emoji (π¨βπ») that is made of π¨ and π»! After googling some stuff, I explored this file on Github:
https://github.com/unicode-org/icu/blob/main/icu4c/source/data/unidata/emoji-zwj-sequences.txt
that contains a long list of them.
An Emoji ZWJ Sequence is a combination of multiple emojis which display as a single emoji on supported platforms.
The formula is to combine multiple emojis using the zero width joiner character:
π¨ + ZWJ + π¬ = π¨βπ¬
π» + ZWJ + β = π»ββοΈ
π + ZWJ + β¬ = πββ¬
You can play with them in Telegram or any other application that supports them. It is not as magical as some people may think and has nothing to do with JS. We can do all of this using PHP, and any programming language supports strings:
$family = 'π¨βπ©βπ§βπ¦';
var_dump(mb_str_split($family));
Thank you.
Posted on April 26, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
August 21, 2023
January 6, 2023