In summary, the two carets are appearing only as the result of the UBA : weak directions are already mapped to actual visual directions, these directions are only RTL or LTR, and there are only two cases :
* encoded text (before=LTR, after=RTL) e.g. "latinARABIC" with the insertion point between the two scripts, displayed as latin_CIBARA^ * encoded text (before=RTL, after=LTR) e.g. "ARABIClatin" with the insertion point between the two scripts, displayed as _CIBARA^latin where: * ^ notes here the right-pointing caret appearing on the right side of the UBA-resolved RTL span, * _ notes here the left-pointing caret appearing in the left side of the UBA-resolved LTR span. * Note that the _ caret always appears somewhere to the left of the ^ caret : visually you know where to look for the second caret if you see only one, and this is the reason why the rendering when there's only one caret (or two carets at the same position and pointing the same direction) should probably avoid showing that direction (e.g. the "|" vertical thin line), or should use a visually distinct form to inform the user that there's a second caret.

