Unicode emojis in python-markdown
Took me only four years, but I finally published the first of a bunch of tricks around staticsite I am using: Proudly presenting python-markdown-unicodeemoji 🤩🎉
As the mouthful of a name suggests it is a python-markdown
extension dealing with unicode and emojis. Specifically it searches in the markdown text for
occurrences of shortcodes like :heart:
and <3
and converts them to harder to type and remember
unicode ❤ properly wrapped and annotated so they can be styled with CSS. For the most part
this means specifying a font which can actually display them as most normal fonts aren't
particularly good at it.
The difference between this and most other implementations like mdx_unimoji is that it is not using a) a small hardcoded list of emojis and shortcodes and b) no images involved, just unicode. The shortcodes come from JoyPixels (formerly EmojiOne) and Github as well as the unicode spec. The later means that you can browse for a character with e.g. gucharmap and insert it directly in your text without needing to figure out a shortcode.
Here, have some (the total list would be 3060 emojis currently) in three
variants: no specified variant (default), text and emoji.
Press Ctrl+Shift+I
(or whatever the magic incarnation to open the HTML inspector in your browser is) and
disable the font-override for .emoji
to see how your browser would show them
without which can vary even more than with…
😀 😀︎ 😀️ 😃 😃︎ 😃️ 😄 😄︎ 😄️ 😁 😁︎ 😁️ 😆 😆︎ 😆️ 😅 😅︎ 😅️ 🤣 🤣︎ 🤣️ 😂 😂︎ 😂️ 🙂 🙂︎ 🙂️ 🙃 🙃︎ 🙃️ 😉 😉︎ 😉️ 😊 😊︎ 😊️ 😇 😇︎ 😇️ 🥰 🥰︎ 🥰️ 😍 😍︎ 😍️ 🤩 🤩︎ 🤩️ 😘 😘︎ 😘️ 😗 😗︎ 😗️ ☺ ☺︎ ☺️ 😚 😚︎ 😚️ 😙 😙︎ 😙️ 😋 😋︎ 😋️ 😛 😛︎ 😛️ 😜 😜︎ 😜️ 🤪 🤪︎ 🤪️ 😝 😝︎ 😝️ 🤑 🤑︎ 🤑️ 🤗 🤗︎ 🤗️ 🤭 🤭︎ 🤭️ 🤫 🤫︎ 🤫️ 🤔 🤔︎ 🤔️ 🤐 🤐︎ 🤐️ 🤨 🤨︎ 🤨️ 😐 😐︎ 😐️ 😑 😑︎ 😑️ 😶 😶︎ 😶️ 😏 😏︎ 😏️ 😒 😒︎ 😒️ 🙄 🙄︎ 🙄️ 😬 😬︎ 😬️ 🤥 🤥︎ 🤥️ 😌 😌︎ 😌️ 😔 😔︎ 😔️ 😪 😪︎ 😪️ 🤤 🤤︎ 🤤️ 😴 😴︎ 😴️ 😷 😷︎ 😷️ 🤒 🤒︎ 🤒️ 🤕 🤕︎ 🤕️ 🤢 🤢︎ 🤢️ 🤮 🤮︎ 🤮️ 🤧 🤧︎ 🤧️ 🥵 🥵︎ 🥵️ 🥶 🥶︎ 🥶️ 🥴 🥴︎ 🥴️ 😵 😵︎ 😵️ 🤯 🤯︎ 🤯️ 🤠 🤠︎ 🤠️ 🥳 🥳︎ 🥳️ 😎 😎︎ 😎️ 🤓 🤓︎ 🤓️ 🧐 🧐︎ 🧐️ 😕 😕︎ 😕️ 😟 😟︎ 😟️ 🙁 🙁︎ 🙁️ ☹ ☹︎ ☹️ 😮 😮︎ 😮️ 😯 😯︎ 😯️ 😲 😲︎ 😲️ 😳 😳︎ 😳️ 🥺 🥺︎ 🥺️ 😦 😦︎ 😦️ 😧 😧︎ 😧️ 😨 😨︎ 😨️ 😰 😰︎ 😰️ 😥 😥︎ 😥️ 😢 😢︎ 😢️ 😭 😭︎ 😭️ 😱 😱︎ 😱️ 😖 😖︎ 😖️ 😣 😣︎ 😣️ 😞 😞︎ 😞️ 😓 😓️ 😩 😩︎ 😩️ 😫 😫︎ 😫️ 🥱 🥱︎ 🥱️ 😤 😤︎ 😤️ 😡 😡︎ 😡️ 😠 😠︎ 😠️ 🤬 🤬︎ 🤬️ 😈 😈︎ 😈️ 👿 👿︎ 👿️ 💀 💀︎ 💀️ ☠ ☠︎ ☠️ 💩 💩︎ 💩️ 🤡 🤡︎ 🤡️ 👹 👹︎ 👹️ 👺 👺︎ 👺️ 👻 👻︎ 👻️ 👽 👽︎ 👽️ 👾 👾︎ 👾️ 🤖 🤖︎ 🤖️ 😺 😺︎ 😺️ 😸 😸︎ 😸️ 😹 😹︎ 😹️ 😻 😻︎ 😻️ 😼 😼︎ 😼️ 😽 😽︎ 😽️ 🙀 🙀︎ 🙀️ 😿 😿︎ 😿️ 😾 😾︎ 😾️ 🙈 🙈︎ 🙈️ 🙉 🙉︎ 🙉️ 🙊 🙊︎ 🙊️ 💋 💋︎ 💋️ 💌 💌︎ 💌️ 💘 💘︎ 💘️ 💝 💝︎ 💝️ 💖 💖︎ 💖️ 💗 💗︎ 💗️ 💓 💓︎ 💓️ 💞 💞︎ 💞️ 💕 💕︎ 💕️ 💟 💟︎ 💟️ ❣ ❣︎ ❣️ 💔 💔︎ 💔️ ❤ ❤︎ ❤️ 🧡 🧡︎ 🧡️ 💛 💛︎ 💛️ 💚 💚︎ 💚️ 💙 💙︎ 💙️ 💜 💜︎ 💜️ 🤎 🤎︎ 🤎️ 🖤 🖤︎ 🖤️ 🤍 🤍︎ 🤍️ 💯 💯︎ 💯️ 💢 💢︎ 💢️ 💥 💥︎ 💥️ 💫 💫︎ 💫️ 💦 💦︎ 💦️ 💨 💨︎ 💨️ 🕳 🕳︎ 🕳️ 💣 💣︎ 💣️ 💬 💬︎ 💬️ 👁🗨 👁🗨︎ 👁🗨️ 🗨 🗨︎ 🗨️ 🗯 🗯︎ 🗯️ 💭 💭︎ 💭️ 💤 💤︎ 💤️ 👋 👋︎ 👋️ 👋🏻 👋🏻︎ 👋🏻️ 👋🏼 👋🏼︎ 👋🏼️ 👋🏽 👋🏽︎ 👋🏽️ 👋🏾 👋🏾︎ 👋🏾️ 👋🏿 👋🏿︎ 👋🏿️ 🤚 🤚︎ 🤚️ 🤚🏻 🤚🏻︎ 🤚🏻️ 🤚🏼 🤚🏼︎ 🤚🏼️ 🤚🏽 🤚🏽︎ 🤚🏽️ 🤚🏾 🤚🏾︎ 🤚🏾️ 🤚🏿 🤚🏿︎ 🤚🏿️ 🖐 🖐︎ 🖐️ 🖐🏻 🖐🏻︎ 🖐🏻️ 🖐🏼 🖐🏼︎ 🖐🏼️ 🖐🏽 🖐🏽︎ 🖐🏽️ 🖐🏾 🖐🏾︎ 🖐🏾️ 🖐🏿 🖐🏿︎ 🖐🏿️ ✋ ✋︎ ✋️ ✋🏻 ✋🏻︎ ✋🏻️ ✋🏼 ✋🏼︎ ✋🏼️ ✋🏽 ✋🏽︎ ✋🏽️ ✋🏾 ✋🏾︎ ✋🏾️ ✋🏿 ✋🏿︎ ✋🏿️ 🖖 🖖︎ 🖖️ 🖖🏻 🖖🏻︎ 🖖🏻️ 🖖🏼 🖖🏼︎ 🖖🏼️ 🖖🏽 🖖🏽︎ 🖖🏽️ 🖖🏾 🖖🏾︎ 🖖🏾️ 🖖🏿 🖖🏿︎ 🖖🏿️ 👌 👌︎ 👌️ 👌🏻 👌🏻︎ 👌🏻️ 👌🏼 👌🏼︎ 👌🏼️ 👌🏽 👌🏽︎ 👌🏽️ 👌🏾 👌🏾︎ 👌🏾️ 👌🏿 👌🏿︎ 👌🏿️ 🎅 🎅︎ 🎅️ 🎅🏻 🎅🏻︎ 🎅🏻️ 🎅🏼 🎅🏼︎ 🎅🏼️ 🎅🏽 🎅🏽︎ 🎅🏽️ 🎅🏾 🎅🏾︎ 🎅🏾️ 🎅🏿 🎅🏿︎ 🎅🏿️ 🤶 🤶︎ 🤶️ 🤶🏻 🤶🏻︎ 🤶🏻️ 🤶🏼 🤶🏼︎ 🤶🏼️ 🤶🏽 🤶🏽︎ 🤶🏽️ 🤶🏾 🤶🏾︎ 🤶🏾️ 🤶🏿 🤶🏿︎ 🤶🏿️
I know what you are thinking… I have no smartphone or social media account, so that is probably the reason.