I don't understand how the algorithm on page 21 works. Aren't many Unicode characters formed with multiple code points, like <modifying-mark><basic-character>? If these are reversed to be <basic-character><modifying-mark>, then the textual output would actually be different, wouldn't it?
Shouldn't rev(1) reverse graphemes instead of code points?
Shouldn't rev(1) reverse graphemes instead of code points?