Este é um substituto completo da minha resposta original (o texto original está abaixo).
Seu documento marca as palavras em verde ("palavras que copiam como você quer") e vermelho ("palavras que não copiam como você quer").
Ambos os tipos usam um ZWNJ, por ex. para preceder um caractere Heh que só deve se juntar à esquerda, não à direita.
A diferença é que nas palavras verdes, o ZWNJ foi inserido RTL, mas nas palavras vermelhas, foi inserido LTR.
Eu não sei como você normalmente digitaria um ZWNJ, mas aqui, se eu escolher o "No-Optional BreakUp Break" no painel Caracteres Especiais na caixa de diálogo Symbol, o ZWNJ é inserido LTR (bad, neste caso ), enquanto que se eu selecionar o caractere 0x200C da tabela de caracteres na caixa de diálogo Symbol, será inserido RTL (bom, neste caso). No Word 2010, se eu entrar no Word- > Opções de arquivo- > Personalizar Faixa de opções- > Atalhos de teclado- > Personalizar ... e atribuir um pressionamento de tecla à Quebra Opcional sem largura, pressionando essa combinação de teclas ao inserir RTL texto aparece para inserir o ZWNJ como RTL (bom). Você pode atribuir isso da seguinte maneira:
- na lista de categorias, desça até "Símbolos comuns" e selecione
- na lista de símbolos comuns exibida, selecione "Sem largura Pausa Opcional "
- clique na caixa "Pressione nova tecla de atalho"
- pressione a tecla de atalho desejada (usei o ctrl-9 como um experimento)
- clique em Atribuir
- clique em Fechar
Não sei se conseguiremos tudo o que você precisa, mas acho que pelo menos explica o que está acontecendo.
(Eu suspeitava que fosse algo assim, mas eu tinha que salvar como docx e olhar para o XML. As "palavras verdes" foram codificadas em um único Word "run" com "run property" RTL (uma corrida é s sequência de caracteres que compartilham as mesmas características, portanto, se você alterar a cor do texto, haverá uma nova execução.) As palavras vermelhas foram codificadas como três execuções: duas RTL contendo o texto e uma não RTL contendo o ZWNJ personagem.)
Para alterar os ZWNJs LTR para RTL, você deve poder usar o seguinte VBA. (Para aqueles que conhecem o VBA, esta é uma das ocasiões em que você tem que trabalhar com a Seleção e não com o Intervalo, porque o AFAIK é a única maneira de definir um texto Executar para RTL através do método RTLRun do objeto Selection):
Sub replace_LTR_NBZWs_with_RTL_ones()
ActiveDocument.Select
With Selection.Find
.ClearFormatting
.Text = ChrW(8204)
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchByte = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
While .Execute
Selection.RtlRun
Wend
End With
End Sub
O texto original da minha resposta segue ...
Provavelmente é um ZWNJ. Se você selecioná-lo, clique em Inserir- > Símbolo- > Mais símbolos, o ZWNJ (0x200C) deve ser selecionado. É o mesmo que o caractere que a Microsoft chama de "Interrupção Opcional Sem Largura" no painel "Caracteres Especiais" na caixa de diálogo Símbolo.
Até onde eu sei, o NotePad ignora o ZWNJ. Eu suspeito que você terá que substituir o ZWNJ (se é isso que é) por um espaço (um selecionado, você deve ser capaz de pressionar a barra de espaço para fazer isso) que fará com que o NotePad exiba o formulário de caractere correto. / p>
Copiar de um ponto em um documento do Word para outro deve preservar o ZWNJ, mas é isso que você está vendo?