Skip to content

Latest commit

 

History

History
391 lines (373 loc) · 14.7 KB

symbols.md

File metadata and controls

391 lines (373 loc) · 14.7 KB
layout title
page
Symbol Picker

The search box below uses fuzzy matching. Click/tap on a symbol to copy it to your clipboard.

<script> const symbols = { "⌃": "Up Arrowhead (Control Key)", "⌥": "Option Key", "⇧": "Upwards White Arrow (Shift Key)", "⌘": "Place of Interest Sign (Command Key)", "←": "Leftwards Arrow", "→": "Rightwards Arrow", "↑": "Upwards Arrow", "↓": "Downwards Arrow", "⎋": "Broken Circle with Northwest Arrow (Escape Key)", "⇪": "Upwards White Arrow From Bar (Caps Lock)", "⏎": "Return Symbol", "⏏︎": "Eject Symbol", "⇥": "Righwards Arrow to Bar (Tab Right)", "⇤": "Leftwards Arrow to Bar (Tab Left)", "␣": "Open Box (Space Key)", "⌤": "Up Arrowhead Between Two Horizontal Bars (Enter Key)", "⌦": "Erase to the Right (Forward Delete)", "⌫": "Erase to the Left (Delete)", "↖︎": "North West Arrow (Home)", "↘︎": "South East Arrow (End)", "⇞": "Upwards Arrow with Double Stroke (Page Up)", "⇟": "Downwards Arrow with Double Stroke (Page Down)", "§": "Section Sign", "¶": "Pilcrow Sign (Paragraph)", "•": "Bullet", "ª": "Feminine Ordinal Indicator", "º": "Masculine Ordinal Indicator", "≥": "Greater-Than or Equal To", "≤": "Less-Than or Equal To", "≠": "Not Equal To", "≈": "Almost Equal To", "⨉": "N-ary Times Operator", "×": "Multiplication Sign", "÷": "Division Sign", "√": "Square Root", "−": "Minus Sign", "±": "Plus-Minus Sign", "∑": "N-ary Summation", "Δ": "Greek Capital Letter Delta", "π": "Greek Small Letter Pi", "ε": "Greek Small Letter Epsilon", "α": "Greek Small Letter Alpha", "β": "Greek Small Letter Beta", "θ": "Greek Small Letter Theta", "ɸ": "Greek Small Letter Phi", "σ": "Greek Small Letter Sigma", "∈": "Element Of", "∉": "Not Element Of", "∩": "Intersection", "∪": "Union", "∀": "For All", "∁": "Complement", "∂": "Partial Differential", "℮": "Estimated Symbol", "∃": "There Exists", "∄": "There Does Not Exist", "∅": "Empty Set", "⊂": "Subset Of", "⊃": "Superset Of", "⊄": "Not a Subset Of", "⊅": "Not a Superset Of", "⊆": "Subset Of or Equal To", "⊇": "Superset Of or Equal To", "⊈": "Not a Subset Of or Equal To", "⊉": "Not a Superset Of or Equal To", "⊊": "Subset Of With Not Equal To", "⊋": "Superset Of With Not Equal To", "∋": "Contains as Member", "∌": "Does Not Contain as Member", "∧": "Logical And", "∨": "Logical Or", "≪": "Much Less Than", "≫": "Much Greater Than", "∏": "N-ary Product", "∐": "N-ary Coproduct", "∕": "Division Slash", "∛": "Cube Root", "∟": "Right Angle", "∠": "Angle", "∡": "Measured Angle", "∥": "Parallel To", "∦": "Not Parallel To", "∴": "Therefore", "∵": "Because", "∶": "Ratio", "∷": "Proportion", "∿": "Sine Wave", "≃": "Approximately Equal To", "≅": "Congruent To", "∝": "Proportional To", "⌀": "Diameter Sign", "µ": "Micro Sign", "Ω": "Ohm Sign", "㏀": "Square K Ohm", "㏁": "Square M Ohm", "Σ": "Greek Capital Letter Sigma", "‐": "Hyphen", "–": "En Dash", "—": "Em Dash", "‰": "Per Mille Sign (Per Thousand)", "‱": "Per Ten Thousand Sign", "✄": "Cut Above", "✪": "Circled White Star", "〄": "Japanese Industrial Standard Symbol", "㉿": "Korean Standard Symbol", "⚡︎": "High Voltage Sign", "♻︎": "Recycling Symbol", "ƒ": "Function", "●": "Black Circle", "◼︎": "Black Medium Square", "♪": "Eighth Note", "♫": "Beamed Eighth Notes", "♯": "Music Sharp Sign", "♭": "Music Flat Sign", "♮": "Music Natural Sign", "♩": "Quarter Note", "♬": "Beamed Sixteenth Notes", "𝄞": "Musical Symbol G Clef (Treble Clef)", "𝄢": "Musical Symbol F Clef (Bass Clef)", "𝄡": "Musical Symbol C Clef", "𝄆": "Musical Symbol Left Repeat Sign", "𝄇": "Musical Symbol Right Repeat Sign", "▶︎": "Black Right-Pointing Triangle", "©": "Copyright", "®": "Registered Trademark", "™": "Trademark", "“": "Left Double Quotation Mark", "”": "Right Double Quotation Mark", "‘": "Left Single Quotation Mark", "’": "Right Single Quotation Mark", "⅛": "Fraction One Eighth", "¼": "Fraction One Quarter", "⅜": "Fraction Three Eighths", "½": "Fraction One Half", "⅝": "Fraction Five Eighths", "¾": "Fraction Three Quarter", "⅞": "Fraction Seven Eighths", "⁄": "Fraction Slash", "℀": "Account Of", "℁": "Addressed To The Subject", "℅": "Care Of", "℆": "Cada Una", "∞": "Infinity", "£": "Pound Sign (Currency)", "€": "Euro Sign (Currency)", "¥": "Yen Sign (Currency)", "₩": "Won Sign (Currency)", "¢": "Cent Sign (Currency)", "¤": "Currency Sign", "œ": "Lowercase Ligature OE", "Œ": "Uppercase Ligature OE", "æ": "Lowercase Ligature AE", "Æ": "Uppercase Ligature AE", "‹": "Single Left-Pointing Angle Quotation Mark", "›": "Single Right-Pointing Angle Quotation Mark", "°": "Degree Sign", "℃": "Degree Celcius", "℉": "Degree Fahrenheit", "·": "Middle Dot (interpunct, centered dot)", "‚": "Single Low-9 Quotation Mark", "„": "Double Low-9 Quotation Mark", "№": "Numero Sign", "": "Private Use Area-F8FF (Apple Logo)", "℞": "Prescription Take (Rx)", "✔": "Check Mark (Ballot Check)", "✗": "Ballot X", "☐": "Ballot Box", "☑︎": "Ballot Box With Check", "☒": "Ballot Box With X", "☞": "White Right Pointing Index", "ℹ︎": "Information Source", "☃︎": "Snowman", "♠︎": "Black Spade Suit", "♣︎": "Black Club Suit", "♥︎": "Black Heart Suit", "♦︎": "Black Diamond Suit", "♚": "Black Chess King", "♛": "Black Chess Queen", "♜": "Black Chess Rook", "♝": "Black Chess Bishop", "♞": "Black Chess Knight", "♟": "Black Chess Pawn", "♔": "White Chess King", "♕": "White Chess Queen", "♖": "White Chess Rook", "♗": "White Chess Bishop", "♘": "White Chess Knight", "♙": "White Chess Pawn", "✈︎": "Airplane", "⚓︎": "Anchor", "‼︎": "Double Exclamation Mark", "⁇": "Double Question Mark", "⁈": "Question Exclamation Mark", "⁉︎": "Exclamation Question Mark", "‽": "Interrobang", "⸘": "Inverted Interrobang", "¡": "Inverted Exclamation Mark", "¿": "Inverted Question Mark", "⁰": "Superscript Zero", "¹": "Superscript One", "²": "Superscript Two", "³": "Superscript Three", "⁴": "Superscript Four", "⁵": "Superscript Five", "⁶": "Superscript Six", "⁷": "Superscript Seven", "⁸": "Superscript Eight", "⁹": "Superscript Nine", "ⁱ": "Superscript Small Letter I", "ᵃ": "Superscript Small Letter A", "ᵇ": "Superscript Small Letter B", "ᶜ": "Superscript Small Letter C", "ᵈ": "Superscript Small Letter D", "ᵉ": "Superscript Small Letter E", "ᶠ": "Superscript Small Letter F", "ᵍ": "Superscript Small Letter G", "ʰ": "Superscript Small Letter H", "ⁱ": "Superscript Small Letter I", "ʲ": "Superscript Small Letter J", "ᵏ": "Superscript Small Letter K", "ˡ": "Superscript Small Letter L", "ᵐ": "Superscript Small Letter M", "ⁿ": "Superscript Small Letter N", "ᵒ": "Superscript Small Letter O", "ᵖ": "Superscript Small Letter P", "ʳ": "Superscript Small Letter R", "ˢ": "Superscript Small Letter S", "ᵗ": "Superscript Small Letter T", "ᵘ": "Superscript Small Letter U", "ᵛ": "Superscript Small Letter V", "ʷ": "Superscript Small Letter W", "ˣ": "Superscript Small Letter X", "ʸ": "Superscript Small Letter Y", "ᶻ": "Superscript Small Letter Z", "₀": "Subscript Zero", "₁": "Subscript One", "₂": "Subscript Two", "₃": "Subscript Three", "₄": "Subscript Four", "₅": "Subscript Five", "₆": "Subscript Six", "₇": "Subscript Seven", "₈": "Subscript Eight", "₉": "Subscript Nine", "₊": "Subscript Plus Sign", "₋": "Subscript Minus Sign", "₌": "Subscript Equals Sign", "₍": "Subscript Left Parenthesis", "₎": "Subscript Right Parenthesis", "ₐ": "Subscript Small Letter A", "ₑ": "Subscript Small Letter E", "ₒ": "Subscript Small Letter O", "ₓ": "Subscript Small Letter X", "ₔ": "Subscript Small Letter Schwa", "ₕ": "Subscript Small Letter H", "ₖ": "Subscript Small Letter K", "ₗ": "Subscript Small Letter L", "ₘ": "Subscript Small Letter M", "ₙ": "Subscript Small Letter N", "ₚ": "Subscript Small Letter P", "ₛ": "Subscript Small Letter S", "ₜ": "Subscript Small Letter T", "₊": "Subscript Plus Sign", "₋": "Subscript Minus Sign", "₌": "Subscript Equals Sign", "₍": "Subscript Left Parenthesis", "₎": "Subscript Right Parenthesis", }; document.addEventListener("DOMContentLoaded", () => { const inputElement = document.querySelector('.search'); const clearBtn = document.querySelector('.clear-btn'); inputElement.addEventListener('input', () => { updateMatches(); clearBtn.style.display = inputElement.value ? 'block' : 'none'; }); clearBtn.addEventListener('click', () => { inputElement.value = ''; clearBtn.style.display = 'none'; updateMatches(); }); updateMatches(); }); function fuzzyMatch(haystack, needle) { let haystackIndex = 0; let needleIndex = 0; let haystackIndexLastMatch = -1; let matchGaps = []; haystack = haystack.toLowerCase(); needle = needle.toLowerCase(); while (haystackIndex < haystack.length && needleIndex < needle.length) { if (haystack[haystackIndex] === needle[needleIndex]) { if (haystackIndexLastMatch >= 0) { // `haystackIndex - haystackIndexLastMatch - 1` may overrepresent // the gap between matches due to greedy matching, so we search // backwards to find the actual gap. This correction may be overly // charitable if the haystack has multiple instances of the same // character, but it's well worth the improvement in identifying // exact matches. // // For example, the needle "note" should match "beamed sixteenth // notes" with no gaps, but without this correction there would // be a gap of 4 ("th n"). let gap = haystackIndex - haystackIndexLastMatch - 1; for (let i = haystackIndex - 1; i > haystackIndexLastMatch; i--) { if (haystack[i] === needle[needleIndex - 1]) { gap = haystackIndex - i - 1; break; } } if (gap > 0) { matchGaps.push(gap); } } needleIndex++; haystackIndexLastMatch = haystackIndex; } haystackIndex++; } if (needleIndex !== needle.length) { // No match: not all needle characters were found in sequence return 0; } return 1 / matchGaps.map(gap => Math.log(gap + 1)).reduce((a, b) => a + b, 0); } function updateMatches() { const inputElement = document.querySelector('.search'); const parent = document.querySelector(".symbols"); let filteredSymbols = inputElement.value == "" ? symbols : Object.fromEntries(Object.entries(symbols) .map(([symbol, description]) => [symbol, { description, score: fuzzyMatch(description, inputElement.value) }]) .filter(([symbol, { score }]) => score !== 0) .sort((a, b) => b[1].score - a[1].score) .map(([symbol, { description }]) => [symbol, description])); parent.innerHTML = ""; for (const [symbol, description] of Object.entries(filteredSymbols)) { const elem = document.createElement("div"); elem.classList = "symbol"; elem.textContent = symbol; elem.title = description; elem.addEventListener("click", () => { const symbol = elem.textContent; navigator.clipboard.writeText(symbol); elem.textContent = "Copied!"; elem.classList = "symbol-clicked"; setTimeout(() => { elem.textContent = symbol; elem.classList = "symbol"; }, 1000); }); parent.appendChild(elem); } } </script>