Breaks a piece of text into segments with consistent
directional level and shaping engine. Each byte of text will
be contained in exactly one of the items in the returned list;
the generated list of items will be in logical order (the start
offsets of the items are ascending).
cached_iter should be an iterator over attrs currently positioned at a
range before or containing start_index; cached_iter will be advanced to
the range covering the position just after start_index + length.
(i.e. if itemizing in a loop, just keep passing in the same cached_iter).
Breaks a piece of text into segments with consistent directional level and shaping engine. Each byte of text will be contained in exactly one of the items in the returned list; the generated list of items will be in logical order (the start offsets of the items are ascending). cached_iter should be an iterator over attrs currently positioned at a range before or containing start_index; cached_iter will be advanced to the range covering the position just after start_index + length. (i.e. if itemizing in a loop, just keep passing in the same cached_iter).