To kill the curosity right here....
"Bidirectional" here means the merging of langauages that read from Left to Right (English, French, Spanish etc) with some Native languages that are read from Right to Left, (Arabic, Farsi, Urdu etc).
Problem arises where L2R sub-strings are inserted in R2L string or vice versa.
Like an arabic sub-string in an enlish text. Suppose the lower case is english and upper case in urdu, a bidirectional string may look like.
i drive my CAR daily
but it should not look like this, as CAR should be from L2R in display and in selection.
i drive my RAC daily
If you have read this far I am sure this is the topic you are looking for.
Continue your reading here http://fribidi.sourceforge.net/