Minor point: changing "\pardir TLT" to "\pardir TLT\textdir TLT" in the last paragraph produces better visual, however, the previous paragraphs already demonstrate the problem sufficiently.

On Fri, Jan 8, 2016 at 10:40 PM, Mohammad Hossein Bateni <bateni@gmail.com> wrote:
Hello,

When a line ends with a sequence whose direction differs from that of the paragraph, we risk pushing some text into the margin (when not necessary).  Here is an example with corresponding output:


\usemodule[simplefonts]
\setmainfont[ALM Fixed][features=arabic,range=arabic]
\setupalign[r2l]
\setupwhitespace[big]
\showframe

\starttext

% 10 copies of Persian word "hello" stay on one line.
\dorecurse{10}{سلام }
% 20 copies makes a 2-line paragraph.
\dorecurse{20}{سلام }

% one copy of the word goes into the margin although the Latin letters perfectly fit the line.
\dorecurse{10}{سلام }
{\textdir TLT\dorecurse{20}{a}}
\dorecurse{10}{سلام }

% although the Latin string extends into the margin, TeX still puts one copy of "hello" there as well.
\dorecurse{10}{سلام }
{\textdir TLT\dorecurse{30}{a}}
\dorecurse{10}{سلام }

% something similar happens here with the opposite par/text dir
\pardir TLT
\dorecurse{10}{bidi }
{\textdir TRT\dorecurse{20}{آ}}
\dorecurse{10}{bidi }

\stoptext


The problem seems to be that after typesetting the LTR text within the RTL paragraph, TeX thinks the current text ends at the left end of the LTR portion; hence, it tries to add something to the line; it's only after that that it discovers we ran into the margin!

—MHB