resaltar texto en Docx usando c #

Necesito resaltar una oración en el archivo docx, tengo este código y funciona bien para muchos documentos, pero noté que para algunos documentos el texto dentro del documento se establece palabra por palabra, no oración completa, me refiero a cada palabra con su propio Run, por lo que al buscar esa oración, no se encuentra porque es palabra por palabra en el docx. NOTA: Estoy trabajando con texto en árabe.

    private void HighLightText_userSentence(Paragraph paragraph, string text, string title,                           string author, decimal percentage, string _color)
{
    string textOfRun = string.Empty;
    var runCollection = paragraph.Descendants<Run>();
    Run runAfter = null;

    //find the run part which contains the characters
    foreach (Run run in runCollection)
    {
        if (run.GetFirstChild<Text>() != null)
        {
            textOfRun = run.GetFirstChild<Text>().Text.Trim();
            if (textOfRun.Contains(text))
            {
                //remove the character from thsi run part
                run.GetFirstChild<Text>().Text = textOfRun.Replace(text, "");
                runAfter = run;
                 break;

            }
        }
    }

    // create a new run with your customization font and the character as its text
    Run HighLightRun = new Run();
    RunProperties runPro = new RunProperties();
    RunFonts runFont = new RunFonts() { Ascii = "Curlz MT", HighAnsi = "Curlz MT" };
    Bold bold = new Bold();


    DocumentFormat.OpenXml.Wordprocessing.Color color = new DocumentFormat.OpenXml.Wordprocessing.Color() { Val = _color };
   DocumentFormat.OpenXml.Wordprocessing.FontSize fontSize = new DocumentFormat.OpenXml.Wordprocessing.FontSize() { Val = "22" };
    FontSizeComplexScript fontSizeComplex = new FontSizeComplexScript() { Val = "24" };

    Text runText = new Text() { Text = text };
    //runPro.Append(runFont);
    runPro.Append(bold);
    runPro.Append(color);
    //runPro.Append(fontSize);
   // runPro.Append(fontSizeComplex);

    HighLightRun.Append(runPro);
    HighLightRun.Append(runText);
    //HighLightRun.AppendChild(new Break());
    //HighLightRun.PrependChild(new Break());




    //insert the new created run part
    paragraph.InsertBefore(HighLightRun, runAfter);
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta