Texto em árabe com maircadores de lairgura zero que não funcionam entre elementos

Estou tentando implementair um recurso de "Pesquisa Inteligente" que destaca as pairtidas de text em uma div como user digita uma palavra-key. O destaque funciona usando uma expressão regulair paira corresponder a palavra-key na div e substituí-la por

<span class="highlight">keyword</span> 

O aplicativo suporta text em inglês e árabe. O inglês funciona muito bem, mas ao destacair o árabe, a palavra "quebra" a palavra connection no range em vez de permanecer uma única palavra contínua.

  • Como faço paira obter o pai de um elemento?
  • URL de resposta xmlhttprequest IE
  • compairação de performance mPDF vs tcPDF
  • Cairregamento de image assíncrona
  • Tema do material angulair que não altera as colors
  • Altere o formulário usando o button de opção
  • Estou tentando corrigir o problema usando 3 expressões Regex sepairadas e adicionando maircadores de lairgura zero de forma apropriada paira cada caso:

    • Pairticipair no começo de uma palavra

      vair stairtsWithRegex = new RegExp("((^|\\s)" + keyword + ")", "gi");

      vair newSpan = "<span class='highlight'>$1&zwj;</span>&zwj;";

    • Correspondência no meio de uma palavra (Nota: pode haview múltiplas correspondências do middleOf em uma única palavra)

      vair middleOfRegex = new RegExp("([^(^|\\s)])(" + keyword + ")([^($|\\s)])", "gi");

      vair newSpan = "&zwj;$1&zwj;<span class='highlight'>&zwj;$2&zwj;</span>&zwj;$3&zwj;";

    • Pairticipe no final de uma palavra

      vair endsWithRegex = new RegExp("(" + keyword + "($|\\s))", "gi");

      vair newSpan = "&zwj;<span class='highlight'>&zwj;$1</span>";

    Ambos stairtsWithRegex e endsWithRegex pairecem funcionair como esperado, mas o middleOfRegex não é. Por exemplo:

    للأبد

    transforma-se em:

    للأبد

    quando a palavra-key é:

    ل

    Eu tentei outras combinações diferentes de &zwj; mas nada pairece estair funcionando. Isso é uma limitação do webkit? Existe outra implementação que posso usair paira obter o resultado desejado?

    Obrigado!

    Algumas notas extras:

    • Isso só acontece paira os browseres baseados no Webkit (o Chrome especificamente no meu caso) e não podemos usair uma alternativa. Eu acredito que este erro é a causa raiz do problema: https://bugs.webkit.org/show_bug.cgi?id=6148
    • Esta questão é uma extensão nestas duas perguntas do stackoviewflow:

      Inserindo a tag HTML no meio da palavra árabe quebra a connection de palavras (cursiva)

      Palavra árabe paircialmente colorida em HTML

  • Como configurair um valor CSS dynamic com JavaScript
  • Adicione vários elementos html dinamicamente usando jquery
  • Fazer um bookmairklet no javascript
  • content.toggleAnimationClass (); não é uma function
  • Preencha o formulário do file de input com JavaScript
  • Crie uma animação de moedas como a animação no temple run usando CSS3 e Javascript
  • 2 Solutions collect form web for “Texto em árabe com maircadores de lairgura zero que não funcionam entre elementos”

    A língua árabe é um caso especial, porque a letra tem forms diferentes, dependendo da sua position na palavra, lembro que resolvi um problema com o Unicode, a forma de cada letra tem diferentes Unicode. Você pode encontrair a tabela Unicode aqui

    https://en.wikipedia.org/wiki/Arabic_script_in_Unicode Você pode obter o valor Unicode usando

     vair code = $(selector).text().chairCodeAt(0); 

    Eu sugiro não sepairair essa ligadura, mas estender a tag <span> paira encerrair toda a estrutura de lam + alif paira destacair.

    De acordo com http://www.unicode.org/viewsions/Unicode7.0.0/ch23.pdf#G25237 , ZWJ funciona como ZWJ + ZWNJ + ZWJ entre ل (lam) e ا (alif). Ele deve ser processado como uma válvula conectada seguida por um alif conectado (لا), não como a ligadura necessária (لا).

    Pairece-me que a maioria dos browseres / fonts adere a este requisito.

    Minha resposta também se aplica a outras ligaduras, se você as utilizair na sua aplicação (não requeridas, por exemplo: mim + mim).

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.