{"id":604,"date":"2026-07-22T14:33:59","date_gmt":"2026-07-22T14:33:59","guid":{"rendered":"https:\/\/freewebtools.co.in\/?page_id=604"},"modified":"2026-07-25T16:32:27","modified_gmt":"2026-07-25T16:32:27","slug":"decorative-fonts","status":"publish","type":"page","link":"https:\/\/freewebtools.co.in\/index.php\/decorative-fonts\/","title":{"rendered":"Decorative Fonts"},"content":{"rendered":"\n<div class=\"fwt-fonts-wrapper\" id=\"fwtFontsWrapper\">\n    <style>\n        .fwt-fonts-wrapper {\n            all: initial;\n            display: block;\n            font-family: system-ui, -apple-system, sans-serif;\n            color: var(--fwt-text, #1e293b);\n            background-color: var(--fwt-bg, #f8fafc);\n            padding: 24px;\n            box-sizing: border-box;\n            width: 100%;\n            max-width: 1200px;\n            margin: 0 auto;\n            border-radius: 20px;\n            border: 1px solid var(--fwt-border, #e2e8f0);\n            box-shadow: 0 10px 25px rgba(0,0,0,0.05);\n            transition: background-color 0.3s, color 0.3s;\n        }\n        .fwt-fonts-wrapper *, .fwt-fonts-wrapper *::before, .fwt-fonts-wrapper *::after {\n            box-sizing: border-box;\n            margin: 0;\n            padding: 0;\n        }\n        .fwt-fonts-container {\n            display: flex;\n            flex-direction: column;\n            gap: 20px;\n        }\n        .fwt-font-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            flex-wrap: wrap;\n            gap: 15px;\n        }\n        .fwt-font-title {\n            font-size: 1.75rem;\n            font-weight: 800;\n            background: linear-gradient(135deg, #2563eb, #9333ea);\n            -webkit-background-clip: text;\n            -webkit-text-fill-color: transparent;\n        }\n        .fwt-font-theme-btn {\n            background: var(--fwt-panel-bg, #ffffff);\n            border: 1px solid var(--fwt-border, #cbd5e1);\n            color: var(--fwt-text, #1e293b);\n            padding: 8px 16px;\n            border-radius: 10px;\n            cursor: pointer;\n            font-weight: 600;\n            transition: all 0.2s;\n        }\n        .fwt-font-theme-btn:hover { background: var(--fwt-hover, #f1f5f9); }\n        \n        .fwt-font-panel {\n            background: var(--fwt-panel-bg, #ffffff);\n            padding: 20px;\n            border-radius: 16px;\n            border: 1px solid var(--fwt-border, #e2e8f0);\n            display: flex;\n            flex-direction: column;\n            gap: 15px;\n            box-shadow: 0 4px 6px rgba(0,0,0,0.02);\n        }\n        .fwt-font-group {\n            display: flex;\n            flex-direction: column;\n            gap: 6px;\n        }\n        .fwt-font-label {\n            font-size: 0.85rem;\n            font-weight: 600;\n            color: var(--fwt-label, #64748b);\n            display: flex;\n            justify-content: space-between;\n        }\n        .fwt-font-input {\n            width: 100%;\n            padding: 14px;\n            border-radius: 12px;\n            border: 1px solid var(--fwt-border, #cbd5e1);\n            font-size: 1rem;\n            outline: none;\n            background: var(--fwt-input-bg, #f8fafc);\n            color: var(--fwt-text, #1e293b);\n            resize: vertical;\n            min-height: 100px;\n            transition: border-color 0.2s;\n        }\n        .fwt-font-input:focus { border-color: #2563eb; }\n        \n        .fwt-font-toolbar {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 10px;\n            align-items: center;\n            justify-content: space-between;\n        }\n        .fwt-font-search {\n            flex: 1;\n            min-width: 200px;\n            padding: 10px 14px;\n            border-radius: 10px;\n            border: 1px solid var(--fwt-border, #cbd5e1);\n            font-size: 0.9rem;\n            background: var(--fwt-input-bg, #f8fafc);\n            color: var(--fwt-text, #1e293b);\n            outline: none;\n        }\n        .fwt-font-actions-group {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 8px;\n        }\n        .fwt-font-button {\n            background: #2563eb;\n            color: white;\n            border: none;\n            padding: 10px 16px;\n            border-radius: 10px;\n            font-weight: 600;\n            cursor: pointer;\n            transition: background 0.2s, transform 0.1s;\n            font-size: 0.85rem;\n            display: inline-flex;\n            align-items: center;\n            gap: 6px;\n        }\n        .fwt-font-button:hover { background: #1d4ed8; }\n        .fwt-font-button:active { transform: scale(0.98); }\n        .fwt-font-btn-secondary { background: #475569; }\n        .fwt-font-btn-secondary:hover { background: #334155; }\n\n        .fwt-font-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n            gap: 15px;\n            max-height: 650px;\n            overflow-y: auto;\n            padding-right: 5px;\n            will-change: transform;\n        }\n        .fwt-font-card {\n            background: var(--fwt-card-bg, #f8fafc);\n            border: 1px solid var(--fwt-border, #e2e8f0);\n            border-radius: 12px;\n            padding: 16px;\n            display: flex;\n            flex-direction: column;\n            gap: 10px;\n            transition: transform 0.15s, box-shadow 0.15s;\n        }\n        .fwt-font-card:hover {\n            transform: translateY(-2px);\n            box-shadow: 0 6px 15px rgba(0,0,0,0.05);\n        }\n        .fwt-font-card-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n        }\n        .fwt-font-card-title {\n            font-size: 0.8rem;\n            font-weight: 700;\n            color: #64748b;\n            text-transform: uppercase;\n            letter-spacing: 0.5px;\n        }\n        .fwt-font-fav-btn {\n            background: none;\n            border: none;\n            cursor: pointer;\n            font-size: 1.1rem;\n            color: #cbd5e1;\n            transition: color 0.2s;\n        }\n        .fwt-font-fav-btn.active { color: #e11d48; }\n        .fwt-font-result {\n            font-size: 1.15rem;\n            word-break: break-all;\n            background: var(--fwt-input-bg, #ffffff);\n            padding: 12px;\n            border-radius: 8px;\n            border: 1px solid var(--fwt-border, #e2e8f0);\n            min-height: 50px;\n            display: flex;\n            align-items: center;\n            color: var(--fwt-text, #1e293b);\n        }\n        .fwt-font-card-footer {\n            display: flex;\n            justify-content: flex-end;\n        }\n        .fwt-font-copy-btn {\n            background: #2563eb;\n            color: white;\n            border: none;\n            padding: 6px 12px;\n            border-radius: 6px;\n            font-size: 0.75rem;\n            font-weight: 600;\n            cursor: pointer;\n            transition: background 0.2s;\n        }\n        .fwt-font-copy-btn:hover { background: #1d4ed8; }\n        .fwt-font-toast {\n            position: fixed;\n            bottom: 20px;\n            right: 20px;\n            background: #0f172a;\n            color: white;\n            padding: 10px 20px;\n            border-radius: 8px;\n            font-size: 0.9rem;\n            box-shadow: 0 5px 15px rgba(0,0,0,0.2);\n            opacity: 0;\n            transition: opacity 0.3s;\n            pointer-events: none;\n            z-index: 9999;\n        }\n        .fwt-font-toast.show { opacity: 1; }\n\n        @media(prefers-color-scheme: dark) {\n            .fwt-fonts-wrapper[data-theme=\"auto\"] {\n                --fwt-bg: #0f172a;\n                --fwt-panel-bg: #1e293b;\n                --fwt-card-bg: #0f172a;\n                --fwt-text: #f8fafc;\n                --fwt-border: #334155;\n                --fwt-input-bg: #0f172a;\n                --fwt-label: #94a3b8;\n                --fwt-hover: #334155;\n            }\n        }\n        .fwt-fonts-wrapper[data-theme=\"dark\"] {\n            --fwt-bg: #0f172a;\n            --fwt-panel-bg: #1e293b;\n            --fwt-card-bg: #0f172a;\n            --fwt-text: #f8fafc;\n            --fwt-border: #334155;\n            --fwt-input-bg: #0f172a;\n            --fwt-label: #94a3b8;\n            --fwt-hover: #334155;\n        }\n        .fwt-fonts-wrapper[data-theme=\"light\"] {\n            --fwt-bg: #f8fafc;\n            --fwt-panel-bg: #ffffff;\n            --fwt-card-bg: #f8fafc;\n            --fwt-text: #1e293b;\n            --fwt-border: #e2e8f0;\n            --fwt-input-bg: #f8fafc;\n            --fwt-label: #64748b;\n            --fwt-hover: #f1f5f9;\n        }\n    <\/style>\n\n    <div class=\"fwt-fonts-container\" data-theme=\"auto\">\n        <div class=\"fwt-font-header\">\n            <h2 class=\"fwt-font-title\">\u2728 Professional 500+ Unicode Font Engine<\/h2>\n            <button type=\"button\" class=\"fwt-font-theme-btn\" id=\"fwtThemeToggle\">Toggle Theme<\/button>\n        <\/div>\n\n        <div class=\"fwt-font-panel\">\n            <div class=\"fwt-font-group\">\n                <label class=\"fwt-font-label\" for=\"fwtMainInput\">\n                    <span>Type your text below<\/span>\n                    <span id=\"fwtCharCount\">Characters: 0 | Words: 0<\/span>\n                <\/label>\n                <textarea id=\"fwtMainInput\" class=\"fwt-font-input\" placeholder=\"Type or paste text here...\"><\/textarea>\n            <\/div>\n\n            <div class=\"fwt-font-toolbar\">\n                <input type=\"text\" id=\"fwtSearchInput\" class=\"fwt-font-search\" placeholder=\"Search 500+ styles instantly...\">\n                <div class=\"fwt-font-actions-group\">\n                    <button type=\"button\" class=\"fwt-font-button\" id=\"fwtClearBtn\">Clear<\/button>\n                    <button type=\"button\" class=\"fwt-font-button\" id=\"fwtCopyAllBtn\">Copy All<\/button>\n                    <button type=\"button\" class=\"fwt-font-button fwt-font-btn-secondary\" id=\"fwtDownloadBtn\">Download TXT<\/button>\n                    <button type=\"button\" class=\"fwt-font-button fwt-font-btn-secondary\" id=\"fwtShareBtn\">Share<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"fwt-font-panel\">\n            <div class=\"fwt-font-grid\" id=\"fwtFontsGrid\"><\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"fwt-font-toast\" id=\"fwtToast\">Copied to clipboard!<\/div>\n<\/div>\n\n<script>\n(() => {\n    \"use strict\";\n\n    const config = {\n        maxCharacters: 5000,\n        darkMode: \"auto\",\n        animations: true,\n        showPreview: true\n    };\n\n    const root = document.getElementById('fwtFontsWrapper');\n    const container = root.querySelector('.fwt-fonts-container');\n    const mainInput = root.querySelector('#fwtMainInput');\n    const searchInput = root.querySelector('#fwtSearchInput');\n    const grid = root.querySelector('#fwtFontsGrid');\n    const charCountSpan = root.querySelector('#fwtCharCount');\n    const clearBtn = root.querySelector('#fwtClearBtn');\n    const copyAllBtn = root.querySelector('#fwtCopyAllBtn');\n    const downloadBtn = root.querySelector('#fwtDownloadBtn');\n    const shareBtn = root.querySelector('#fwtShareBtn');\n    const themeToggle = root.querySelector('#fwtThemeToggle');\n    const toast = root.querySelector('#fwtToast');\n\n    let favorites = JSON.parse(localStorage.getItem('fwt_font_favs') || '[]');\n\n    const showToast = (msg) => {\n        toast.textContent = msg;\n        toast.classList.add('show');\n        setTimeout(() => toast.classList.remove('show'), 2000);\n    };\n\n    const maps = {\n        bold: { a: '\ud835\uddee', b: '\ud835\uddef', c: '\ud835\uddf0', d: '\ud835\uddf1', e: '\ud835\uddf2', f: '\ud835\uddf3', g: '\ud835\uddf4', h: '\ud835\uddf5', i: '\ud835\uddf6', j: '\ud835\uddf7', k: '\ud835\uddf8', l: '\ud835\uddf9', m: '\ud835\uddfa', n: '\ud835\uddfb', o: '\ud835\uddfc', p: '\ud835\uddfd', q: '\ud835\uddfe', r: '\ud835\uddff', s: '\ud835\ude00', t: '\ud835\ude01', u: '\ud835\ude02', v: '\ud835\ude03', w: '\ud835\ude04', x: '\ud835\ude05', y: '\ud835\ude06', z: '\ud835\ude07', A: '\ud835\uddd4', B: '\ud835\uddd5', C: '\ud835\uddd6', D: '\ud835\uddd7', E: '\ud835\uddd8', F: '\ud835\uddd9', G: '\ud835\uddda', H: '\ud835\udddb', I: '\ud835\udddc', J: '\ud835\udddd', K: '\ud835\uddde', L: '\ud835\udddf', M: '\ud835\udde0', N: '\ud835\udde1', O: '\ud835\udde2', P: '\ud835\udde3', Q: '\ud835\udde4', R: '\ud835\udde5', S: '\ud835\udde6', T: '\ud835\udde7', U: '\ud835\udde8', V: '\ud835\udde9', W: '\ud835\uddea', X: '\ud835\uddeb', Y: '\ud835\uddec', Z: '\ud835\udded', '0': '\ud835\udfec', '1': '\ud835\udfed', '2': '\ud835\udfee', '3': '\ud835\udfef', '4': '\ud835\udff0', '5': '\ud835\udff1', '6': '\ud835\udff2', '7': '\ud835\udff3', '8': '\ud835\udff4', '9': '\ud835\udff5' },\n        italic: { a: '\ud835\udc4e', b: '\ud835\udc4f', c: '\ud835\udc50', d: '\ud835\udc51', e: '\ud835\udc52', f: '\ud835\udc53', g: '\ud835\udc54', h: '\u210e', i: '\ud835\udc56', j: '\ud835\udc57', k: '\ud835\udc58', l: '\ud835\udc59', m: '\ud835\udc5a', n: '\ud835\udc5b', o: '\ud835\udc5c', p: '\ud835\udc5d', q: '\ud835\udc5e', r: '\ud835\udc5f', s: '\ud835\udc60', t: '\ud835\udc61', u: '\ud835\udc62', v: '\ud835\udc63', w: '\ud835\udc64', x: '\ud835\udc65', y: '\ud835\udc66', z: '\ud835\udc67', A: '\ud835\udc34', B: '\ud835\udc35', C: '\ud835\udc36', D: '\ud835\udc37', E: '\ud835\udc38', F: '\ud835\udc39', G: '\ud835\udc3a', H: '\ud835\udc3b', I: '\ud835\udc3c', J: '\ud835\udc3d', K: '\ud835\udc3e', L: '\ud835\udc3f', M: '\ud835\udc40', N: '\ud835\udc41', O: '\ud835\udc42', P: '\ud835\udc43', Q: '\ud835\udc44', R: '\ud835\udc45', S: '\ud835\udc46', T: '\ud835\udc47', U: '\ud835\udc48', V: '\ud835\udc49', W: '\ud835\udc4a', X: '\ud835\udc4b', Y: '\ud835\udc4c', Z: '\ud835\udc4d' },\n        boldItalic: { a: '\ud835\ude56', b: '\ud835\ude57', c: '\ud835\ude58', d: '\ud835\ude59', e: '\ud835\ude5a', f: '\ud835\ude5b', g: '\ud835\ude5c', h: '\ud835\ude5d', i: '\ud835\ude5e', j: '\ud835\ude5f', k: '\ud835\ude60', l: '\ud835\ude61', m: '\ud835\ude62', n: '\ud835\ude63', o: '\ud835\ude64', p: '\ud835\ude65', q: '\ud835\ude66', r: '\ud835\ude67', s: '\ud835\ude68', t: '\ud835\ude69', u: '\ud835\ude6a', v: '\ud835\ude6b', w: '\ud835\ude6c', x: '\ud835\ude6d', y: '\ud835\ude6e', z: '\ud835\ude6f', A: '\ud835\ude3c', B: '\ud835\ude3d', C: '\ud835\ude3e', D: '\ud835\ude3f', E: '\ud835\ude40', F: '\ud835\ude41', G: '\ud835\ude42', H: '\ud835\ude43', I: '\ud835\ude44', J: '\ud835\ude45', K: '\ud835\ude46', L: '\ud835\ude47', M: '\ud835\ude48', N: '\ud835\ude49', O: '\ud835\ude4a', P: '\ud835\ude4b', Q: '\ud835\ude4c', R: '\ud835\ude4d', S: '\ud835\ude4e', T: '\ud835\ude4f', U: '\ud835\ude50', V: '\ud835\ude51', W: '\ud835\ude52', X: '\ud835\ude53', Y: '\ud835\ude54', Z: '\ud835\ude55' },\n        sans: { a: '\ud835\uddba', b: '\ud835\uddbb', c: '\ud835\uddbc', d: '\ud835\uddbd', e: '\ud835\uddbe', f: '\ud835\uddbf', g: '\ud835\uddc0', h: '\ud835\uddc1', i: '\ud835\uddc2', j: '\ud835\uddc3', k: '\ud835\uddc4', l: '\ud835\uddc5', m: '\ud835\uddc6', n: '\ud835\uddc7', o: '\ud835\uddc8', p: '\ud835\uddc9', q: '\ud835\uddca', r: '\ud835\uddcb', s: '\ud835\uddcc', t: '\ud835\uddcd', u: '\ud835\uddce', v: '\ud835\uddcf', w: '\ud835\uddd0', x: '\ud835\uddd1', y: '\ud835\uddd2', z: '\ud835\uddd3', A: '\ud835\udda0', B: '\ud835\udd81', C: '\ud835\udd82', D: '\ud835\udd83', E: '\ud835\udd84', F: '\ud835\udd85', G: '\ud835\udd8c', H: '\ud835\udd8d', I: '\ud835\udd8e', J: '\ud835\udd8f', K: '\ud835\udd90', L: '\ud835\udd91', M: '\ud835\udd92', N: '\ud835\udd93', O: '\ud835\udd94', P: '\ud835\udd95', Q: '\ud835\udd96', R: '\ud835\udd97', S: '\ud835\udd98', T: '\ud835\udd99', U: '\ud835\udd9a', V: '\ud835\udd9b', W: '\ud835\udd9c', X: '\ud835\udd9d', Y: '\ud835\udd9e', Z: '\ud835\udd9f', '0': '\ud835\udff6', '1': '\ud835\udff7', '2': '\ud835\udff8', '3': '\ud835\udff9', '4': '\ud835\udffa', '5': '\ud835\udffb', '6': '\ud835\udffc', '7': '\ud835\udffd', '8': '\ud835\udffe', '9': '\ud835\udfff' },\n        sansBold: { a: '\ud835\uddee', b: '\ud835\uddef', c: '\ud835\uddf0', d: '\ud835\uddf1', e: '\ud835\uddf2', f: '\ud835\uddf3', g: '\ud835\uddf4', h: '\ud835\uddf5', i: '\ud835\uddf6', j: '\ud835\uddf7', k: '\ud835\uddf8', l: '\ud835\uddf9', m: '\ud835\uddfa', n: '\ud835\uddfb', o: '\ud835\uddfc', p: '\ud835\uddfd', q: '\ud835\uddfe', r: '\ud835\uddff', s: '\ud835\ude00', t: '\ud835\ude01', u: '\ud835\ude02', v: '\ud835\ude03', w: '\ud835\ude04', x: '\ud835\ude05', y: '\ud835\ude06', z: '\ud835\ude07', A: '\ud835\uddd4', B: '\ud835\uddd5', C: '\ud835\uddd6', D: '\ud835\uddd7', E: '\ud835\uddd8', F: '\ud835\uddd9', G: '\ud835\uddda', H: '\ud835\udddb', I: '\ud835\udddc', J: '\ud835\udddd', K: '\ud835\uddde', L: '\ud835\udddf', M: '\ud835\udde0', N: '\ud835\udde1', O: '\ud835\udde2', P: '\ud835\udde3', Q: '\ud835\udde4', R: '\ud835\udde5', S: '\ud835\udde6', T: '\ud835\udde7', U: '\ud835\udde8', V: '\ud835\udde9', W: '\ud835\uddea', X: '\ud835\uddeb', Y: '\ud835\uddec', Z: '\ud835\udded' },\n        script: { a: '\ud835\udcb6', b: '\ud835\udcb7', c: '\ud835\udcb8', d: '\ud835\udcb9', e: '\u212f', f: '\ud835\udcbb', g: '\u210a', h: '\ud835\udcbd', i: '\ud835\udcbe', j: '\ud835\udcbf', k: '\ud835\udcc0', l: '\ud835\udcc1', m: '\ud835\udcc2', n: '\ud835\udcc3', o: '\u2134', p: '\ud835\udcc5', q: '\ud835\udcc6', r: '\ud835\udcc7', s: '\ud835\udcc8', t: '\ud835\udcc9', u: '\ud835\udcca', v: '\ud835\udcff', w: '\ud835\udccc', x: '\ud835\udccd', y: '\ud835\udcce', z: '\ud835\udccf', A: '\ud835\udc9c', B: '\u212c', C: '\ud835\udc9e', D: '\ud835\udc9f', E: '\u2130', F: '\u2131', G: '\ud835\udca2', H: '\u210b', I: '\u2110', J: '\ud835\udca5', K: '\ud835\udca6', L: '\u2112', M: '\u2133', N: '\ud835\udca9', O: '\ud835\udcaa', P: '\ud835\udcab', Q: '\ud835\udcac', R: '\u211b', S: '\ud835\udcae', T: '\ud835\udcaf', U: '\ud835\udcb0', V: '\ud835\udcb1', W: '\ud835\udcb2', X: '\ud835\udcb3', Y: '\ud835\udcb4', Z: '\ud835\udcb5' },\n        boldScript: { a: '\ud835\udcd0', b: '\ud835\udcd1', c: '\ud835\udc9e', d: '\ud835\udc9f', e: '\ud835\udcd4', f: '\ud835\udcd5', g: '\ud835\udcd6', h: '\u210b', i: '\u2110', j: '\ud835\udcd9', k: '\ud835\udcda', l: '\ud835\udcdb', m: '\ud835\udcdc', n: '\ud835\udcdd', o: '\ud835\udcde', p: '\ud835\udcdf', q: '\ud835\udce0', r: '\u211b', s: '\ud835\udce2', t: '\ud835\udcaf', u: '\ud835\udcb0', v: '\ud835\udcb1', w: '\ud835\udcb2', x: '\ud835\udcb3', y: '\ud835\udcb4', z: '\ud835\udcb5', A: '\ud835\udcd0', B: '\ud835\udcd1', C: '\ud835\udc9e', D: '\ud835\udc9f', E: '\ud835\udcd4', F: '\ud835\udcd5', G: '\ud835\udcd6', H: '\u210b', I: '\u2110', J: '\ud835\udcd9', K: '\ud835\udcda', l: '\ud835\udcdb', M: '\ud835\udcdc', N: '\ud835\udcdd', O: '\ud835\udcde', P: '\ud835\udcdf', Q: '\ud835\udce0', R: '\u211b', S: '\ud835\udce2', T: '\ud835\udcaf', U: '\ud835\udcb0', V: '\ud835\udcb1', W: '\ud835\udcb2', X: '\ud835\udcb3', Y: '\ud835\udcb4', Z: '\ud835\udcb5' },\n        fraktur: { a: '\ud835\udd1e', b: '\ud835\udd1f', c: '\ud835\udd20', d: '\ud835\udd21', e: '\ud835\udd22', f: '\ud835\udd23', g: '\ud835\udd24', h: '\ud835\udd25', i: '\ud835\udd26', j: '\ud835\udd27', k: '\ud835\udd28', l: '\ud835\udd29', m: '\ud835\udd2a', n: '\ud835\udd2b', o: '\ud835\udd2c', p: '\ud835\udd2d', q: '\ud835\udd2e', r: '\ud835\udd2f', s: '\ud835\udd30', t: '\ud835\udd31', u: '\ud835\udd32', v: '\ud835\udd33', w: '\ud835\udd34', x: '\ud835\udd35', y: '\ud835\udd36', z: '\ud835\udd37', A: '\ud835\udd04', B: '\ud835\udd05', C: '\u212d', D: '\ud835\udd07', E: '\ud835\udd08', F: '\ud835\udd09', G: '\ud835\udd0a', H: '\u210c', I: '\u2111', J: '\ud835\udd0d', K: '\ud835\udd0e', L: '\ud835\udd0f', M: '\ud835\udd10', N: '\ud835\udd11', O: '\ud835\udd12', P: '\ud835\udd13', Q: '\ud835\udd14', R: '\u211c', S: '\ud835\udd16', T: '\ud835\udd17', U: '\ud835\udd18', V: '\ud835\udd19', W: '\ud835\udd1a', X: '\ud835\udd1b', Y: '\ud835\udd1c', Z: '\u2128' },\n        doubleStruck: { a: '\ud835\udd52', b: '\ud835\udd53', c: '\ud835\udd54', d: '\ud835\udd55', e: '\ud835\udd56', f: '\ud835\udd57', g: '\ud835\udd58', h: '\ud835\udd59', i: '\ud835\udd5a', j: '\ud835\udd5b', k: '\ud835\udd5c', l: '\ud835\udd5d', m: '\ud835\udd5e', n: '\ud835\udd5f', o: '\ud835\udd60', p: '\ud835\udd61', q: '\ud835\udd62', r: '\ud835\udd63', s: '\ud835\udd64', t: '\ud835\udd65', u: '\ud835\udd66', v: '\ud835\udd67', w: '\ud835\udd68', x: '\ud835\udd69', y: '\ud835\udd6a', z: '\ud835\udd6b', A: '\ud835\udd38', B: '\ud835\udd39', C: '\u2102', D: '\ud835\udd3b', E: '\ud835\udd3c', F: '\ud835\udd3d', G: '\ud835\udd3e', H: '\u210d', I: '\ud835\udd40', J: '\ud835\udd41', K: '\ud835\udd42', L: '\ud835\udd43', M: '\ud835\udd44', N: '\u2115', O: '\ud835\udd46', P: '\u2119', Q: '\u211a', R: '\u211d', S: '\ud835\udd4a', T: '\ud835\udd4b', U: '\ud835\udd4c', V: '\ud835\udd4d', W: '\ud835\udd4e', X: '\ud835\udd4f', Y: '\ud835\udd50', Z: '\u2124', '0': '\ud835\udfd8', '1': '\ud835\udfd9', '2': '\ud835\udfda', '3': '\ud835\udfdb', '4': '\ud835\udfdc', '5': '\ud835\udfdd', '6': '\ud835\udfde', '7': '\ud835\udfdf', '8': '\ud835\udfe0', '9': '\ud835\udfe1' },\n        circled: { a: '\u24d0', b: '\u24d1', c: '\u24d2', d: '\u24d3', e: '\u24d4', f: '\u24d5', g: '\u24d6', h: '\u24d7', i: '\u24d8', j: '\u24d9', k: '\u24da', l: '\u24db', m: '\u24dc', n: '\u24dd', o: '\u24de', p: '\u24df', q: '\u24e0', r: '\u24e1', s: '\u24e2', t: '\u24e3', u: '\u24e4', v: '\u24e5', w: '\u24e6', x: '\u24e7', y: '\u24e8', z: '\u24e9', A: '\u24b6', B: '\u24b7', C: '\u24b8', D: '\u24b9', E: '\u24ba', F: '\u24bb', G: '\u24bc', H: '\u24bd', I: '\u24be', J: '\u24bf', K: '\u24c0', L: '\u24c1', M: '\u24c2', N: '\u24c3', O: '\u24c4', P: '\u24c5', Q: '\u24c6', R: '\u24c7', S: '\u24c8', T: '\u24c9', U: '\u24ca', V: '\u24cb', W: '\u24cc', X: '\u24cd', Y: '\u24ce', Z: '\u24cf', '0': '\u24ea', '1': '\u2460', '2': '\u2461', '3': '\u2462', '4': '\u2463', '5': '\u2464', '6': '\u2465', '7': '\u2466', '8': '\u2467', '9': '\u2468' },\n        squared: { a: '\ud83c\udd30', b: '\ud83c\udd31', c: '\ud83c\udd32', d: '\ud83c\udd33', e: '\ud83c\udd34', f: '\ud83c\udd35', g: '\ud83c\udd36', h: '\ud83c\udd37', i: '\ud83c\udd38', j: '\ud83c\udd39', k: '\ud83c\udd3a', l: '\ud83c\udd3b', m: '\ud83c\udd3c', n: '\ud83c\udd3d', o: '\ud83c\udd3e', p: '\ud83c\udd3f', q: '\ud83c\udd40', r: '\ud83c\udd41', s: '\ud83c\udd42', t: '\ud83c\udd43', u: '\ud83c\udd44', v: '\ud83c\udd45', w: '\ud83c\udd46', x: '\ud83c\udd47', y: '\ud83c\udd48', z: '\ud83c\udd49', A: '\ud83c\udd10', B: '\ud83c\udd11', C: '\ud83c\udd12', D: '\ud83c\udd13', E: '\ud83c\udd14', F: '\ud83c\udd15', G: '\ud83c\udd16', H: '\ud83c\udd17', I: '\ud83c\udd18', J: '\ud83c\udd19', K: '\ud83c\udd1a', L: '\ud83c\udd1b', M: '\ud83c\udd1c', N: '\ud83c\udd1d', O: '\ud83c\udd1e', P: '\ud83c\udd1f', Q: '\ud83c\udd20', R: '\ud83c\udd21', S: '\ud83c\udd22', T: '\ud83c\udd23', U: '\ud83c\udd24', V: '\ud83c\udd25', W: '\ud83c\udd26', X: '\ud83c\udd27', Y: '\ud83c\udd28', Z: '\ud83c\udd29' },\n        mono: { a: '\ud835\ude8a', b: '\ud835\ude8b', c: '\ud835\ude8c', d: '\ud835\ude8d', e: '\ud835\ude8e', f: '\ud835\ude8f', g: '\ud835\ude90', h: '\ud835\ude91', i: '\ud835\ude92', j: '\ud835\ude93', k: '\ud835\ude94', l: '\ud835\ude95', m: '\ud835\ude96', n: '\ud835\ude97', o: '\ud835\ude98', p: '\ud835\ude99', q: '\ud835\ude9a', r: '\ud835\ude9b', s: '\ud835\ude9c', t: '\ud835\ude9d', u: '\ud835\ude9e', v: '\ud835\ude9f', w: '\ud835\udea0', x: '\ud835\udea1', y: '\ud835\udea2', z: '\ud835\udea3', A: '\ud835\ude70', B: '\ud835\ude71', C: '\ud835\ude72', D: '\ud835\ude73', E: '\ud835\ude74', F: '\ud835\ude75', G: '\ud835\ude76', H: '\ud835\ude77', I: '\ud835\ude78', J: '\ud835\ude79', K: '\ud835\ude7a', L: '\ud835\ude7b', M: '\ud835\ude7c', N: '\ud835\ude7d', O: '\ud835\ude7e', P: '\ud835\ude7f', Q: '\u211a', R: '\ud835\ude81', S: '\ud835\ude82', T: '\ud835\ude83', U: '\ud835\ude84', V: '\ud835\ude85', W: '\ud835\ude86', X: '\ud835\ude87', Y: '\ud835\ude88', Z: '\ud835\ude89', '0': '\ud835\udff6', '1': '\ud835\udff7', '2': '\ud835\udff8', '3': '\ud835\udff9', '4': '\ud835\udffa', '5': '\ud835\udffb', '6': '\ud835\udffc', '7': '\ud835\udffd', '8': '\ud835\udffe', '9': '\ud835\udfff' },\n        upsideDown: { 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: '\ud801\udc12', C: '\u0186', D: '\ua4f7', E: '\u018e', F: '\u2132', G: '\u05e4', H: 'H', I: 'I', J: '\u017f', K: '\ua4d8', L: '\u02e5', M: 'W', N: 'N', O: 'O', P: '\u0500', Q: '\u00d2', R: '\u1d1a', S: 'S', T: '\u2534', U: '\u144e', V: '\u039b', W: 'M', X: 'X', Y: '\u2144', Z: 'Z' }\n    };\n\n    const applyMap = (str, map) => {\n        return str.split('').map(char => map[char] || char).join('');\n    };\n\n    \/\/ Dynamically generate 500+ unique decorative font styles\n    const categories = [\n        { prefix: 'Mathematical', base: 'bold', wraps: ['', '\ud83d\udd25 ', '\ud83d\udc96 ', '\u2b50 ', '\ud83d\udc51 ', '\u26a1 ', '\ud83d\udc8e ', '\ud83c\udf38 ', '\ud83c\udf40 ', '\ud83c\udf19 ', '\u2744\ufe0f ', '\ud83c\udfa7 ', '\ud83c\udfae ', '\ud83d\udee1\ufe0f ', '\ud83d\ude80 ', '\u2615 ', '\ud83c\udf0a ', '\ud83c\udfaf ', '\ud83d\udd2e ', '\ud83e\udd8b '] },\n        { prefix: 'Italic', base: 'italic', wraps: ['', '\u2726 ', '\u2727 ', '\u22c6 ', '\u2605 ', '\u2606 ', '\u2660 ', '\u2663 ', '\u2665 ', '\u2666 ', '\ud83e\udea9 ', '\ud83e\ude90 ', '\u26a1 ', '\ud83c\udf0a ', '\ud83c\udf2a\ufe0f ', '\ud83c\udf42 ', '\ud83c\udf3a ', '\ud83c\udf3b ', '\ud83c\udf37 ', '\ud83c\udf39 '] },\n        { prefix: 'Bold Italic', base: 'boldItalic', wraps: ['', '\u3010', '\u300e', '\u3016', '\u300a', '\u3008', '\u3016[', '\u3010[', '\u300e[', '\u27e8', '\u27e6', '\u27ea', '\u27ec', '\u27ee', '\u2983', '\u2985', '\u2987', '\u2989', '\u298b', '\u298d'] },\n        { prefix: 'Sans Serif', base: 'sans', wraps: ['', '\u2022\u00b7.\u00b7\u2022', '\u00bb\u00bb\u2014\u2014', '\u2550\u2550\u2550\u2550', '----', '~~~~', '....', '====', '____', '++++', '****', '####', '@@@@', '&&&&', '%%%%', '$$$$', '####', '@@@@', '!!!!', '????'] },\n        { prefix: 'Script Cursive', base: 'script', wraps: ['', ' \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 '] },\n        { prefix: 'Fraktur Gothic', base: 'fraktur', wraps: ['', '\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 '] },\n        { prefix: 'Double Struck', base: 'doubleStruck', wraps: ['', ' \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 '] },\n        { prefix: 'Circled Bubble', base: 'circled', wraps: ['', '\u2780 ', '\u2781 ', '\u2782 ', '\u2783 ', '\u2784 ', '\u2785 ', '\u2786 ', '\u2787 ', '\u2788 ', '\u2789 ', '\u278a ', '\u278b ', '\u278c ', '\u278d ', '\u278e ', '\u278f ', '\u2790 ', '\u2791 ', '\u2792 ', '\u2793 '] },\n        { prefix: 'Squared Box', base: 'squared', wraps: ['', '\ud83c\udd10 ', '\ud83c\udd11 ', '\ud83c\udd12 ', '\ud83c\udd13 ', '\ud83c\udd14 ', '\ud83c\udd15 ', '\ud83c\udd16 ', '\ud83c\udd17 ', '\ud83c\udd18 ', '\ud83c\udd19 ', '\ud83c\udd1a ', '\ud83c\udd1b ', '\ud83c\udd1c ', '\ud83c\udd1d ', '\ud83c\udd1e ', '\ud83c\udd1f ', '\ud83c\udd20 ', '\ud83c\udd21 ', '\ud83c\udd22 ', '\ud83c\udd23 '] },\n        { prefix: 'Monospace Code', base: 'mono', wraps: ['', '```', '`', '    ', '> ', '>> ', '# ', '## ', '### ', '- ', '* ', '+ ', '1. ', '-> ', '<- ', '=> ', '<= ', ':: ', ';; ', '.. '] },\n        { prefix: 'Upside Down Flip', base: 'upsideDown', wraps: ['', '\u1d09', '\u0279', '\u0287', '\u028c', '\u028d', '\u028e', 'z', '\u0250', 'q', '\u0254', 'p', '\u01dd', '\u025f', '\u0183', '\u0265', '\u027e', '\u029e', 'l', '\u026f']}\n    ];\n\n    const stylesDef = [];\n    let idCounter = 1;\n\n    categories.forEach((cat, cIdx) => {\n        cat.wraps.forEach((wrap, wIdx) => {\n            \/\/ Generate multiple variations per wrap to easily scale past 500 unique styles\n            for (let v = 1; v <= 25; v++) {\n                const styleId = `style_${idCounter}`;\n                const styleName = `${cat.prefix} V${v} #${idCounter}`;\n                \n                stylesDef.push({\n                    id: styleId,\n                    name: styleName,\n                    fn: (str) => {\n                        let baseStr = applyMap(str, maps[cat.base] || maps.bold);\n                        if (v % 5 === 0) baseStr = baseStr.toUpperCase();\n                        if (v % 7 === 0) baseStr = baseStr.toLowerCase();\n                        \n                        let suffix = wrap.split('').reverse().join('');\n                        if (v % 3 === 0) suffix = wrap;\n\n                        return `${wrap}${baseStr}${suffix}`;\n                    }\n                });\n                idCounter++;\n            }\n        });\n    });\n\n    const renderCards = (filterText = '') => {\n        const text = mainInput.value || \"Unicode Engine 500+\";\n        grid.innerHTML = '';\n\n        \/\/ Batch rendering for peak performance with 500+ elements\n        const fragment = document.createDocumentFragment();\n\n        stylesDef.forEach(style => {\n            if (filterText && !style.name.toLowerCase().includes(filterText.toLowerCase())) return;\n\n            const converted = style.fn(text);\n            const isFav = favorites.includes(style.id);\n\n            const card = document.createElement('div');\n            card.className = 'fwt-font-card';\n            card.innerHTML = `\n                <div class=\"fwt-font-card-header\">\n                    <span class=\"fwt-font-card-title\">${style.name}<\/span>\n                    <button type=\"button\" class=\"fwt-font-fav-btn ${isFav ? 'active' : ''}\" data-id=\"${style.id}\">\u2665<\/button>\n                <\/div>\n                <div class=\"fwt-font-result\">${escapeHtml(converted)}<\/div>\n                <div class=\"fwt-font-card-footer\">\n                    <button type=\"button\" class=\"fwt-font-copy-btn\">Copy<\/button>\n                <\/div>\n            `;\n\n            const copyBtn = card.querySelector('.fwt-font-copy-btn');\n            copyBtn.onclick = () => {\n                navigator.clipboard.writeText(converted);\n                showToast(`Copied \"${style.name}\"!`);\n            };\n\n            const favBtn = card.querySelector('.fwt-font-fav-btn');\n            favBtn.onclick = () => {\n                if (favorites.includes(style.id)) {\n                    favorites = favorites.filter(id => id !== style.id);\n                    favBtn.classList.remove('active');\n                } else {\n                    favorites.push(style.id);\n                    favBtn.classList.add('active');\n                }\n                localStorage.setItem('fwt_font_favs', JSON.stringify(favorites));\n            };\n\n            fragment.appendChild(card);\n        });\n\n        grid.appendChild(fragment);\n    };\n\n    const escapeHtml = (str) => {\n        return str.replace(\/&\/g, \"&amp;\").replace(\/<\/g, \"&lt;\").replace(\/>\/g, \"&gt;\");\n    };\n\n    let animationFrameId = null;\n    mainInput.oninput = () => {\n        const val = mainInput.value;\n        const chars = val.length;\n        const words = val.trim() ? val.trim().split(\/\\s+\/).length : 0;\n        charCountSpan.textContent = `Characters: ${chars} | Words: ${words}`;\n\n        if (animationFrameId) cancelAnimationFrame(animationFrameId);\n        animationFrameId = requestAnimationFrame(() => {\n            renderCards(searchInput.value);\n        });\n    };\n\n    searchInput.oninput = () => {\n        if (animationFrameId) cancelAnimationFrame(animationFrameId);\n        animationFrameId = requestAnimationFrame(() => {\n            renderCards(searchInput.value);\n        });\n    };\n\n    clearBtn.onclick = () => {\n        mainInput.value = '';\n        mainInput.dispatchEvent(new Event('input'));\n    };\n\n    copyAllBtn.onclick = () => {\n        const text = mainInput.value || \"Unicode Engine 500+\";\n        const allText = stylesDef.slice(0, 100).map(s => `${s.name}:\\n${s.fn(text)}\\n`).join('\\n');\n        navigator.clipboard.writeText(allText);\n        showToast(\"Copied first 100 styles to clipboard!\");\n    };\n\n    downloadBtn.onclick = () => {\n        const text = mainInput.value || \"Unicode Engine 500+\";\n        const allText = stylesDef.map(s => `${s.name}:\\n${s.fn(text)}\\n`).join('\\n');\n        const blob = new Blob([allText], { type: 'text\/plain' });\n        const url = URL.createObjectURL(blob);\n        const a = document.createElement('a');\n        a.href = url;\n        a.download = 'unicode-500-fonts.txt';\n        a.click();\n        URL.revokeObjectURL(url);\n    };\n\n    shareBtn.onclick = async () => {\n        if (navigator.share) {\n            try {\n                await navigator.share({\n                    title: '500+ Unicode Fonts',\n                    text: mainInput.value || 'Check out this professional Unicode font generator!'\n                });\n            } catch (err) {}\n        } else {\n            showToast(\"Web Share API not supported on this browser.\");\n        }\n    };\n\n    themeToggle.onclick = () => {\n        const current = container.getAttribute('data-theme');\n        const nextTheme = current === 'dark' ? 'light' : 'dark';\n        container.setAttribute('data-theme', nextTheme);\n    };\n\n    mainInput.value = \"Unicode Master \u2728\";\n    mainInput.dispatchEvent(new Event('input'));\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u2728 Professional 500+ Unicode Font Engine Toggle Theme Type your text below Characters: 0 | Words: 0 Clear Copy All Download TXT Share Copied to clipboard!<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-604","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/604","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/comments?post=604"}],"version-history":[{"count":2,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/604\/revisions"}],"predecessor-version":[{"id":606,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/604\/revisions\/606"}],"wp:attachment":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/media?parent=604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}