O comportamento descrito acima está correto por design e consistente com a implementação do suporte de texto bidirecional.
Primeiro, uma solução para a sua exigência como eu a entendo.
Se você quiser incluir esses exemplos de RTL com algum prefixo e sufixo e exibi-los visualmente à direita e à esquerda do texto destacado original, você poderá colocar um caractere de controle RLM após o prefixo e ele se comportará da maneira você quer.
Você pode adicionar um RLM clicando no botão "Especial" na caixa de diálogo Localizar / Substituir e escolhendo RTL Mark
, ou pode simplesmente digitar ^r
manualmente. Vou usar os textos PRE
e POST
(em vez de XXX
em seus exemplos):
Sevocêusaressetexto"Substituir por" com um dos seus exemplos de RTL:
Entãovocêobtémesseresultado,queeuachoqueéoresultadoquevocêestavaprocurando:
Então,oqueestáacontecendo?
NosseusexemplosdeRTL,vocêtemumtextoqueconsisteemduaspartesouduas"execuções direcionais". A primeira é uma execução de LTR (a parte "abcd") e a segunda é uma execução de RTL (a parte "אאא" em hebraico), tudo dentro de um parágrafo que tenha uma direção básica de RTL.
Quando você adiciona um prefixo LTR (o primeiro "XXX" no seu exemplo de substituição) à execução LTR, você está apenas fazendo isso funcionar um pouco mais, como adicionar mais algumas letras à primeira palavra. Como as execuções de LTR são desenhadas da esquerda para a direita, esses novos caracteres aparecem onde deveriam. Se, em vez de "abcd", você usou a palavra "stand" e, em seguida, adicionou o prefixo "UNDER", a palavra resultante teria sido "UNDERstand" (não "standUNDER").
Para ajudar a lidar com situações como essa e resolver manualmente algumas ambiguidades, o Unicode fornece "caracteres de controle", que são marcadores invisíveis, cada um com seu próprio papel ou efeito.
A marca da direita para a esquerda (RLM) se comporta como um caractere RTL (imagine uma letra com largura zero "א"). Se colocarmos esse caractere logo após o nosso prefixo, nós efetivamente quebramos a execução da LTR que descrevi acima com um caractere hebraico. Agora o texto renderiza visualmente como você requer, com o prefixo aparecendo primeiro, na borda direita, então nosso caractere hebraico invisível, e então o original "abcd".