Perhaps some of the invisible spaces should just be rendered as-is 
(without a substitution), I translated them to visible code points only 
because invisible characters have a tendency to cause hard to diagnose 
problems for end users, but this might be limited to non-breaking space, 
which can easily be typed by accident without noticing.

That would be great. I suggest to show those invisible characters when
"View > Show Invisible Characters" is activated. Although in the current
behaviour of that feature, the original text remains untouched. But if you
include `SpaceCharacters` in "Invisible Characters", then showing them needs
shifting of parts of the original texts to fit the representor of the
invisible characters in place of those zero-widths chars. I guess this is not
a big problem because those characters are not so common in usual texts, and
when they are there, and the user wants to see "Invisible Characters", I guess
he wants to see them even if the texts are shifted.

Other Invisible characters I suggest to be shown in "Show Invisible Characters"
mode:
 * Left-to-right mark (U+200E)
 * Right-to-left mark (U+200F)
 * These: https://www.cs.tut.fi/~jkorpela/chars/spaces.html