Dress up

Turning your words to ๐”ด๐”ฌ๐”ฏ๐”ก๐”ฐ, ๐Ÿ††๐Ÿ…พ๐Ÿ†๐Ÿ…ณ๐Ÿ†‚, and ๐”€๐“ธ๐“ป๐“ญ๐“ผ

There are a bunch of interesting unicode charters. What's cool is that since most devices and applications support them, you can use them to hack some extra expressivity in traditionally limited platforms. A terminal is a great example of this. Typically thought of as an environment where you only send and receive text, groups like Textual and Charm use unicode characters to build entire UIs in the terminal. Projects like viu will even use characters to draw images in your terminal. It's also just fun to use them over limited chat apps like SMS to bring some ๐Ÿ…ด๐Ÿ…ผ๐Ÿ…ฟ๐Ÿ…ท๐Ÿ…ฐ๐Ÿ†‚๐Ÿ…ธ๐Ÿ†‚ แด›แด ๐”‚๐“ธ๐“พ๐“ป ๐–œ๐–”๐–—๐–‰๐–˜.

Dressup logo

But, these Unicode characters are a pain to access. I wanted an easy way to programmatically use some of these unique characters to spell words in Unicode characters. Dress up is a command-line interface and Python library that allows you to convert normal characters into special Unicode versions. It maps the characters you know into their Unicode counterparts. For example, Lorep ipsum can become:

Style Conversion
Circle โ“โ“žโ“กโ“”โ“Ÿ โ“˜โ“Ÿโ“ขโ“คโ“œ
Negative circle ๐Ÿ…›๐Ÿ…ž๐Ÿ…ก๐Ÿ…”๐Ÿ…Ÿ ๐Ÿ…˜๐Ÿ…Ÿ๐Ÿ…ข๐Ÿ…ค๐Ÿ…œ
Monospace ๏ผฌ๏ฝ๏ฝ’๏ฝ…๏ฝ ๏ฝ‰๏ฝ๏ฝ“๏ฝ•๏ฝ
Math bold ๐‹๐จ๐ซ๐ž๐ฉ ๐ข๐ฉ๐ฌ๐ฎ๐ฆ
Math bold fraktur ๐•ท๐–”๐–—๐–Š๐–• ๐–Ž๐–•๐–˜๐–š๐–’
Math bold italic ๐‘ณ๐’๐’“๐’†๐’‘ ๐’Š๐’‘๐’”๐’–๐’Ž
Math bold script ๐“›๐“ธ๐“ป๐“ฎ๐“น ๐“ฒ๐“น๐“ผ๐“พ๐“ถ
Math double struck ๐•ƒ๐• ๐•ฃ๐•–๐•ก ๐•š๐•ก๐•ค๐•ฆ๐•ž
Math monospace ๐™ป๐š˜๐š›๐šŽ๐š™ ๐š’๐š™๐šœ๐šž๐š–
Math sans ๐–ซ๐—ˆ๐—‹๐–พ๐—‰ ๐—‚๐—‰๐—Œ๐—Ž๐—†
Math sans bold ๐—Ÿ๐—ผ๐—ฟ๐—ฒ๐—ฝ ๐—ถ๐—ฝ๐˜€๐˜‚๐—บ
Math sans bold italic ๐™‡๐™ค๐™ง๐™š๐™ฅ ๐™ž๐™ฅ๐™จ๐™ช๐™ข
Math sans italic ๐˜“๐˜ฐ๐˜ณ๐˜ฆ๐˜ฑ ๐˜ช๐˜ฑ๐˜ด๐˜ถ๐˜ฎ
Parenthesized โ’งโ’ชโ’ญโ’ โ’ซ โ’คโ’ซโ’ฎโ’ฐโ’จ
Square ๐Ÿ„ป๐Ÿ„พ๐Ÿ…๐Ÿ„ด๐Ÿ„ฟ ๐Ÿ„ธ๐Ÿ„ฟ๐Ÿ…‚๐Ÿ…„๐Ÿ„ผ
Negative square ๐Ÿ…ป๐Ÿ…พ๐Ÿ†๐Ÿ…ด๐Ÿ…ฟ ๐Ÿ…ธ๐Ÿ…ฟ๐Ÿ†‚๐Ÿ†„๐Ÿ…ผ
Cute ฤนล‘ล•รฉแน• รญแน•ล›รบแธฟ
Math fraktur ๐”๐”ฌ๐”ฏ๐”ข๐”ญ ๐”ฆ๐”ญ๐”ฐ๐”ฒ๐”ช
Rock dots แธถรถแน›รซแน— รฏแน—แนกรผแน
Small caps สŸแดส€แด‡แดฉ ษชแดฉ๊œฑแดœแด
Stroked ลรธษษ‡แตฝ ษจแตฝsแตพm
Subscript โ‚—โ‚’แตฃโ‚‘โ‚š แตขโ‚šโ‚›แตคโ‚˜
Superscript แดธแต’สณแต‰แต– โฑแต–หขแต˜แต
Inverted ืŸoษนวd ฤฑdsnษฏ
Reversed โ…ƒoแด™ษ˜q iq๊™…um

For quick and convenient access, these conversions can be accessed through a command line-interface.

Animated Dress up

For use in other applications, there is also a Python API:

>>> import dressup
>>> dressup.convert("Hello", unicode_type="negative circle")
'๐Ÿ…—๐Ÿ…”๐Ÿ…›๐Ÿ…›๐Ÿ…ž'

Dress up also serves as a demonstration of what I think are the current best practices in Python development. It features strong linting via flake8 and select plugins high test coverage pytest generated documentation via Sphinx, and type hinting. All ran through a CI/CD framework powered by Nox and GitHub Actions.