Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ASCII emoticons #114

Open
Crissov opened this issue Dec 12, 2017 · 2 comments
Open

ASCII emoticons #114

Crissov opened this issue Dec 12, 2017 · 2 comments

Comments

@Crissov
Copy link
Contributor

Crissov commented Dec 12, 2017

Many apps and libraries support the replacement of ASCII emoticons by Unicode emojis or by proprietary graphics that relate to emojis. They do not all agree, to put it mildly.

Is there some authoritative source for the existing mappings in build/data_text_toemoji.txt? Should new ones be added there? Should kaomoji live in the same file?

Note that sometimes new Unicode versions bring emojis that are a better match for character line art.

I'd like to establish some conventions:

Hat or Hair or Horns or Forehead

Char Emoji component
d or q baseball cap
> frowning forehead
= pointy hair
{ hat or wig or curly hair
8 ribbon or glasses
' sweat drop
~ steam or curly hair or single lock
=| tophat
c| cowboy hat
*< or *<| santa hat
O or o or 0 halo
< or <| dunce hat or party hat
( bald
} horns or antlers
] horns
) horns
[ earphones

Eyes

Char Emoji component
: normal
= open
8 glasses or sunglasses
B sunglasses
; winking
p or b eyepatch
X or x closed or laughing
! one closed, squinting or winking
? eyepatch
% drunk
#
+
& monocle?
9
6
3

Cheeks

Char Emoji component
' or , tear drop
" tears or blush
= tears
~ stream of tears

Nose

Char Emoji component
- normal (optional)
* clown
o clown or animal
^ pointy (posh) or long
(:) snout

Upper Lip

Char Emoji component
' or , snot drop
~ stream of snot or blood
{ moustache
. mole

Mouth

Char Emoji component
) smiling or grinning, also default
C or c grinning
D open or laughing
O or o or 0 open
p or P or b sticking tongue out
d or q licking tongue
( frowning or pouting
] smiling or
[ frowning
} smiling
{ pouting
< snout (esp. after -) or pouting
> laughing or grinning
/ or \ confused
S or s or $ trembling or lip-biting
L slightly frowning
* kissing
3 kissing or whistling or smiling strangely
X closed or kissing
B buck teeth
J smirking
| or I straight
<> loudly singing or beak
^ bird beak
V or v or \/ wide open, shouting; or large open beak
# cursing
& tongue-tied
@ shouting, cursing
() animal snout or fat lips
(|) or (I) animal snout
{} kissing or singing or bearded or animal
{|} or {I} animal snout
[] robot
[|] or [I] robot

Neck or Chin

Char Emoji component
= goatee or other beard
3 boobs or wings
8 bowtie or boobs
- goatee or tie
~ drool or vomit
' drool or spit
* drool or spit or blowing kiss
) double chin

Horizontal

Mouth and Nose

Char Emoji component
_ normal mouth (optional)
. small or open mouth
3 kissing or whistling mouth
m frowning mouth

Eyes and Cheeks

Char Emoji component
. eye looking down
^ smiling eye or normal eye
* star eye
@ dizzy or sparkling eye
+ crossed eye
' small eye
° eye
- closed or squinting eye
= almost closed or squinting eye, tired eye
> and < closed eyes
T crying eye
Q crying eye
; eye with tear drop
: eye with tear drop
o open eye
O or 0 wide open eye

Ears, Arms and Accessories

Char Emoji component
\ and / arms raised
d and b headphones
*\ and /* arms raised with hands or pompoms
@iamcal
Copy link
Owner

iamcal commented Dec 20, 2017

the existing mapping is just what i/we came up with manually. they are intended for mapping a user-entered emoticon to an emoji, so are very conservative. for the opposite direction (representing a given emoji in ascii), the map would be a lot more liberal. might be worth adding a new property for that. they also don't need to be unique.

i've been planning (for some time) to add kaomoji as a distinct property, since there's a semi-official mapping as part of the unicode spec draft

@Crissov
Copy link
Contributor Author

Crissov commented Dec 20, 2017

ASCII ↦ Unicode can be n:1. The requirement for Unicode ↦ ASCII should be that the ASCII sequence maps back to the same Unicode emoji. In other words, I believe they need to be unique. Anyway, some of the current mappings don't make sense if expanded.

Current mappings expanded

ASCII Emoji ASCII Emoji ASCII Emoji
💔 </3
❤️ <3 💛 💙 💜 💚
😞 :( 😒
):
:-(
😞 :(
😢 :'( 😭
;-) 😉 ;)
:-p
:-P
:P
:-b
:b
😛 :p
;-p
;-b
;b
;-P
;P
😜 ;p
:*
:-*
😘
8) 😎
:-\
:\
:-/
:/
😕
:-|
:|
😐
:-o
:o
:-O
:O
😮
>:-(
>:(
😠
:o) 🐵
D: 😧
(:
:-)
🙂
😊 :) 🙂
=-)
=)
C:
c:
:-D
😃 :) 🙂
😀 :D 😄 :) 🙂
:>
:->
😆 :laughing: = :satisfied: :D 😄 :) 🙂

Other mappings

Good documentation on existing replacement patterns in instant messengers and elsewhere is often surprisingly hard to find. While Skype, for instance, does list the ASCII emoticons they support, the mapping is to graphics that do not have a documented (and not always unambiguous) mapping to Unicode.

Skype

Skype name ASCII
Angry :@ :-@ :=@ x( x-( x=( X( X- (X=(
Blush :$ :-$ :=$ :">
Cheeky :P :=P :-P :p :=p :-p
Cool 8=) 8-) B=) B-)
Crying ;( ;-( ;=(
Dull |( |-( |=(
Evil grin ]:) >:)
Kiss :* :=* :-*
Laugh :D :=D :-D :d :=d :-d
Lips Sealed :x :-x: X :-X :# :-# :=x :=X :=#
Nerd 8-| B-| 8| B| 8=| B=|
Puke :& :-& :=&
Sad :( :=( :-(
Sleepy |-) I-) I=)
Smile :) :=) :-)
Speechless :| :=| :-|
Surprised :o :=o :-o :O :=O :-O
Sweating (:|
Wink ;) ;-) ;=)
Wondering :^)
Worried :S :-S :=S :s :-s :=s

As for Unicode emoji libraries, Gemoji and Twemoji do not have methods to convert from or to ASCII, whereas Emojione seems to adopt random, uncoordinated choices as well.

Emojione

Code point Char Name Shortname ASCII Keywords
U+2764 ❤️ red heart :heart: <3 heart
U+1F494 💔 broken heart :broken_heart: </3 break, broken
U+1F44D 👍 thumbs up :thumbsup: :+1:, :thumbup: (y) +1, hand, thumb, up
U+1F602 😂 face with tears of joy :joy: :') :'-) face, joy, laugh, tear
U+1F603 😃 smiling face with open mouth :smiley: :D :-D =D face, mouth, open, smile
U+1F605 😅 smiling face with open mouth & cold sweat :sweat_smile: ':) ':-) '=) ':D ':-D '=D cold, face, open, smile, sweat
U+1F606 😆 smiling face with open mouth & closed eyes :laughing:, :satisfied: >:) >;) >:-) >=) face, laugh, mouth, open, satisfied, smile
U+1F607 😇 smiling face with halo :innocent: O:-) 0:-3 0:3 0:-) 0:) 0;^) O:) O;-) O=) 0;-) O:-3 O:3 angel, face, fairy tale, fantasy, halo, innocent, smile
U+1F609 😉 winking face :wink: ;) ;-) *-) *) ;-] ;] ;D ;^) face, wink
U+1F60E 😎 smiling face with sunglasses :sunglasses: B-) B) 8) 8-) B-D 8-D bright, cool, eye, eyewear, face, glasses, smile, sun, sunglasses
U+1F611 😑 expressionless face :expressionless: -_- -__- -___- expressionless, face, inexpressive, unexpressive
U+1F613 😓 face with cold sweat :sweat: ':( ':-( '=( cold, face, sweat
U+1F615 😕 confused face :confused: >:\ >:/ :-/ :-. :/ :\ =/ =\ :L =L confused, face
U+1F618 😘 face blowing a kiss :kissing_heart: :* :-* =* :^* face, kiss
U+1F61B 😛 face with stuck-out tongue :stuck_out_tongue: :P :-P =P :-Þ :Þ :-b :b face, tongue
U+1F61C 😜 face with stuck-out tongue & winking eye :stuck_out_tongue_winking_eye: >:P X-P eye, face, joke, tongue, wink
U+1F61E 😞 disappointed face :disappointed: >:[ :-( :( :-[ :[ =( disappointed, face
U+1F620 😠 angry face :angry: >:( >:-( :@ angry, face, mad
U+1F622 😢 crying face :cry: :'( :'-( ;( ;-( cry, face, sad, tear
U+1F623 😣 persevering face :persevere: >.< face, persevere
U+1F628 😨 fearful face :fearful: D: face, fear, fearful, scared
U+1F62E 😮 face with open mouth :open_mouth: :-O :O O_O >:O face, mouth, open, sympathy
U+1F633 😳 flushed face :flushed: :$ =$ dazed, face, flushed
U+1F635 😵 dizzy face :dizzy_face: #-) #) %-) %) X) X-) dizzy, face
U+1F636 😶 face without mouth :no_mouth: :-X :X :-# :# =X =# face, mouth, quiet, silent
U+1F642 🙂 slightly smiling face :slight_smile:, :slightly_smiling_face: :) :-) =] =) :] face, smile
U+1F646 🙆 person gesturing OK :person_gesturing_ok:, :ok_woman: *\0/* \0/ *\O/* \O/ OK, gesture, hand

Kaomoji

Kaomoji did evolve into something more like drawing where there is a large number of character sequences that essentially represent the same. For starters, while Westerners will usually type ^^ for one of the best-known and simplest ones, East-Asians regularly end up with ^^ (U+FF3E) using full-width forms and others might even input ˆˆ (U+02C6).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants