NELKINDA SOFTWARE CRAFT

Useful Unicode Characters

Unicode is the standard with the goal to represent all non-fictional characters (aka non-constructed scripts) in use by humans. This article describes some useful Unicode characters called Code Points. This includes a few Emojis as well. They will be especially useful when you're an author of blog articles, books, or frequent user of Slack.

Author:
Christian Hujer, CEO / CTO Nelkinda Software Craft Private Limited
First Published:
by NNelkinda Software Craft Private Limited
Last Modified:
by Christian Hujer
Figure -1: Screenshot of the Unicode Consortium Website

The correct display of information on this page depends heavily on the browser and operating system. See chapter Browsers for more information.

1 What is Unicode?

The Unicode is an international standard that assigns numbers to characters (symbols) for processing text and scripts with computers.

Everyone in the world should be able to use their own language on phones and computers.
Tagline of the Unicode, Inc.

2 Entering Unicode

There are many ways how to enter Unicode characters. Depending on the operating system and program, you can enter Unicode characters by number or with a tool.

In some tools it makes a difference whether a Unicode character is in the BMP, that is the first 65536 Unicode code points, or another plane. There are three types of tools:

2.1 In Vim

BMP / 16 Bit: Ctrl+V,U followed by the 4 hexadecimal digits of the Unicode code point

Other planes / 32 Bit: Ctrl+V,Shift+U followed by the 8 hexadecimal digits of the Unicode code point

For example: To enter the bullet character 'โ€ข' in Vim, press Ctrl+V U 2 0 2 2. To enter the keyboard and mouse symbol '๐Ÿ–ฆ' in Vim, press Ctrl+V Shift+U 0 0 0 1 F 5 A 6.

2.2 In IdeaVim

BMP / 16 Bit: Ctrl+V,U followed by the 4 hexadecimal digits of the Unicode code point

Other planes / 32 Bit: IdeaVim currently does not natively support entering 32 Bit Unicode characters. The shortcut Ctrl+V,Shift+U is accepted and expects 8 hexadecimal digits, but only the last four digits have an effect. It is still possible to enter Unicode characters from the supplementary planes in IdeaVim. For that, one has to convert the code point into a surrogate pair. For example, to enter the keyboard and mouse symbol '๐Ÿ–ฆ' (codepoint 0x1F5A6) in IdeaVim, press Ctrl+V U D 8 3 D Ctrl+V U D D A 6.

2.3 In GTK

All codepoints: Ctrl+Shift+U followed by the hexadecimal digits followed by space

For example: To enter the bullet character in X11, press Ctrl+Shift+U 2 0 2 2 SPACE. To enter the keyboard and mouse symbol in X11, press Ctrl+Shift+U 1 F 5 A 6.

2.4 Plain X11 / KDE / Non-GTK

I'm afraid that plain X11, KDE and other non-GTK applications do not have good support for Unicode input.

3 List of Useful Unicode Code Points

SymbolNameNumber (s)Description
hexdec
โ€ขbullet20228226nicer bullet points than asterisk where proper lists are not available
โ—ฆwhite bullet25e69702nicer second level bullet points than asterisk where proper lists are not available
โ€ฆhorizontal ellipsis20268230for omissions in quotes and continuation
โ‹ฎvertical ellipsis22ee8942for vertical omission; menu icon
โ˜ฐtrigram for heaven26309776menu icon
โ€’figure dash20128210for use with digits when a dash is needed that's neither a minus nor a range. for example in phone numbers like +91โ€’77โ€’12345678
โ€“en dash20138211for ranges
โ€”em dash20148212separation of thoughts
โ€•horizontal bar20158213attribution of source
โ˜ballot box26109744to-do lists
โ˜‘ballot box with check26119745
โ˜’ballot box with x26129746
โŠ•circled plus22958853evaluation lists
โŠšcircled ring229a8858
โŠ–circled minus22968854
ยฉcopyright00a9169legal symbols
ยฎregistered trademark00ae174
โ„ขunregistered trademark21228482
โ‚ฟbitcoin sign20bf8383currencies
$dollar sign2436
โ‚ฌeuro sign20ac8364
โ‚นIndian rupee sign20b98377
ยฃpound signa3163
ยฅyen sign
yuan sign
a5165
โ‡’rightwards double arrow21d28658material implication, conclusion
ร—multiplication signd7215Maths
รทdivision signf7247
โˆžinfinity symbol (lemniscate)221e8734
โš warning sign26a09888Illustration
๐Ÿ—€folder1F5C0128448Directory symbols
๐Ÿ—open folder1F5C1128449
๐Ÿ—Ždocument1F5CE128462
๐Ÿ“งemail1F4E7128231communication
โ˜Žtelephone symbol260e9742
โ˜telephone symbol260f9743
โœ†telephone symbol27069990
โœ‰letter symbol27099993
โ˜phone260f9743
โœ†phone27069990
๐Ÿ‡ช๐Ÿ‡บEurope1F1EA 1F1FA127466 127482Country and Region Flags
๐Ÿ‡ช๐Ÿ‡ธSpain1F1EA 1F1F8127466 127480
๐Ÿ‡ฎ๐Ÿ‡ณIndia1F1EE 1F1F3127470 127475
๐Ÿ‡ฌ๐Ÿ‡งGreat Britain1F1EC 1F1E7127468 127463
๐Ÿ‡ฉ๐Ÿ‡ชGermany1F1E9 1F1EA127465 127466
๐Ÿ‡บ๐Ÿ‡ธUSA1F1FA 1F1F8127482 127480
๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟScotland1F3F4 E0067 E0062 E0073 E0063 E0074 E007F127988 917607 917602 917619 917603 917620 917631
๐Ÿด๓ ค๓ ฅ๓ ข๓ ก๓ น๓ ฟBavaria1F3F4 E0064 E0065 E0062 E0079 E007F127988 917604 917605 917602 917625 917631
๐Ÿดโ€โ˜ ๏ธPirate Flag1F3F4 200D 2620 FE0F127988 8205 9760 65039Miscellaneous Flags
๐Ÿณโ€๐ŸŒˆ๏ธRainbow Flag1F3F3 200D 1F308 FE0F127987 8205 127752 65039
๐ŸงPenguin1F427128039For Linux and animal lovers
๐Ÿช”Diya1FA94129684Diya lamp, for example for Diwali
๐ŸŽ„Christmas Tree1F384127876Tree with lights, for example for Yule (Christmas)
๐ŸงŸZombie1F9DF129503Zombie
๐ŸงŸโ€โ™‚๏ธZombie Male1F9DF 200D 2642 FE0F129503 8205 9794 65039Male Zombie
๐ŸงŸโ€โ™€๏ธZombie Female1F9DF 200D 2640 FE0F129503 8205 9792 65039Female Zombie
๐Ÿง™Mage1F9D9129497Wizard
๐Ÿง™โ€โ™‚๏ธSorcerer1F9D9 200D 2642 FE0F129497 8205 9794 65039Male Wizard
๐Ÿง™โ€โ™€๏ธSorceress1F9D9 200D 2640 FE0F129497 8205 9792 65039Female Wizard
โ˜…Black Star26059733Star Ranking
โ˜†White Star26069734
โญWhite Medium Star2B5011088
โญ‘Black Small Star2B5111089
โญ’White Small Star2B5211090
Table 3-1: Useful Unicode code points and their purpose

4 Rating

One of the things you can do with plain Unicode stars is to create a rating.

Average Rating: โ˜…โ˜…โ˜…โ˜†โ˜†

Rating example
<p>
    Average Rating:
    <span style="color: hsl(45, 100%, 50%);">&#x2605;&#x2605;&#x2605;&#x2606;&#x2606;</span>
</p>
Listing 4-1: Rating example source code

This can also be used in tools like Google Sheets. For example, in a product comparison, one might want to have a column "First Impression" and use a star rating there.

Of course, you may want to go for something more complex in a proper product rating on a website. This can still be useful for stubbing and mockups.

5 Choosing between Text Mode and Emoji Mode

When entering Unicode characters that represent emojis, it is possible to control whether a normal character or an emoji shall be shown. In the Unicode, this is called Variant Selector. The code points FE0E and FE0F can be used after a character to select between text and emoji. If neither of them is present, the software is free to decide.

VariantCode point
HexDecimal
TextFE0E65038
EmojiFE0F65039
Table 5-1: Code points for choosing between text mode and emoji mode

For example, when entering 2611 in Slack, the default behavior of Slack is to replace it with an emoji. When entering 2611 followed by FE0E, the character is selected explicitly, and Slack will no longer replace it with an emoji.

EmojiTextEmoji
Mode
Ballot boxโ˜‘๏ธŽโ˜‘๏ธ
Email๐Ÿ“ง๏ธŽ๐Ÿ“ง๏ธ
Penguin๐Ÿง๏ธŽ๐Ÿง๏ธ
White Medium Star๐’ญ๏ธŽโญ๏ธ
Table 5-2: Examples for emojis with explicitly selected text and emoji modes

Whether software respects the choice can also be influenced by the availability of corresponding fonts, and their correctness.

6 Emoji Gender

Some emojis represent humans, humanoids, or even animals, and exist in forms with multiple genders. Some of these emojis exist via separate code points, which the specification calls explicit gender appearance. For others, it is possible to select the gender by marking the gender using a zero width joiner 200D with an explicit gender marker. The gender markers are based on the astronomical symbols for the planets Venus (female) and Mars (male).

GenderMarker
SymbolHexDecimal
Femaleโ™€๏ธ2640 FE0F9792 65039
Maleโ™‚๏ธ2642 FE0F9794 65039
Table 6-1: Gender markers

The Emoji mode variant selector is important. Without it, some applications might not display the modified emoji, but instead display the gender symbol separately.

Base SymbolMaleFemale
SymbolNameSymbolHexDecimalSymbolHexDecimal
๐ŸงŸZombie๐ŸงŸโ€โ™‚๏ธ1F9DF 200D 2642 FE0F129503 8205 9794 65039๐ŸงŸโ€โ™€๏ธ1F9DF 200D 2640 FE0F129503 8205 9792 65039
๐Ÿง™Mage๐Ÿง™โ€โ™‚๏ธ1F9D9 200D 2642 FE0F129497 8205 9794 65039๐Ÿง™โ€โ™€๏ธ1F9D9 200D 2640 FE0F129497 8205 9792 65039
Table 6-2: Examples for emojis with gender modifiers

7 Emoji Diversity

Emojis which represent humans or human body parts like hands or heads often have a skin color. To represent diversity, emojis can be modified with a skin tone modifier. The skin tone modifier is based on the Fitzpatrick Scale, with the skin types I and II on the Fitzpatrick scale clubbed together.

Fitzpatrick ScaleType-1-2Type-3Type-4Type-5Type-6
NumberHex1F3FB1F3FC1F3FD1F3FE1F3FF
Dec127995127996127997127998127999
Emoji๐Ÿป๐Ÿผ๐Ÿฝ๐Ÿพ๐Ÿฟ
Table 7-1: The Unicode codepoints for the Fitzpatrick scale emoji modifiers

Together with the option of not specifying the skin type, this gives a total of 6 options for specifying the skin type. The skin type modifier is simply used after the emoji of which the skin type is to be modified.

Skin typeEmojiNumber
HexDec
without๐Ÿ‘‹1F44B128075
Type-1-2๐Ÿ‘‹๐Ÿป1F44B 1F3FB128075 127995
Type-3๐Ÿ‘‹๐Ÿผ1F44B 1F3FC128075 127996
Type-4๐Ÿ‘‹๐Ÿฝ1F44B 1F3FD128075 127997
Type-5๐Ÿ‘‹๐Ÿพ1F44B 1F3FE128075 127998
Type-6๐Ÿ‘‹๐Ÿฟ1F44B 1F3FF128075 127999
Table 7-2: Waving hand example for the Fitzpatrick scale emoji modifiers

8 Combining Gender and Diversity

Of course the modifiers for gender and diversity can be combined.

Skin ToneGender
UnspecifiedMaleFemale
Unspecified๐Ÿง™๐Ÿง™โ€โ™‚๏ธ๐Ÿง™โ€โ™€๏ธ
Type-1-2๐Ÿป๐Ÿง™๐Ÿป๐Ÿง™๐Ÿปโ€โ™‚๏ธ๐Ÿง™๐Ÿปโ€โ™€๏ธ
Type-3 ๐Ÿผ๐Ÿง™๐Ÿผ๐Ÿง™๐Ÿผโ€โ™‚๏ธ๐Ÿง™๐Ÿผโ€โ™€๏ธ
Type-4 ๐Ÿฝ๐Ÿง™๐Ÿฝ๐Ÿง™๐Ÿฝโ€โ™‚๏ธ๐Ÿง™๐Ÿฝโ€โ™€๏ธ
Type-5 ๐Ÿพ๐Ÿง™๐Ÿพ๐Ÿง™๐Ÿพโ€โ™‚๏ธ๐Ÿง™๐Ÿพโ€โ™€๏ธ
Type-6 ๐Ÿฟ๐Ÿง™๐Ÿฟ๐Ÿง™๐Ÿฟโ€โ™‚๏ธ๐Ÿง™๐Ÿฟโ€โ™€๏ธ
Table 8-1: Combining Gender and Diversity example: Mage emoji

9 Emoji Flags

9.1 Country Flags

Country flags are a bit special in the Unicode, in multiple ways. First, Unicode doesn't specify flags as such, just a mechanism how to specify flags. Second, flags need two code points instead of one.

Flags are represented by two flag letters. The combination of the two flag letters represents the ISO 3166-1 alpha-2 two-letter country code.

0123456789ABCDEF
U+1F1Ex๐Ÿ‡ฆ๐Ÿ‡ง๐Ÿ‡จ๐Ÿ‡ฉ๐Ÿ‡ช๐Ÿ‡ซ๐Ÿ‡ฌ๐Ÿ‡ญ๐Ÿ‡ฎ๐Ÿ‡ฏ
U+1F1Fx๐Ÿ‡ฐ๐Ÿ‡ฑ๐Ÿ‡ฒ๐Ÿ‡ณ๐Ÿ‡ด๐Ÿ‡ต๐Ÿ‡ถ๐Ÿ‡ท๐Ÿ‡ธ๐Ÿ‡น๐Ÿ‡บ๐Ÿ‡ป๐Ÿ‡ผ๐Ÿ‡ฝ๐Ÿ‡พ๐Ÿ‡ฟ
Table 9-1: Regional indicator symbols for emoji flags

For example, the two-letter country code for Germany is DE. So, the flag for Germany is represented by ๐Ÿ‡ฉ (1F1E9) followed by ๐Ÿ‡ช (1F1EA): ๐Ÿ‡ฉ๐Ÿ‡ช (1F1E9 1F1EA).

CountryEmojiCodepoints
NameCodeSeparateCombinedHexDec
EuropeEU๐Ÿ‡ช ๐Ÿ‡บ๐Ÿ‡ช๐Ÿ‡บ1F1EA 1F1FA127466 127482
GermanyDE๐Ÿ‡ฉ ๐Ÿ‡ช๐Ÿ‡ฉ๐Ÿ‡ช1F1E9 1F1EA127465 127466
IndiaIN๐Ÿ‡ฎ ๐Ÿ‡ณ๐Ÿ‡ฎ๐Ÿ‡ณ1F1EE 1F1F3127470 127475
Table 9-2: Country flag examples

9.2 Region Flags

Regional flags work different from country flags, and they are mostly unsupported (yet?). Regional flags work by taking the black flag ๐Ÿด (1F3F4) and tagging it with the region, without the dash, and all lowercase. The tag sequence must be correctly closed (canceled with E007F cancel tag). The tags for that are in Unicode code page [UnicodeE0000].

RegionEmojiCodepoints
NameCodeHexDec
BavariaDE-BY๐Ÿด๓ ค๓ ฅ๓ ข๓ ธ๓ ฟ1F3F4 E0064 E0065 E0062 E0079 E007F127988 917604 917605 917602 917625 917631
ScotlandGB-SCT๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ1F3F4 E0067 E0062 E0073 E0063 E0074 E007F127988 917607 917602 917619 917603 917620 917631
Table 9-3: Region flag examples

9.3 Combined Flags

It is also possible to create flags by combining the white or black flag with the symbol of choice using the zero-width joiner 200D. This is not very widely supported, except for the pirate flag and the rainbow flag.

FlagCodepoints
NameEmojiHexDec
Pirate Flag๐Ÿดโ€โ˜ ๏ธ1F3F4 200D 2620 FE0F127988 8205 9760 65039
Rainbow Flag๐Ÿณ๏ธโ€๐ŸŒˆ๏ธ1F3F3 FE0F 200D 1F308 FE0F127987 65039 8205 127752 65039
Table 9-4: Combined flag examples

10 Browsers

As noted in the info box at the beginning of this article, the correct display depends on a couple of things. Most notably, it depends on the presence of emoji-fonts and how up-to-date these fonts are.