Bidirectional Algorithm: Steps


text
assign character types (often done later)
separate into paragraphs P1, HL4/5
       paragraph
determine base directionality P2/3, HL1
resolve embeddings and overrides X1-9, HL3
separate into level runs X10
       run
resolve weak character types W1-7, HL2
resolve neutral character types N1/2
resolve implicit levels I1/2
width calculation (pre-rendering)
split into lines
line
start and end whitespace, tabs L1
reorder L2
postprocess combining marks and mirroring characters L3/4, HL6