Le trait d’union Unicode (‐, U+2010) est ce que le typographe entend par « trait d’union ». Votre clavier ne l’a pas. La touche au-dessus du zéro produit le trait d’union à double emploi, U+002D — un caractère de compromis hérité de l’ASCII, qui avait besoin d’un glyphe unique servant à la fois de trait d’union et de moins aux débuts de l’informatique. U+2010 a été ajouté bien plus tard, quand Unicode a donné au trait d’union son propre point de code, et les logiciels de PAO, les générateurs de PDF et les systèmes professionnels de composition l’emploient dès qu’ils veulent être précis. Pour un lecteur, les deux sont indiscernables. Pour un analyseur, ce sont deux caractères totalement différents.
C’est dans cet écart que loge l’ennui. Un trait d’union copié d’un PDF, d’un export InDesign ou d’une page web issue d’un PDF est fréquemment U+2010, et il voyage ensuite vers des endroits qui attendent de l’ASCII : un champ d’identifiant qui n’admet que lettres, chiffres et trait d’union simple ; un import CSV qui rejette les octets non ASCII ; un index de recherche où « bien‐connu » et « bien-connu » sont deux chaînes différentes ; un contrôle de doublons qui déclare uniques deux codes produits identiques à l’œil. Le caractère est invisible pour un rechercher-remplacer qui cherche le trait d’union du clavier, car on ne peut pas taper le caractère qu’on cherche.
Le remède s’appelle normaliser. Soit vous remplacez chaque U+2010 par un trait d’union simple — ce qui préserve l’aspect du texte et le rend sûr en ASCII —, soit vous supprimez les traits d’union quand le texte va quelque part où ils ne sont que du bruit Le removeur de traits d’union de ce site trouve chaque membre de la famille par point de code — U+002D, U+2010, U+2011 et le trait d’union conditionnel invisible — et ouvre chacun en une espace ; l’outil de suppression de tous les tirets les efface, et la référence des symboles vous dira quelle variante vous aviez en main.