Símbolos de formato ocultos en MS Word

Símbolos de formato ocultos en MS Word

Tengo un documento de Word en idioma persa y contiene muchas frases como esta:

Mi problema es dónde se conecta "و نشیب" con "هایی".

Al principio parece que hay un carácter no unido de ancho cero entre ellos, pero en realidad, cuando intenté copiarlo, no se copió nada.

También copié toda la frase en el Bloc de notas y obtuve esto: "و نشیبهایی" Como ve, no hay nada entre las dos palabras anteriores.

Activé mostrar/ocultar ¶ en el grupo "Párrafo" de la pestaña "Inicio" para ver si hay algún carácter oculto y este es el resultado:

Ahora me pregunto si hay alguna forma de trabajar con este personaje; por ejemplo, reemplazándolo con ZWNJ.

Un archivo con ese problema(también lea a continuación)

Respuesta1

Este es un reemplazo completo de mi respuesta original (el texto original se encuentra a continuación).

Su documento marca las palabras en verde ("palabras que se copian como usted quiere") y rojo ("palabras que no se copian como usted quiere").

Ambos tipos utilizan un ZWNJ, por ejemplo, para preceder a un carácter jeh que sólo debe unirse a la izquierda, no a la derecha.

La diferencia es que en las palabras verdes, ZWNJ se ingresó RTL, pero en las palabras rojas, se ingresó LTR.

No sé cómo normalmente ingresarías un ZWNJ, pero aquí, si elijo "Salto opcional sin ancho" en el panel Caracteres especiales en el cuadro de diálogo Símbolo, el ZWNJ se ingresa LTR (malo, en este caso), mientras que si selecciono el carácter 0x200C de la tabla de caracteres en el cuadro de diálogo Símbolo, se ingresa RTL (bueno, en este caso). En Word 2010, si entro en Word->Archivo-Opciones->Personalizar cinta->Atajos de teclado->Personalizar... y asigno una pulsación de tecla al salto opcional sin ancho, presionar esa pulsación de tecla al ingresar texto RTL parece insertar el ZWNJ como RTL (bueno). Puedes asignarlo de la siguiente manera:

  • en la lista de Categorías, desplácese hacia abajo hasta "Símbolos comunes" y selecciónelo
  • en la lista de símbolos comunes que se muestra, seleccione "Salto opcional sin ancho"
  • haga clic en el cuadro "Presionar nueva tecla abreviada"
  • presione la tecla rápida que desee (usé ctrl-9 como experimento)
  • haga clic en Asignar
  • haga clic en Cerrar

No sé si eso logrará todo lo que necesitas, pero creo que al menos explica lo que está pasando.

(Sospeché que era algo así, pero tuve que guardarlo como .docx y mirar el XML. Las "palabras verdes" estaban codificadas en una sola "ejecución" de Word con RTL de "propiedad de ejecución" (una ejecución es una secuencia de caracteres que comparten las mismas características, por lo que si cambia el color del texto, habrá una nueva ejecución). Las palabras rojas se codificaron en tres ejecuciones: dos ejecuciones RTL que contienen el texto y una ejecución no RTL que contiene el carácter ZWNJ).

Para cambiar los LTR ZWNJ a RTL, debería poder utilizar el siguiente VBA. (Para aquellos que conocen VBA, esta es una de las ocasiones en las que tienen que trabajar con la Selección en lugar del Rango, porque AFAIK la única manera de establecer una Ejecución en texto RTL es a través del método RTLRun del objeto Selección):

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

El texto original de mi respuesta sigue...

Probablementeesun ZWNJ. Si lo selecciona, luego haga clic en Insertar->Símbolo->Más símbolos, se debe seleccionar ZWNJ (0x200C). Es lo mismo que el carácter que Microsoft llama "Salto opcional sin ancho" en el panel "Caracteres especiales" del cuadro de diálogo Símbolo.

Hasta donde yo sé, el Bloc de notas ignora ZWNJ. Sospecho que tendrás que reemplazar el ZWNJ (si eso es lo que es) por un espacio (uno seleccionado, deberías poder presionar la barra espaciadora para hacerlo) que hará que el Bloc de notas muestre la forma correcta del carácter.

Copiar de un punto de un documento de Word a otro debería conservar el ZWNJ, pero ¿es eso lo que estás viendo?

Respuesta2

Hoy encontré otra forma de resolver el problema. El truco consiste en reemplazar el NWOB (con un carácter antes y después) consigo mismo y luego Word hará el truco...

  • Encontrar que:(?)^o(?)
  • Reemplazar con:\1^o\2
  • No olvides poner una marca de verificación al lado Use wildcardsdel More >>panel.

Luego cambiará los LTR ZWNJ a ese modo rectangular y los RTL a lo que esperaba.

información relacionada