Unicode characters and emojis.
0
unicode-characters-and-emojis.md
872 lines 30 kB View raw View rendered
1# Unicode Characters & Emojis 2 3A character is an overloaded term that can mean many things. 4This gist will briefly touch on the differences between Code Point, Code Unit, Grapheme and Glyph, with a particular focus on emojis. 5 6### Code Point 7 8A [code point][cp] is the atomic unit of information that consists of a numerical value that maps to a specific character which is given meaning by the [Unicode®︎ Standard][unistd]. 9A code point represent a digit, letter, whitespace, punctuation mark, emoji, symbol, control character, or formatting. 10The text is a sequence of code points. 11 12### Code Unit 13 14A [code unit][cu] is the unit of storage of a part of an encoded code point. 15 16- Some characters are encoded using multiple code units, resulting in a **variable-length** encoding. 17- `UTF-32` is a **fixed width** encoding, hence all code points can be encoded in a single 32-bit code unit. 18 19The following table shows the three most common **character encoding schemes** and their corresponding [word size][word]. 20There are also 5 characters with their respective number of code units for the corresponding encoding. 21 22| Encoding | Word Size | Width Type | A | © | ☃ | 😀 | 👉🏿 | 23| --- | :---: | :---: | --- | --- | --- | --- | --- | 24| UTF-8 | 8-bit | Variable | 1 CU | 2 CU | 3 CU | 4 CU | 8 CU | 25| UTF-16 | 16-bit | Variable | 1 CU | 1 CU | 1 CU | 2 CU | 4 CU | 26| UTF-32 | 32-bit | Fixed | 1 CU | 1 CU | 1 CU | 1 CU | 2 CU | 27 28> [!NOTE] 29> - The character `👉🏿` is a combination of two code points wich requires two 32-bit code units. 30> - `UTF-32` does not always have a 1:1 mapping between code points and what a user perceives as characters. 31 32In **JavaScript**, strings are represented fundamentally as sequences of `UTF-16` code units: 33 34- Every `UTF-16` code unit is exactly 16 bits long. 35- Code units and can be written in a string with `\u` followed by exactly four hex digits. 36- Code points can be written in a string with `\u{xxxxxx}` where `xxxxxx` represents 1–6 hex digits. 37 38The entire Unicode character set is much bigger than what a single `UTF-16` code unit can represent, supplementary characters are encoded as two 16-bit code units called a surrogate pair. 39The length data property of a `String` value counts `UTF-16` code units. 40 41### Grapheme 42 43A [grapheme][grap] is a sequence of one or more code points that are displayed as a single, graphical unit that a reader recognizes as a single element in the context of a particular [writing system][ws]. 44 45- User-perceived characters are referred to as graphemes. 46- Some code points are never part of any grapheme (e.g. the [ZWNJ][zwnj], or [directional overrides][bo]). 47 48The following table shows an example with 3 characters: 49 50| Character | Code Point | Description 51| :---: | ---: | :--- | 52| `ä` | `000E4` | Single code point. | 53| `ä` | `00061 00308` | Base character (`a`), and combining diaeresis (`◌̈`). | 54| `👉🏿` | `1F449 1F3FF` | Backhand index pointing right (`👉`), and dark skin tone (`🏿`). | 55 56> **Note** 57> - The characters `ä` and `ä` are the same grapheme, but have different code points. 58> - The character `👉🏿` is two code points, but is displayed as a single character. 59> - The diaeresis character (`¨`) and the combining diaeresis (`◌̈`) are not the same code point. 60 61In JavaScript, `Intl.Segmenter` is used to split a string into segments at grapheme cluster boundaries, as determined by a specified locale. 62Expand the details below to see a JavaScript example that demonstrates the differences between code point, code unit, and grapheme in different string encodings. 63 64<details> 65<summary>Expand to see an example of code point, code unit, and grapheme.</summary> 66 67```js 68// Backhand Index Pointing Right: Dark Skin Tone. 69const str = '👉🏿'; // 1F449 1F3FF 70console.log('String:', str); 71 72// Split using UTF-8 code units. 73const encoder = new TextEncoder(); 74const encoded = encoder.encode(str); 75const u8_cu = [...encoded].map(byte => byte.toString(16)); 76console.log('UTF-8:', u8_cu); 77// ['f0', '9f', '91', '89', 'f0', '9f', '8f', 'bf'] 78 79// Split using UTF-16 code units. 80// This is the default encoding in JavaScript. 81const u16_cu = str.split(''); 82console.log('UTF-16:', u16_cu); 83// ['\uD83D', '\uDC49', '\uD83C', '\uDFFF'] 84 85// Split using UTF-32 code units. 86// A UTF-32 code unit is always a single code point. 87const u32_cu = Array.from(str); // or [...str] 88console.log('UTF-32:', u32_cu); // ['👉', '🏿'] 89 90// Split using graphemes. 91const segmenter = new Intl.Segmenter(); 92const segment = segmenter.segment(str); 93const graphemes = [...segment].map(x => x.segment); 94console.log('Grapheme:', graphemes); // ['👉🏿'] 95``` 96 97In JavaScript, `String.prototype.split()` and `String.prototype[@@iterator]()` splits the characters of a string in different ways. 98String indexes and `split()` operates by UTF-16 code units, and `@@iterator()` iterates by code points. 99 100</details> 101 102### Glyph 103 104A [glyph][gly] is an image, usually stored in a font (which is a collection of glyphs), used to represent graphemes or parts thereof. 105 106Fonts may compose multiple glyphs into a single representation, for example, if the above `ä` is a single code point, a font may choose to render that as two separate, spatially overlaid glyphs. 107 108For OTF, the font's GSUB and GPOS tables contain substitution and positioning information to make this work. A font may contain multiple alternative glyphs for the same grapheme, too. 109 110### Modifiers & Variation Selectors 111 112[Variation Selectors][vs] (VS) designates a specific block (`FE00`-`FE0F`) within the Unicode character set containing 16 selectors used to specify a glyph variant for a preceding character. 113Certain characters can have variant forms or styles, and variation selectors are used to indicate these variations. 114These selectors are generally applied to base characters to modify their appearance, providing a means to represent different writing styles, scripts, or regional preferences. 115 116Emojis can have diverse presentations, this includes variations in skin tones, genders, or other contextual modifications. 117The following items are the emoji-specific variation selectors. 118 119- The VS-15 (`FE0E`) is used to request a text presentation (monochrome) for an emoji character (`♀︎`). 120- The VS-16 (`FE0F`) is used to request an emoji presentation (polychrome) for an emoji character (`♀️`). 121 122[Skin tone variations][est] are achieved using modifiers from `1F3FB` to `1F3FF` (`🏻🏼🏽🏾🏿`), they are based on the [Fitzpatrick scale][fzs], which is a formal classification of human skin tones. When one of these code points is appended to an emoji that supports skin tone modifiers, it will change the skin tone of the emoji. 123 124<details> 125<summary>Expand to see a table with all skin tones.</summary> 126 127| Character | Code Point | Name | 128| :---: | :---: | :--- | 129| `🏻` | `1F3FB` | Light skin tone. | 130| `🏼` | `1F3FC` | Medium-light skin tone. | 131| `🏽` | `1F3FD` | Medium skin tone. | 132| `🏾` | `1F3FE` | Medium-dark skin tone. | 133| `🏿` | `1F3FF` | Dark skin tone. | 134 135</details> 136 137### Zero Width Joiner 138 139The [zero-width joiner][zwj] (ZWJ) is a non-printing character (`200D`) used in the computerized typesetting of writing systems in which the shape or positioning of a grapheme depends on its relation to other graphemes ([complex scripts][cs]). When placed between two characters that would otherwise not be connected, a ZWJ causes them to be printed in their connected forms. 140 141When a ZWJ is placed between two emoji characters (or interspersed between multiple), it can result in a single glyph or new emoji, such as the family emoji (`👪`), made up of two adult emoji (`👨👩`) and one or two child emoji (`👦`). 142 143> [!NOTE] 144> When not available, the ZWJ characters are ignored and a fallback sequence of separate emoji is displayed. 145> Thus an emoji ZWJ sequence should only be supported where the fallback sequence would also make sense to a viewer. 146> See the [Recommended Emoji ZWJ Sequences][zwjs]. 147 148When working with skin tones, you should be careful with those emojis that consist of two or more emojis joined by the **ZWJ**. 149- Skin tone modifiers must be included after the emoji but before the ZWJ. 150- Some ZWJ sequences include multiple emoji that each have different skin tone modifiers. 151 152<details> 153<summary>Expand to see an example combining characters and skin tones.</summary> 154 155```js 156String.fromCodePoint( 157 0x1FAF1, // Rightwards Hand (🫱) 158 0x1F3FB, // Light skin tone (🏻) 159 0x0200D, // Zero Width Joiner 160 0x1FAF2, // Leftwards Hand (🫲) 161 0x1F3FF, // Dark skin tone (🏿) 162); // Handshake: Light Skin Tone, Dark Skin Tone (🫱🏻‍🫲🏿) 163``` 164 165</details> 166 167## Useful Unicode Characters 168 169<details> 170 171### Mathematical 172 173<details> 174 175<details> 176<summary><h4>Binary operators</h4></summary> 177 178| Grapheme | Code Point | Description | 179| --- | --- | --- | 180| `−` | 2212 | Minus sign 181| `×` | 00D7 | Multiplication sign 182| `÷` | 00F7 | Division sign 183| `⋅` | 22C5 | Dot operator (sdot) 184| `∕` | 2215 | Division slash 185 186</details> 187 188<details> 189<summary><h4>Unary operators</h4></summary> 190 191| Grapheme | Code Point | Description | 192| --- | --- | --- | 193| `√` | 221A | Square root | 194| `∛` | 221B | Cube root | 195| `∜` | 221C | Fourth root | 196| `±` | 00B1 | Plus-minus sign | 197| `∓` | 2213 | Minus-or-plus sign | 198| `′` | 2032 | Prime | 199| `″` | 2033 | Double prime | 200| `‴` | 2034 | Triple prime | 201| `∏` | 220F | N-ary product | 202| `∑` | 2211 | N-ary summation | 203 204</details> 205 206<details> 207<summary><h4>Fractions</h4></summary> 208 209| Grapheme | Code Point | Description | 210| --- | --- | --- | 211| `½` | 00BD | One-half | 212| `⅓` | 2153 | One-third | 213| `⅔` | 2154 | Two-thirds | 214| `¼` | 00BC | One-quarter | 215| `¾` | 00BE | Three-quarters | 216| `⅕` | 2155 | One-fifth | 217| `⅖` | 2156 | Two-fifths | 218| `⅗` | 2157 | Three-fifths | 219| `⅘` | 2158 | Four-fifths | 220| `⅙` | 2159 | One-sixth | 221| `⅚` | 215A | Five-sixths | 222| `⅐` | 2150 | One-seventh | 223| `⅛` | 215B | One-eighth | 224| `⅜` | 215C | Three-eighths | 225| `⅝` | 215D | Five-eighths | 226| `⅞` | 215E | Seven-eighths | 227| `⅑` | 2151 | One-ninth | 228| `⅒` | 2152 | One-tenth | 229| `⅟` | 215F | Fraction numerator one | 230| `⁄` | 2044 | Fraction slash | 231 232</details> 233 234<details> 235<summary><h4>Calculus & Equations</h4></summary> 236 237| Grapheme | Code Point | Description | 238| --- | --- | --- | 239| ∞ | 221E | Infinity | 240| ∂ | 2202 | Partial differential | 241| ∫ | 222B | Integral | 242| ∬ | 222C | Double integral | 243| ∭ | 222D | Triple integral | 244| ⨌ | 2A0C | Quadruple integral | 245| ∮ | 222E | Contour integral | 246| ∯ | 222F | Surface integral | 247| ∰ | 2230 | Volume integral | 248| ∱ | 2231 | Clockwise integral | 249| ∲ | 2232 | Clockwise contour integral | 250| ∳ | 2233 | Anticlockwise contour integral | 251| ∇ | 2207 | Nabla | 252 253</details> 254 255<details> 256<summary><h4>Sets</h4></summary> 257 258| Grapheme | Code Point | Description | 259| --- | --- | --- | 260| `⊂` | 2282 | Subset of | 261| `⊃` | 2283 | Superset of | 262| `⊆` | 2286 | Subset of or equal to | 263| `⊇` | 2287 | Superset of or equal to | 264| `⊄` | 2284 | Not a subset of | 265| `∩` | 2229 | Intersection | 266| `∪` | 222A | Union | 267| `∈` | 2208 | Element of | 268| `∊` | 220A | Small element of | 269| `∉` | 2209 | Not an element of | 270| `∋` | 220B | Contains as member | 271| `∍` | 220D | Small contains as member | 272| `∌` | 220C | Does not contain as member | 273| `∅` | 2205 | Empty set | 274 275</details> 276 277<details> 278<summary><h4>Relationships</h4></summary> 279 280| Grapheme | Code Point | Description | 281| --- | --- | --- | 282| `∝` | 221D | Proportional to | 283| `∣` | 2223 | Divides | 284| `∤` | 2224 | Does not divide | 285| `≃` | 2243 | Asymptotically equal to | 286| `≄` | 2244 | Not asymptotically equal to | 287| `≅` | 2245 | Approximately equal to | 288| `≆` | 2246 | Approximately but not actually equal to | 289| `≇` | 2247 | Neither approximately nor actually equal to | 290| `≈` | 2248 | Almost equal to | 291| `≉` | 2249 | Not almost equal to | 292| `≜` | 225C | Delta equal to | 293| `≝` | 225D | Equal to by definition | 294| `≟` | 225F | Questioned equal to | 295| `≠` | 2260 | Not equal to | 296| `≡` | 2261 | Identical to | 297| `≤` | 2264 | Less-than or equal to | 298| `≥` | 2265 | Greater-than or equal to | 299| `≪` | 226A | Much less-than | 300| `≫` | 226B | Much greater-than | 301 302</details> 303 304<details> 305<summary><h4>Geometry</h4></summary> 306 307| Grapheme | Code Point | Description | 308| --- | --- | --- | 309| `∠` | 2220 | Angle | 310| `∡` | 2221 | Measured angle | 311| `∢` | 2222 | Spherical angle | 312| `⟂` | 27C2 | Perpendicular | 313| `∟` | 221F | Right angle | 314 315</details> 316 317<details> 318<summary><h4>Logic</h4></summary> 319 320| Grapheme | Code Point | Description | 321| --- | --- | --- | 322| `¬` | 00AC | Logical NOT | 323| `∧` | 2227 | Logical AND | 324| `∨` | 2228 | Logical OR | 325| `∎` | 220E | End of proof | 326| `∴` | 2234 | Therefore | 327| `∵` | 2235 | Because | 328| `∀` | 2200 | For all | 329| `∃` | 2203 | There exists | 330| `∄` | 2204 | There does not exists | 331 332</details> 333 334<details> 335<summary><h4>Typography</h4></summary> 336 337| Grapheme | Code Point | Description | 338| --- | --- | --- | 339| ⋮ | 22EE | Vertical ellipsis | 340| ⋯ | 22EF | Horizontal ellipsis | 341| ⋰ | 22F0 | Up right diagonal ellipsis | 342| ⋱ | 22F1 | Down right diagonal ellipsis | 343| ⟨ | 27E8 | Left angle bracket | 344| ⟩ | 27E9 | Right angle bracket | 345| ° | 00B0 | Degree sign | 346 347</details> 348 349<details> 350<summary><h4>Roman Numeral</h4></summary> 351 352| Grapheme | Code Point | Description | 353| --- | --- | --- | 354| `Ⅰ` | 2160 | Roman numeral one | 355| `Ⅱ` | 2161 | Roman numeral two | 356| `Ⅲ` | 2162 | Roman numeral three | 357| `Ⅳ` | 2163 | Roman numeral four | 358| `Ⅴ` | 2164 | Roman numeral five | 359| `Ⅵ` | 2165 | Roman numeral six | 360| `Ⅶ` | 2166 | Roman numeral seven | 361| `Ⅷ` | 2167 | Roman numeral eight | 362| `Ⅸ` | 2168 | Roman numeral nine | 363| `Ⅹ` | 2169 | Roman numeral ten | 364| `Ⅺ` | 216A | Roman numeral eleven | 365| `Ⅻ` | 216B | Roman numeral twelve | 366| `Ⅼ` | 216C | Roman numeral fifty | 367| `Ⅽ` | 216D | Roman numeral one hundred | 368| `Ⅾ` | 216E | Roman numeral five hundred | 369| `Ⅿ` | 216F | Roman numeral one thousand | 370| `ↀ` | 2180 | Roman numeral one thousand C D | 371| `ↁ` | 2181 | Roman numeral five thousand | 372| `ↂ` | 2182 | Roman numeral ten thousand | 373| `ↇ` | 2187 | Roman numeral fifty thousand | 374| `ↈ` | 2188 | Roman numeral one hundred thousand | 375| `ⅰ` | 2170 | Small roman numeral one | 376| `ⅱ` | 2171 | Small roman numeral two | 377| `ⅲ` | 2172 | Small roman numeral three | 378| `ⅳ` | 2173 | Small roman numeral four | 379| `ⅴ` | 2174 | Small roman numeral five | 380| `ⅵ` | 2175 | Small roman numeral six | 381| `ⅶ` | 2176 | Small roman numeral seven | 382| `ⅷ` | 2177 | Small roman numeral eight | 383| `ⅸ` | 2178 | Small roman numeral nine | 384| `ⅹ` | 2179 | Small roman numeral ten | 385| `ⅺ` | 217A | Small roman numeral eleven | 386| `ⅻ` | 217B | Small roman numeral twelve | 387| `ⅼ` | 217C | Small roman numeral fifty | 388| `ⅽ` | 217D | Small roman numeral one hundred | 389| `ⅾ` | 217E | Small roman numeral five hundred | 390| `ⅿ` | 217F | Small roman numeral one thousand | 391| `ↅ` | 2185 | Roman numeral six late form | 392| `ↆ` | 2186 | Roman numeral fifty early form | 393| `Ↄ` | 2183 | Roman numeral reversed one hundred | 394 395</details> 396 397<details> 398<summary><h4>Other</h4></summary> 399 400| Grapheme | Code Point | Description | 401| --- | --- | --- | 402| `μ` | 003BC | Greek small letter MU | 403| `π` | 003C0 | Greek small letter PI | 404| `ℂ` | 02102 | Complex numbers | 405| `ℍ` | 0210D | Hyperbolic plane, quaternions | 406| `ℓ` | 02113 | Script small L | 407| `ℕ` | 02115 | Natural numbers | 408| `𝕆` | 1D546 | Octonions | 409| `ℙ` | 02119 | Prime numbers | 410| `ℚ` | 0211A | Rational numbers | 411| `ℝ` | 0211D | Real numbers | 412| `ℤ` | 02124 | Integers numbers | 413 414</details> 415 416</details> 417 418### Science 419 420<details> 421 422<details> 423<summary><h4>Physics</h4></summary> 424 425| Grapheme | Code Point | Description | 426| --- | --- | --- | 427| `ħ` | 0127 | Reduced Planck constant | 428| `ƛ` | 019B | Reduced wavelength | 429| `Ψ` | 03A8 | Greek capital letter psi | 430| `λ` | 03BB | Greek small letter lambda | 431| `ν` | 03BD | Greek small letter nu | 432| `ψ` | 03C8 | Greek small letter psi | 433| `ω` | 03C9 | Greek small letter omega | 434 435</details> 436 437<details> 438<summary><h4>Chemistry</h4></summary> 439 440| Grapheme | Code Point | Description | 441| --- | --- | --- | 442| `⇌` | 21CC | Equilibrium sign | 443 444</details> 445 446</details> 447 448### Engineering 449 450<details> 451 452| Grapheme | Code Point | Description | 453| --- | --- | --- | 454| `⌭` | 232D | Cylindricity | 455| `Ω` | 03A9 | Omega | 456| `℄` | 2104 | Centre line | 457| `﹊` | FE4A | Centreline overline | 458| `﹎` | FE4E | Centreline low line | 459 460<details> 461<summary><h4>Power Symbols</h4></summary> 462 463| Grapheme | Code Point | Description | 464| --- | --- | --- | 465| `⏻` | 23FB | Power symbol | 466| `⏼` | 23FC | Power on-off | 467| `⏽` | 23FD | Power on | 468| `⭘` | 2B58 | Power off | 469| `⏾` | 23FE | Power sleep | 470 471</details> 472 473</details> 474 475### Financial 476 477<details> 478 479<details> 480<summary><h4>Currency</h4></summary> 481 482| Grapheme | Code Point | Description | 483| --- | --- | --- | 484| `฿` | 0E3F | Thai Baht | 485| `₿` | 20BF | Bitcoin | 486| `¢` | 00A2 | Cent | 487| `¤` | 00A4 | Currency | 488| `$` | 0024 | Dollar | 489| `€` | 20AC | Euro | 490| `₴` | 20B4 | Hryvnia | 491| `₹` | 20B9 | Indian rupee | 492| `₤` | 20A4 | Lira | 493| `₪` | 20AA | New shekel | 494| `₱` | 20B1 | Peso | 495| `₽` | 20BD | Russian ruble | 496| `£` | 00A3 | Sterling pound | 497| `₺` | 20BA | Turkish lira | 498| `₩` | 20A9 | Won | 499| `¥` | 00A5 | Yen (Yuan) | 500 501</details> 502 503<details> 504<summary><h4>Other</h4></summary> 505 506| Grapheme | Code Point | Description | 507| --- | --- | --- | 508| `‰` | 2030 | Per mille | 509| `‱` | 2031 | Per ten thousand | 510 511</details> 512 513</details> 514 515### Box Drawing 516 517<details> 518 519``` 520┌─┬─┐ ╭─┬─╮ ┏━┳━┓ ╔═╦═╗ 521│ │ │ │ │ │ ┃ ┃ ┃ ║ ║ ║ 522├─┼─┤ ╞═╪═╡ ┣━╋━┫ ╠═╬═╣ 523│ │ │ │ │ │ ┃ ┃ ┃ ║ ║ ║ 524└─┴─┘ ╰─┴─╯ ┗━┻━┛ ╚═╩═╝ 525``` 526 527</details> 528 529### Miscellaneous 530 531<details> 532 533<details> 534<summary><h4>Numbers</h4></summary> 535 536| Grapheme | Code Point | Description | 537| --- | --- | --- | 538| `➀` | 2780 | Circled digit one | 539| `➁` | 2781 | Circled digit two | 540| `➂` | 2782 | Circled digit three | 541| `➃` | 2783 | Circled digit four | 542| `➄` | 2784 | Circled digit five | 543| `➅` | 2785 | Circled digit six | 544| `➆` | 2786 | Circled digit seven | 545| `➇` | 2787 | Circled digit eight | 546| `➈` | 2788 | Circled digit nine | 547| `➉` | 2789 | Circled number ten | 548| `❶` | 2776 | Negative circled digit one | 549| `❷` | 2777 | Negative circled digit two | 550| `❸` | 2778 | Negative circled digit three | 551| `❹` | 2779 | Negative circled digit four | 552| `❺` | 277A | Negative circled digit five | 553| `❻` | 277B | Negative circled digit six | 554| `❼` | 277C | Negative circled digit seven | 555| `❽` | 277D | Negative circled digit eight | 556| `❾` | 277E | Negative circled digit nine | 557| `❿` | 277F | Negative circled number ten | 558 559</details> 560 561<details> 562<summary><h4>Design</h4></summary> 563 564| Grapheme | Code Point | Description | 565| --- | --- | --- | 566| `·` | 00B7 | Middle dot | 567| `․` | 2024 | One dot leader | 568| `…` | 2026 | Horizontal ellipsis | 569| `“` | 201C | Left double quotation mark | 570| `”` | 201D | Right double quotation mark | 571| `«` | 00AB | Left-pointing double angle quotation mark | 572| `»` | 00BB | Right-pointing double angle quotation mark | 573| `‹` | 2039 | Single left-pointing angle quotation mark | 574| `›` | 203A | Single right-pointing angle quotation mark | 575| `„` | 201E | Double low-9 quotation mark | 576| `⟨` | 27E8 | Mathematical left angle bracket | 577| `⟩` | 27E9 | Mathematical right angle bracket | 578| `—` | 2014 | General punctuation | 579| `~` | 007E | Basic latin | 580| `※` | 203B | Reference mark | 581 582</details> 583 584<details> 585<summary><h4>Arrows</h4></summary> 586 587| Grapheme | Code Point | Description | 588| --- | --- | --- | 589| `↶` | 21B6 | Anticlockwise top semicircle arrow | 590| `↷` | 21B7 | Clockwise top semicircle arrow | 591| `⮜` | 2B9C | Black leftwards equilateral arrowhead | 592| `⮝` | 2B9D | Black upwards equilateral arrowhead | 593| `⮞` | 2B9E | Black rightwards equilateral arrowhead | 594| `⮟` | 2B9F | Black downwards equilateral arrowhead | 595| `←` | 2190 | Leftwards arrow | 596| `↑` | 2191 | Upwards arrow | 597| `→` | 2192 | Rightwards arrow | 598| `↓` | 2193 | Downwards arrow | 599| `⤩` | 2929 | South east arrow and south west arrow | 600| `⤪` | 292A | South west arrow and north west arrow | 601| `⤧` | 2927 | North west arrow and north east arrow | 602| `⤨` | 2928 | North east arrow and south east arrow | 603| `⤶` | 2936 | Arrow pointing downwards then curving leftwards | 604| `⤷` | 2937 | Arrow pointing downwards then curving rightwards | 605| `⤸` | 2938 | Right-side arc clockwise arrow | 606| `⤹` | 2939 | Left-side arc anticlockwise arrow | 607| `⤺` | 293A | Top arc anticlockwise arrow | 608| `⤻` | 293B | Bottom arc anticlockwise arrow | 609| `⤡` | 2921 | North west and south east arrow | 610| `⤢` | 2922 | North east and south west arrow | 611| `➛` | 279B | Drafting point rightwards arrow | 612| `➝` | 279D | Triangle-headed rightwards arrow | 613| `➞` | 279E | Heavy triangle-headed rightwards arrow | 614| `➟` | 279F | Dashed triangle-headed rightwards arrow | 615| `➜` | 279C | Heavy round-tipped rightwards arrow | 616| `➾` | 27BE | Open-outlined rightwards arrow | 617| `➼` | 27BC | Wedge-tailed rightwards arrow | 618| `➦` | 27A6 | Heavy black curved upwards and rightwards arrow | 619| `➧` | 27A7 | Squat black rightwards arrow | 620| `➥` | 27A5 | Heavy black curved downwards and rightwards arrow | 621| `➤` | 27A4 | Black rightwards arrowhead | 622| `➢` | 27A2 | Three-d top-lighted rightwards arrowhead | 623| `➘` | 2798 | Heavy south east arrow | 624| `➙` | 2799 | Heavy rightwards arrow | 625| `➚` | 279A | Heavy north east arrow | 626| `⇇` | 21C7 | Leftwards paired arrows | 627| `⇈` | 21C8 | Upwards paired arrows | 628| `⇉` | 21C9 | Rightwards paired arrows | 629| `⇊` | 21CA | Downwards paired arrows | 630| `⇶` | 21F6 | Three rightwards arrows | 631| `⇳` | 21F3 | Up down white arrow | 632| `⇱` | 21F1 | North west arrow to corner | 633| `⇲` | 21F2 | South east arrow to corner | 634| `⇤` | 21E4 | Leftwards arrow to bar | 635| `⇥` | 21E5 | Rightwards arrow to bar | 636| `⇽` | 21FD | Leftwards open-headed arrow | 637| `⇾` | 21FE | Rightwards open-headed arrow | 638| `⇿` | 21FF | Left right open-headed arrow | 639| `⇦` | 21E6 | Leftwards white arrow | 640| `⇧` | 21E7 | Upwards white arrow | 641| `⇨` | 21E8 | Rightwards white arrow | 642| `⇩` | 21E9 | Downwards white arrow | 643| `⏴` | 23F4 | Black medium left-pointing triangle | 644| `⏵` | 23F5 | Black medium right-pointing triangle | 645| `⏶` | 23F6 | Black medium up-pointing triangle | 646| `⏷` | 23F7 | Black medium down-pointing triangle | 647| `⇄` | 21C4 | Rightwards arrow over leftwards arrow | 648| `⇆` | 21C6 | Leftwards arrow over rightwards arrow | 649| `⇅` | 21C5 | Upwards arrow leftwards of downwards arrow | 650| `↺` | 21BA | Anticlockwise open circle arrow | 651| `↻` | 21BB | Clockwise open circle arrow | 652 653</details> 654 655<details> 656<summary><h4>Temperature</h4></summary> 657 658| Grapheme | Code Point | Description | 659| --- | --- | --- | 660| `℃` | 2103 | Degree celsius | 661| `℉` | 2109 | Degree fahrenheit | 662| `☆` | 2606 | White star | 663| `★` | 2605 | Black star | 664| `☁` | 2601 | Cloud | 665| `☽` | 263D | First quarter moon | 666 667</details> 668 669<details> 670<summary><h4>Music</h4></summary> 671 672| Grapheme | Code Point | Description | 673| --- | --- | --- | 674| `♩` | 2669 | Quarter note | 675| `♪` | 266A | Eighth note | 676| `♫` | 266B | Beamed eighth notes | 677| `♬` | 266C | Beamed sixteenth notes | 678| `♭` | 266D | Flat sign | 679| `♮` | 266E | Natural sign | 680| `♯` | 266F | Sharp sign | 681| `𝄆` | 1D106 | Left repeat sign | 682| `𝄇` | 1D107 | Right repeat sign | 683| `𝄐` | 1D110 | Fermata | 684| `𝄜` | 1D11C | Six-string fretboard | 685| `𝄞` | 1D11E | G clef | 686| `𝄟` | 1D11F | G clef ottava alta | 687| `𝄠` | 1D120 | G clef ottava bassa | 688| `𝄡` | 1D121 | C clef | 689| `𝄢` | 1D122 | F clef | 690| `𝄣` | 1D123 | F clef ottava alta | 691| `𝄤` | 1D124 | F clef ottava bassa | 692| `𝄥` | 1D125 | Drum clef-1 | 693| `𝄦` | 1D126 | Drum clef-2 | 694| `𝇐` | 1D1D0 | Gregorian c clef | 695| `𝇑` | 1D1D1 | Gregorian f clef | 696| `𝄪` | 1D12A | Double sharp | 697| `𝄫` | 1D12B | Double flat | 698| `𝄴` | 1D134 | Common time | 699| `𝄻` | 1D13B | Whole rest | 700| `𝄼` | 1D13C | Half rest | 701| `𝄽` | 1D13D | Quarter rest | 702| `𝅗` | 1D157 | Void notehead | 703| `𝅘` | 1D158 | Notehead black | 704| `𝆒` | 1D192 | Crescendo | 705 706</details> 707 708<details> 709<summary><h4>Chess</h4></summary> 710 711| Grapheme | Code Point | Description | 712| --- | --- | --- | 713| `♔` | 2654 | White king | 714| `♕` | 2655 | White queen | 715| `♖` | 2656 | White rook | 716| `♗` | 2657 | White bishop | 717| `♘` | 2658 | White knight | 718| `♙` | 2659 | White pawn | 719| `♚` | 265A | Black king | 720| `♛` | 265B | Black queen | 721| `♜` | 265C | Black rook | 722| `♝` | 265D | Black bishop | 723| `♞` | 265E | Black knight | 724| `♟` | 265F | Black pawn | 725 726</details> 727 728<details> 729<summary><h4>Design</h4></summary> 730 731| Grapheme | Code Point | Description | 732| --- | --- | --- | 733| `•` | 2022 | Bullet | 734| `◎` | 25CE | Bullseye | 735| `◉` | 25C9 | Fisheye | 736| `⭘` | 2B58 | Heavy circle and arrows | 737| `✗` | 2717 | Ballot x | 738| `✓` | 2713 | Check mark | 739| `☐` | 2610 | Ballot box | 740| `☑` | 2611 | Ballot box with check | 741| `☒` | 2612 | Ballot box with x | 742| `✎` | 270E | Lower right pencil | 743| `✐` | 2710 | Upper right pencil | 744| `☛` | 261B | Black right pointing index | 745| `✥` | 2725 | Four club-spoked asterisk | 746| `✤` | 2724 | Heavy four balloon-spoked asterisk | 747| `✻` | 273B | Teardrop-spoked asterisk | 748| `✲` | 2732 | Open centre asterisk | 749| `✱` | 2731 | Heavy asterisk | 750 751</details> 752 753<details> 754<summary><h4>Block Elements</h4></summary> 755 756<https://www.unicode.org/charts/PDF/U2580.pdf> 757 758| Grapheme | Code Point | Description | 759| --- | --- | --- | 760| `▀` | 2580 | Upper half block | 761| `▁` | 2581 | Lower one eighth block | 762| `▂` | 2582 | Lower one quarter block | 763| `▃` | 2583 | Lower three eighths block | 764| `▄` | 2584 | Lower half block | 765| `▅` | 2585 | Lower five eighths block | 766| `▆` | 2586 | Lower three quarters block | 767| `▇` | 2587 | Lower seven eighths block | 768| `█` | 2588 | Full block | 769| `▉` | 2589 | Left seven eighths block | 770| `▊` | 258A | Left three quarters block | 771| `▋` | 258B | Left five eighths block | 772| `▌` | 258C | Left half block | 773| `▍` | 258D | Left three eighths block | 774| `▎` | 258E | Left one quarter block | 775| `▏` | 258F | Left one eighth block | 776| `▐` | 2590 | Right half block | 777| `░` | 2591 | Light shade | 778| `▒` | 2592 | Medium shade | 779| `▓` | 2593 | Dark shade | 780| `▔` | 2594 | Upper one eighth block | 781| `▕` | 2595 | Right one eighth block | 782| `▖` | 2596 | Quadrant lower left | 783| `▗` | 2597 | Quadrant lower right | 784| `▘` | 2598 | Quadrant upper left | 785| `▙` | 2599 | Quadrant upper left and lower left and lower right | 786| `▚` | 259A | Quadrant upper left and lower right | 787| `▛` | 259B | Quadrant upper left and upper right and lower left | 788| `▜` | 259C | Quadrant upper left and upper right and lower right | 789| `▝` | 259D | Quadrant upper right | 790| `▞` | 259E | Quadrant upper right and lower left | 791| `▟` | 259F | Quadrant upper right and lower left and lower right | 792 793</details> 794 795<details> 796<summary><h4>Control Pictures</h4></summary> 797 798<https://www.unicode.org/charts/PDF/U2400.pdf> 799 800| Grapheme | Code Point | Description | 801| --- | --- | --- | 802| `␀` | 2400 | Null | 803| `␁` | 2401 | Start of heading | 804| `␂` | 2402 | Start of text | 805| `␃` | 2403 | End of text | 806| `␄` | 2404 | End of transmission | 807| `␅` | 2405 | Enquiry | 808| `␆` | 2406 | Acknowledge | 809| `␇` | 2407 | Bell | 810| `␈` | 2408 | Backspace | 811| `␉` | 2409 | Horizontal tabulation | 812| `␊` | 240A | Line feed | 813| `␋` | 240B | Vertical tabulation | 814| `␌` | 240C | Form feed | 815| `␍` | 240D | Carriage return | 816| `␎` | 240E | Shift out | 817| `␏` | 240F | Shift in | 818| `␐` | 2410 | Data link escape | 819| `␑` | 2411 | Device control one | 820| `␒` | 2412 | Device control two | 821| `␓` | 2413 | Device control three | 822| `␔` | 2414 | Device control four | 823| `␕` | 2415 | Negative acknowledge | 824| `␖` | 2416 | Synchronous idle | 825| `␗` | 2417 | End of transmission bloCK | 826| `␘` | 2418 | Cancel | 827| `␙` | 2419 | End of medium | 828| `␚` | 241A | Substitute | 829| `␛` | 241B | Escape | 830| `␜` | 241C | File separator | 831| `␝` | 241D | Group separator | 832| `␞` | 241E | Record separator | 833| `␟` | 241F | Unit separator | 834| `␠` | 2420 | Space | 835| `␡` | 2421 | Delete | 836| `␢` | 2422 | Blank symbol | 837| `␣` | 2423 | Open box | 838| `␤` | 2424 | Newline | 839| `␥` | 2425 | Delete form two | 840| `␦` | 2426 | Substitute form two | 841 842</details> 843 844</details> 845 846</details> 847 848## Reference 849- <https://devdocs.io/javascript> 850- <https://stackoverflow.com/a/27331885/14822191> 851- <https://css-tricks.com/changing-emoji-skin-tones-programmatically> 852- <https://apps.timwhitlock.info/unicode/inspect> 853- <https://en.wikibooks.org/wiki/Unicode/List_of_useful_symbols> 854 855<!-- REFERENCE LINKS --> 856[cp]: https://en.wikipedia.org/wiki/Code_point 857[cu]: https://en.wikipedia.org/wiki/Character_encoding#Terminology 858[word]: https://en.wikipedia.org/wiki/Word_(computer_architecture) 859[grap]: https://en.wikipedia.org/wiki/Grapheme 860[ws]: https://en.wikipedia.org/wiki/Writing_system 861[zwnj]: https://en.wikipedia.org/wiki/Zero-width_non-joiner "Zero-width non-joiner" 862[bo]: https://en.wikipedia.org/wiki/Bidirectional_text#Overrides 863[gly]: https://en.wikipedia.org/wiki/Glyph 864[vs]: https://en.wikipedia.org/wiki/Variation_Selectors_(Unicode_block) 865[fzs]: https://en.wikipedia.org/wiki/Fitzpatrick_scale "Fitzpatrick scale" 866[est]: https://www.unicode.org/L2/L2014/14173r-emoji-skin-tone.pdf "Selectors for emoji skin tone" 867[cs]: https://en.wikipedia.org/wiki/Complex_text_layout "Complex text layout" 868[zwj]: https://en.wikipedia.org/wiki/Zero-width_joiner 869[zwjs]: https://unicode.org/emoji/charts/emoji-zwj-sequences.html 870[unistd]: https://unicode.org/standard/standard.html 871[str]: https://devdocs.io/javascript/global_objects/string 872[emoji]: https://github.com/flipeador/browser-scripts/tree/main/scripts/emojis
Sign up or login to add to the discussion