Skip to content

spitlo/karakter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Karakter

Ađď а 1itł1e ¢ћаѓacțeѓ łф your țe׳ 6џ șuъstїłułiη9 ▼їșua11y șїmїlar 91ypђs fг●m ṫђe 9ѓeek or ¢yrїl1ї¢ аlphaБёt fоr 1ёłteгș a-z aηď A-Z. A1șф 9lџpђș from tћe 1ątin a1phαъet wїṫђ ▼ișua1ly p1easїη9 dїa¢rїtї¢ș, anđ sоmё sψmbф1s.

Most glyphs are chosen from this list of "All the characters that work on most terminals". The set "Moneytalk" consists of different currency symbols and is not guaranteed to work everywhere.

At the moment, there are two working versions: one written in Bash and one written in V. My plan was hope is to rewrite it in a few different languages that I’ve been wanting to try out.

Usage examples

Generate a mildly elvish version of your name for an email signature using the Bash version:

bash/karakter --md --ft John Doe

Turn A Tale of Two Cities into a cyberpunk novel using the V version and read it comfortably in your terminal:

curl https://www.gutenberg.org/files/98/98-0.txt | sed 's/one thousand seven/two thousand seven/g' | tr a-z A-Z | v/karakter -o md -s cp | less

Building

To build the karakter binaries, you need to install the corresponding languages.

Each version has build instructions in their separate READMEs, but generally you can build any version by running bin/build <language> from the root folder. For example, running:

bin/build v

will build the V version (given that you have V installed.) You can then run it by typing:

v/karakter

All commands might not have the exact same set of options, but all should present you with a help text when run without any arguments.

The Bash version, available at bash/karakter does not need any installation, you should be able to run it as-is with bash 4.x or 5.x but it’s not comprehensively tested.

Output examples

Input text

It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way – in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only.

Output text, obfuscation level low, default style

It ŵas thє beșt оf timєs, їt was thє worst of times, it waș the αge of wisdom, it was the ąge of foolїshness, it was the epoch of belief, iț ώas łhe epо¢ђ of incredulity, it шas the seąson of Light, it was the seasфη of Đarkness, it was the șpring of hope, it waș țhe winter of despair, we ђαd everything beforє us, we haď nothing before us, ŵe werє a11 going dire¢t to Heaven, we werє all going dїrёct tћe other way – in shoѓt, the pєriod was so fаr 1ike the present period, that some of its nфisiest authoгiłies iηsisted оn ițs bєing recёived, for gooď оr for evїl, in țhe șuperlative degгeё of comparison only.

Output text, obfuscation level medium, cyberpunk style

It ш@s the bєsŁ of tim≡$, it w@s tHe шоrst of Łim≡$, it шas ŁH≡ аg≡ o⌠ w¡$ďøm, ī┪ ш@s thє ag≡ оf fo●lishπes$, iŁ шas Łhe ≡pø¢H ●f belıef, iŁ ша$ tHє ep●ch о⌠ :nc┍єďulity, īŁ wα$ ┪h≡ $ea$o∩ оf Ľi9ht, īŁ w@$ ŁHe sє@$■Π of Daяκπє$$, :Ł wα$ tHє $p┎īn9 о⌠ høp≡, iŁ ш@s tHe wint≡r of ďєsp@ıя, шє Hαd e▼eгy┪h¡∩g bє⌠оre u$, we Hαď ∩o┪H¡Πg 6єfoгє u$, шe шe┎e αll go¡π9 ďi┎≡ct ┪o He@▼en, we шє┍e a1l 9■iΠg ďir≡ct ŁHe o┪her ш@џ – ¡n $Hort, thє p≡г¡●ď was $o fаr lıke the p┎≡$e∩t pe┍ioď, tHat s●mє ■f it$ πoisie$┪ aμ┪Hor:t:≡s ins:steď ●n its b≡ın9 гec≡ived, fø┎ 9ø●d оr ⌠●r ≡▼ı1, in Łh≡ sup≡гlα┪īvє ďegr≡є о⌠ ¢ompaгıson o∩1y.

Output text, obfuscation level high, fairytale style

Ϊṫ шάș ṫђё вєșṫ ºḟ łΐṁєș, ΐł шάș łћё ώºѓșṫ фƒ țΐṁēș, ΐț ώάș ṫђё ąġē σƒ шΐșδσṁ, ΐṫ шάș ṫђє ąġё σƒ ƒооļїșћηєșș, їł шąș łђё єpºςђ ºƒ Бēļїēƒ, їṫ шąș ṫћё єpоςђ фḟ їņςѓєδΰľїłψ, їł ŵąș łђē șєąșфņ фḟ Ļїġђț, ΐł ŵąș łђё șёąșфņ ºḟ Ďąѓkņēșș, їł ώάș țђē șpгїηġ фḟ ђºpē, їṫ ŵąș ṫђє ŵїņțєѓ σḟ ďєșpαΐг, ώё ћαḋ ēνёѓџłћΐñġ вēƒσгє ΰș, шё ђάđ ησṫђΐηġ ḃёƒºѓё υș, ώё ŵєгē αļľ ġºїņġ ďΐѓєςł țф нєάνєη, ώє шєѓē άľļ ġфїņġ ďΐѓєςț ṫћē фṫћёг шąψ – ΐņ șћσѓṫ, ṫђē pёѓΐºđ ŵάș șº ƒάѓ ľΐkē țђё pгёșєñṫ pёѓїоδ, ṫћάł șºṁє оḟ ΐțș ñºΐșїєșł ąΰțћфѓїṫΐєș ΐñșїșłēď ºņ ΐłș Бєїņġ ѓēςёΐνēđ, ḟог ġºфđ σѓ ƒºг ēνΐľ, їη ṫђє șΰpєѓľάṫΐνē δєġѓєё ºḟ ςºṁpαгΐșоñ оņľψ.

Output text, obfuscation level high, loudmouth style

ĪṪ ШĀȘ ṪHĒ ḂĒȘṪ ŌF ṪIMĒȘ, IṪ ШĀȘ ṪHĒ ШŌŔȘṪ ŌF ṪIMĒȘ, IṪ ШĀȘ ṪHĒ ĀGĒ ŌF ШIȘĐŌM, IṪ ШĀȘ ṪHĒ ĀGĒ ŌF FŌŌLIȘHПĒȘȘ, IṪ ШĀȘ ṪHĒ ĒРŌČH ŌF ḂĒLIĒF, IṪ ШĀȘ ṪHĒ ĒРŌČH ŌF IПČŔĒĐŪLIṪЏ, IṪ ШĀȘ ṪHĒ ȘĒĀȘŌП ŌF LIGHṪ, IṪ ШĀȘ ṪHĒ ȘĒĀȘŌП ŌF ĐĀŔЌПĒȘȘ, IṪ ШĀȘ ṪHĒ ȘРŔIПG ŌF HŌРĒ, IṪ ШĀȘ ṪHĒ ШIПṪĒŔ ŌF ĐĒȘРĀIŔ, ШĒ HĀĐ ĒVĒŔЏṪHIПG ḂĒFŌŔĒ ŪȘ, ШĒ HĀĐ ПŌṪHIПG ḂĒFŌŔĒ ŪȘ, ШĒ ШĒŔĒ ĀLL GŌIПG ĐIŔĒČṪ ṪŌ ĦĒĀVĒП, ШĒ ШĒŔĒ ĀLL GŌIПG ĐIŔĒČṪ ṪHĒ ŌṪHĒŔ ШĀЏ – IП ȘHŌŔṪ, ṪHĒ РĒŔIŌĐ ШĀȘ ȘŌ FĀŔ LIЌĒ ṪHĒ РŔĒȘĒПṪ РĒŔIŌĐ, ṪHĀṪ ȘŌMĒ ŌF IṪȘ ПŌIȘIĒȘṪ ĀŪṪHŌŔIṪIĒȘ IПȘIȘṪĒĐ ŌП IṪȘ ḂĒIПG ŔĒČĒIVĒĐ, FŌŔ GŌŌĐ ŌŔ FŌŔ ĒVIL, IП ṪHĒ ȘŪРĒŔLĀṪIVĒ ĐĒGŔĒĒ ŌF ČŌMРĀŔIȘŌП ŌПLЏ. 

Output text, obfuscation level high, moneytalk style

1₮ ₩₳$ ₺₶€ ฿€$₸ 0₣ ₮1₥€₷, 1₸ ₩₳$ ₺₶€ ₩0₹₷₺ 0₣ ₸1₥€$, 1₺ ₩₳$ ₸₶€ ₳₲€ 0₣ ₩1$₫0₥, 1₺ ₩₳$ ₺₶€ ₳₲€ 0₣ ₣00£1₷₶₪€₷$, 1₮ ₩₳$ ₸₶€ €₱0₵₶ 0₣ ৳€£1€₣, 1₸ ₩₳$ ₺₶€ €₱0₵₶ 0₣ 1₪₵₹€₫U£1₮¥, 1₺ ₩₳$ ₮₶€ ₷€₳₷0₪ 0₣ £1₲₶₸, 1₮ ₩₳₷ ₸₶€ ₷€₳₷0₪ 0₣ ₫₳₹₭₪€$$, 1₮ ₩₳$ ₮₶€ $₽₹1₦₲ 0₣ ₶0₱€, 1₮ ₩₳$ ₸₶€ ₩1₦₸€₹ 0₣ ₫€$₱₳1₹, ₩€ ₶₳₫ €V€₹¥₸₶1₦₲ ฿€₣0₹€ U$, ₩€ ₶₳₫ ₪0₺₶1₦₲ ৳€₣0₹€ U$, ₩€ ₩€₹€ ₳££ ₲01₪₲ ₫1₹€₵₺ ₸0 ₶€₳V€₦, ₩€ ₩€₹€ ₳££ ₲01₪₲ ₫1₹€₡₸ ₮₶€ 0₸₶€₹ ₩₳¥ – 1₪ $₶0₹₸, ₸₶€ ₽€₹10₫ ₩₳₷ ₷0 ₣₳₹ £1₭€ ₺₶€ ₽₹€₷€₪₮ ₱€₹10₫, ₸₳₮ $0₥€ 0₣ 1₸$ ₦01$1€$₮ ₳U₸₶0₹1₸1€$ 1₦₷1$₮€₫ 0₦ 1₸₷ ৳€1₦₲ ₹€₵€1V€₫, ₣0₹ ₲00₫ 0₹ ₣0₹ €V1£, 1₪ ₮₶€ ₷U₽€₹£₳₸1V€ ₫€₲₹€€ 0₣ ₡0₥₱₳₹1$0₦ 0₪£¥.

Output text, obfuscation level medium, numbers style

It w4s th3 b35t 0f 71m35, 17 wa5 7he w0rst 0f time5, 1t w45 the 4ge of w1sdom, 17 wa5 7he 463 of f0olishness, 1t wa5 the 3poch 0f 83li3f, it w4s 7h3 3poch of incredulity, i7 w45 th3 s3450n of L1gh7, 1t w4s 7he s3450n 0f D4rkne55, i7 was 7he 5pring of hop3, i7 wa5 7h3 wint3r of desp4ir, w3 had 3very7h1n6 bef0re u5, we h4d noth1n6 8ef0r3 us, w3 w3r3 all g01ng direct t0 H34v3n, we w3re all 6o1n6 d1r3c7 7h3 0ther w4y – 1n 5h0rt, 7h3 per10d wa5 5o f4r l1ke the pre53nt per10d, 7h47 5om3 0f 1t5 n0i5ie5t 4uth0ri7ies 1nsis7ed 0n 175 8e1n6 r3ce1ved, for g00d 0r for 3v1l, 1n the sup3rl4tiv3 degre3 of comp4r15on only.

Languages

Todo

  • Handle newlines
  • Add more alternative characters
  • Enable different styles?
  • Improve different styles
  • Add help
  • Take arguments
  • Figure out how to handle piped text
  • Add options for all lower/upper case?
  • Make a bash script that generates sets for all languages
  • Enable decoding obfuscated text?
  • Command to generate bash completions?