Apple added support for multi-skin tone handshake emojis in 2022, allowing you to go from the old standby of π€ to supporting handshakes like π«±π»βπ«²πΏ. However while these handshake emojis look similar, 1 I'm not sure these look similar for you. To try to make this writeup render consistently I added an emoji rendering fallback font but this may not fix all platforms (and may break others). To toggle that override you can they're actually substantially different.
How they work
Each character (and therefore each emoji) is made up of Unicode codepoints. We can look at the codepoints that make up an emoji by splitting it apart character by character using JavaScript.
[...'π€'].map(c => 'U+' + c.codePointAt(0).toString(16)).join(' ')
π«±π»βπ«²πΏ
From this we can see that the yellow handshake is only one codepoint for the original emoji. The modified color handshake however is actually a composite, composed of five different characters:
U+1FAF1 - π«± (Right-facing hand)U+1F3FB - π» (Fitzpatrick 2 The color modifier names come from the Fitzpatrick scale, a human skin color phenotypal scale created by an American dermatologist in the 1970s (a scale that is often critiqued for its eurocentric bias). 1-2 3 This is "1-2" because while there are 6 categories in the scale, 1 and 2 are so similar that they're combined into the same skin color for emojis (see aforementioned point on bias). )U+200D -ZWJ (Zero-width joiner)U+1FAF2 - π«² (Left-facing hand)U+1F3FF - πΏ (Fitzpatrick 6)
The 'πΊπΈπ¨πΊ'.replace('πΈπ¨', 'π¦π·') == 'πΊπ¦π·πΊ'
Can you figure out why? It's because of country ISO codes: those are the United States and Cuban flags, or US CU. Swapping the Seychelles (SC) for Argentina (AR) yields UA RU, or Ukraine and Russia.
work differently).
Creating new handshakes
Knowing how these are constructed allows us to break out of Apple's UI. Their keyboard lets us pick either the uniformly yellow emoji, or build a hand of two colors. But what if instead of white and black we want yellow and black?
Instead of adding skin modifiers to both hands we can only modify one of them. 6 Or none of them, creating π«±βπ«², which is visually identical to π€ and yet composed of three codepoints instead of one. Some simple JavaScript will then build it back into a single character, allowing us to create two emoji that Apple will render but not let you create. 7 Unfortunately these emojis don't render as large single messages on iOS/macOS. I think this is because Apple thinks it's text rather than emojis, but I'm not sure (or what emoji rendering requirement it might be failing).
console.log('\u{1FAF1}\u{200D}\u{1FAF2}\u{1F3FF}')
π«±βπ«²πΏ
π«±πΏβπ«²
