У меня есть небольшое дополнение Word, которое копирует текущий документ или выделение через буфер обмена в WPF RichTextBox
для дальнейшей обработки.Затем код перемещается по полученному FlowDocument
:
TextPointer cursor = document.ContentStart;
...
cursor = cursor.GetNextContextPosition(LogicalDirection.Forward);
. Меня интересуют только курсоры с cursor.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text
.Я ожидаю получить блоки, которые относятся к целым абзацам или, по крайней мере, к равномерно отформатированным диапазонам в исходном документе Word.Однако я заметил, что иногда (и для моих целей слишком часто, чтобы игнорировать это) блоки начинаются или заканчиваются в самой середине слова.Довольно часто (но не всегда) это позиция с немецким умлаутом, хотя далеко не все умлауты производят такие разрывы.
Может кто-нибудь объяснить, что здесь происходит за кулисами?Есть ли лучший способ навигации по документу?Есть ли простой способ распознать, что два соседних блока, которые я получаю таким образом (они TextRuns
?), Разбивают слово на две половины и не разделяются, скажем, абзацем?
Я хочу получить максимально непрерывные текстовые блоки, которые в идеале не перекрывают абзацы или изменения форматирования.