WEB a
INSPIRATION FOR THIS SITE
-
stonegray.ca (archived), before redesign
Uses :before and :after CSS elements to decorate elements like[ tag ]
. Also uses<--
as a navigation element -
www.rfc-editor.org/rfc/rfc1034.html
RFCs are nostalgic and info dense; hard line-wrapped at 80ch. Sometimes they have cool diagrams -
kary.us/nota
The cleanest box drawing I've seen. Unicode heavy. Custom font -
plaintextsports.com
Plaintext UI. Cool formatting ideas, thin centered content column, fetches data too. See also game graphs like this one. Probs unfriendly to screen readers tho (but heck, so is this page) -
computer.rip
True plaintext content. Uses 4ch blockquote margins and bold and>>>
for formatting -
berkeleygraphics.com/typefaces/berkeley-mono/#doc-tab-1
Attractive box drawing mockups -
mcj.sourceforge.net/fig-format.html
Help text example with elements like parenthesized enumerations(3.4)
and double asterisks**
and tab-style column alignment. But not mobile friendly, just baked whitespace at 80ch like RFCs -
wttr.in
Unicode and ASCII that work together; good use of color and graphics; plaintext and curl and other data support (not just HTML) -
garden.bradwoods.io
Monospaced font mixed with minimal box borders. Uses SVG instead of┗━
for inline file tree. Sort of a div soup tho -
xeiaso.net/blog (archived), before redesign
Blockquote in footer achieves a vertical line of>
's with CSS :after, content">\A>\A>\A..."
, white-space pre, and absolute positioning -
fabiensanglard.net
Plaintext content. Minimal styling with bold / underline. Uses dejavu sans mono and floated inline graphics -
7guis.bradwoods.io
Vanilla, structured HTML -
cmpxchg8b.com/#articles
Boring HTML in a good way, and heavy on dashed borders. Pale bg color for inline code -
hoverbear.org/blog/rust-state-machine-pattern
Full-width code blocks break out of content column (gain a few chars of max width on mobile) -
what.happens.when.computer
I like the navbar:/ index ^ archive # tags @ about
HONORABLE MENTIONS
- emile.space/blog, majorhayden.com, capsul.org, l-o-o-s-e-d.net, piuvas.net, aem1k.com, ertdfgcvb.xyz, volzo.de/thing/lensleech, cole.ws, shinobi.btxx.org, n-o-d-e.net, nightfall.city, derelict.garden, itsevergreen.rip, buredoranna.github.io/about, abhijithota.me, tomsmeding.com/blog, tilde.town, floppy.cafe, seenaburns.com/archive, mw.rat.bz, sanlive.com, dodov.dev, coleroberts.dev, goodenough.us, asciicker.com, owickstrom.github.io/the-monospace-web, ascii.theater, velvetyne.fr/news/about-ascii-art-and-jgs-font, durdraw.org, biodigitaljazz.net, osar.fr, terraformindustries.com, tinyfactories.space, kisslinux.org, jgc.org, ascii.designforthe.net, dfns.dyalog.com/n_contents.htm, thehtml.review/04/ascii-bedroom-archive, everest-pipkin.com/barnacle-goose, saul.pw, whereinthedata.com/damgoods, adelfaure.net, oldfashioned.tech, schollz.com (archived), myr.sh (archived), si3t.ch (archived),
TIL
-
Some victims of broken box-drawing characters,
at least when viewed on certain devices
(scroll down the pages until you see box borders like ┌──┐):
one,
two,
three
Apparently my phone's system monospace font doesn't support box drawing characters very well (Android, Roboto Mono). And apparently this is not just a mobile thing (Debian, Bitstream Vera Mono).
This website uses a font that includes box drawing characters so that the browser doesn't have to fallback to the system font. I doubt that these system fonts will fix their box drawing characters any time soon. Some fonts that seem to include their own box drawing characters: Commit Mono, Monofur, ... -
Website domains can have emoji / unicode in them. Punycode is the
algorithm that converts the unicode to ascii, since domains are
supposed to be in ascii.
Eg. https://💩.la becomes https://xn--ls8h.la -
Some websites put ASCII art in a
/humans.txt
file, as an easter egg: for example, netflix, disqus, html5rocks, and adultswim
FIGLET a
-
The basic syntax:
figlet -f myfont "hello world"
. see alsoecho "hello world" | figlet -f /path/to/myfont.flf -w 9999
-
A figlet font made of unicode block chars: clockchars.flf
██████ ██████ ██████ ██████ ████████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██████ ██████ ██ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██████ ██████ ██ ██ ██ ██ ██
and half-sized: smclockchars.flf▄ ▄▄▄ ▄▄▄ ▄ ▄ ▄▄▄ ▄▄▄▄ █ ▄▄█ ▀ ▄▄█ █▄█ █▄█ █▐▌█ █ █▄▄ ▀ ▄▄█ █ █ █ █▐▌█
Companion clock script:tput civis; watch -t -n1 "date '+%-I:%M %p'|figlet -f clockchars"
#!/bin/sh tput civis # hide cursor d1="date '+%-I" # time fmt; %-I means no zero-pad d2=":%M %p'" # mins, extra space, and AM/PM f="figlet -f clockchars" # standard figlet call w="watch -t -n1" # echo result of, updating per sec $w "$d1$d2 | $f" # glued together
-
A figlet font for Ander de Flon's 3x3 typeface: 3x3flon.flf
▄▄▄ ▄ ▄ ▄▄▄ ▄▄▄ ▄ ▄ ▄▄▄ ▄▄▄ ▄ ▄ ▄▄ ▄▄▄ ▄▄▄ ▄ ▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄ ▄ ▄▄▄ ▄ ▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄ ▄▄▄ ▄ ▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄ ▄ ▄▄▄ ▄ ▄ ▄▄ ▄ ▄ ▄▄ ▄▄▄ ▄▄ █ █▀█ ██▄ ▀▀█ █▄█ ▄█▄ █▄▄ █▀▄ ███ █ █▄█ ███ █ █ █▀ █▄█ ▄▀▄ ▄▄█ █▄█ █▀█ █▀▀ ██▄ █▄▀ █▄█ ▀▄▀ ██▄ █ █ █▀█ ██▄ █▄▄ █▀█ █▄ █ █▄▀ █▄█ █▄█
See also someone else's 3x3 block figlet font and related scripts. -
A figlet serif font inspired by the drop caps on mononoki's landing page: mononokaps.flf
___ _____ _____ _____ _______ _______ _____ ____ ____ ______ ______ ___ ___ ____ ___ ___ ___ ___ ____ ______ ____ _____ ____ ________ ____ ___ ____ ___ ___ ___ ___ ___ __ ___ ___ _____ /\\ || \ // \| || `\ || \| || \| // \| || || || || || / || |\\ /|| |\\ | / `\ || \\ / `\ || \\ // \| |/ || \| || | \\ / \\ \\ / \\ / \\ / / // /__\\ ||__/ || || || ||__ ||__ || ___ ||____|| || || || /\ || | \\ / || | \\ | || || ||__// || || ||_// \\__ || || | \\ / \\ \\ / \\' \\/ // / \\ || \\ || || || || || || || || || || || ||' \\ || | \\/ || | \\| || || || || // ||\\ `\ || || | \\ / \\ / \\/ /\\ || // _/_ _\\_ _||__// \\__/ _||__// _||__/| _||_ \\__/| _||_ _||_ __||__ \_// _||_ \\_ _||__/| _|_ ' _||_ _|_ \| \___// _||_ \___/\\ _||_\\_ |\__// _||_ \\___/ \/ \/ \ _/ \\_ _||_ //__/|
- The most legible default figlet fonts, in my opinion: small, cybermedium, mini, ogre, rectangles, roman, script, shadow, smscript, smshadow, smslant, standard, starwars
- More cool figlet fonts, beyond defaults, yet not lavish toilet fonts either: this repo
-
Browse installed figlet fonts:
showfigfonts | less
. See alsochkfont
ART a
GALLERIES
- asciiart.website, jgs archive, asciiart.en.utf8art.com,
- Collaborative ASCII art, like r/place but over SSH: ascii.town (archived)
-
ascii art for logos and mascots of programming languages/tools:
https://onefetch.dev/ preview:
JSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJS JSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJS JSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJS JSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJS JSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJS JSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJS JSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJS JSJSJSJSJSJSJSJSJ SJSJS JSJSJS JSJSJSJSJSJSJSJSJ SJS JSJS JSJSJSJSJSJSJSJSJ SJS JSJSJSJSJ JSJSJSJSJSJSJSJSJ SJSJ SJSJSJSJ JSJSJSJSJSJSJSJSJ SJSJSJ SJSJSJ JSJSJSJSJSJSJSJSJ SJSJSJSJ JSJS JSJSJSJSJSJSJSJSJ SJSJSJSJS JSJ JSJSJSJSJS JS JSJS JSJ JSJSJSJSJSJ SJSJSJ SJSJS JSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJS JSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJS
- More collaborative ASCII art and messages: https://www.yourworldoftext.com/
- Claim a parcel of screen estate and make a square of ascii art: tilde.town cadastre
CHARTS AND DIAGRAMS
-
Some graphs made of unicode: ascii.dataviz.gallery and this
SO thread of monospace-font/terminal charting tools (gnuplot,
feedgnuplot, eplot, asciichart, bashplotlib, ervy, ttyplot, youplot,
visidata) example:
Areas of the World's Major Landmasses ┌ ┐ Britain ┤ 84.0 Honshu ┤ 89.0 Sumatra ┤ 183.0 Baffin ┤ 184.0 Madagascar ┤ 227.0 Borneo ┤■ 280.0 New Guinea ┤■ 306.0 Greenland ┤■■ 840.0 Australia ┤■■■■■ 2968.0 Europe ┤■■■■■■■ 3745.0 Antarctica ┤■■■■■■■■■■ 5500.0 South America ┤■■■■■■■■■■■■ 6795.0 North America ┤■■■■■■■■■■■■■■■■■ 9390.0 Africa ┤■■■■■■■■■■■■■■■■■■■■■ 11506.0 Asia ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 16988.0 └ ┘
- Examples of ascii diagrams in code comments https://blog.regehr.org/archives/1653
- Muhammad maintains a list of text2diagram tools: https://xosh.org/text-to-diagram/
-
A venn diagram using hexagons, proportioned for holding text, since
circles are hard:
_________________ / \ / \ / _________\_______ / / \ \ / / \ \ \ / / \ \ / / \ \ / / \ \ \ / / \______\__________/ / \ / \ / \_________________/
Note that the ideal hexagon aspect ratio depends on the font aspect ratio. These are 27x11 hexagons. With a wider font like Source Code Pro, 30x13 hexagons look better.
MORE TOOLS
-
great gallery of ascii-fied logos (pretty high fideilty)
https://meatfighter.com/ascii-silhouettify/color-gallery.html makes
ascii silhouettes of images, like neoftetch distro art but better uses
similar algorithm to chafa irrc (bitmasks for each ascii character)
tool homepage: https://meatfighter.com/ascii-silhouettify/ a preview:
____ __ __ _____ ___ __ _@@@@@@@@@g, [@@@g,@@@@@@_ _@@@@@@_ ,g@@@@@@@@@_ @@@@@@@@@@@@ ,g@@@@@@@a [@@@|,@@@@@@a {@@@P" '\@@@@, [@@@@@BB@@@@@@@BB@@@@@, ,@@@@" "@@@@l <=====@@@@@F /@@@D"""@@@@, [@@@W@BB@@@@@\ """" @@@@| [@@@@ @@@@@ @@@@] `""" [@@@@ g@@@@ /@@@@ @@@@ [@@@@ [@@@@ _~gg@@@@@@] [@@@@ [@@@g @@@@] __gg@@@@@@@ _@@@@P @@@@g @@@@g [@@@@ [@@@@ _@@@@D"""@@@@] [@@@@ [@@@g @@@@] ,@@@@B>""[@@@@ o@@@@' @@@@g @@@@@ [@@@g [@@@@ ,@@@@ @@@@] [@@@@ [@@@g @@@@| @@@@' [@@@@ ,@@@@Q @@@@@ @@@@| [@@@g [@@@@ [@@@@ /@@@@@ [@@@@ [@@@g @@@@| '@@@@, _@@@@@ ,@@@@@@@@@@@_ @@@@, /@@@@ [@@@g [@@@@ @@@@@@@@@M@@@@P [@@@@ [@@@g @@@@| Q@@@@@@@@D@@@@@ [@@@@BBB@@@@@ Q@@@@@@@@@P [@@@g [@@@@ "4B@BP" T" 'BBBP "BBB" +BBB' '+B@BD" "P ` " <B@@@D" 'BBB* 'BBBP , __g@@@@@g_ "@p_ Q@8 <@@g___ ___@b @@ "B@@@@@g___ ___g@@@@B" ;@' <8@@@@@@@@@@@@gggggggg@@@@@@@@@@@D" .@ "<0@@@@@@@@@@@@@@@@@@BP>"
- chafa!!! similar algorithm, simlarly great renders. a bit more featureful tho imo
- Live shader-like coding but with an ASCII renderer: link
-
ASCII Face Maker; here's sample output:
.-'~~~`-. |·.....·i |·.....·i .~!·.....·!~. `·.._____..·' ))! ~ ~ !(( (((~[=]-[=]~))) i))) .L. (((i ((((! (/-\) !)))) )))) (((( ((((/`~---~'\)))) _i))))-.___.-((((i_ '((((( )))))`
- durdraw
- https://github.com/devottys/darkdraw
GAMES
- Card games in the terminal, with cool playing card designs: csol
-
stone story rpg. the dev also gave a talk about ascii art techniques
(video):
- created a custom font to get his preferred aspect ratio of 16:29, as well as ensuring pixel perfection at different font sizes
- extended ASCII with characters like latin accent ´ to complement backtick `, and likewise upside down exclamation mark ¡ to complement !
- developed anti-aliasing tricks to deal with angled and curved lines
- used dithering
-
Snake, 2048, and freecell games over SSH, with color and global
highscores:
ssh play@ascii.town
- Tetris over ssh:
ssh playnetris.com
- https://www.markrjohnsongames.com/games/ultima-ratio-regum very interesting rougelike lots of devlogs, lots of devotion
- cogmind?? https://www.gridsagegames.com/blog/2024/12/year-11-of-the-cogmind/ (maybe roguelikes deserve their own cateogyr on my page)
- https://www.youtube.com/watch?v=jviNpRGuCIU making roguelikes
- https://github.com/devottys/xdplayer
MISC
-
self-writing clock, by talented ruby artist yusuke endoh (all his work
is great) video (yt), source, and "screenshot":
eval(T=%(eval(%(E=27.chr;Z=32.chr;$ ><<E+"[2J";K=->q{(q-q*(1-3844.0/q.abs2)**0.5) /2};I=->f,a,b,z,t=p{(a-b).abs>(f<1?1:1-(K[a]-c=K[b]). abs)?I[f,c= (a+b)/2,b,I [f,a,c,z,t],t :''''''''''''''''''''''''''''''': ]:f<1?(x,y=b. rect;d="'."[y%2 : '..];c=z[y/2+5];c[ x+=58]=t||(c[x]== : '::|Z==c[x]?d:?:)) :(puts(E+"[H"+$/+I[ : 0:::0,I[0,b,c,z.map (&:b)]]*$/);t||I[0,b : ,c,z::];sleep(0.01)) ;z};s=(Z*25+"eval(T= : %("+T+::)").lines.ma p{|l|l.chomp.ljust(90 : . ,---. . . )};loop{::0i-31,[-1.0 ,Z];h=10i-30;a="5?GUV : | | | . | '''... XIIPCM.AAN::HY/ZZZO7[ &,HY3'CE<5SM5.OOJ+BBT : | | | | '':::::&YQ.STT:::.KUVXP K+&[AOOJ'&5?GU57-B5SI : | | | ' | 51>E::::::.K,D:::+SM7 .77'";i=92;"Q+3_.DW'` : ' `---' ' HAD,A11R`N:::::::::&F 1.CG371|BE@355?5A7@@ : ??7|3-5-".scan(/:::: {a.gsub!("%c"%i-=1,$ : &)};Time.now.strftim e("%H:%M").bytes{|c : |q=h;a.split(?&)[c- 48].scan(/([0-8]) : |./){$1?q+=(n=$1. hex)%3-1+(n/3-1 : )*2i:z<<[q,$&]} ;h+=6};z<<a=3 : 1i-31;31.time s{|y|s[y/2+ 5][58]=Z};g =z.map{|b,h|x,y=a.rect;g&&s[y/2+5][x+58]=g;I[1,a,b,s, g];a,g=b,h};sleep(61-Time.now.sec);;;}).gsub( /^(.{26}):.{32}/){$1}.split*"")##))
-
A landing page mockup / wireframe:
┌──────────────────────────────┐ ┌───────────────────────────────────────────────────────────────────┐ │ logo TRY IT! │ │ logo TRY IT! │ │──────────────────────────────│ │ │ │ = │ │───────────────────────────────────────────────────────────────────│ │ │ │ Features (Pricing) About │ │ 4 POINT + WIND │ │ │ │ │ │ │ │ The fastest Florida │ │ ┌───────────┐ │ │ insurance report software │ │ 4 POINT + WIND ┌────┐ │ │ │ for home inspectors │ │ │ │ │ │ │ │ │ The fastest Florida insurance │ │───────────┘ │ │ > OPEN APP < │ │ report software for home │ │ vv │ │ ---------- │ │ inspectors └────┘__vv___ │ │ │ │ / vv /__ │ │ │ │ > OPEN APP < / / / │ │ ┌───────────┐ │ │ ---------- / / / │ │ ┌────┐ │ │ │ /_______/ / │ │ │ │ │ │ │ /_______/ │ │ │ │───────────┘ │ └───────────────────────────────────────────────────────────────────┘ │ │ │ vv │ │ └────┘__vv___ │ │ / vv /__ │ │ / / / │ │ / / / │ │ /_______/ / │ │ /_______/ │ │ │ │ │ │ │ └──────────────────────────────┘
TERMINAL EMULATORS a
- 80 cols x 25 rows: the most common terminal screen size, dating back to teletypes and punch cards
- About legacy font aspect ratios, from CRT days: https://16colo.rs/ansiflags.php
- More on aspect ratios: Block chars (█) look best with wider fonts that have an aspect ratio close to 1:2. Eg. the super-skinny Iosevka font with ratio 1:4 will have super skinny distorted block-art output.
-
There's thin and thick versions of each box drawing char:
┌───┬───┐ ┏━━━┳━━━┓ │ │ │ ┃ ┃ ┃ ├───┼───┤ ┣━━━╋━━━┫ │ │ │ ┃ ┃ ┃ └───┴───┘ ┗━━━┻━━━┛ light heavy
They're sprinkled throughout U+2500 to U+257F. Be careful not to mix the light ones with the heavy ones - especially if your terminal emulator does a bad job of overriding the glyphs. See alsoalacritty
's builtin_box_drawing config option. And the discussion in the Windows Terminal repo. tput cols; tput lines
: print terminal screen size-
tput cvvis
ortput civis
: show or hide cursor (very visible versus invisible). See alsotput cnorm
-
A list of ANSI codes / escape sequences, with explanations: gist. See also
man console_codes
- The history of escape sequences (youtube): DEFCON, Terminally Owned, David Leadbeater
- Web tool for creating ANSI codes based on desired stylings: link
- Fast image and video conversion to terminal ANSI code output: batimg
-
Some cool things to
telnet
into:-
Watch starwars with
telnet towel.blinkenlights.nl
, or watch the web port at asciimation.co.nz -
Zoom and pan around a world map with
telnet mapscii.me
-
Watch a globe move across the screen with
tput civis; curl -s http://artscene.textfiles.com/vt100/movglobe.vt | pv -q -L 9600
-
Watch starwars with
-
On creating terminal emulators, and the associated challenges:
- Stress tests to evaluate rendering accuracy and performance: fire animation, Sonic ANSI art, UTF-8 torture test, UTF-8 sampler of different languages (which is more of a webpage stress test)
- An overview of weird character widths that terminal eumulators must support
- Mitchell Hashimoto mentions some IO throughput optimizations for the Ghostty terminal, among other great devlogs
- on building TUI widgets: https://textual.textualize.io/blog/ and https://www.textualize.io/blog/7-things-ive-learned-building-a-modern-tui-framework/
- what makes a great TUI? i have a whole blog post planned! so many good terminal applications out there these days. stay tuned
UNICODE a
- About the pains of creating text systems: Text rendering hates you, and Text editing hates you too
-
String gotchas when working with non-ascii (examples from source 1, source 2):
-
"🤦🏼♂️".length == 7
Naive string length functions do not measure the number of glyphs rendered to the screen.
Example: 🤦🏼♂️ is composed of a facepalm emoji, a skin color, a zero width joiner, a male symbol, and a variation selector. This is 7 bytes when encoded with UTF-8 -
"caña" != "caña"
Different codepoints can render to the same glyph.
Example: U+00F1 is the single latin character "ñ", but "n" + combining tilde (U+006E, U+0303) looks like the same thing -
"ciao".upper() != "CIAO"
Case sensitivity is not a universal concept across languages.
Example: in the Turkish locale, the uppercase of "i" is "İ", a capital I with a dot above it. See also this data about case folding
In summary: string length, iterating over characters, indexing characters, case sensitivity, alphabetical sorting, and reversing strings should all be handled by a unicode library that can parse by grapheme cluster, unless you know you'll only have ascii input. Only a few programming languages encourage this (Swift, Rust, Elixir).
-
- Further reading: SO rant about Unicode in Perl, 2023 summary of Unicode for developers, Unicode affecting file names in the wild, dark corners of Unicode (2015), breaking Latin-1 assumptions
- An example use case for splitting strings: chunking messages at word boundaries, instead of at a naive byte size limit that potentially splits glyphs. Read more at Chunking strings in Elixir: how difficult can it be?, in which the author used bstr
- Utility that breaks a string into unicode points: unicoder.glitch.me
- some unicode categories: graphemica.com (archived)
- an explainer on right-to-left (RTL) languages, circa 2011: https://dotancohen.com/howto/rtl_right_to_left.html
MISCELLANEOUS a
-
Some interesting characters / glyphs / codepoints:
- U+1242B: 𒐫, which is just really big
- U+FDFD: ﷽, which renders very different between my Windows, Android, and Apple devices
- U+1F438: 🐸, the only emoji the the animals-amphibian category, which is the only category with one emoji (EDIT: I wrote about this)
- Five U+25EF joined with U+200D: ◯◯◯◯◯, which Whatsapp rendered as the olympic rings symbol for one month in 2016 (source)
- U+FFFF: , reserved as a sort of null codepoint
- U+FE0F: variation selector, and what I call "emoji updater" in my head. Example: \u2764 is 'heavy black heart' ❤, whereas \u2764\ufe0f ❤️ is 'red heart emoji'. This doesn't work on Android, though - maybe they both point to the same glyph in Android's emoji font.
- జ్ఞా : a Telugu symbol made of several codepoints that crashed Apple devices briefly in 2018 (explanation)
- U+A66E: ꙮ, a stylized "O" that only appeared in one 15th-century manuscript when a scribe wanted to add some flair to the spelling for "many-eyed seraphim". It's called the Multiocular O.
-
Vim tip: (normal mode)
ga
Shows the codepoint of the character under the cursor. See alsog8
.-
Example: with cursor over ✓,
ga
echoes<✓> 10003, Hex 2713, Octal 23423
-
Example: with cursor over ✓,
-
Vim tip: (insert mode)
<C-v>u
/<C-v>U
Input a 4-char / 8-char hex codepoint.-
Example:
i<C-v>u2713
will insert a check mark character ✓
-
Example:
- Windows tip:
Win + .
opens an emoji picker -
Apparently
ffmpeg
can encode/decode to colored teletype output with ANSI sequences? Need to test this -
Similarly,
GIMP
can convert an image to ascii art. Need to test this too - A small perk of monospace: clicking on skinny characters like "." or "l" is easier with a fixed-width font than a variable-width font
- Search installed fonts on Linux:
fc-match
- A website that sells unicode arrow merch: unicodearrows.com
- article on emoji history