0

In a unicode string, each grapheme consists of one or more code points. However, there are some code points, such as the Zero-width joiner (ZWJ), which are never a part of a grapheme. The ZWJ is, in itself, invisible. Are all of those "non-grapheme" code points always invisible?

at54321
  • 8,726
  • 26
  • 46
  • ZWJ is part of a grapheme and it is also the purpose of it: to modify how characters are shows. It may not have any ink on its own, but it modify the grapheme (so it is part of it), so it behaviour is visible. In other words: it is sent to the font (not like other control characters), and font will use it for display purpose. – Giacomo Catenazzi Jan 05 '22 at 09:15

2 Answers2

0

The Unicode representation of the Ogham script is notable for containing a non-invisible whitespace character. (U+1680: OGHAM SPACE MARK)

Tom Scott made an excellent YouTube video on the subject: link

BambooleanLogic
  • 7,530
  • 3
  • 30
  • 56
0

There are many joining characters which are intended to modify a base character. Whether they provide a grapheme on their own is partially an implementation detail, I expect.

Recent Unicode versions also have invisible characters which modify how a previous emoji is being rendered, famously to add e.g. a skin color trait to emojis with human figures or faces. These by definition are not graphemes in their own right, though again, rendering engines are probably free to figure out a way to represent them if they are encountered in isolation.

tripleee
  • 175,061
  • 34
  • 275
  • 318