Eu tenho um documento do Word em persa e contém muitas frases como esta:
Meu problema é onde o "و نشیب" se conecta ao "هایی".
A princípio parece que há um caractere não-juntor de largura zero entre eles, mas na verdade, quando tentei copiá-lo, nada copiou.
Também copiei toda a frase no Bloco de Notas e obtive isto: "و نشیبهایی" Como você pode ver, não há nada entre as duas palavras anteriores.
Ativei mostrar/ocultar ¶ no grupo "Parágrafo" da aba "Home" para ver se há algum caractere oculto e este é o resultado:
Agora, me pergunto se existe alguma maneira de trabalhar com esse personagem; por exemplo, substituindo-o por ZWNJ.
Um arquivo com esse problema(leia também abaixo)
Responder1
Este é um substituto completo para minha resposta original (o texto original está abaixo).
Seu documento marca as palavras em verde (“palavras que copiam como você deseja”) e vermelho (“palavras que não copiam como você deseja”).
Ambos os tipos usam um ZWNJ, por exemplo, para preceder um caractere Heh que só deve ser unido à esquerda, não à direita.
A diferença é que nas palavras verdes o ZWNJ foi inserido RTL, mas nas palavras vermelhas foi inserido LTR.
Não sei como você normalmente inseriria um ZWNJ, mas aqui, se eu escolher "Quebra opcional sem largura" no painel Caracteres especiais na caixa de diálogo Símbolo, o ZWNJ será inserido como LTR (ruim, neste caso), enquanto se eu selecionar o caractere 0x200C na tabela de caracteres na caixa de diálogo Símbolo, ele será inserido em RTL (bom, neste caso). No Word 2010, se eu entrar em Word-> Opções de arquivo-> Personalizar faixa de opções-> Atalhos de teclado-> Personalizar... e atribuir um pressionamento de tecla à quebra opcional sem largura, pressionar esse pressionamento de tecla ao inserir o texto RTL parece inserir o ZWNJ como RTL (bom). Você pode atribuir isso da seguinte maneira:
- na lista de categorias, role para baixo até "Símbolos comuns" e selecione-o
- na lista de símbolos comuns exibida, selecione "Quebra opcional sem largura"
- clique na caixa "Pressione nova tecla de atalho"
- pressione a tecla de atalho desejada (usei ctrl-9 como experiência)
- clique em Atribuir
- clique em Fechar
Não sei se isso vai conseguir tudo o que você precisa, mas acho que pelo menos explica o que está acontecendo.
(Eu suspeitava que fosse algo assim, mas tive que salvar como .docx e olhar o XML. As "palavras verdes" foram codificadas em um único Word "run" com "run property" RTL (uma run é uma 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 execuções RTL contendo o texto e uma execução não RTL contendo o caractere ZWNJ.)
Para alterar os ZWNJs LTR para RTL, você deve ser capaz de usar o seguinte VBA. (Para quem conhece VBA, esta é uma das ocasiões em que você tem que trabalhar com Seleção em vez de Range, porque AFAIK a única maneira de definir um texto Run 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) deverá ser selecionado. É o mesmo caractere que a Microsoft chama de "Quebra opcional sem largura" no painel "Caracteres especiais" na caixa de diálogo Símbolo.
Pelo que eu sei, o NotePad ignora o ZWNJ. Eu suspeito que você terá que substituir o ZWNJ (se é isso) por um espaço (um selecionado, você deve poder pressionar a barra de espaço para fazer isso) que fará com que o Bloco de Notas exiba a forma correta do caractere.
Copiar de um ponto para outro em um documento do Word deve preservar o ZWNJ, mas é isso que você está vendo?
Responder2
Hoje encontrei outra maneira de resolver o problema. O truque é substituir o NWOB (com um caractere antes e depois) por ele mesmo, então o Word resolverá o problema...
- Encontre o que:
(?)^o(?)
- Substituir com:
\1^o\2
- Não se esqueça de colocar a marca de seleção ao lado
Use wildcards
doMore >>
painel
Em seguida, ele mudará os LTR ZWNJs para aquele modo retangular e os RTL para o que eu esperava.