7 votos

¿Por qué cambia la fuente después de pegar una imagen en TextEdit?

He aquí una simple secuencia de acciones en TextEdit en MacOS 10.13.6 que produce un efecto secundario inesperado. No entiendo por qué, y me gustaría saber cómo evitarlo.

  1. Cree un nuevo documento en TextEdit (utilizando -n o la opción de menú Archivo Nuevo).
  2. Mira la barra de estilo en la parte superior, y observa la fuente y el tamaño de la misma. El tipo de letra que TextEdit utiliza en este punto es el que yo establezco en mis preferencias de TextEdit para "Rich Text Font". (En mi caso, Roboto 14pt.) enter image description here
  3. Capturar una imagen en el portapapeles, por ejemplo, utilizando la función instalación estándar de MacOS para capturar una parte de la pantalla como imagen en el portapapeles. (Cualquier imagen servirá).
  4. Pegue la imagen en el documento (usando -v o la opción de menú Editar Pegar).
  5. Vuelve a mirar la barra de estilo: el la fuente y el tamaño de la fuente han cambiado a Helvetica 12pt. enter image description here

Esto afecta al texto que escriba en el documento: si escribe texto antes de pegar una imagen, el texto tendrá la fuente y el tamaño de la fuente que haya establecido en sus preferencias; una vez que pegue una imagen, cualquier texto que escriba en el documento después de la ubicación de la imagen utilizará una fuente y un tamaño de fuente diferentes. (No se trata simplemente de un fallo en el estilo mostrado en la barra de estilo).

¿Por qué cambia el tipo de letra? ¿Qué controla este comportamiento? Y cómo puedo hacer que deje de cambiar ¿para que el texto escrito después del paso #4 siga siendo la fuente establecida en mi preferencia "Rich Text & Note Font" en lugar de ser cambiada a Helvetica 12pt?

En caso de que sea relevante, aquí hay una imagen de mi panel de Preferencias de TextEdit:

enter image description here

1voto

Nic Puntos 106

Puedo reproducir sistemáticamente este comportamiento en TextEdit.app y Notes.app en MacOS Catalina 10.15.3 (19D76). Esto sucede con cualquier tipo de inserción de imágenes (por ejemplo, portapapeles, arrastrar y soltar).

No sé cómo evitar que ocurra cuando estás adjuntando una imagen a un texto, pero quizás consigas lo que quieres insertando una imagen en el medio del texto formateado; entonces el texto anterior/posterior conserva el formato original. Una cosa que me ha funcionado bien es escribir un espacio y luego tocar la flecha izquierda una vez antes de pegar una imagen.

A continuación explicaré con más detalle lo que he aprendido.


El tipo de letra siempre vuelve a la Helvética 12 pt después de pegar una imagen, independientemente de cualquier configuración que haya probado. Esto parece ser un hardcoded, inalterable por defecto del sistema. Aunque todavía no he probado a utilizar TinkerTool para cambiar la configuración de las fuentes en todo el sistema.

Cómo mirar en los archivos RTFD

No estoy seguro de cómo mirar el estado en memoria de NSTextView pero si guardamos el archivo en el disco podemos inspeccionar el contenido del archivo RTF. Buscamos una directiva de tamaño de fuente como \fs12 o \fs24 . En realidad, el formato de archivo RTF original no admite imágenes, por lo que en realidad estamos hablando de .rtfd ( Directorio RTF ) aquí.

Al principio comparé dos archivos, uno en el que no se había pegado ninguna imagen, y otro en el que se había pegado la imagen y luego se había eliminado. Curiosamente, el contenido de los archivos era idéntico ¡! Esto sugiere que no hay un cambio intencionado de la configuración del formato de texto, y que la vuelta a la Helvética 12 pt está directamente relacionada con la presencia de la imagen.

Luego inspeccioné un archivo en el que había añadido la misma imagen varias veces. La misma directiva de imagen se repite sin ninguna directiva de formato de texto. En particular, \fs12 nunca aparece en el archivo.

\f0\fs48 \cf0 Hello World
\fs24 {{\NeXTGraphic Pasted Graphic.png \width500 \height520 \appleattachmentpadding0 \appleembedtype0 \appleaqc}}
{{\NeXTGraphic Pasted Graphic.png \width500 \height520 \appleattachmentpadding0 \appleembedtype0 \appleaqc}}
{{\NeXTGraphic Pasted Graphic.png \width500 \height520 \appleattachmentpadding0 \appleembedtype0 \appleaqc}}

Basándome en esto, puedo determinar de forma bastante concluyente que este comportamiento de pegado está relacionado con el manejo en memoria del texto formateado. En otras palabras, esto parece ser una peculiaridad de la implementación de Apple de NSTextView .

Me parece poco probable que este sea el comportamiento que los ingenieros de software de Apple pretendían crear. Si fuera intencional, entonces sería off-topic especular sobre el porqué. Pero como parece ser un error, en su lugar te dirigiría a la página de Apple donde puedes escribir comentarios para MacOS .

Posibles pistas para futuras investigaciones

¿Cómo podemos inspeccionar directamente el contenido del portapapeles? ¿Hay alguna información de formato de texto asociada a una imagen en el portapapeles?

Probablemente podríamos identificar un caso menor para reproducir este problema manipulando directamente un NSMutableAttributedString . Hace tiempo que no hago desarrollo para Mac, pero probablemente centraría mi atención en appendAttributedString: o insertAttributedString:atIndex: .

0voto

benwiggy Puntos 8

Si has copiado la imagen desde otra aplicación de texto, como Word o Pages, puede que también estés copiando el formato de texto en la posición de la imagen en ese documento.

Para que esto no ocurra, utilice Paste and Match Style que es Shift Alt Command V

Sin embargo, tienes razón en que esto ocurre incluso cuando no existe formato de texto. La respuesta más probable es que se trata de un error, un aspecto indeseable y pasado por alto del código.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X