{"id":2021,"date":"2026-05-04T13:30:09","date_gmt":"2026-05-04T13:30:09","guid":{"rendered":"https:\/\/www.fontmirror.com\/en\/?page_id=2021"},"modified":"2026-05-05T02:48:48","modified_gmt":"2026-05-05T02:48:48","slug":"text-generator-copy-paste","status":"publish","type":"page","link":"https:\/\/www.fontmirror.com\/en\/text-generator-copy-paste\/","title":{"rendered":"Text Generator Copy Paste"},"content":{"rendered":"\n<!DOCTYPE html>\n<!-- v3 daymode 92fonts -->\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Fancy Text Generator \u2014 Copy &#038; Paste Fonts<\/title>\n<style>\n*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}\n:root{\n  --bg:#f4f3ff;\n  --surface:#ffffff;\n  --row-bg:#ffffff;\n  --row-alt:#faf9ff;\n  --row-hover:#f0eeff;\n  --border:#e4e0ff;\n  --border-hover:#c4b8ff;\n  --text:#0a0820;\n  --text-muted:#3a2f80;\n  --text-faint:#7060b0;\n  --primary:#7c5cfc;\n  --primary-dark:#5a3dd4;\n  --primary-glow:rgba(124,92,252,0.18);\n  --primary-light:#ede9ff;\n  --accent:#f472b6;\n  --green:#16a34a;\n  --green-bg:#dcfce7;\n  --font:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif;\n  --r:12px;\n  --shadow:0 1px 4px rgba(100,80,200,0.08),0 4px 16px rgba(100,80,200,0.06);\n  --shadow-lg:0 8px 32px rgba(100,80,200,0.14);\n}\nhtml{-webkit-text-size-adjust:none;-webkit-font-smoothing:antialiased}\nbody{font-family:var(--font);background:var(--bg);color:var(--text);min-height:100vh;line-height:1.5}\nbutton{cursor:pointer;font:inherit;border:none;background:none;color:inherit}\n\n\/* \u2500\u2500 HEADER \u2500\u2500 *\/\n.top-bar{\n  background:linear-gradient(135deg,#6a3fcf 0%,#9c5cf6 50%,#c084fc 100%);\n  padding:14px 20px;\n  display:flex;align-items:center;gap:12px;\n  position:sticky;top:0;z-index:100;\n  box-shadow:0 2px 16px rgba(106,63,207,0.3);\n}\n.logo-text{\n  font-size:1.1rem;font-weight:800;letter-spacing:-0.02em;color:#fff;\n}\n.logo-badge{\n  font-size:0.62rem;font-weight:800;\n  padding:2px 8px;border-radius:99px;\n  background:rgba(255,255,255,0.22);\n  color:#fff;letter-spacing:0.06em;text-transform:uppercase;\n  border:1px solid rgba(255,255,255,0.35);\n}\n.header-right{margin-left:auto;font-size:0.72rem;color:rgba(255,255,255,0.95)}\n\n\/* \u2500\u2500 HERO \u2500\u2500 *\/\n.hero{\n  background:linear-gradient(180deg,#7c5cfc 0%,#a78bfa 60%,var(--bg) 100%);\n  padding:36px 20px 32px;\n  text-align:center;\n}\n.hero h1{\n  font-size:clamp(1.4rem,4vw,2.1rem);\n  font-weight:800;letter-spacing:-0.03em;\n  color:#fff;\n  text-shadow:0 2px 12px rgba(0,0,0,0.15);\n  margin-bottom:6px;line-height:1.2;\n}\n.hero p{font-size:0.85rem;color:rgba(255,255,255,0.95);max-width:480px;margin:0 auto}\n\n\/* \u2500\u2500 INPUT SECTION \u2500\u2500 *\/\n.input-section{padding:20px;max-width:720px;margin:0 auto}\n.input-box-wrap{\n  background:var(--surface);\n  border:2px solid var(--border-hover);\n  border-radius:16px;\n  overflow:hidden;\n  box-shadow:var(--shadow-lg);\n  transition:box-shadow .3s,border-color .3s;\n}\n.input-box-wrap:focus-within{\n  border-color:var(--primary);\n  box-shadow:0 0 0 4px var(--primary-glow),var(--shadow-lg);\n}\n.main-textarea{\n  width:100%;padding:18px 20px 12px;\n  background:transparent;border:none;outline:none;\n  color:var(--text);font-size:1.05rem;font-family:inherit;\n  resize:none;min-height:64px;line-height:1.5;\n}\n.main-textarea::placeholder{color:#8878c0}\n.input-footer{\n  display:flex;align-items:center;justify-content:space-between;\n  padding:8px 14px 12px;\n  border-top:1px solid var(--border);\n  gap:10px;flex-wrap:wrap;\n}\n.preset-btns{display:flex;gap:5px;flex-wrap:wrap}\n.preset-btn{\n  font-size:0.7rem;font-weight:700;padding:4px 11px;\n  border-radius:99px;\n  border:1px solid var(--border-hover);\n  color:var(--primary);\n  background:var(--primary-light);\n  transition:all .18s;\n}\n.preset-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary)}\n.input-meta{display:flex;align-items:center;gap:10px;flex-shrink:0}\n.char-count{font-size:0.7rem;color:#5a4e9a}\n.clear-btn{\n  font-size:0.7rem;font-weight:700;padding:4px 12px;\n  border-radius:99px;\n  border:1px solid var(--border-hover);\n  color:var(--text-muted);\n  transition:all .18s;\n}\n.clear-btn:hover{color:var(--primary);border-color:var(--primary)}\n\n\/* \u2500\u2500 CONTROLS \u2500\u2500 *\/\n.controls-bar{\n  max-width:720px;margin:0 auto;\n  padding:0 20px 10px;\n  display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;\n}\n.count-label{font-size:0.75rem;color:#3a2f80;font-weight:600}\n.filter-row{display:flex;gap:5px;flex-wrap:wrap}\n.filter-btn{\n  font-size:0.68rem;font-weight:800;padding:4px 11px;\n  border-radius:99px;\n  border:1px solid var(--border);\n  color:#3a2f80;\n  background:var(--surface);\n  text-transform:uppercase;letter-spacing:0.04em;\n  transition:all .18s;\n}\n.filter-btn:hover{color:var(--primary);border-color:var(--primary)}\n.filter-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 2px 10px var(--primary-glow)}\n\n\/* \u2500\u2500 RESULTS LIST \u2500\u2500 *\/\n.results-wrap{max-width:720px;margin:0 auto;padding:0 20px 60px}\n.results-list{\n  border:1px solid var(--border);\n  border-radius:var(--r);\n  overflow:hidden;\n  box-shadow:var(--shadow);\n}\n.font-row{\n  display:flex;align-items:center;gap:10px;\n  padding:11px 14px;\n  border-bottom:1px solid var(--border);\n  background:var(--row-bg);\n  transition:background .15s;\n}\n.font-row:nth-child(even){background:var(--row-alt)}\n.font-row:last-child{border-bottom:none}\n.font-row:hover{background:var(--row-hover)}\n.row-label{\n  width:100px;flex-shrink:0;\n  font-size:0.62rem;font-weight:800;\n  text-transform:uppercase;letter-spacing:0.05em;\n  color:#5a4e9a;\n  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;\n  line-height:1.3;\n}\n.row-text{\n  flex:1;font-size:0.98rem;line-height:1.6;font-weight:500;\n  color:#0a0820;word-break:break-word;\n  user-select:all;min-height:22px;\n}\n.row-text.empty{color:#6050a0;font-size:0.82rem;font-style:italic}\n.copy-row-btn{\n  flex-shrink:0;width:62px;padding:5px 0;\n  border-radius:8px;\n  background:var(--primary-light);\n  border:1px solid rgba(124,92,252,0.25);\n  font-size:0.7rem;font-weight:800;\n  color:var(--primary);letter-spacing:0.02em;text-align:center;\n  transition:all .18s;\n}\n.copy-row-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 2px 12px var(--primary-glow)}\n.copy-row-btn.done{background:var(--green-bg);color:var(--green);border-color:rgba(22,163,74,0.3)}\n.copy-row-btn:disabled{opacity:0.3;pointer-events:none}\n\n\/* \u2500\u2500 TOAST \u2500\u2500 *\/\n.toast{\n  position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(12px);\n  background:var(--primary);color:#fff;\n  padding:9px 22px;border-radius:10px;\n  font-size:0.82rem;font-weight:800;\n  box-shadow:0 6px 24px rgba(124,92,252,0.4);\n  opacity:0;pointer-events:none;z-index:9999;\n  transition:all .28s cubic-bezier(0.34,1.56,0.64,1);\n  white-space:nowrap;\n}\n.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}\n\n\/* \u2500\u2500 FOOTER \u2500\u2500 *\/\n.footer{\n  text-align:center;padding:16px;font-size:0.72rem;\n  color:#4a3e90;border-top:1px solid var(--border);\n  background:var(--surface);\n}\n\n::-webkit-scrollbar{width:5px}\n::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:99px}\n\n@media(max-width:520px){\n  .row-label{width:70px;font-size:0.58rem}\n  .copy-row-btn{width:50px;font-size:0.65rem}\n  .input-section,.results-wrap,.about{padding-left:12px;padding-right:12px}\n  .controls-bar{padding-left:12px;padding-right:12px}\n}\n\n\/* \u2500\u2500 FEATURED SECTION \u2500\u2500 *\/\n.featured-header,.user-header{\n  display:flex;align-items:center;gap:10px;\n  padding:10px 14px 8px;border-bottom:1px solid var(--border);\n}\n.featured-header{background:linear-gradient(90deg,#ede9ff,#fdf2ff)}\n.user-header{\n  background:linear-gradient(90deg,#f0f9ff,#f8f4ff);\n  border-top:2px solid var(--border-hover);\n}\n.feat-title{font-size:0.62rem;font-weight:900;text-transform:uppercase;letter-spacing:0.1em;color:var(--primary);white-space:nowrap}\n.user-title{font-size:0.62rem;font-weight:900;text-transform:uppercase;letter-spacing:0.1em;color:#4a7ac0;white-space:nowrap}\n.feat-div,.user-div{flex:1;height:1px;background:linear-gradient(90deg,var(--border-hover),transparent)}\n.font-row.feat{background:linear-gradient(90deg,#faf8ff,#fff)!important}\n.font-row.feat:hover{background:linear-gradient(90deg,#ede9ff,#fef6ff)!important}\n.font-row.feat .row-text{font-size:1.08rem;color:#1a0840}\n.font-row.feat .row-label{color:var(--primary)}\n<\/style>\n<\/head>\n<body>\n\n<header class=\"top-bar\">\n  <span class=\"logo-text\">\u2726 Text Generator Copy Paste<\/span>\n  <span class=\"logo-badge\">Free<\/span>\n  <span class=\"header-right\">Copy &amp; Paste Fonts<\/span>\n<\/header>\n\n<section class=\"hero\">\n  <h1>\u2726 Text Generator Copy Paste \u2726<\/h1>\n  <p>Type your text and get 70+ cool Unicode fonts &amp; styles instantly. Works on Instagram, TikTok, WhatsApp &amp; more.<\/p>\n<\/section>\n\n<div class=\"input-section\">\n  <div class=\"input-box-wrap\">\n    <textarea class=\"main-textarea\" id=\"mainInput\" placeholder=\"\u270e  Type to replace the preview below\u2026\" rows=\"2\" maxlength=\"300\" autocomplete=\"off\" spellcheck=\"false\"><\/textarea>\n    <div class=\"input-footer\">\n      <div class=\"preset-btns\" id=\"presets\">\n        <button class=\"preset-btn\" data-text=\"Hello\">Hello<\/button>\n        <button class=\"preset-btn\" data-text=\"Love\">Love<\/button>\n        <button class=\"preset-btn\" data-text=\"My Name\">My Name<\/button>\n        <button class=\"preset-btn\" data-text=\"Good Morning\">Good Morning<\/button>\n        <button class=\"preset-btn\" data-text=\"Happy Birthday\">Happy Birthday<\/button>\n        <button class=\"preset-btn\" data-text=\"Thank You\">Thank You<\/button>\n        <button class=\"preset-btn\" data-text=\"I Love You\">I Love You<\/button>\n        <button class=\"preset-btn\" data-text=\"Welcome\">Welcome<\/button>\n      <\/div>\n      <div class=\"input-meta\">\n        <span class=\"char-count\" id=\"charCount\">0\/300<\/span>\n        <button class=\"clear-btn\" id=\"clearBtn\">\u2715 Clear<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<div class=\"controls-bar\">\n  <span class=\"count-label\" id=\"countLabel\">Showing <strong>70<\/strong> styles<\/span>\n  <div class=\"filter-row\" id=\"filterRow\">\n    <button class=\"filter-btn active\" data-cat=\"all\">All<\/button>\n    <button class=\"filter-btn\" data-cat=\"unicode\">Unicode<\/button>\n    <button class=\"filter-btn\" data-cat=\"emoji\">Emoji<\/button>\n    <button class=\"filter-btn\" data-cat=\"frame\">Frames<\/button>\n    <button class=\"filter-btn\" data-cat=\"combine\">Effects<\/button>\n  <\/div>\n<\/div>\n\n<div class=\"results-wrap\">\n  <div class=\"results-list\" id=\"resultsList\"><\/div>\n<\/div>\n\n\n<footer class=\"footer\">\u2726 FontMirror.com \u2014 Free Text Generator Copy Paste \u00b7 Instagram \u00b7 TikTok \u00b7 WhatsApp \u00b7 Twitter \u00b7 Discord<\/footer>\n<div class=\"toast\" id=\"toast\">\u2713 Copied to clipboard!<\/div>\n\n<script>\nconst UPPER26 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\nconst LOWER26 = 'abcdefghijklmnopqrstuvwxyz';\n\nfunction mkMap(U, L, D) {\n  const m = {};\n  [...UPPER26].forEach((c,i) => m[c] = [...U][i] ?? c);\n  [...LOWER26].forEach((c,i) => m[c] = [...L][i] ?? c);\n  if (D) '0123456789'.split('').forEach((c,i) => m[c] = [...D][i] ?? c);\n  return m;\n}\n\nconst UPSIDE = {'a':'\u0250','b':'q','c':'\u0254','d':'p','e':'\u01dd','f':'\u025f','g':'\u0183','h':'\u0265','i':'\u1d09','j':'\u027e','k':'\u029e','l':'l','m':'\u026f','n':'u','o':'o','p':'d','q':'b','r':'\u0279','s':'s','t':'\u0287','u':'n','v':'\u028c','w':'\u028d','x':'x','y':'\u028e','z':'z','A':'\u2200','B':'\u15fa','C':'\u0186','D':'\u15e1','E':'\u018e','F':'\u15b4','G':'\u05e4','H':'H','I':'I','J':'\u1490','K':'\u029e','L':'\u02e5','M':'W','N':'N','O':'O','P':'\u0500','Q':'Q','R':'\u1d1a','S':'S','T':'\u2534','U':'\u2229','V':'\u039b','W':'M','X':'X','Y':'\u2144','Z':'Z','0':'0','1':'\u0196','2':'\u1105','3':'\u0190','4':'\u152d','5':'\u03db','6':'9','7':'\u3125','8':'8','9':'6',' ':' ','?':'\u00bf','!':'\u00a1'};\nconst SUPER = {'a':'\u1d43','b':'\u1d47','c':'\u1d9c','d':'\u1d48','e':'\u1d49','f':'\u1da0','g':'\u1d4d','h':'\u02b0','i':'\u2071','j':'\u02b2','k':'\u1d4f','l':'\u02e1','m':'\u1d50','n':'\u207f','o':'\u1d52','p':'\u1d56','r':'\u02b3','s':'\u02e2','t':'\u1d57','u':'\u1d58','v':'\u1d5b','w':'\u02b7','x':'\u02e3','y':'\u02b8','z':'\u1dbb','A':'\u1d2c','B':'\u1d2e','D':'\u1d30','E':'\u1d31','G':'\u1d33','H':'\u1d34','I':'\u1d35','J':'\u1d36','K':'\u1d37','L':'\u1d38','M':'\u1d39','N':'\u1d3a','O':'\u1d3c','P':'\u1d3e','R':'\u1d3f','T':'\u1d40','U':'\u1d41','W':'\u1d42','0':'\u2070','1':'\u00b9','2':'\u00b2','3':'\u00b3','4':'\u2074','5':'\u2075','6':'\u2076','7':'\u2077','8':'\u2078','9':'\u2079'};\nconst SUB = {'a':'\u2090','e':'\u2091','o':'\u2092','x':'\u2093','i':'\u1d62','u':'\u1d64','v':'\u1d65','0':'\u2080','1':'\u2081','2':'\u2082','3':'\u2083','4':'\u2084','5':'\u2085','6':'\u2086','7':'\u2087','8':'\u2088','9':'\u2089'};\n\n\/\/ bold script map for reuse\nconst BS = mkMap('\ud835\udcd0\ud835\udcd1\ud835\udcd2\ud835\udcd3\ud835\udcd4\ud835\udcd5\ud835\udcd6\ud835\udcd7\ud835\udcd8\ud835\udcd9\ud835\udcda\ud835\udcdb\ud835\udcdc\ud835\udcdd\ud835\udcde\ud835\udcdf\ud835\udce0\ud835\udce1\ud835\udce2\ud835\udce3\ud835\udce4\ud835\udce5\ud835\udce6\ud835\udce7\ud835\udce8\ud835\udce9','\ud835\udcea\ud835\udceb\ud835\udcec\ud835\udced\ud835\udcee\ud835\udcef\ud835\udcf0\ud835\udcf1\ud835\udcf2\ud835\udcf3\ud835\udcf4\ud835\udcf5\ud835\udcf6\ud835\udcf7\ud835\udcf8\ud835\udcf9\ud835\udcfa\ud835\udcfb\ud835\udcfc\ud835\udcfd\ud835\udcfe\ud835\udcff\ud835\udd00\ud835\udd01\ud835\udd02\ud835\udd03');\nconst BF = mkMap('\ud835\udd6c\ud835\udd6d\ud835\udd6e\ud835\udd6f\ud835\udd70\ud835\udd71\ud835\udd72\ud835\udd73\ud835\udd74\ud835\udd75\ud835\udd76\ud835\udd77\ud835\udd78\ud835\udd79\ud835\udd7a\ud835\udd7b\ud835\udd7c\ud835\udd7d\ud835\udd7e\ud835\udd7f\ud835\udd80\ud835\udd81\ud835\udd82\ud835\udd83\ud835\udd84\ud835\udd85','\ud835\udd86\ud835\udd87\ud835\udd88\ud835\udd89\ud835\udd8a\ud835\udd8b\ud835\udd8c\ud835\udd8d\ud835\udd8e\ud835\udd8f\ud835\udd90\ud835\udd91\ud835\udd92\ud835\udd93\ud835\udd94\ud835\udd95\ud835\udd96\ud835\udd97\ud835\udd98\ud835\udd99\ud835\udd9a\ud835\udd9b\ud835\udd9c\ud835\udd9d\ud835\udd9e\ud835\udd9f');\nconst BI = mkMap('\ud835\udc68\ud835\udc69\ud835\udc6a\ud835\udc6b\ud835\udc6c\ud835\udc6d\ud835\udc6e\ud835\udc6f\ud835\udc70\ud835\udc71\ud835\udc72\ud835\udc73\ud835\udc74\ud835\udc75\ud835\udc76\ud835\udc77\ud835\udc78\ud835\udc79\ud835\udc7a\ud835\udc7b\ud835\udc7c\ud835\udc7d\ud835\udc7e\ud835\udc7f\ud835\udc80\ud835\udc81','\ud835\udc82\ud835\udc83\ud835\udc84\ud835\udc85\ud835\udc86\ud835\udc87\ud835\udc88\ud835\udc89\ud835\udc8a\ud835\udc8b\ud835\udc8c\ud835\udc8d\ud835\udc8e\ud835\udc8f\ud835\udc90\ud835\udc91\ud835\udc92\ud835\udc93\ud835\udc94\ud835\udc95\ud835\udc96\ud835\udc97\ud835\udc98\ud835\udc99\ud835\udc9a\ud835\udc9b');\nconst BLD = mkMap('\ud835\udc00\ud835\udc01\ud835\udc02\ud835\udc03\ud835\udc04\ud835\udc05\ud835\udc06\ud835\udc07\ud835\udc08\ud835\udc09\ud835\udc0a\ud835\udc0b\ud835\udc0c\ud835\udc0d\ud835\udc0e\ud835\udc0f\ud835\udc10\ud835\udc11\ud835\udc12\ud835\udc13\ud835\udc14\ud835\udc15\ud835\udc16\ud835\udc17\ud835\udc18\ud835\udc19','\ud835\udc1a\ud835\udc1b\ud835\udc1c\ud835\udc1d\ud835\udc1e\ud835\udc1f\ud835\udc20\ud835\udc21\ud835\udc22\ud835\udc23\ud835\udc24\ud835\udc25\ud835\udc26\ud835\udc27\ud835\udc28\ud835\udc29\ud835\udc2a\ud835\udc2b\ud835\udc2c\ud835\udc2d\ud835\udc2e\ud835\udc2f\ud835\udc30\ud835\udc31\ud835\udc32\ud835\udc33','\ud835\udfce\ud835\udfcf\ud835\udfd0\ud835\udfd1\ud835\udfd2\ud835\udfd3\ud835\udfd4\ud835\udfd5\ud835\udfd6\ud835\udfd7');\nconst SB = mkMap('\ud835\uddd4\ud835\uddd5\ud835\uddd6\ud835\uddd7\ud835\uddd8\ud835\uddd9\ud835\uddda\ud835\udddb\ud835\udddc\ud835\udddd\ud835\uddde\ud835\udddf\ud835\udde0\ud835\udde1\ud835\udde2\ud835\udde3\ud835\udde4\ud835\udde5\ud835\udde6\ud835\udde7\ud835\udde8\ud835\udde9\ud835\uddea\ud835\uddeb\ud835\uddec\ud835\udded','\ud835\uddee\ud835\uddef\ud835\uddf0\ud835\uddf1\ud835\uddf2\ud835\uddf3\ud835\uddf4\ud835\uddf5\ud835\uddf6\ud835\uddf7\ud835\uddf8\ud835\uddf9\ud835\uddfa\ud835\uddfb\ud835\uddfc\ud835\uddfd\ud835\uddfe\ud835\uddff\ud835\ude00\ud835\ude01\ud835\ude02\ud835\ude03\ud835\ude04\ud835\ude05\ud835\ude06\ud835\ude07','\ud835\udfec\ud835\udfed\ud835\udfee\ud835\udfef\ud835\udff0\ud835\udff1\ud835\udff2\ud835\udff3\ud835\udff4\ud835\udff5');\nconst MONO = mkMap('\ud835\ude70\ud835\ude71\ud835\ude72\ud835\ude73\ud835\ude74\ud835\ude75\ud835\ude76\ud835\ude77\ud835\ude78\ud835\ude79\ud835\ude7a\ud835\ude7b\ud835\ude7c\ud835\ude7d\ud835\ude7e\ud835\ude7f\ud835\ude80\ud835\ude81\ud835\ude82\ud835\ude83\ud835\ude84\ud835\ude85\ud835\ude86\ud835\ude87\ud835\ude88\ud835\ude89','\ud835\ude8a\ud835\ude8b\ud835\ude8c\ud835\ude8d\ud835\ude8e\ud835\ude8f\ud835\ude90\ud835\ude91\ud835\ude92\ud835\ude93\ud835\ude94\ud835\ude95\ud835\ude96\ud835\ude97\ud835\ude98\ud835\ude99\ud835\ude9a\ud835\ude9b\ud835\ude9c\ud835\ude9d\ud835\ude9e\ud835\ude9f\ud835\udea0\ud835\udea1\ud835\udea2\ud835\udea3','\ud835\udff6\ud835\udff7\ud835\udff8\ud835\udff9\ud835\udffa\ud835\udffb\ud835\udffc\ud835\udffd\ud835\udffe\ud835\udfff');\n\nfunction mp(map, s){ return [...s].map(c=>map[c]??c).join(''); }\nfunction wrap(pre, fn, suf){ return s => pre + fn(s) + suf; }\nfunction wrapRaw(pre, suf){ return s => pre + s + suf; }\n\nconst FONTS = [\n  \/\/ \u2500\u2500 UNICODE MATH \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  {name:'Bold',              cat:'unicode', map: BLD },\n  {name:'Italic',            cat:'unicode', map: mkMap('\ud835\udc34\ud835\udc35\ud835\udc36\ud835\udc37\ud835\udc38\ud835\udc39\ud835\udc3a\ud835\udc3b\ud835\udc3c\ud835\udc3d\ud835\udc3e\ud835\udc3f\ud835\udc40\ud835\udc41\ud835\udc42\ud835\udc43\ud835\udc44\ud835\udc45\ud835\udc46\ud835\udc47\ud835\udc48\ud835\udc49\ud835\udc4a\ud835\udc4b\ud835\udc4c\ud835\udc4d','\ud835\udc4e\ud835\udc4f\ud835\udc50\ud835\udc51\ud835\udc52\ud835\udc53\ud835\udc54\u210e\ud835\udc56\ud835\udc57\ud835\udc58\ud835\udc59\ud835\udc5a\ud835\udc5b\ud835\udc5c\ud835\udc5d\ud835\udc5e\ud835\udc5f\ud835\udc60\ud835\udc61\ud835\udc62\ud835\udc63\ud835\udc64\ud835\udc65\ud835\udc66\ud835\udc67') },\n  {name:'Bold Italic',       cat:'unicode', map: BI },\n  {name:'Script',            cat:'unicode', map: mkMap('\ud835\udc9c\u212c\ud835\udc9e\ud835\udc9f\u2130\u2131\ud835\udca2\u210b\u2110\ud835\udca5\ud835\udca6\u2112\u2133\ud835\udca9\ud835\udcaa\ud835\udcab\ud835\udcac\u211b\ud835\udcae\ud835\udcaf\ud835\udcb0\ud835\udcb1\ud835\udcb2\ud835\udcb3\ud835\udcb4\ud835\udcb5','\ud835\udcb6\ud835\udcb7\ud835\udcb8\ud835\udcb9\u212f\ud835\udcbb\u210a\ud835\udcbd\ud835\udcbe\ud835\udcbf\ud835\udcc0\ud835\udcc1\ud835\udcc2\ud835\udcc3\u2134\ud835\udcc5\ud835\udcc6\ud835\udcc7\ud835\udcc8\ud835\udcc9\ud835\udcca\ud835\udccb\ud835\udccc\ud835\udccd\ud835\udcce\ud835\udccf') },\n  {name:'Bold Script',       cat:'unicode', map: BS },\n  {name:'Fraktur',           cat:'unicode', map: mkMap('\ud835\udd04\ud835\udd05\u212d\ud835\udd07\ud835\udd08\ud835\udd09\ud835\udd0a\u210c\u2111\ud835\udd0d\ud835\udd0e\ud835\udd0f\ud835\udd10\ud835\udd11\ud835\udd12\ud835\udd13\ud835\udd14\u211c\ud835\udd16\ud835\udd17\ud835\udd18\ud835\udd19\ud835\udd1a\ud835\udd1b\ud835\udd1c\u2128','\ud835\udd1e\ud835\udd1f\ud835\udd20\ud835\udd21\ud835\udd22\ud835\udd23\ud835\udd24\ud835\udd25\ud835\udd26\ud835\udd27\ud835\udd28\ud835\udd29\ud835\udd2a\ud835\udd2b\ud835\udd2c\ud835\udd2d\ud835\udd2e\ud835\udd2f\ud835\udd30\ud835\udd31\ud835\udd32\ud835\udd33\ud835\udd34\ud835\udd35\ud835\udd36\ud835\udd37') },\n  {name:'Bold Fraktur',      cat:'unicode', map: BF },\n  {name:'Double Struck',     cat:'unicode', map: mkMap('\ud835\udd38\ud835\udd39\u2102\ud835\udd3b\ud835\udd3c\ud835\udd3d\ud835\udd3e\u210d\ud835\udd40\ud835\udd41\ud835\udd42\ud835\udd43\ud835\udd44\u2115\ud835\udd46\u2119\u211a\u211d\ud835\udd4a\ud835\udd4b\ud835\udd4c\ud835\udd4d\ud835\udd4e\ud835\udd4f\ud835\udd50\u2124','\ud835\udd52\ud835\udd53\ud835\udd54\ud835\udd55\ud835\udd56\ud835\udd57\ud835\udd58\ud835\udd59\ud835\udd5a\ud835\udd5b\ud835\udd5c\ud835\udd5d\ud835\udd5e\ud835\udd5f\ud835\udd60\ud835\udd61\ud835\udd62\ud835\udd63\ud835\udd64\ud835\udd65\ud835\udd66\ud835\udd67\ud835\udd68\ud835\udd69\ud835\udd6a\ud835\udd6b','\ud835\udfd8\ud835\udfd9\ud835\udfda\ud835\udfdb\ud835\udfdc\ud835\udfdd\ud835\udfde\ud835\udfdf\ud835\udfe0\ud835\udfe1') },\n  {name:'Sans-Serif',        cat:'unicode', map: mkMap('\ud835\udda0\ud835\udda1\ud835\udda2\ud835\udda3\ud835\udda4\ud835\udda5\ud835\udda6\ud835\udda7\ud835\udda8\ud835\udda9\ud835\uddaa\ud835\uddab\ud835\uddac\ud835\uddad\ud835\uddae\ud835\uddaf\ud835\uddb0\ud835\uddb1\ud835\uddb2\ud835\uddb3\ud835\uddb4\ud835\uddb5\ud835\uddb6\ud835\uddb7\ud835\uddb8\ud835\uddb9','\ud835\uddba\ud835\uddbb\ud835\uddbc\ud835\uddbd\ud835\uddbe\ud835\uddbf\ud835\uddc0\ud835\uddc1\ud835\uddc2\ud835\uddc3\ud835\uddc4\ud835\uddc5\ud835\uddc6\ud835\uddc7\ud835\uddc8\ud835\uddc9\ud835\uddca\ud835\uddcb\ud835\uddcc\ud835\uddcd\ud835\uddce\ud835\uddcf\ud835\uddd0\ud835\uddd1\ud835\uddd2\ud835\uddd3','\ud835\udfe2\ud835\udfe3\ud835\udfe4\ud835\udfe5\ud835\udfe6\ud835\udfe7\ud835\udfe8\ud835\udfe9\ud835\udfea\ud835\udfeb') },\n  {name:'Sans Bold',         cat:'unicode', map: SB },\n  {name:'Sans Italic',       cat:'unicode', map: mkMap('\ud835\ude08\ud835\ude09\ud835\ude0a\ud835\ude0b\ud835\ude0c\ud835\ude0d\ud835\ude0e\ud835\ude0f\ud835\ude10\ud835\ude11\ud835\ude12\ud835\ude13\ud835\ude14\ud835\ude15\ud835\ude16\ud835\ude17\ud835\ude18\ud835\ude19\ud835\ude1a\ud835\ude1b\ud835\ude1c\ud835\ude1d\ud835\ude1e\ud835\ude1f\ud835\ude20\ud835\ude21','\ud835\ude22\ud835\ude23\ud835\ude24\ud835\ude25\ud835\ude26\ud835\ude27\ud835\ude28\ud835\ude29\ud835\ude2a\ud835\ude2b\ud835\ude2c\ud835\ude2d\ud835\ude2e\ud835\ude2f\ud835\ude30\ud835\ude31\ud835\ude32\ud835\ude33\ud835\ude34\ud835\ude35\ud835\ude36\ud835\ude37\ud835\ude38\ud835\ude39\ud835\ude3a\ud835\ude3b') },\n  {name:'Sans Bold Italic',  cat:'unicode', map: mkMap('\ud835\ude3c\ud835\ude3d\ud835\ude3e\ud835\ude3f\ud835\ude40\ud835\ude41\ud835\ude42\ud835\ude43\ud835\ude44\ud835\ude45\ud835\ude46\ud835\ude47\ud835\ude48\ud835\ude49\ud835\ude4a\ud835\ude4b\ud835\ude4c\ud835\ude4d\ud835\ude4e\ud835\ude4f\ud835\ude50\ud835\ude51\ud835\ude52\ud835\ude53\ud835\ude54\ud835\ude55','\ud835\ude56\ud835\ude57\ud835\ude58\ud835\ude59\ud835\ude5a\ud835\ude5b\ud835\ude5c\ud835\ude5d\ud835\ude5e\ud835\ude5f\ud835\ude60\ud835\ude61\ud835\ude62\ud835\ude63\ud835\ude64\ud835\ude65\ud835\ude66\ud835\ude67\ud835\ude68\ud835\ude69\ud835\ude6a\ud835\ude6b\ud835\ude6c\ud835\ude6d\ud835\ude6e\ud835\ude6f') },\n  {name:'Monospace',         cat:'unicode', map: MONO },\n  {name:'Fullwidth',         cat:'unicode', map: mkMap('\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a','\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\uff57\uff58\uff59\uff5a','\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19') },\n  {name:'Small Caps',        cat:'unicode', map: mkMap('ABCDEFGHIJKLMNOPQRSTUVWXYZ','\u1d00\u0299\u1d04\u1d05\u1d07\ua730\u0262\u029c\u026a\u1d0a\u1d0b\u029f\u1d0d\u0274\u1d0f\u1d18q\u0280s\u1d1b\u1d1c\u1d20\u1d21x\u028f\u1d22') },\n  {name:'Circled',           cat:'unicode', map: mkMap('\u24b6\u24b7\u24b8\u24b9\u24ba\u24bb\u24bc\u24bd\u24be\u24bf\u24c0\u24c1\u24c2\u24c3\u24c4\u24c5\u24c6\u24c7\u24c8\u24c9\u24ca\u24cb\u24cc\u24cd\u24ce\u24cf','\u24d0\u24d1\u24d2\u24d3\u24d4\u24d5\u24d6\u24d7\u24d8\u24d9\u24da\u24db\u24dc\u24dd\u24de\u24df\u24e0\u24e1\u24e2\u24e3\u24e4\u24e5\u24e6\u24e7\u24e8\u24e9','\u24ea\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468') },\n  {name:'Neg. Circled',      cat:'unicode', map: mkMap('\ud83c\udd50\ud83c\udd51\ud83c\udd52\ud83c\udd53\ud83c\udd54\ud83c\udd55\ud83c\udd56\ud83c\udd57\ud83c\udd58\ud83c\udd59\ud83c\udd5a\ud83c\udd5b\ud83c\udd5c\ud83c\udd5d\ud83c\udd5e\ud83c\udd5f\ud83c\udd60\ud83c\udd61\ud83c\udd62\ud83c\udd63\ud83c\udd64\ud83c\udd65\ud83c\udd66\ud83c\udd67\ud83c\udd68\ud83c\udd69','\ud83c\udd50\ud83c\udd51\ud83c\udd52\ud83c\udd53\ud83c\udd54\ud83c\udd55\ud83c\udd56\ud83c\udd57\ud83c\udd58\ud83c\udd59\ud83c\udd5a\ud83c\udd5b\ud83c\udd5c\ud83c\udd5d\ud83c\udd5e\ud83c\udd5f\ud83c\udd60\ud83c\udd61\ud83c\udd62\ud83c\udd63\ud83c\udd64\ud83c\udd65\ud83c\udd66\ud83c\udd67\ud83c\udd68\ud83c\udd69') },\n  {name:'Squared',           cat:'unicode', map: mkMap('\ud83c\udd30\ud83c\udd31\ud83c\udd32\ud83c\udd33\ud83c\udd34\ud83c\udd35\ud83c\udd36\ud83c\udd37\ud83c\udd38\ud83c\udd39\ud83c\udd3a\ud83c\udd3b\ud83c\udd3c\ud83c\udd3d\ud83c\udd3e\ud83c\udd3f\ud83c\udd40\ud83c\udd41\ud83c\udd42\ud83c\udd43\ud83c\udd44\ud83c\udd45\ud83c\udd46\ud83c\udd47\ud83c\udd48\ud83c\udd49','\ud83c\udd30\ud83c\udd31\ud83c\udd32\ud83c\udd33\ud83c\udd34\ud83c\udd35\ud83c\udd36\ud83c\udd37\ud83c\udd38\ud83c\udd39\ud83c\udd3a\ud83c\udd3b\ud83c\udd3c\ud83c\udd3d\ud83c\udd3e\ud83c\udd3f\ud83c\udd40\ud83c\udd41\ud83c\udd42\ud83c\udd43\ud83c\udd44\ud83c\udd45\ud83c\udd46\ud83c\udd47\ud83c\udd48\ud83c\udd49') },\n  {name:'Neg. Squared',      cat:'unicode', map: mkMap('\ud83c\udd70\ud83c\udd71\ud83c\udd72\ud83c\udd73\ud83c\udd74\ud83c\udd75\ud83c\udd76\ud83c\udd77\ud83c\udd78\ud83c\udd79\ud83c\udd7a\ud83c\udd7b\ud83c\udd7c\ud83c\udd7d\ud83c\udd7e\ud83c\udd7f\ud83c\udd80\ud83c\udd81\ud83c\udd82\ud83c\udd83\ud83c\udd84\ud83c\udd85\ud83c\udd86\ud83c\udd87\ud83c\udd88\ud83c\udd89','\ud83c\udd70\ud83c\udd71\ud83c\udd72\ud83c\udd73\ud83c\udd74\ud83c\udd75\ud83c\udd76\ud83c\udd77\ud83c\udd78\ud83c\udd79\ud83c\udd7a\ud83c\udd7b\ud83c\udd7c\ud83c\udd7d\ud83c\udd7e\ud83c\udd7f\ud83c\udd80\ud83c\udd81\ud83c\udd82\ud83c\udd83\ud83c\udd84\ud83c\udd85\ud83c\udd86\ud83c\udd87\ud83c\udd88\ud83c\udd89') },\n  \/\/ \u2500\u2500 COMBINING EFFECTS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  {name:'Strikethrough',     cat:'combine', fn: s=>[...s].map(c=>c+'\\u0336').join('') },\n  {name:'Underline',         cat:'combine', fn: s=>[...s].map(c=>c+'\\u0332').join('') },\n  {name:'Double Underline',  cat:'combine', fn: s=>[...s].map(c=>c+'\\u0333').join('') },\n  {name:'Overline',          cat:'combine', fn: s=>[...s].map(c=>c+'\\u0305').join('') },\n  {name:'Slash Through',     cat:'combine', fn: s=>[...s].map(c=>c+'\\u0338').join('') },\n  {name:'Dotted Above',      cat:'combine', fn: s=>[...s].map(c=>c+'\\u0307').join('') },\n  {name:'Upside Down',       cat:'combine', fn: s=>[...s].reverse().map(c=>UPSIDE[c]??c).join('') },\n  {name:'Superscript',       cat:'combine', fn: s=>[...s].map(c=>SUPER[c]??c).join('') },\n  {name:'Subscript',         cat:'combine', fn: s=>[...s].map(c=>SUB[c]??c).join('') },\n  \/\/ \u2500\u2500 EMOJI FRAMES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  {name:'\ud83d\udc95 Pink Hearts \ud83d\udc95',    cat:'emoji', fn: s=>'\ud83d\udc95 '+s+' \ud83d\udc95' },\n  {name:'\u2764\ufe0f Love \u2764\ufe0f',          cat:'emoji', fn: s=>'\u2764\ufe0f '+s+' \u2764\ufe0f' },\n  {name:'\ud83d\udda4 Dark Heart \ud83d\udda4',     cat:'emoji', fn: s=>'\ud83d\udda4 '+s+' \ud83d\udda4' },\n  {name:'\ud83d\udc99 Blue Heart \ud83d\udc99',     cat:'emoji', fn: s=>'\ud83d\udc99 '+s+' \ud83d\udc99' },\n  {name:'\ud83d\udc9a Green Heart \ud83d\udc9a',    cat:'emoji', fn: s=>'\ud83d\udc9a '+s+' \ud83d\udc9a' },\n  {name:'\ud83e\udde1 Orange Heart \ud83e\udde1',  cat:'emoji', fn: s=>'\ud83e\udde1 '+s+' \ud83e\udde1' },\n  {name:'\ud83d\udc9c Purple Heart \ud83d\udc9c',   cat:'emoji', fn: s=>'\ud83d\udc9c '+s+' \ud83d\udc9c' },\n  {name:'\ud83e\udd0d White Heart \ud83e\udd0d',    cat:'emoji', fn: s=>'\ud83e\udd0d '+s+' \ud83e\udd0d' },\n  {name:'\ud83c\udf38 Cherry Blossom \ud83c\udf38', cat:'emoji', fn: s=>'\ud83c\udf38 '+s+' \ud83c\udf38' },\n  {name:'\ud83c\udf3a Hibiscus \ud83c\udf3a',       cat:'emoji', fn: s=>'\ud83c\udf3a '+s+' \ud83c\udf3a' },\n  {name:'\ud83c\udf3c Sunflower \ud83c\udf3c',      cat:'emoji', fn: s=>'\ud83c\udf3c '+s+' \ud83c\udf3c' },\n  {name:'\ud83c\udf3b Daisy \ud83c\udf3b',          cat:'emoji', fn: s=>'\ud83c\udf3b '+s+' \ud83c\udf3b' },\n  {name:'\u2b50 Star \u2b50',           cat:'emoji', fn: s=>'\u2b50 '+s+' \u2b50' },\n  {name:'\ud83c\udf1f Glowing Star \ud83c\udf1f',   cat:'emoji', fn: s=>'\ud83c\udf1f '+s+' \ud83c\udf1f' },\n  {name:'\u2728 Sparkles \u2728',        cat:'emoji', fn: s=>'\u2728 '+s+' \u2728' },\n  {name:'\ud83d\udcab Dizzy \ud83d\udcab',          cat:'emoji', fn: s=>'\ud83d\udcab '+s+' \ud83d\udcab' },\n  {name:'\ud83d\udd25 Fire \ud83d\udd25',           cat:'emoji', fn: s=>'\ud83d\udd25 '+s+' \ud83d\udd25' },\n  {name:'\u26a1 Lightning \u26a1',       cat:'emoji', fn: s=>'\u26a1 '+s+' \u26a1' },\n  {name:'\ud83c\udf08 Rainbow \ud83c\udf08',        cat:'emoji', fn: s=>'\ud83c\udf08 '+s+' \ud83c\udf08' },\n  {name:'\ud83e\udd8b Butterfly \ud83e\udd8b',      cat:'emoji', fn: s=>'\ud83e\udd8b '+s+' \ud83e\udd8b' },\n  {name:'\ud83c\udf40 Lucky \ud83c\udf40',          cat:'emoji', fn: s=>'\ud83c\udf40 '+s+' \ud83c\udf40' },\n  {name:'\ud83c\udf80 Ribbon \ud83c\udf80',         cat:'emoji', fn: s=>'\ud83c\udf80 '+s+' \ud83c\udf80' },\n  {name:'\ud83c\udfb5 Music \ud83c\udfb5',          cat:'emoji', fn: s=>'\ud83c\udfb5 '+s+' \ud83c\udfb5' },\n  {name:'\ud83c\udfb6 Notes \ud83c\udfb6',          cat:'emoji', fn: s=>'\ud83c\udfb6 '+s+' \ud83c\udfb6' },\n  {name:'\ud83d\udc51 Crown \ud83d\udc51',          cat:'emoji', fn: s=>'\ud83d\udc51 '+s+' \ud83d\udc51' },\n  {name:'\ud83d\udc8e Diamond \ud83d\udc8e',        cat:'emoji', fn: s=>'\ud83d\udc8e '+s+' \ud83d\udc8e' },\n  {name:'\ud83e\udd84 Unicorn \ud83e\udd84',        cat:'emoji', fn: s=>'\ud83e\udd84 '+s+' \ud83e\udd84' },\n  {name:'\ud83d\udc09 Dragon \ud83d\udc09',         cat:'emoji', fn: s=>'\ud83d\udc09 '+s+' \ud83d\udc09' },\n  {name:'\ud83c\udf19 Moon \ud83c\udf19',           cat:'emoji', fn: s=>'\ud83c\udf19 '+s+' \ud83c\udf19' },\n  {name:'\u2600\ufe0f Sun \u2600\ufe0f',            cat:'emoji', fn: s=>'\u2600\ufe0f '+s+' \u2600\ufe0f' },\n  {name:'\ud83c\udf0a Wave \ud83c\udf0a',           cat:'emoji', fn: s=>'\ud83c\udf0a '+s+' \ud83c\udf0a' },\n  {name:'\ud83c\udfaf Target \ud83c\udfaf',         cat:'emoji', fn: s=>'\ud83c\udfaf '+s+' \ud83c\udfaf' },\n  {name:'\ud83c\udfc6 Trophy \ud83c\udfc6',         cat:'emoji', fn: s=>'\ud83c\udfc6 '+s+' \ud83c\udfc6' },\n  {name:'\ud83c\udf89 Party \ud83c\udf89',          cat:'emoji', fn: s=>'\ud83c\udf89 '+s+' \ud83c\udf89' },\n  {name:'\ud83d\udca5 Boom \ud83d\udca5',           cat:'emoji', fn: s=>'\ud83d\udca5 '+s+' \ud83d\udca5' },\n  \/\/ \u2500\u2500 FRAMES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  {name:'\ua9c1 Kingdom \ua9c2',         cat:'frame', fn: s=>'\ua9c1\u0f3a '+s+' \u0f3b\ua9c2' },\n  {name:'\ua9c1\u0f12 Crown \u0f12\ua9c2',        cat:'frame', fn: s=>'\ua9c1\u0f12\u262c '+s+' \u262c\u0f12\ua9c2' },\n  {name:'\u2605\u5f61 Anime \u5f61\u2605',       cat:'frame', fn: s=>'\u2605\u5f61 '+s+' \u5f61\u2605' },\n  {name:'\u2606\u5f61 Soft Anime',      cat:'frame', fn: s=>'\u2606\u5f61 '+s+' \u5f61\u2606' },\n  {name:'\u2219\u00b0\u2022 Style \u2022\u00b0\u2219',       cat:'frame', fn: s=>'\u2219\u00b0\u2022 '+s+' \u2022\u00b0\u2219' },\n  {name:'\u3010 Box \u3011',            cat:'frame', fn: s=>'\u3010 '+s+' \u3011' },\n  {name:'\u300e Brackets \u300f',       cat:'frame', fn: s=>'\u300e '+s+' \u300f' },\n  {name:'\u3014 Soft \u3015',           cat:'frame', fn: s=>'\u3014 '+s+' \u3015' },\n  {name:'\u275d Quote \u275e',           cat:'frame', fn: s=>'\u275d '+s+' \u275e' },\n  {name:'\u25c8 Outlined \u25c8',        cat:'frame', fn: s=>'\u25c8 '+s+' \u25c8' },\n  {name:'\u2591\u2592\u2593 Hack \u2593\u2592\u2591',        cat:'frame', fn: s=>mp(MONO,'\u2591\u2592\u2593 '+s+' \u2593\u2592\u2591') },\n  {name:'\u2726 Sparkle Frame',     cat:'frame', fn: s=>'\u2726 '+s+' \u2726' },\n  {name:'\u265b Royal \u265b',           cat:'frame', fn: s=>'\u265b '+s+' \u265b' },\n  {name:'\u30c4 Smile \u30c4',          cat:'frame', fn: s=>'\u30c4 '+s+' \u30c4' },\n  {name:'\u2022\u035c\u2022 Cute \u2022\u035c\u2022',         cat:'frame', fn: s=>'\u2022\u035c\u2022 '+s+' \u2022\u035c\u2022' },\n  \/\/ COMBO FRAMES (emoji + unicode font)\n  {name:'\ud83d\udc95 Bold Script \ud83d\udc95',    cat:'frame', fn: s=>'\ud83d\udc95 '+mp(BS,s)+' \ud83d\udc95' },\n  {name:'\ud83d\udc51 Bold Gothic \ud83d\udc51',    cat:'frame', fn: s=>'\ud83d\udc51 '+mp(BF,s)+' \ud83d\udc51' },\n  {name:'\ud83d\udd25 Bold Italic \ud83d\udd25',    cat:'frame', fn: s=>'\ud83d\udd25 '+mp(BI,s)+' \ud83d\udd25' },\n  {name:'\u2728 Sans Bold \u2728',       cat:'frame', fn: s=>'\u2728 '+mp(SB,s)+' \u2728' },\n  {name:'\ud83c\udf1f Monospace \ud83c\udf1f',      cat:'frame', fn: s=>'\ud83c\udf1f '+mp(MONO,s)+' \ud83c\udf1f' },\n  {name:'\ud83d\udc8e Bold Italic \ud83d\udc8e',    cat:'frame', fn: s=>'\ud83d\udc8e '+mp(BI,s)+' \ud83d\udc8e' },\n  {name:'\ua9c1 Gothic \ua9c2',          cat:'frame', fn: s=>'\ua9c1 '+mp(BF,s)+' \ua9c2' },\n  {name:'\ud83c\udf38 Script \ud83c\udf38',         cat:'frame', fn: s=>'\ud83c\udf38 '+mp(BS,s)+' \ud83c\udf38' },\n  {name:'\u2b50 Script \u2b50',         cat:'frame', fn: s=>'\u2b50 '+mp(BS,s)+' \u2b50' },\n  {name:'\ud83e\udd8b Italic \ud83e\udd8b',         cat:'frame', fn: s=>'\ud83e\udd8b '+mp(BI,s)+' \ud83e\udd8b' },\n  {name:'\ud83c\udfb5 Music Note Text',   cat:'frame', fn: s=>'\u2669\u266c '+s+' \u266c\u2669' },\n  {name:'\ud83c\udf19 Night Vibes \ud83c\udf19',    cat:'frame', fn: s=>'\ud83c\udf19\u2728 '+mp(BS,s)+' \u2728\ud83c\udf19' },\n  {name:'\ud83c\udf80 Cute Script \ud83c\udf80',    cat:'frame', fn: s=>'\ud83c\udf80 '+mp(BS,s)+' \ud83c\udf80' },\n  {name:'\ud83d\udcab Dizzy Bold \ud83d\udcab',     cat:'frame', fn: s=>'\ud83d\udcab '+mp(BLD,s)+' \ud83d\udcab' },\n];\n\n\/\/ \u2500\u2500 STATE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nlet currentCat = 'all';\nlet toastTimer = null;\nconst mainInput = document.getElementById('mainInput');\nconst resultsList = document.getElementById('resultsList');\nconst charCount = document.getElementById('charCount');\nconst countLabel = document.getElementById('countLabel');\nconst toast = document.getElementById('toast');\n\nfunction applyFont(text, font) {\n  if (font.fn) return font.fn(text);\n  return [...text].map(c => font.map[c] ?? c).join('');\n}\nfunction esc(s){ return s.replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;'); }\n\nfunction renderList() {\n  const raw = mainInput.value;\n  const displayText = raw || \"Text Generator Copy Paste\";\n  const filtered = currentCat === 'all' ? FONTS : FONTS.filter(f => f.cat === currentCat);\n  countLabel.innerHTML = 'Showing <strong>'+filtered.length+'<\/strong> styles';\n\n  let html = '<div class=\"featured-header\"><span class=\"feat-title\">\u2726 All Styles Preview<\/span><span class=\"feat-div\"><\/span><span style=\"font-size:0.62rem;color:var(--text-muted);font-weight:600;white-space:nowrap\">' + (raw ? \"Your text\" : \"Sample: Fancy Text Generator\") + '<\/span><\/div>';\n\n  filtered.forEach(font => {\n    const converted = applyFont(displayText, font);\n    const idx = FONTS.indexOf(font);\n    html += '<div class=\"font-row feat\"><span class=\"row-label\">'+esc(font.name)+'<\/span>';\n    html += '<span class=\"row-text\">'+esc(converted)+'<\/span>';\n    html += '<button class=\"copy-row-btn\" onclick=\"copyText(this,\\''+btoa(encodeURIComponent(converted))+'\\')\" >Copy<\/button><\/div>';\n  });\n\n  resultsList.innerHTML = html;\n}\n\nfunction copyText(btn, b64) {\n  const text = decodeURIComponent(atob(b64));\n  const finish = () => { btn.textContent='\u2713 Done'; btn.classList.add('done'); setTimeout(()=>{ btn.textContent='Copy'; btn.classList.remove('done'); },1500); showToast(); };\n  navigator.clipboard.writeText(text).then(finish).catch(()=>{ const ta=document.createElement('textarea'); ta.value=text; ta.style.cssText='position:fixed;opacity:0'; document.body.appendChild(ta); ta.select(); try{ document.execCommand('copy'); finish(); }catch(e){} document.body.removeChild(ta); });\n}\n\n\nfunction doCopy(btn, idx) {\n  const text = mainInput.value;\n  if (!text) return;\n  const out = applyFont(text, FONTS[idx]);\n  const finish = () => {\n    btn.textContent = '\u2713 Done';\n    btn.classList.add('done');\n    setTimeout(()=>{ btn.textContent='Copy'; btn.classList.remove('done'); }, 1500);\n    showToast();\n  };\n  navigator.clipboard.writeText(out).then(finish).catch(()=>{\n    const ta = document.createElement('textarea');\n    ta.value = out; ta.style.cssText='position:fixed;opacity:0';\n    document.body.appendChild(ta); ta.select();\n    try{ document.execCommand('copy'); finish(); }catch(e){}\n    document.body.removeChild(ta);\n  });\n}\n\nfunction showToast(){\n  toast.classList.add('show');\n  clearTimeout(toastTimer);\n  toastTimer = setTimeout(()=>toast.classList.remove('show'), 2000);\n}\n\nmainInput.addEventListener('input', () => {\n  charCount.textContent = mainInput.value.length+'\/300';\n  renderList();\n});\ndocument.getElementById('clearBtn').addEventListener('click', () => {\n  mainInput.value=''; charCount.textContent='0\/300'; mainInput.focus(); renderList();\n});\ndocument.getElementById('presets').addEventListener('click', e => {\n  const btn = e.target.closest('.preset-btn'); if(!btn) return;\n  mainInput.value = btn.dataset.text;\n  charCount.textContent = btn.dataset.text.length+'\/300';\n  renderList(); mainInput.focus();\n});\ndocument.getElementById('filterRow').addEventListener('click', e => {\n  const btn = e.target.closest('.filter-btn'); if(!btn) return;\n  document.querySelectorAll('.filter-btn').forEach(b=>b.classList.remove('active'));\n  btn.classList.add('active');\n  currentCat = btn.dataset.cat;\n  renderList();\n});\n\nrenderList();\n<\/script>\n<\/body>\n<\/html>\n\n\n\n<p>If you have ever seen a WhatsApp contact name written in a bold gothic style, or a TikTok bio that looks like it was designed by a professional, you might have wondered how they did it. The answer is a text generator copy paste tool. It is one of the simplest and most useful tools on the internet, and once you start using it, you will never go back to plain boring text again.<\/p>\n\n\n\n<p>In this article, we will explain what a text generator copy paste tool is, how it works, and all the different ways you can use it to make your online presence more attractive and memorable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-is-a-text-generator-copy-paste-tool\">What is a Text Generator Copy Paste Tool?<\/h2>\n\n\n\n<p>A text generator copy paste tool is a free online tool that converts your normal text into different <a href=\"https:\/\/www.fontmirror.com\/en\/tattoo-font-generator-create-stunning-ink-lettering-instantly\/\">stylish font<\/a> styles using special Unicode characters. You type any word, name, or phrase, and the tool instantly shows it to you in dozens of different styles, bold, italic, cursive, gothic, bubble letters, emoji frames, and more.<\/p>\n\n\n\n<p>The key feature that makes these tools so useful is the copy paste part. Once you find a style you like, you simply click the Copy button and paste your stylish text anywhere you want  Instagram bio, TikTok username, WhatsApp status, Twitter post, Discord server name, or any other platform.<\/p>\n\n\n\n<p>Unlike regular font changers, a text generator copy paste tool does not use images or <a href=\"https:\/\/www.fontmirror.com\/en\/font-style-guide-how-to-choose-and-use-the-right-text-style\/\">special fonts<\/a> that only work in certain apps. It uses actual Unicode characters, which means your stylish text will display correctly on every device and every platform in the world.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-does-it-work\">How Does it Work?<\/h2>\n\n\n\n<p>The technology behind text generator copy paste tools is based on <a href=\"https:\/\/www.fontmirror.com\/en\/unicode-symbols-complete-guide-to-special-characters\/\">Unicode<\/a>, the universal standard that defines every character used in digital text worldwide. Inside the Unicode standard, there is a large block of characters called Mathematical Alphanumeric Symbols. This block contains styled versions of every English letter bold versions, italic versions, script versions, gothic versions, and more.<\/p>\n\n\n\n<p>When you use a text generator copy paste tool, it maps each letter you type to its Unicode equivalent. The letter A becomes \ud835\udc00 in bold, \ud835\udc9c in script, or \ud835\udd04 in gothic. Because these are real text characters and not font styling, they travel with your text everywhere you paste them. They look the same whether someone reads your Instagram bio on an iPhone, an Android phone, or a desktop computer.<\/p>\n\n\n\n<p>This is why text generator copy paste tools have become so popular  the output works universally without any special software or settings on the reader&#8217;s device.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-font-styles-are-available\">What Font Styles Are Available?<\/h2>\n\n\n\n<p>A good text generator copy paste tool offers a wide variety of styles. Our tool at FontMirror.com provides over 90 different styles organized into four main categories.<\/p>\n\n\n\n<p><strong>Unicode Math Fonts<\/strong> are the purest form of fancy text. These include bold, italic, bold italic, script, bold script, gothic, bold gothic, double struck, monospace, circled letters, small caps, and more. These styles are clean, readable, and work on every single platform without exception.<\/p>\n\n\n\n<p><strong>Emoji Frame Styles<\/strong> wrap your text inside popular emoji pairs. Examples include putting fire emojis on both sides of your text, heart emojis, crown emojis, flower emojis, sparkle emojis, butterfly emojis, and many more. These are extremely popular on TikTok and Instagram where visual flair is highly valued.<\/p>\n\n\n\n<p><strong>Decorative Frame Styles<\/strong> use special Unicode border characters and symbols to create elaborate frames around your text. The most popular ones include styles like \ua9c1\u0f3a Your Text \u0f3b\ua9c2 and \u2605\u5f61 Your Text \u5f61\u2605. These are iconic in gaming communities and widely used in BGMI, Free Fire, and PUBG Mobile player names.<\/p>\n\n\n\n<p><strong>Text Effect Styles<\/strong> use combining Unicode characters to add visual effects directly to your letters. These include strikethrough text, underlined text, text with dots above and below, upside down text, and superscript and subscript styling.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"where-can-you-use-text-generator-copy-paste-fonts\">Where Can You Use Text Generator Copy Paste Fonts?<\/h2>\n\n\n\n<p>The answer is almost everywhere. Here are the most popular places people use their generated text:<\/p>\n\n\n\n<p><strong>Instagram<\/strong> \u2014 The most common use is Instagram bios and display names. Script and bold fonts look extremely professional in an Instagram bio. You can also use styled text in captions and comments to make certain words or phrases stand out.<\/p>\n\n\n\n<p><strong>TikTok<\/strong> \u2014 TikTok&#8217;s display name supports Unicode text, so you can have a stylish name that appears in everyone&#8217;s For You Page comments. A well-styled TikTok name is one of the easiest ways to make your profile look more established and creative.<\/p>\n\n\n\n<p><strong>WhatsApp<\/strong> \u2014 Use stylish text in your WhatsApp name, group names, and status updates. A decorated group name makes your group chat stand out in the contact list. Bold script in a WhatsApp status looks far more polished than plain text.<\/p>\n\n\n\n<p><strong>Discord<\/strong> \u2014 Discord fully supports Unicode text in usernames, server names, and channel descriptions. Gaming servers use gothic and frame styles heavily to match their community aesthetic.<\/p>\n\n\n\n<p><strong>Twitter and X<\/strong> \u2014 Twitter does not offer any built-in text formatting for regular posts. Unicode fancy text is the only way to make certain words appear bold or italic in a tweet, and many power users and content creators use this technique for emphasis in threads and announcements.<\/p>\n\n\n\n<p><strong>Gaming Apps<\/strong> \u2014 BGMI, Free Fire, PUBG Mobile, and Clash of Clans all allow Unicode characters in player names. Decorated gaming names with frame styles are a huge part of gaming culture in India and across Asia.<\/p>\n\n\n\n<p><strong>YouTube<\/strong> \u2014 Channel names and video descriptions on YouTube fully support Unicode text. Many YouTubers use stylish text in their channel name to reinforce their brand identity.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tips-for-getting-the-best-results\">Tips for Getting the Best Results<\/h2>\n\n\n\n<p>Using a text generator copy paste tool is very simple, but here are a few tips to help you get the most out of it.<\/p>\n\n\n\n<p><strong>Test before publishing.<\/strong> Before you update your Instagram bio or WhatsApp name, paste your styled text into a notes app on your phone first and check how it looks. Occasionally some characters may appear differently depending on your device&#8217;s system font.<\/p>\n\n\n\n<p><strong>Use readable styles for longer text.<\/strong> Bold, italic, and script styles are easy to read even in longer phrases. Very decorative styles like heavy frame borders work best for short text like your name or a single word.<\/p>\n\n\n\n<p><strong>Mix styles strategically.<\/strong> The most eye-catching profiles often combine two or three styles. A common combination is using bold script for the name at the top, small caps for the tagline, and an emoji frame around the call-to-action at the bottom.<\/p>\n\n\n\n<p><strong>Consider your platform&#8217;s character limit.<\/strong> Unicode fancy text characters sometimes count as multiple characters toward platform limits. Instagram&#8217;s bio limit is 150 characters, so keep this in mind when designing a styled bio with lots of decorative symbols.<\/p>\n\n\n\n<p><strong>Match the style to your brand.<\/strong> Script and cursive fonts work well for personal, romantic, or creative profiles. Gothic and fraktur styles fit gaming, metal, and edgy aesthetics. Clean small caps and double struck fonts suit tech and professional content. Emoji frames work for fun, casual, and youthful content.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why-fontmirror-is-the-best-text-generator-copy-pas\">Why FontMirror is the Best Text Generator Copy Paste Tool<\/h2>\n\n\n\n<p>FontMirror.com was built with one goal in mind  give you the fastest, cleanest text generator copy paste experience possible. Here is what makes it stand out.<\/p>\n\n\n\n<p>All 90+ styles load instantly when you open the page, so you can see what every font looks like even before you type anything. As soon as you start typing, every style updates in real time. There are no delays, no page refreshes, and no loading screens.<\/p>\n\n\n\n<p>The tool is organized into clear categories with section dividers so you can quickly jump to Unicode fonts, emoji frames, decorative frames, or text effects without scrolling through everything. You can also search by style name if you are looking for something specific.<\/p>\n\n\n\n<p>Every row has a copy button, and you can also click anywhere on a row to instantly copy that style. A clean confirmation appears so you always know the copy was successful.<\/p>\n\n\n\n<p>The tool works perfectly on mobile. You can open it in Chrome or Safari on any Android or iOS device, type your text on your phone keyboard, and copy the result directly to your clipboard.<\/p>\n\n\n\n<p>There is no account needed, no ads in the way, and no paid features. Everything is completely free.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"final-thoughts\">Final Thoughts<\/h2>\n\n\n\n<p>A text generator copy paste tool is one of the most practical free tools available online today. Whether you are refreshing your Instagram bio, creating a gaming username, personalizing your WhatsApp name, or just trying to make your social media posts more interesting  having access to 90+ font styles at your fingertips makes a real difference.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fancy Text Generator \u2014 Copy &#038; Paste Fonts \u2726 Text Generator Copy Paste Free Copy &amp; Paste Fonts \u2726 Text Generator Copy Paste \u2726 Type your text and get 70+ cool Unicode fonts &amp; styles instantly. Works on Instagram, TikTok, WhatsApp &amp; more. Hello Love My Name Good Morning Happy Birthday Thank You I Love&#8230;<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"hide","_kad_post_layout":"normal","_kad_post_sidebar_id":"","_kad_post_content_style":"default","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-2021","page","type-page","status-publish","hentry"],"taxonomy_info":[],"featured_image_src_large":false,"author_info":{"display_name":"Ajay Yavad","author_link":"https:\/\/www.fontmirror.com\/en\/author\/vd\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/www.fontmirror.com\/en\/wp-json\/wp\/v2\/pages\/2021","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fontmirror.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.fontmirror.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.fontmirror.com\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fontmirror.com\/en\/wp-json\/wp\/v2\/comments?post=2021"}],"version-history":[{"count":6,"href":"https:\/\/www.fontmirror.com\/en\/wp-json\/wp\/v2\/pages\/2021\/revisions"}],"predecessor-version":[{"id":2069,"href":"https:\/\/www.fontmirror.com\/en\/wp-json\/wp\/v2\/pages\/2021\/revisions\/2069"}],"wp:attachment":[{"href":"https:\/\/www.fontmirror.com\/en\/wp-json\/wp\/v2\/media?parent=2021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}