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.
Top comments (4)
Thank you for sharing this post. Keep up the great work!
Thank you for reading my post! ๐
That's Funny and insightful๐
We can think about a translator that translates a text to emojis! ๐