Line Wraps and the Zero-Width Joiner
I was reminded of this post from former Nisus developer Martin Wierschin:
How does does an emoji do that in text? By using a zero-width joiner character between its constituent characters. That way software knows to display all the codes together as a single glyph or image on screen. This joiner trick is used for a variety of purposes like skin tone and gender modifiers.
Now to the part where we explain how the zero-width joiner character can help your writing. In certain situations you might consider inserting a joiner character to change where line wrapping occurs. The joiner acts as a signal to the text layout engine that the adjacent characters should be joined. You can think of the joiner like a glob of glue that keeps its neighbors together. The characters won’t display a single image as with emoji, but rather they will be kept together on the same line.
Nisus Writer Pro has a built-in menu command to insert the zero-width joiner. There’s also a built-in way to insert it into any macOS text view, but it’s not obvious:
- Open the Emoji & Symbols inspector.
- If necessary, click the rightmost button to switch it to the full Character Viewer.
- From the … menu, choose Customize List….
- At the bottom of the list, check the box next to Code Tables ‣ Unicode and click Done.
- Select Unicode at the left and then select 2000 General Punctuation at the right.
- Zero Width Joiner (U+200D) and related characters are in the first row.
You can add them as favorites. Unfortunately, even then, they do not seem to be searchable by name. For me, the easiest way to make unusual characters accessible is to add them as LaunchBar snippets. macOS text replacements would probably work, too.
Here are the characters from Wierschin’s “female chef” example if you want to copy/paste them to try it out:
👩 + U+200D + 🍳 = 👩🍳
Previously:
- Nisus Probably Moribund
- Hiding Data in Emoji
- Unicode and Copying and Pasting Code
- Fingerprinting Swift Code Using Spacecrypt
- Dark Corners of Unicode
Update (2025-10-28): Thanks to Ralf for helping me to realize that searching for “joiner” does find the character. It looks like it only finds the letters “j,” “o,” “i,” “n,” “e,” and “r,” but there are actually invisible characters after that that only show up if you click on what looks like empty space.
2 Comments RSS · Twitter · Mastodon
> Unfortunately, even then, they do not seem to be searchable by name.
Actually, once you've added the Code Tables, just search for "joiner" and it's the third hit.