Skip to content

Instantly share code, notes, and snippets.

@kissge
Created May 29, 2022 04:46
Show Gist options
  • Save kissge/d6bafa466de9198c94f26877999a44dc to your computer and use it in GitHub Desktop.
Save kissge/d6bafa466de9198c94f26877999a44dc to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Emoji check</title>
<style>
/** Color Emoji hack: originally from https://necomesi.jp/blog/tsmd/posts/154 */
@font-face {
font-family: Emoji;
src: local("Segoe UI Emoji"), local("Segoe UI Symbol"),
local("Apple Color Emoji"), local("Noto Color Emoji"),
local("Noto Emoji");
unicode-range: U+A9, U+AE, U+200D, U+203C, U+2049, U+20E3, U+2122,
U+2139, U+2194-2199, U+21A9-21AA, U+231A-231B, U+2328, U+23CF,
U+23E9-23F3, U+23F8-23FA, U+24C2, U+25AA-25AB, U+25B6, U+25C0,
U+25FB-25FE, U+2600-2604, U+260E, U+2611, U+2614-2615, U+2618, U+261D,
U+2620, U+2622-2623, U+2626, U+262A, U+262E-262F, U+2638-263A, U+2640,
U+2642, U+2648-2653, U+2660, U+2663, U+2665-2666, U+2668, U+267B,
U+267F, U+2692-2697, U+2699, U+269B-269C, U+26A0-26A1, U+26AA-26AB,
U+26B0-26B1, U+26BD-26BE, U+26C4-26C5, U+26C8, U+26CE-26CF, U+26D1,
U+26D3-26D4, U+26E9-26EA, U+26F0-26F5, U+26F7-26FA, U+26FD, U+2702,
U+2705, U+2708-270D, U+270F, U+2712, U+2714, U+2716, U+271D, U+2721,
U+2728, U+2733-2734, U+2744, U+2747, U+274C, U+274E, U+2753-2755,
U+2757, U+2763-2764, U+2795-2797, U+27A1, U+27B0, U+27BF, U+2934-2935,
U+2B05-2B07, U+2B1B-2B1C, U+2B50, U+2B55, U+3030, U+303D, U+3297,
U+3299, U+FE0F, U+1F004, U+1F0CF, U+1F170-1F171, U+1F17E-1F17F,
U+1F18E, U+1F191-1F19A, U+1F1E6-1F1FF, U+1F201-1F202, U+1F21A, U+1F22F,
U+1F232-1F23A, U+1F250-1F251, U+1F300-1F321, U+1F324-1F393,
U+1F396-1F397, U+1F399-1F39B, U+1F39E-1F3F0, U+1F3F3-1F3F5,
U+1F3F7-1F4FD, U+1F4FF-1F53D, U+1F549-1F54E, U+1F550-1F567,
U+1F56F-1F570, U+1F573-1F57A, U+1F587, U+1F58A-1F58D, U+1F590,
U+1F595-1F596, U+1F5A4-1F5A5, U+1F5A8, U+1F5B1-1F5B2, U+1F5BC,
U+1F5C2-1F5C4, U+1F5D1-1F5D3, U+1F5DC-1F5DE, U+1F5E1, U+1F5E3, U+1F5E8,
U+1F5EF, U+1F5F3, U+1F5FA-1F64F, U+1F680-1F6C5, U+1F6CB-1F6D2,
U+1F6E0-1F6E5, U+1F6E9, U+1F6EB-1F6EC, U+1F6F0, U+1F6F3-1F6F8,
U+1F910-1F93A, U+1F93C-1F93E, U+1F940-1F945, U+1F947-1F94C,
U+1F950-1F96B, U+1F980-1F997, U+1F9C0, U+1F9D0-1F9E6, U+E0062-E0063,
U+E0065, U+E0067, U+E006C, U+E006E, U+E0073-E0074, U+E0077, U+E007F;
}
@font-face {
font-weight: bold;
font-family: Emoji;
src: local("Segoe UI Emoji"), local("Segoe UI Symbol"),
local("Apple Color Emoji"),
local("Noto Color Emoji") local("Noto Emoji");
unicode-range: U+A9, U+AE, U+200D, U+203C, U+2049, U+20E3, U+2122,
U+2139, U+2194-2199, U+21A9-21AA, U+231A-231B, U+2328, U+23CF,
U+23E9-23F3, U+23F8-23FA, U+24C2, U+25AA-25AB, U+25B6, U+25C0,
U+25FB-25FE, U+2600-2604, U+260E, U+2611, U+2614-2615, U+2618, U+261D,
U+2620, U+2622-2623, U+2626, U+262A, U+262E-262F, U+2638-263A, U+2640,
U+2642, U+2648-2653, U+2660, U+2663, U+2665-2666, U+2668, U+267B,
U+267F, U+2692-2697, U+2699, U+269B-269C, U+26A0-26A1, U+26AA-26AB,
U+26B0-26B1, U+26BD-26BE, U+26C4-26C5, U+26C8, U+26CE-26CF, U+26D1,
U+26D3-26D4, U+26E9-26EA, U+26F0-26F5, U+26F7-26FA, U+26FD, U+2702,
U+2705, U+2708-270D, U+270F, U+2712, U+2714, U+2716, U+271D, U+2721,
U+2728, U+2733-2734, U+2744, U+2747, U+274C, U+274E, U+2753-2755,
U+2757, U+2763-2764, U+2795-2797, U+27A1, U+27B0, U+27BF, U+2934-2935,
U+2B05-2B07, U+2B1B-2B1C, U+2B50, U+2B55, U+3030, U+303D, U+3297,
U+3299, U+FE0F, U+1F004, U+1F0CF, U+1F170-1F171, U+1F17E-1F17F,
U+1F18E, U+1F191-1F19A, U+1F1E6-1F1FF, U+1F201-1F202, U+1F21A, U+1F22F,
U+1F232-1F23A, U+1F250-1F251, U+1F300-1F321, U+1F324-1F393,
U+1F396-1F397, U+1F399-1F39B, U+1F39E-1F3F0, U+1F3F3-1F3F5,
U+1F3F7-1F4FD, U+1F4FF-1F53D, U+1F549-1F54E, U+1F550-1F567,
U+1F56F-1F570, U+1F573-1F57A, U+1F587, U+1F58A-1F58D, U+1F590,
U+1F595-1F596, U+1F5A4-1F5A5, U+1F5A8, U+1F5B1-1F5B2, U+1F5BC,
U+1F5C2-1F5C4, U+1F5D1-1F5D3, U+1F5DC-1F5DE, U+1F5E1, U+1F5E3, U+1F5E8,
U+1F5EF, U+1F5F3, U+1F5FA-1F64F, U+1F680-1F6C5, U+1F6CB-1F6D2,
U+1F6E0-1F6E5, U+1F6E9, U+1F6EB-1F6EC, U+1F6F0, U+1F6F3-1F6F8,
U+1F910-1F93A, U+1F93C-1F93E, U+1F940-1F945, U+1F947-1F94C,
U+1F950-1F96B, U+1F980-1F997, U+1F9C0, U+1F9D0-1F9E6, U+E0062-E0063,
U+E0065, U+E0067, U+E006C, U+E006E, U+E0073-E0074, U+E0077, U+E007F;
}
/** Color Emoji hack: end */
dl {
display: flex;
flex-wrap: wrap;
gap: 1em;
}
td {
padding: 1em;
}
dd {
font-size: 2em;
}
span {
display: inline-block;
font-family: Emoji;
}
</style>
</head>
<body>
<script>
document.write("<table>");
for (const range of "U+A9, U+AE, U+200D, U+203C, U+2049, U+20E3, U+2122, U+2139, U+2194-2199, U+21A9-21AA, U+231A-231B, U+2328, U+23CF, U+23E9-23F3, U+23F8-23FA, U+24C2, U+25AA-25AB, U+25B6, U+25C0, U+25FB-25FE, U+2600-2604, U+260E, U+2611, U+2614-2615, U+2618, U+261D, U+2620, U+2622-2623, U+2626, U+262A, U+262E-262F, U+2638-263A, U+2640, U+2642, U+2648-2653, U+2660, U+2663, U+2665-2666, U+2668, U+267B, U+267F, U+2692-2697, U+2699, U+269B-269C, U+26A0-26A1, U+26AA-26AB, U+26B0-26B1, U+26BD-26BE, U+26C4-26C5, U+26C8, U+26CE-26CF, U+26D1, U+26D3-26D4, U+26E9-26EA, U+26F0-26F5, U+26F7-26FA, U+26FD, U+2702, U+2705, U+2708-270D, U+270F, U+2712, U+2714, U+2716, U+271D, U+2721, U+2728, U+2733-2734, U+2744, U+2747, U+274C, U+274E, U+2753-2755, U+2757, U+2763-2764, U+2795-2797, U+27A1, U+27B0, U+27BF, U+2934-2935, U+2B05-2B07, U+2B1B-2B1C, U+2B50, U+2B55, U+3030, U+303D, U+3297, U+3299, U+FE0F, U+1F004, U+1F0CF, U+1F170-1F171, U+1F17E-1F17F, U+1F18E, U+1F191-1F19A, U+1F1E6-1F1FF, U+1F201-1F202, U+1F21A, U+1F22F, U+1F232-1F23A, U+1F250-1F251, U+1F300-1F321, U+1F324-1F393, U+1F396-1F397, U+1F399-1F39B, U+1F39E-1F3F0, U+1F3F3-1F3F5, U+1F3F7-1F4FD, U+1F4FF-1F53D, U+1F549-1F54E, U+1F550-1F567, U+1F56F-1F570, U+1F573-1F57A, U+1F587, U+1F58A-1F58D, U+1F590, U+1F595-1F596, U+1F5A4-1F5A5, U+1F5A8, U+1F5B1-1F5B2, U+1F5BC, U+1F5C2-1F5C4, U+1F5D1-1F5D3, U+1F5DC-1F5DE, U+1F5E1, U+1F5E3, U+1F5E8, U+1F5EF, U+1F5F3, U+1F5FA-1F64F, U+1F680-1F6C5, U+1F6CB-1F6D2, U+1F6E0-1F6E5, U+1F6E9, U+1F6EB-1F6EC, U+1F6F0, U+1F6F3-1F6F8, U+1F910-1F93A, U+1F93C-1F93E, U+1F940-1F945, U+1F947-1F94C, U+1F950-1F96B, U+1F980-1F997, U+1F9C0, U+1F9D0-1F9E6, U+E0062-E0063, U+E0065, U+E0067, U+E006C, U+E006E, U+E0073-E0074, U+E0077, U+E007F".split(
", "
)) {
const [, fromHex, toHex = fromHex] =
range.match(/U\+([^-]+)(?:-(.+))?/);
const from = Number.parseInt(fromHex, 16);
const to = Number.parseInt(toHex, 16);
document.write("<tr>");
document.write("<th>", range, "</th>");
document.write(
"<td>",
"<dl>",
...Array.from({ length: to - from + 1 }, (_, i) => {
const hex = (i + from).toString(16).toUpperCase();
return (
`<div><dt>U+${hex}</dt>` +
`<dd>&#x${hex}; <span>&#x${hex};</span></dd></div>`
);
}),
"</td>"
);
document.write("</tr>");
}
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment