On 2/22/2018 11:39 AM, David Corbett via Unicode wrote:
For example, after a right-to-left override, the Hangul string 보기
(“bogi”) becomes 기보 (“gibo”) in visual order. However, its NFD form is
reordered by jamo instead of by syllable; that is, it looks like “igob”.
Nope. *tilt* The UBA reorders the display order in layout -- not the
"bogi" is the sequence <1107, 1169, 1100, 1175> in NFD or <BCF4, AE30>
Because of canonical equivalence, for display of the NFD string, the
sequence <1107,1169> needs to be mapped onto the same *glyph* as BCF4,
and the sequence <1100,1175> onto the same *glyph* as AE30.
If you override the normal left-to-right ordering with bidi override
controls, then the layout order is reversed, but what is actually laid
out is those two glyphs. So you just reverse the order of the two
syllables for display, in either case.
You could force display of "igob", but only if you had inserted some
character in between the conjoining jamos that was preventing their
equivalence to the syllables, anyway.
I don’t think it is the intent of the algorithm that canonically
equivalent strings display so very differently, but I can’t find any
explicit guidance. What should a UBA-conformant renderer do?
The right thing. ;-)