8 votes

Pourquoi la police change-t-elle lorsque je colle une image dans TextEdit ?

Voici une simple séquence d'actions dans TextEdit sous MacOS 10.13.6 qui produit un effet de bord inattendu. Je ne comprends pas pourquoi, et j'aimerais savoir comment l'éviter.

  1. Créez un nouveau document dans TextEdit (à l'aide de -n ou l'élément de menu Fichier Nouveau).
  2. Regardez la barre de style en haut, et notez la police et la taille de la police. La police utilisée par TextEdit à ce stade est celle que j'ai définie dans mes préférences TextEdit pour "Rich Text Font". (Dans mon cas, Roboto 14 points). enter image description here
  3. Capturez une image dans le presse-papiers, par exemple à l'aide de la fonction fonction standard de MacOS pour capturer une partie de l'écran en tant qu'image dans le presse-papiers. (N'importe quelle image fera l'affaire.)
  4. Coller l'image dans le document (à l'aide de -v ou l'option de menu Editer Coller).
  5. Regardez à nouveau la barre de style : l'élément la police et la taille de la police ont changé à Helvetica 12pt. enter image description here

Cela affecte le texte que vous tapez dans le document : si vous tapez du texte avant de coller une image, le texte sera dans la police et la taille de police que vous avez définies dans vos préférences ; une fois que vous avez collé une image, tout texte que vous tapez dans le document après l'emplacement de l'image utilisera une police et une taille de police différentes. (Il ne s'agit pas simplement d'une erreur dans le style affiché dans la barre de style).

Pourquoi la police change-t-elle ? Qu'est-ce qui contrôle ce comportement ? Et comment puis-je faire en sorte qu'il cesse de changer ? Pour que le texte tapé après l'étape 4 continue d'utiliser la police définie dans mes préférences "Rich Text & Note Font" au lieu d'être remplacé par Helvetica 12pt ?

Au cas où cela serait pertinent, voici une image de mon panneau de préférences TextEdit :

enter image description here

1voto

Nic Points 2908

Je peux reproduire ce comportement dans TextEdit.app et Notes.app sur MacOS Catalina 10.15.3 (19D76). Cela se produit avec n'importe quel type d'insertion d'image (ex. presse-papiers, glisser-déposer).

Je ne sais pas comment éviter que cela ne se produise lorsque vous êtes annexer une image dans un texte, mais vous obtiendrez peut-être ce que vous voulez en insérant une image dans le texte. milieu de texte formaté ; le texte avant/après conserve alors le formatage d'origine. Une chose qui a bien fonctionné pour moi est de taper un espace, puis d'appuyer sur la flèche gauche avant de coller une image.

J'expliquerai plus en détail ci-dessous ce que j'ai appris d'autre.


La police toujours revient à Helvetica 12 pt après avoir collé une image, quels que soient les paramètres que j'ai essayés. Il semble qu'il s'agisse d'un code dur, immuable la valeur par défaut du système. Bien que je n'aie pas encore essayé d'utiliser Outil de bricolage pour modifier les paramètres de police de l'ensemble du système.

Regarder dans les fichiers RTFD

Je ne suis pas sûr de savoir comment vérifier l'état en mémoire de NSTextView mais si nous sauvegardons le fichier sur le disque, nous pouvons inspecter le contenu du fichier RTF. Nous recherchons une directive sur la taille des polices comme \fs12 ou \fs24 . En fait, le format de fichier RTF original ne prend pas en charge les images, de sorte qu'il s'agit en réalité de .rtfd ( Répertoire RTF ) ici.

Dans un premier temps, j'ai comparé deux fichiers, l'un où aucune image n'avait encore été collée, l'autre où l'image avait été collée puis supprimée. Il est intéressant de noter que le contenu des fichiers était le suivant identique ! Cela suggère qu'il n'y a pas de changement intentionnel des paramètres du format de texte et que le retour à l'Helvetica 12 pt est directement lié à la présence de l'image.

J'ai ensuite inspecté un fichier dans lequel j'avais ajouté plusieurs fois la même image. La même directive image se répète sans aucune directive de mise en forme du texte. En particulier, \fs12 n'apparaît jamais dans le dossier.

\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}}

Sur cette base, je peux déterminer de manière assez concluante que ce comportement de collage est lié à la gestion en mémoire du texte formaté. En d'autres termes, il semble s'agir d'une particularité de l'implémentation par Apple de la fonction NSTextView .

Il me semble peu probable que ce soit le comportement que les ingénieurs logiciels d'Apple aient voulu créer. Si c'était intentionnel, alors il serait hors sujet de spéculer sur les raisons de cette situation. Mais comme il semble s'agir d'un bogue, je vous renvoie plutôt à la page d'Apple où vous pouvez commentaires sur l'écriture pour MacOS .

Pistes possibles pour une enquête future

Comment inspecter directement le contenu du presse-papiers ? Y a-t-il des informations de formatage de texte associées à une image dans le presse-papiers ?

Nous pourrions probablement identifier un cas plus petit pour reproduire ce problème en manipulant directement un fichier NSMutableAttributedString . Cela fait un certain temps que je n'ai pas fait de développement Mac, mais je concentrerais probablement mon attention sur appendAttributedString: ou insertAttributedString:atIndex: .

0voto

benwiggy Points 21125

Si vous avez copié l'image à partir d'une autre application texte, comme Word ou Pages, il se peut que vous copiiez également la mise en forme du texte à l'emplacement de l'image dans ce document.

Pour éviter que cela ne se produise, utilisez la fonction Paste and Match Style qui est Shift Alt Command V

Cependant, vous avez raison de dire que cela se produit même lorsqu'il n'y a pas de mise en forme du texte. La réponse la plus probable est qu'il s'agit d'un bogue - un aspect indésirable et négligé du code.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X