Typing weird symbols

Writing with 🆕🐜🐜

tl;dr: I needed to re-enable the compose key on modern Ubuntu to get nerd satisfaction because I found the lack of umlauts a constant grinding irritation. Come umlaut with me. Treat yourself to a caret.

In principle this is a page for absolutely anything about good fonts and typographical style on the internet. In practice, a small subset of that information is stuff that I need regularly and is hard to search for or remember; Most of that is about typing wacky characters. That is here. The remainder is about exotic LaTeX UTF errors.

For actual information about typography more broadly construed, see Matthew Butterick’s Practical Typography, which is a whole online book making an eloquent and detailed case for using the web for reading, which sounds nice but sounds like it might cut into screen time allocated to Candy Crush. If you need fonts that can actually display the characters you have just input, see fonts.

🏗 make or include a keyboard shortcut table

🏗 which things apply only to US-English keyboards?

Dashes and spacers

en dash, —
⎇ - (Mac)
Compose - - . (Gnome)
em dash, —

⎇ _ (Mac)

Compose - - - (Gnome)
Ellipsis, …

⎇ ; (Mac)

Compose .. (Gnome)
Non-breaking space
⎇ <space> (Mac)
Compose <space> <space> (Gnome)

This last one is mostly needed to avoid widows and such in titles, but hopefully we can all avoid that hack now thanks to CSS widows and orphans properties which solve this at a styling level.

Quotes, apostrophes

Opening single curly quote, ‘

⎇ + ] (Mac)

Compose + < ' (Gnome)
AltGr + 9 (Any X?)
Closing single curly quote ( ’ )

⎇ + } (Mac)

Compose + > ' (Gnome)
AltGr + 0 (Any X?)
Opening double curly quote ( “ )

Alt + [ (Mac)

Compose + < " (Gnome)
Closing double curly quote

⎇ + { (Mac)

Compose + > " (Gnome)
Opening low quote „
Compose + , " (Ubuntu)

Compose keys on X Windows

Bonus time: Where is that compose key?

Using Ubuntu? The traditional instructions about compose keys, don’t work per default on recent versions. Nor does the ISO_Level3_Shift method, aka AltGr.

You can re-enable Compose using gnome-tweaks

sudo apt install gnome-tweaks

Then launch Tweaks

  1. Go to Keyboard & Mouse.
  2. Choose something other than disabled for the Compose Key option.

I set Compose to be Capslock because, like hundreds of millions of computer users, I have never pressed that key deliberately to get capital letters and it seems unlikely that this will change. This all means that e.g I now type ü as Capslock+" u and as Capslock + < ". Which is reasonably mnemonic if you look at a US keyboard layout. Bonus: disables caps lock.

You can alternatively (additionally?) enable ISO_Level3_Shift which does a similar thing AFAICT but with less configurability and less documentation online

Launch GNOME Tweaks

  1. Go to Keyboard & Mouse
  2. Click on Additional Layout Options
  3. Expand Miscellaneous compatibility options, check Enable extra typographic characters

It is not clear to me how I actually enter Greek characters using either of the above methods. There is something called a dead_greek key? Is that real?

Or I could memorize some 4-digit unicode code points and enter characters via Ctrl-Shift-U. That would be a great use of my brief and precious time on this sweet, sweet earth.

But which Compose shortcuts exists? You kinda need to guess, but the Gtk list is a good start, although it could do with some examples. There is an encyclopedia of these symbols at fsymbols.com. And you can, hypothetically, define your own. The wikipedia list has some examples. The local version is supposedly in a file like /usr/share/X11/locale/am_ET.UTF-8/Compose but for me this includes mostly Ethiopean input methods and not the basic stuff.


In every environment, including ones that don’t have good emoji support or are locked down by sysadmins who hate fun, you can use the emoji search page and reference emojipedia, which is a votimg member of the unicode consortium according to wikipedia, so they must be authoritative.

Sometimes it is hard to type or view emoji. The :emoji: syntax allows us to refer to them via “shortcodes” such as :roller_coaster: for 🎢.

I’m not sure what, if any, the canonical list of these shortcodes is but the emoji cheatsehet](https://www.webfx.com/tools/emoji-cheat-sheet/) will do. The github emoji system is aligned to that, I learned via emojify. For this blog, the ugly-lookin’ and slightly divergent pandoc list was handy. One can also use emojipedia on macOS which is an OS-integrated dictionary of emoji.

Also important: sardonically rating emoji: ants, horses.


In recent Ubuntu emoji input is built-in via Emoji picker (right click), although AFAICT only on system dialogues, which excludes, e.g. the text editors and browsers where you actually need this stuff. There is also the emoji hotkey, defaulting to Ctrl+Shift+E which enables a slightly confusing the underdocumented ibus emoji search widget which for all that is more reliable and usable than the picker etc. However that shortcut key is annoying.

There’s also Character Map and Characters, two more-or-less interchangeable apps to find and type characters for you. Characters is nicer-lookin’ but has awful search, whereas Character Map has merely bad search.

The emoji are, I think, supplied via Google’s Noto font in its emoji flavour.


You can open the emoji typer with ⌘ ⌅ Space


Very built-in these days, but I’m sad that cute apps like Dango which did deep emoji learning, never got traction.



Finding that weird character

There is a nifty web app which solves a lot of these problems for one, called tell.wtf. Give it a go. You can scribble a character and it tells you the unicode translation.

Similarly, shapecatcher lets you sketch it in the browser.

Unicode character search and Unilist and copybar all provide classic style search. Probably the most popular is getemoji, the emoji-finding website from emojipedia.

If you then need to encode it to code points or UL encoding or whatever, see the many web-friendly encodings in the amusing Cryptii app and r12a >> Unicode code converter.

Advanced character molestation

Combatwombat’s Lunicode.js is full of programmatic unicode mangling tricks, e.g.

Wonky alternatives to the usual characters.

చօղҟվ ąӀէҽɾղąէìѵҽʂ էօ էհҽ մʂմąӀ çհąɾąçէҽɾʂ.

One can play with it at Lunicode.com.

Crucially, it supports Zalgo text, and various other stupid stunts from /r/Unicode/. In fact Zalgo text is a cottage industry, although I’m more of a trap text person myself obvs.


Fun fact: It takes reading of the spec to discover that Emoji are banned from YAML 1.1, which is an important text encoding system. You can use escape sequences, but only in double quoted strings.

So, to write the subtitle of this page for YAML 1.1, you could say

"Writing with \U0001f195\U0001f41c\U0001f41c"

I think this is fixed in the more recent YAML 1.2.