Unfortunately, your "text safe" definition appears to exclude text in languages such as Persian (among others), where Zero Width Non-Joiner is required to write some words correctly.
Re:Breaking our Latin-1 assumptions (2017)
by kstenerud on Sunday June 19, 2022 @07:25AM
(#31798320)
Oh damn good catch! Adding category Cf.
Thanks.... though note that Cf also includes things like the bidi directional-override code points, which you might still prefer to exclude.
Re:Breaking our Latin-1 assumptions (2017)
by kstenerud on Sunday June 19, 2022 @01:31PM
(#31801440)
Yup, I've removed a bunch of Cf codes (it really is a grab bag!), but I'm not sure if removing BIDI could be done without breaking some languages?
https://github.com/kstenerud/concise-encoding/blob/master/ce...
Basically allow everything except some separators, most control chars, and some lookalike characters (which have to be updated as more characters are added to Unicode). It's not as clean as I'd like, but it's at least manageable this way.