Advanced ASCII Art Generator

Professional ASCII art creation with FIGlet fonts and advanced controls

Enter Your Text

0 / 50 characters

Font Selection & Styles

Preview will appear here…

Advanced Configuration

80 characters

Tools & Utilities

ASCII Art Results

๐ŸŽจ Welcome to Advanced ASCII Art Generator!

Use the tabs above to input text, select fonts, adjust settings, and access powerful tools!

${currentASCIIArt} `); printWindow.document.close(); printWindow.print(); showNotification('Print dialog opened!'); } function showAbout() { asciiResultsContainer.innerHTML = `

๐ŸŽจ Advanced ASCII Art Generator

Version: 2.0 Professional

Features: 16 ASCII fonts, Advanced controls, Multiple output formats

Created: ${new Date().getFullYear()}


This advanced ASCII art generator provides professional-grade text-to-ASCII conversion with extensive customization options.

Supported Features:

  • 16 Different ASCII Font Styles
  • Character Width & Height Controls
  • Text Alignment Options
  • Border Styles & Line Spacing
  • Multiple Color Schemes
  • Export to HTML, Markdown, BBCode
  • Print & Share Functionality
  • Save/Load Settings
`; } function showHelp() { asciiResultsContainer.innerHTML = `

๐Ÿ“– Help & Usage Guide

๐ŸŽฏ Quick Start:

  1. Enter your text in the Text Input tab
  2. Choose a font style in the Fonts & Styles tab
  3. Adjust settings in the Advanced Settings tab
  4. Use tools in the Tools & Utilities tab

โš™๏ธ Controls Explained:

  • Character Width: Controls spacing between characters
  • Character Height: Adjusts vertical spacing and proportion
  • Text Alignment: Positions text within the output area
  • Line Spacing: Controls space between lines
  • Border Style: Adds decorative borders around text
  • Output Width: Sets maximum width in characters

๐ŸŽจ Tips for Best Results:

  • Keep text under 20 characters for optimal display
  • Use UPPERCASE for better visibility
  • Try different fonts for various effects
  • Adjust character width for tighter/looser spacing
  • Use borders for framing important text

๐Ÿ“‹ Keyboard Shortcuts:

  • Ctrl+Enter: Generate ASCII art
  • Ctrl+C: Copy result
  • Ctrl+S: Save settings
`; } // ASCII Art Styles and Generators const asciiStyles = { 'block': { name: 'Block Letters', preview: 'โ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆ โ–ˆ\nโ–ˆ โ–ˆ โ–ˆ โ–ˆ\nโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆ โ–ˆ', generator: generateBlockASCII }, 'thin': { name: 'Thin Lines', preview: 'โ”Œโ”€โ” โ”Œโ”€ โ”Œโ”€โ”\nโ”œโ”€โ”ค โ”œโ”€ โ”‚ \nโ”˜ โ”” โ””โ”€ โ””โ”€โ”˜', generator: generateThinASCII }, 'double': { name: 'Double Lines', preview: 'โ•”โ•โ• โ•”โ•โ• โ•”โ•โ•\nโ•‘ โ•‘ โ•‘ \nโ•šโ•โ• โ•šโ•โ• โ•šโ•โ•', generator: generateDoubleASCII }, 'shadow': { name: '3D Shadow', preview: 'โ–„โ–„โ–„ โ–„โ–„ โ–„โ–„โ–„\nโ–ˆโ–„โ–„ โ–ˆโ–„โ–„ โ–ˆโ–„โ–„\nโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆ', generator: generateShadowASCII }, 'dots': { name: 'Dotted Style', preview: 'โ€ขโ€ขโ€ข โ€ขโ€ขโ€ข โ€ขโ€ข\nโ€ข โ€ข โ€ข โ€ขโ€ข\nโ€ขโ€ขโ€ข โ€ขโ€ขโ€ข โ€ขโ€ข', generator: generateDotsASCII }, 'slant': { name: 'Slanted', preview: ' __ ___\n / / / __\n /_/ /___/', generator: generateSlantASCII }, 'small': { name: 'Small', preview: 'o-o |-| o\n| |-| |\no-o |-| o', generator: generateSmallASCII }, 'big': { name: 'Big Bold', preview: 'โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ\nโ–ˆโ–ˆ โ–ˆโ–ˆ โ–ˆโ–ˆ\nโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ', generator: generateBigASCII }, 'outline': { name: 'Outline Style', preview: 'โ•ญโ”€โ•ฎ โ•ญโ”€โ•ฎ โ•ญโ”€โ•ฎ\nโ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚\nโ•ฐโ”€โ•ฏ โ•ฐโ”€โ•ฏ โ•ฐโ”€โ•ฏ', generator: generateOutlineASCII }, 'bubble': { name: 'Bubble Letters', preview: 'โ—‹โ—‹โ—‹ โ—‹โ—‹ โ—‹\nโ—‹ โ—‹ โ—‹ โ—‹\nโ—‹โ—‹โ—‹ โ—‹โ—‹ โ—‹', generator: generateBubbleASCII }, 'star': { name: 'Star Pattern', preview: 'โ˜…โ˜…โ˜… โ˜…โ˜… โ˜…\nโ˜… โ˜… โ˜… โ˜…\nโ˜…โ˜…โ˜… โ˜…โ˜… โ˜…', generator: generateStarASCII }, 'digital': { name: 'Digital Display', preview: 'โ–“โ–“โ–“ โ–“โ–“โ–“ โ–“โ–“โ–“\nโ–“ โ–“ โ–“ โ–“โ–“โ–“\nโ–“โ–“โ–“ โ–“โ–“โ–“ โ–“โ–“โ–“', generator: generateDigitalASCII }, 'neon': { name: 'Neon Style', preview: 'โ–‘โ–ˆโ–‘ โ–‘โ–ˆโ–‘ โ–‘โ–ˆโ–‘\nโ–‘โ–ˆโ–‘ โ–‘โ–ˆโ–‘ โ–‘โ–ˆโ–‘\nโ–‘โ–ˆโ–‘ โ–‘โ–ˆโ–‘ โ–‘โ–ˆโ–‘', generator: generateNeonASCII }, 'rounded': { name: 'Rounded Corners', preview: 'โ•ญโ”€โ•ฎ โ•ญโ”€โ•ฎ โ•ญโ”€โ•ฎ\nโ”œโ”€โ”ค โ”œโ”€โ”ค โ”‚ โ”‚\nโ•ฐโ”€โ•ฏ โ•ฐโ”€โ•ฏ โ•ฐโ”€โ•ฏ', generator: generateRoundedASCII }, 'morse': { name: 'Morse Code', preview: 'โ€ขโ€ขโ€ข โ€ขโ€ขโ€ข โ€ขโ€ข\nโ€ข โ€ขโ€ขโ€ข โ€ขโ€ข\nโ€ขโ€ขโ€ข โ€ขโ€ขโ€ข โ€ขโ€ข', generator: generateMorseASCII }, 'pixel': { name: 'Pixel Art', preview: 'โ–ชโ–ชโ–ช โ–ชโ–ชโ–ช โ–ชโ–ชโ–ช\nโ–ช โ–ช โ–ช โ–ช \nโ–ชโ–ชโ–ช โ–ชโ–ชโ–ช โ–ชโ–ชโ–ช', generator: generatePixelASCII } }; // Character mappings for different ASCII styles const charMaps = { block: { 'A': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ'], 'B': ['โ–ˆโ–ˆ ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆ ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆ '], 'C': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ ', 'โ–ˆ ', 'โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ'], 'D': ['โ–ˆโ–ˆ ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆ '], 'E': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ ', 'โ–ˆโ–ˆ ', 'โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ'], 'F': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ ', 'โ–ˆโ–ˆ ', 'โ–ˆ ', 'โ–ˆ '], 'G': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ'], 'H': ['โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ'], 'I': ['โ–ˆโ–ˆโ–ˆ', ' โ–ˆ ', ' โ–ˆ ', ' โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ'], 'J': ['โ–ˆโ–ˆโ–ˆ', ' โ–ˆ', ' โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ'], 'K': ['โ–ˆ โ–ˆ', 'โ–ˆโ–ˆ ', 'โ–ˆ ', 'โ–ˆโ–ˆ ', 'โ–ˆ โ–ˆ'], 'L': ['โ–ˆ ', 'โ–ˆ ', 'โ–ˆ ', 'โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ'], 'M': ['โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ'], 'N': ['โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ'], 'O': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ'], 'P': ['โ–ˆโ–ˆ ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆ ', 'โ–ˆ ', 'โ–ˆ '], 'Q': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', ' โ–ˆ'], 'R': ['โ–ˆโ–ˆ ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆ ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ'], 'S': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ', ' โ–ˆ', 'โ–ˆโ–ˆโ–ˆ'], 'T': ['โ–ˆโ–ˆโ–ˆ', ' โ–ˆ ', ' โ–ˆ ', ' โ–ˆ ', ' โ–ˆ '], 'U': ['โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ'], 'V': ['โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', ' โ–ˆ '], 'W': ['โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ'], 'X': ['โ–ˆ โ–ˆ', ' โ–ˆ ', ' โ–ˆ ', ' โ–ˆ ', 'โ–ˆ โ–ˆ'], 'Y': ['โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', ' โ–ˆ ', ' โ–ˆ ', ' โ–ˆ '], 'Z': ['โ–ˆโ–ˆโ–ˆ', ' โ–ˆ', ' โ–ˆ ', 'โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ'], '0': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ'], '1': [' โ–ˆ ', 'โ–ˆโ–ˆ ', ' โ–ˆ ', ' โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ'], '2': ['โ–ˆโ–ˆโ–ˆ', ' โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ'], '3': ['โ–ˆโ–ˆโ–ˆ', ' โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', ' โ–ˆ', 'โ–ˆโ–ˆโ–ˆ'], '4': ['โ–ˆ โ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', ' โ–ˆ', ' โ–ˆ'], '5': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ', ' โ–ˆ', 'โ–ˆโ–ˆโ–ˆ'], '6': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ'], '7': ['โ–ˆโ–ˆโ–ˆ', ' โ–ˆ', ' โ–ˆ', ' โ–ˆ', ' โ–ˆ'], '8': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ'], '9': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', ' โ–ˆ', 'โ–ˆโ–ˆโ–ˆ'], ' ': [' ', ' ', ' ', ' ', ' '], '!': [' โ–ˆ ', ' โ–ˆ ', ' โ–ˆ ', ' ', ' โ–ˆ '], '?': ['โ–ˆโ–ˆโ–ˆ', ' โ–ˆ', ' โ–ˆ ', ' ', ' โ–ˆ '], '.': [' ', ' ', ' ', ' ', ' โ–ˆ '], ',': [' ', ' ', ' ', ' โ–ˆ ', 'โ–ˆ '], ':': [' ', ' โ–ˆ ', ' ', ' โ–ˆ ', ' '], ';': [' ', ' โ–ˆ ', ' ', ' โ–ˆ ', 'โ–ˆ '], '-': [' ', ' ', 'โ–ˆโ–ˆโ–ˆ', ' ', ' '], '_': [' ', ' ', ' ', ' ', 'โ–ˆโ–ˆโ–ˆ'], '=': [' ', 'โ–ˆโ–ˆโ–ˆ', ' ', 'โ–ˆโ–ˆโ–ˆ', ' '], '+': [' ', ' โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ', ' โ–ˆ ', ' '], '*': [' ', 'โ–ˆ โ–ˆ', ' โ–ˆ ', 'โ–ˆ โ–ˆ', ' '], '/': [' โ–ˆ', ' โ–ˆ', ' โ–ˆ ', 'โ–ˆ ', 'โ–ˆ '], '\\': ['โ–ˆ ', 'โ–ˆ ', ' โ–ˆ ', ' โ–ˆ', ' โ–ˆ'], '|': [' โ–ˆ ', ' โ–ˆ ', ' โ–ˆ ', ' โ–ˆ ', ' โ–ˆ '], '(': [' โ–ˆ ', 'โ–ˆ ', 'โ–ˆ ', 'โ–ˆ ', ' โ–ˆ '], ')': [' โ–ˆ ', ' โ–ˆ', ' โ–ˆ', ' โ–ˆ', ' โ–ˆ '], '[': ['โ–ˆโ–ˆ ', 'โ–ˆ ', 'โ–ˆ ', 'โ–ˆ ', 'โ–ˆโ–ˆ '], ']': [' โ–ˆโ–ˆ', ' โ–ˆ', ' โ–ˆ', ' โ–ˆ', ' โ–ˆโ–ˆ'], '{': [' โ–ˆโ–ˆ', 'โ–ˆ ', 'โ–ˆโ–ˆ ', 'โ–ˆ ', ' โ–ˆโ–ˆ'], '}': ['โ–ˆโ–ˆ ', ' โ–ˆ', ' โ–ˆโ–ˆ', ' โ–ˆ', 'โ–ˆโ–ˆ '], '<': [' โ–ˆ', ' โ–ˆ ', 'โ–ˆ ', ' โ–ˆ ', ' โ–ˆ'], '>': ['โ–ˆ ', ' โ–ˆ ', ' โ–ˆ', ' โ–ˆ ', 'โ–ˆ '], '@': ['โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ'], '#': ['โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆ โ–ˆ'], '$': [' โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ', 'โ–ˆ ', 'โ–ˆโ–ˆโ–ˆ', ' โ–ˆ '], '%': ['โ–ˆ โ–ˆ', ' โ–ˆ', ' โ–ˆ ', 'โ–ˆ ', 'โ–ˆ โ–ˆ'], '^': [' โ–ˆ ', 'โ–ˆ โ–ˆ', ' ', ' ', ' '], '&': ['โ–ˆโ–ˆ ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆ ', 'โ–ˆ โ–ˆ', 'โ–ˆโ–ˆโ–ˆ'], '~': [' ', 'โ–ˆ โ–ˆ', ' โ–ˆโ–ˆ', ' ', ' '] }, thin: { 'A': ['โ”Œโ”€โ”', 'โ”œโ”€โ”ค', 'โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ”” โ”˜'], 'B': ['โ”œโ”€โ”', 'โ”œโ”€โ”ค', 'โ”œโ”€โ”ค', 'โ”œโ”€โ”ค', 'โ”œโ”€โ”˜'], 'C': ['โ”Œโ”€โ”', 'โ”‚ ', 'โ”‚ ', 'โ”‚ ', 'โ””โ”€โ”˜'], 'D': ['โ”œโ”€โ”', 'โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ”œโ”€โ”˜'], 'E': ['โ”Œโ”€โ”', 'โ”œโ”€ ', 'โ”œโ”€ ', 'โ”œโ”€ ', 'โ””โ”€โ”˜'], 'F': ['โ”Œโ”€โ”', 'โ”œโ”€ ', 'โ”œโ”€ ', 'โ”‚ ', 'โ”” '], 'G': ['โ”Œโ”€โ”', 'โ”‚ ', 'โ”‚ โ”Œ', 'โ”‚ โ”‚', 'โ””โ”€โ”˜'], 'H': ['โ”‚ โ”‚', 'โ”œโ”€โ”ค', 'โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ”” โ”˜'], 'I': ['โ”Œโ”€โ”', ' โ”‚ ', ' โ”‚ ', ' โ”‚ ', 'โ””โ”€โ”˜'], 'J': ['โ”Œโ”€โ”', ' โ”‚', ' โ”‚', 'โ”‚ โ”‚', 'โ””โ”€โ”˜'], 'K': ['โ”‚ โ”‚', 'โ”œโ”€โ”˜', 'โ”œโ”€ ', 'โ”œโ”€โ”', 'โ”” โ”˜'], 'L': ['โ”‚ ', 'โ”‚ ', 'โ”‚ ', 'โ”‚ ', 'โ””โ”€โ”˜'], 'M': ['โ”‚ โ”‚', 'โ”œโ”ฌโ”ค', 'โ”‚โ”‚โ”‚', 'โ”‚โ”‚โ”‚', 'โ””โ”ดโ”˜'], 'N': ['โ”‚ โ”‚', 'โ”œโ”ฌโ”ค', 'โ”‚โ”‚โ”‚', 'โ”‚โ”‚โ”‚', 'โ””โ”ดโ”˜'], 'O': ['โ”Œโ”€โ”', 'โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ””โ”€โ”˜'], 'P': ['โ”œโ”€โ”', 'โ”œโ”€โ”ค', 'โ”œโ”€โ”˜', 'โ”‚ ', 'โ”” '], 'Q': ['โ”Œโ”€โ”', 'โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ””โ”€โ”ค', ' โ””'], 'R': ['โ”œโ”€โ”', 'โ”œโ”€โ”ค', 'โ”œโ”€โ”˜', 'โ”œโ”€โ”', 'โ”” โ”˜'], 'S': ['โ”Œโ”€โ”', 'โ”œโ”€ ', 'โ””โ”€โ”', ' โ”‚', 'โ””โ”€โ”˜'], 'T': ['โ”Œโ”€โ”', ' โ”‚ ', ' โ”‚ ', ' โ”‚ ', ' โ”” '], 'U': ['โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ””โ”€โ”˜'], 'V': ['โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ””โ”ฌโ”˜', ' โ”” '], 'W': ['โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ”‚โ”‚โ”‚', 'โ”œโ”ฌโ”ค', 'โ””โ”ดโ”˜'], 'X': ['โ”‚ โ”‚', 'โ””โ”ฌโ”˜', ' โ”‚ ', 'โ”Œโ”ดโ”', 'โ”” โ”˜'], 'Y': ['โ”‚ โ”‚', 'โ””โ”ฌโ”˜', ' โ”‚ ', ' โ”‚ ', ' โ”” '], 'Z': ['โ”Œโ”€โ”', ' โ”Œ', ' โ”Œ ', 'โ”Œ ', 'โ””โ”€โ”˜'], '0': ['โ”Œโ”€โ”', 'โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ””โ”€โ”˜'], '1': [' โ”Œ ', ' โ”‚ ', ' โ”‚ ', ' โ”‚ ', ' โ”” '], '2': ['โ”Œโ”€โ”', ' โ”‚', 'โ”Œโ”€โ”˜', 'โ”‚ ', 'โ””โ”€โ”˜'], '3': ['โ”Œโ”€โ”', ' โ”‚', 'โ”œโ”€โ”', ' โ”‚', 'โ””โ”€โ”˜'], '4': ['โ”‚ โ”‚', 'โ”‚ โ”‚', 'โ””โ”€โ”ค', ' โ”‚', ' โ””'], '5': ['โ”Œโ”€โ”', 'โ”œโ”€ ', 'โ””โ”€โ”', ' โ”‚', 'โ””โ”€โ”˜'], '6': ['โ”Œโ”€โ”', 'โ”œโ”€ ', 'โ”œโ”€โ”', 'โ”‚ โ”‚', 'โ””โ”€โ”˜'], '7': ['โ”Œโ”€โ”', ' โ”‚', ' โ”‚', ' โ”‚', ' โ””'], '8': ['โ”Œโ”€โ”', 'โ”œโ”€โ”ค', 'โ”œโ”€โ”ค', 'โ”‚ โ”‚', 'โ””โ”€โ”˜'], '9': ['โ”Œโ”€โ”', 'โ”‚ โ”‚', 'โ””โ”€โ”ค', ' โ”‚', 'โ””โ”€โ”˜'], ' ': [' ', ' ', ' ', ' ', ' '], '!': [' โ”‚ ', ' โ”‚ ', ' โ”‚ ', ' ', ' โ€ข '], '?': ['โ”Œโ”€โ”', ' โ”‚', ' โ”Œ ', ' ', ' โ€ข '], '.': [' ', ' ', ' ', ' ', ' โ€ข '], ',': [' ', ' ', ' ', ' โ€ข ', 'โ”Œ '], ':': [' ', ' โ€ข ', ' ', ' โ€ข ', ' '], ';': [' ', ' โ€ข ', ' ', ' โ€ข ', 'โ”Œ '], '-': [' ', ' ', 'โ”€โ”€โ”€', ' ', ' '], '_': [' ', ' ', ' ', ' ', 'โ”€โ”€โ”€'], '=': [' ', 'โ”€โ”€โ”€', ' ', 'โ”€โ”€โ”€', ' '], '+': [' ', ' โ”‚ ', 'โ”€โ”ผโ”€', ' โ”‚ ', ' '], '*': [' ', 'โ”‚โ€ขโ”‚', 'โ”€โ€ขโ”€', 'โ”‚โ€ขโ”‚', ' '], '/': [' โ”Œ', ' โ”‚', ' โ”Œ ', 'โ”Œ ', 'โ”‚ '], '\\': ['โ” ', 'โ”‚ ', ' โ” ', ' โ”', ' โ”‚'], '|': [' โ”‚ ', ' โ”‚ ', ' โ”‚ ', ' โ”‚ ', ' โ”‚ '], '(': [' โ”Œ ', 'โ”Œ ', 'โ”‚ ', 'โ”” ', ' โ”” '], ')': [' โ” ', ' โ”', ' โ”‚', ' โ”Œ', ' โ”Œ '], '[': ['โ”Œโ”€ ', 'โ”‚ ', 'โ”‚ ', 'โ”‚ ', 'โ””โ”€ '], ']': [' โ”€โ”', ' โ”‚', ' โ”‚', ' โ”‚', ' โ”€โ”˜'], '{': [' โ”€โ”', 'โ”Œ ', 'โ”œโ”€ ', 'โ”” ', ' โ”€โ”˜'], '}': ['โ”Œโ”€ ', ' โ”', ' โ”€โ”ค', ' โ”Œ', 'โ””โ”€ '], '<': [' โ”Œ', ' โ”Œ ', 'โ”Œ ', ' โ”” ', ' โ””'], '>': ['โ” ', ' โ”” ', ' โ””', ' โ”Œ ', 'โ”Œ '], '@': ['โ”Œโ”€โ”', 'โ”‚โ€ขโ”‚', 'โ”œโ”€โ”ค', 'โ”‚ ', 'โ””โ”€โ”˜'], '#': ['โ”‚โ€ขโ”‚', 'โ”œโ”€โ”ค', 'โ”‚โ€ขโ”‚', 'โ”œโ”€โ”ค', 'โ””โ€ขโ”˜'], '$': [' โ”‚ ', 'โ”Œโ”€โ”ค', 'โ””โ”€โ”', 'โ”œโ”€โ”˜', ' โ”‚ '], '%': ['โ”Œโ€ขโ”', ' โ”Œ', ' โ”Œ ', 'โ”Œ ', 'โ””โ€ขโ”˜'], '^': [' โ”Œ ', 'โ”Œ โ””', ' ', ' ', ' '], '&': ['โ”Œโ”€ ', 'โ”œโ”€โ”', 'โ”œโ”€โ”˜', 'โ”œโ”€โ”', 'โ””โ”€โ”˜'], '~': [' ', 'โ”Œโ€ขโ”', 'โ”” โ””', ' ', ' '] } }; // Generate different ASCII art styles function generateBlockASCII(text) { return generateFromCharMap(text.toUpperCase(), charMaps.block, 5); } function generateThinASCII(text) { return generateFromCharMap(text.toUpperCase(), charMaps.thin, 5); } function generateDoubleASCII(text) { const lines = ['', '', '', '', '']; for (let char of text.toUpperCase()) { const pattern = charMaps.thin[char] || charMaps.thin[' ']; for (let i = 0; i < 5; i++) { lines[i] += pattern[i].replace(/โ”€/g, 'โ•').replace(/โ”‚/g, 'โ•‘').replace(/โ”Œ/g, 'โ•”').replace(/โ”/g, 'โ•—').replace(/โ””/g, 'โ•š').replace(/โ”˜/g, 'โ•').replace(/โ”œ/g, 'โ• ').replace(/โ”ค/g, 'โ•ฃ').replace(/โ”ฌ/g, 'โ•ฆ').replace(/โ”ด/g, 'โ•ฉ').replace(/โ”ผ/g, 'โ•ฌ') + ' '; } } return lines.join('\n'); } function generateShadowASCII(text) { const lines = ['', '', '', '', '']; for (let char of text.toUpperCase()) { const pattern = charMaps.block[char] || charMaps.block[' ']; for (let i = 0; i < 5; i++) { let line = pattern[i].replace(/โ–ˆ/g, 'โ–“').replace(/ /g, 'โ–‘'); lines[i] += line + 'โ–’'; } } // Add shadow effect for (let i = 1; i < 5; i++) { lines[i] += 'โ–’'.repeat(text.length); } lines.push('โ–’'.repeat(lines[0].length)); return lines.join('\n'); } function generateDotsASCII(text) { const lines = ['', '', '', '', '']; for (let char of text.toUpperCase()) { const pattern = charMaps.block[char] || charMaps.block[' ']; for (let i = 0; i < 5; i++) { lines[i] += pattern[i].replace(/โ–ˆ/g, 'โ—').replace(/ /g, 'ยท') + ' '; } } return lines.join('\n'); } function generateSlantASCII(text) { const lines = ['', '', '', '', '']; for (let char of text.toUpperCase()) { const pattern = charMaps.block[char] || charMaps.block[' ']; for (let i = 0; i < 5; i++) { lines[i] += pattern[i].replace(/โ–ˆ/g, '/').replace(/ /g, ' ') + ' '; } } return lines.join('\n'); } function generateSmallASCII(text) { let result = ''; for (let char of text.toUpperCase()) { if (char === ' ') { result += ' '; } else if (char.match(/[A-Z]/)) { result += char.toLowerCase() + ' '; } else { result += char + ' '; } } return result.trim(); } function generateBigASCII(text) { const lines = ['', '', '', '', '', '', '']; for (let char of text.toUpperCase()) { const pattern = charMaps.block[char] || charMaps.block[' ']; for (let i = 0; i < 5; i++) { lines[i] += pattern[i].replace(/โ–ˆ/g, 'โ–ˆโ–ˆ').replace(/ /g, ' ') + ' '; lines[i + 2] += pattern[i].replace(/โ–ˆ/g, 'โ–ˆโ–ˆ').replace(/ /g, ' ') + ' '; } } return lines.slice(0, 7).join('\n'); } function generateOutlineASCII(text) { const lines = ['', '', '', '', '']; for (let char of text.toUpperCase()) { const pattern = charMaps.thin[char] || charMaps.thin[' ']; for (let i = 0; i < 5; i++) { lines[i] += pattern[i].replace(/โ”€/g, 'โ”€').replace(/โ”‚/g, 'โ”‚').replace(/โ”Œ/g, 'โ•ญ').replace(/โ”/g, 'โ•ฎ').replace(/โ””/g, 'โ•ฐ').replace(/โ”˜/g, 'โ•ฏ').replace(/โ”œ/g, 'โ”œ').replace(/โ”ค/g, 'โ”ค') + ' '; } } return lines.join('\n'); } function generateBubbleASCII(text) { const lines = ['', '', '', '', '']; for (let char of text.toUpperCase()) { const pattern = charMaps.block[char] || charMaps.block[' ']; for (let i = 0; i < 5; i++) { lines[i] += pattern[i].replace(/โ–ˆ/g, 'โ—‹').replace(/ /g, ' ') + ' '; } } return lines.join('\n'); } function generateStarASCII(text) { const lines = ['', '', '', '', '']; for (let char of text.toUpperCase()) { const pattern = charMaps.block[char] || charMaps.block[' ']; for (let i = 0; i < 5; i++) { lines[i] += pattern[i].replace(/โ–ˆ/g, 'โ˜…').replace(/ /g, ' ') + ' '; } } return lines.join('\n'); } function generateDigitalASCII(text) { const lines = ['', '', '', '', '']; for (let char of text.toUpperCase()) { const pattern = charMaps.block[char] || charMaps.block[' ']; for (let i = 0; i < 5; i++) { lines[i] += pattern[i].replace(/โ–ˆ/g, 'โ–“').replace(/ /g, 'โ–‘') + ' '; } } return lines.join('\n'); } function generateNeonASCII(text) { const lines = ['', '', '', '', '']; for (let char of text.toUpperCase()) { const pattern = charMaps.block[char] || charMaps.block[' ']; for (let i = 0; i < 5; i++) { lines[i] += pattern[i].replace(/โ–ˆ/g, 'โ–ˆ').replace(/ /g, 'โ–‘') + ' '; } } return lines.join('\n'); } function generateRoundedASCII(text) { const lines = ['', '', '', '', '']; for (let char of text.toUpperCase()) { const pattern = charMaps.thin[char] || charMaps.thin[' ']; for (let i = 0; i < 5; i++) { lines[i] += pattern[i].replace(/โ”Œ/g, 'โ•ญ').replace(/โ”/g, 'โ•ฎ').replace(/โ””/g, 'โ•ฐ').replace(/โ”˜/g, 'โ•ฏ').replace(/โ”œ/g, 'โ”œ').replace(/โ”ค/g, 'โ”ค').replace(/โ”ฌ/g, 'โ”ฌ').replace(/โ”ด/g, 'โ”ด') + ' '; } } return lines.join('\n'); } function generateMorseASCII(text) { const morseCode = { 'A': 'โ€ขโˆ’', 'B': 'โˆ’โ€ขโ€ขโ€ข', 'C': 'โˆ’โ€ขโˆ’โ€ข', 'D': 'โˆ’โ€ขโ€ข', 'E': 'โ€ข', 'F': 'โ€ขโ€ขโˆ’โ€ข', 'G': 'โˆ’โˆ’โ€ข', 'H': 'โ€ขโ€ขโ€ขโ€ข', 'I': 'โ€ขโ€ข', 'J': 'โ€ขโˆ’โˆ’โˆ’', 'K': 'โˆ’โ€ขโˆ’', 'L': 'โ€ขโˆ’โ€ขโ€ข', 'M': 'โˆ’โˆ’', 'N': 'โˆ’โ€ข', 'O': 'โˆ’โˆ’โˆ’', 'P': 'โ€ขโˆ’โˆ’โ€ข', 'Q': 'โˆ’โˆ’โ€ขโˆ’', 'R': 'โ€ขโˆ’โ€ข', 'S': 'โ€ขโ€ขโ€ข', 'T': 'โˆ’', 'U': 'โ€ขโ€ขโˆ’', 'V': 'โ€ขโ€ขโ€ขโˆ’', 'W': 'โ€ขโˆ’โˆ’', 'X': 'โˆ’โ€ขโ€ขโˆ’', 'Y': 'โˆ’โ€ขโˆ’โˆ’', 'Z': 'โˆ’โˆ’โ€ขโ€ข', '0': 'โˆ’โˆ’โˆ’โˆ’โˆ’', '1': 'โ€ขโˆ’โˆ’โˆ’โˆ’', '2': 'โ€ขโ€ขโˆ’โˆ’โˆ’', '3': 'โ€ขโ€ขโ€ขโˆ’โˆ’', '4': 'โ€ขโ€ขโ€ขโ€ขโˆ’', '5': 'โ€ขโ€ขโ€ขโ€ขโ€ข', '6': 'โˆ’โ€ขโ€ขโ€ขโ€ข', '7': 'โˆ’โˆ’โ€ขโ€ขโ€ข', '8': 'โˆ’โˆ’โˆ’โ€ขโ€ข', '9': 'โˆ’โˆ’โˆ’โˆ’โ€ข', ' ': '/' }; let result = ''; for (let char of text.toUpperCase()) { result += (morseCode[char] || '?') + ' '; } return result.trim(); } function generatePixelASCII(text) { const lines = ['', '', '', '', '']; for (let char of text.toUpperCase()) { const pattern = charMaps.block[char] || charMaps.block[' ']; for (let i = 0; i < 5; i++) { lines[i] += pattern[i].replace(/โ–ˆ/g, 'โ–ช').replace(/ /g, 'โ–ซ') + ' '; } } return lines.join('\n'); } function generateFromCharMap(text, charMap, height) { const lines = Array(height).fill(''); for (let char of text) { const pattern = charMap[char] || charMap[' ']; for (let i = 0; i < height; i++) { lines[i] += pattern[i] + ' '; } } return lines.join('\n'); } // Initialize ASCII styles function initializeStyles() { asciiStyleGrid.innerHTML = ''; Object.entries(asciiStyles).forEach(([key, style]) => { const card = document.createElement('div'); card.className = 'ascii-style-card'; card.setAttribute('data-style', key); card.onclick = () => selectStyle(key, card); card.innerHTML = `
${style.name}
${style.preview}
`; asciiStyleGrid.appendChild(card); }); } // Select ASCII style function selectStyle(styleKey, element) { // Remove previous selection document.querySelectorAll('.ascii-style-card').forEach(card => { card.classList.remove('selected'); }); // Select new style element.classList.add('selected'); selectedStyle = styleKey; // Show notification showNotification(`Style Selected: ${asciiStyles[styleKey].name}`); // Generate ASCII art if text exists const text = asciiInputText.value.trim(); if (text) { generateASCIIArt(text); } else { generateASCIIArt('SAMPLE'); } // Scroll to results setTimeout(() => { asciiResults.scrollIntoView({ behavior: 'smooth', block: 'start' }); }, 300); } // Generate ASCII art function generateASCIIArt(text) { const style = asciiStyles[currentSettings.font]; if (!style) return; let asciiArt = style.generator(text); currentASCIIArt = asciiArt; // Apply settings asciiArt = applySettings(asciiArt); asciiResultsContainer.innerHTML = `

${style.name} Style

${asciiArt}
`; // Apply color scheme setTimeout(() => { applyColorScheme(); }, 100); } function applySettings(asciiArt) { let lines = asciiArt.split('\n'); // Apply line spacing if (currentSettings.lineSpacing === 'tight') { lines = lines.filter((line, index) => index % 2 === 0 || line.trim() !== ''); } else if (currentSettings.lineSpacing === 'loose') { const spacedLines = []; lines.forEach(line => { spacedLines.push(line); spacedLines.push(''); }); lines = spacedLines; } else if (currentSettings.lineSpacing === 'double') { const doubleLines = []; lines.forEach(line => { doubleLines.push(line); doubleLines.push(''); doubleLines.push(''); }); lines = doubleLines; } // Apply alignment const maxWidth = Math.max(...lines.map(line => line.length)); if (currentSettings.alignment === 'center') { lines = lines.map(line => { const padding = Math.max(0, Math.floor((maxWidth - line.length) / 2)); return ' '.repeat(padding) + line; }); } else if (currentSettings.alignment === 'right') { lines = lines.map(line => { const padding = Math.max(0, maxWidth - line.length); return ' '.repeat(padding) + line; }); } // Apply border if (currentSettings.borderStyle !== 'none') { lines = addBorder(lines, currentSettings.borderStyle); } return lines.join('\n'); } function addBorder(lines, borderStyle) { const maxWidth = Math.max(...lines.map(line => line.length)); const paddedLines = lines.map(line => line + ' '.repeat(maxWidth - line.length)); let borderChars; switch (borderStyle) { case 'simple': borderChars = { h: '-', v: '|', tl: '+', tr: '+', bl: '+', br: '+' }; break; case 'double': borderChars = { h: 'โ•', v: 'โ•‘', tl: 'โ•”', tr: 'โ•—', bl: 'โ•š', br: 'โ•' }; break; case 'rounded': borderChars = { h: 'โ”€', v: 'โ”‚', tl: 'โ•ญ', tr: 'โ•ฎ', bl: 'โ•ฐ', br: 'โ•ฏ' }; break; case 'thick': borderChars = { h: 'โ”', v: 'โ”ƒ', tl: 'โ”', tr: 'โ”“', bl: 'โ”—', br: 'โ”›' }; break; default: return lines; } const topBorder = borderChars.tl + borderChars.h.repeat(maxWidth + 2) + borderChars.tr; const bottomBorder = borderChars.bl + borderChars.h.repeat(maxWidth + 2) + borderChars.br; const borderedLines = [topBorder]; paddedLines.forEach(line => { borderedLines.push(borderChars.v + ' ' + line + ' ' + borderChars.v); }); borderedLines.push(bottomBorder); return borderedLines; } // Copy ASCII art to clipboard async function copyASCIIArt() { try { await navigator.clipboard.writeText(currentASCIIArt); showNotification('ASCII Art Copied Successfully!'); } catch (err) { console.error('Failed to copy: ', err); // Fallback method for older browsers const textArea = document.createElement('textarea'); textArea.value = currentASCIIArt; document.body.appendChild(textArea); textArea.select(); try { document.execCommand('copy'); showNotification('ASCII Art Copied Successfully!'); } catch (fallbackErr) { showNotification('Copy Failed - Please manually select and copy'); } document.body.removeChild(textArea); } } // Show notification function showNotification(message) { // Remove existing notification const existingNotification = document.querySelector('.ascii-notification'); if (existingNotification) { existingNotification.remove(); } // Create new notification const notification = document.createElement('div'); notification.className = 'ascii-notification'; notification.innerHTML = ` ${message} `; document.body.appendChild(notification); // Show notification setTimeout(() => { notification.classList.add('show'); }, 50); // Hide notification after 3 seconds setTimeout(() => { notification.classList.remove('show'); setTimeout(() => { if (notification.parentNode) { notification.parentNode.removeChild(notification); } }, 400); }, 3000); } // Update character counter function updateCharCounter() { const length = asciiInputText.value.length; const maxLength = 50; asciiCharCounter.textContent = `${length} / ${maxLength} characters`; if (length > 40) { asciiCharCounter.className = 'ascii-char-counter warning'; } else if (length > 45) { asciiCharCounter.className = 'ascii-char-counter error'; } else { asciiCharCounter.className = 'ascii-char-counter'; } } // Event listeners asciiInputText.addEventListener('input', (e) => { updateCharCounter(); generateLivePreview(); }); asciiInputText.addEventListener('keypress', function(e) { if (e.key === 'Enter') { e.preventDefault(); generateLivePreview(); } }); // Keyboard shortcuts document.addEventListener('keydown', function(e) { if (e.ctrlKey) { switch (e.key) { case 'Enter': e.preventDefault(); generateLivePreview(); break; case 's': e.preventDefault(); saveSettings(); break; } } }); // Initialize document.addEventListener('DOMContentLoaded', () => { updateCharCounter(); updateFontPreview(); // Load favorite font if available const favoriteFont = localStorage.getItem('favoriteFont'); if (favoriteFont && asciiStyles[favoriteFont]) { asciiFontSelect.value = favoriteFont; currentSettings.font = favoriteFont; updateFontPreview(); } });

Leave a Comment