/zalgo

A zalgo text generator for the command line and UNIX pipeline.

Primary LanguageC++GNU General Public License v3.0GPL-3.0


Ẑ̸͈̬͋Ả̷͈̜̘̃ͅL̵̛̰͝͝G̷̥̙̔Ȯ̶̙̳͒

A zalgo text generator for the command line.

Table of Contents

About Ẑ̸͈̬͋Ả̷͈̜̘̃ͅL̵̛̰͝͝G̷̥̙̔Ȯ̶̙̳͒

a̷̸ ̴͎͏͇̮̹̬̜͎͡z̡̧͉͜͏̳̙̻͢͝aͫ͂ͤ̐̒̌͊̀͌̈́l͑ͤͨ̓ͩ́̐̇̚̚g̶̛̩̬̼̟͔̘͢͠o̩͏̥̫̩̟̝̮̕ͅ ̷̵̧̧̢͙̰̠̠͇t̶̛̛̤̥̪̭̟̻́e̵̴x̠̟҉̵̧̛̼̣̮̰t̸̡͔͈̭͓̭̼͢͜ ̼͓͓̟̳̥̮͘͢ͅg̨̻̮̱͖͔̥͢͜͝è̶̡̦̝̫̦͟͏̕n̴̵e̍̌̑̐͛̎̈͌ͨ͂r̄̽̂̊ͧ͒̌ͦ̽̚a̷̴t̷̷o̴̸r̃̇̏ͮͣͭ̓ͩ̀͋ ̷̶f̅͛̏̃̎̄͊̒ͮͣǒ̏ͮ̌ͨ̏ͩͫͦ̚r̷̶ ̶͔͇̺͉̀͘͢͟͜ṯ̨̨̼̻̬͢͡͞͏h̄ͬͥͮͪͩ͋̎ͧ̚ẻͧ̓̏̇͗ͧ͌͌ͭ ̴̴̢̧̥̲̖̲͜͝c̷̴oͧͬͫ̈́ͫͪ̌̍̈́͌m̶̸m̷̵a̷̡̛̻̭̦͙̪͔͘n̷̸dͦ̋̊̓ͪͩͫ͂̈́̈ ̵̸l̸̸i̦͙҉̵̧̢̭̀̕͜n̄̉̽ͭ̏̏̑̃̌̏ę͔͇͎̦̬͡͏̫͜

a zalgo text generator for the command line


From KnowYourMeme:

Zalgo is an Internet legend about an ominous entity believed to cause insanity, death and destruction of the world, similar to the creature Cthulhu created by H.P. Lovecraft in the 1920s. Zalgo is often associated with scrambled text on webpages and photos of people whose eyes and mouth have been covered in black.

On forums and image boards, scrambled text began being associated with Zalgo with phrases like "he comes" and "he waits behind the wall."

This strange text format is created by abusing a feature in unicode which implements characters that can be stacked on or under each other called combining characters. These characters are usually used for digitally representing different languages and writing components of languages such as Hiragana, but they can be used on latin characters to create this interesting effect.

This implementation of Zalgo is made for easy interfacing with other programs and the command line as it completely lacks a UI and takes directly from stdin and writes directly to stdout. You can read more about the usage of this project in the usage section.

Getting Started

To get a local build up and running follow these simple steps.

Prerequisites

This is an example of how to list things you need to use the software and how to install them.

  • g++

Ubuntu

sudo apt install g++

Installation

  1. Clone the repo
git clone https://github.com/ngc/zalgo.git
  1. Compile
cd zalgo
g++ -o zalgo main.cpp

Usage

Since this program is made to be a command line tool, there are many different ways you can use it through the UNIX pipeline.

Basic Usage:

  1. Echo
echo HE COMES | ./zalgo

Outputs H̤̊̈̊E͌͋͘͠ C̎̕O͕̫̜̞͎̭̭̭̠͍M̈́̎̕E̛̫̎͠S̛̓.

  1. File piping
cat textfile.txt | ./zalgo > zalgotextfile.txt

Converts the contents of a file into Zalgo text which is then written to a new text file.

  1. In C++
    Since this program was written in C++, I've seperated the Zalgo implementation into its own header file which you can use to easily implement Zalgo text into your programs. For more detail see zalgo.h.

Additional Usage:

  1. Arguments
    With and without piping you can use arguments to define the magnitude at which the Zalgo text is applied.
echo HE COMES | ./zalgo 1000x1000x1000

The format is OVERLAIDxBELOWxABOVE, as regex it is \d{1,}x\d{1,}x\d{1,}.



2. Fun
Anything on your computer that either takes input or has an stdoutput can be used with Zalgo.

echo HE COMES | ./zalgo | cowsay
 __________
< Hͭ̓̓̇͗̎È C̀Ȏ͛͌̈́͐̅M̤̝̫̩͎̭̖͟͢͟E̊S̨̡̨͈̭̜͈͈͓̣ >
 ----------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

or

echo HE COMES | cowsay | ./zalgo
 __͞__͞__̨̝͇͔͇̝̫͓̘̘_̓͋_̓͋_ͭ̓̓̇͗̎_̨̝͇͔͇̝̫͓̘̘
< H̤E C̀OMES >
 --̡̡͈̬̣̝̫̤̤͕----ͭ̏͛̇͑̈́̇-̤̤̀̀--̧̧̡̠͓̪̗̠͢͜-̧̧̡̠͓̪̗̠͢͜
        \   ^_̨̝͇͔͇̝̫͓̘̘_̨̝͇͔͇̝̫͓̘̘^
         \̓  (̭͍̖̬̮̤͙̦̜̥oo̧̬͕̫̤̫̬͜͢͟)̤̤̕\_̨̝͇͔͇̝̫͓̘̘__͞__͞_̓͋_ͭ̓̓̇͗̎
            (̐̐͂̆̚_̨̝͇͔͇̝̫͓̘̘_̉)̇̓\       )̡͓̪͎͍͉̙͎̗̠\/\
                ||-̆̇-̧͍͎̤̣̘͉͇̬͟--̣̀w̢͙͙͍̪̫̪̮͉͟ |ͭ̓̓̇͗̎
                |̑̎̽̓̐͗|     |̢̗͎̬̮͍͕̥̬͜|̢̗͎̬̮͍͕̥̬͜

License

Distributed under the GNU GPL. See LICENSE for more information.

Notable Issues

Since this program is entirely dependent on unicode, the visual representation of the Zalgo text can vary heavily (outside of the scope of this program). For example, Zalgo text in GitHub's markdown code blocks above appear significantly vertically smaller than they usually are. In the GNOME terminal, upper combining characters aren't shown at all. This can vary across terminal emulators. To my knowledge Discord actively filters out the effect of Zalgo text as of recently.