Intermédiaire 8 min de lecture 25 janvier 2025

Figure space (U+2007) : invisible mais pas anodin

Tout paraît normal, mais vos comparaisons échouent, vos splits ne tombent pas juste et vos exports affichent des chiffres “décalés”. L’une des causes fréquentes est le figure space (U+2007). Il ne se voit presque pas, pourtant il change tout. Voici ce que c’est, où il se glisse et comment l’attraper avant qu’il ne casse vos traitements.

Qu'est-ce que le figure space (U+2007) ?

C’est un espace typographique dont la largeur correspond à celle d’un chiffre. Idéal pour l’alignement des nombres, il n’est pas identique à l’espace classique et entraîne des comportements différents dans le code.

L’essentiel à connaître sur l’espace figure :

1 Définition et code

Nom Unicode: FIGURE SPACE, utilisé pour l’alignement numérique.

U+2007, Catégorie: Zs, HTML:  , UTF-8: E2 80 87

2 Propriétés typographiques

Largeur calée sur un chiffre; conçu pour des colonnes de nombres alignées.

Largeur = chiffre, non compressé par défaut, souvent non cassable

3 Comparaison avec d'autres espaces

À ne pas confondre avec :

NBSP (U+00A0) - Espace insécable classique
FIGURE SPACE (U+2007) - Largeur d’un chiffre
Thin Space (U+2009), Hair Space (U+200A) - Espaces fins
Espace normal (U+0020) - Espace ASCII

4 Où apparaît-il ?

Les sources d’introduction les plus fréquentes :

Copier-coller depuis PDF ou sites financiers
Exports de tableurs alignant des colonnes de chiffres
Mises en page typographiques et CMS “smart”
OCR et convertisseurs de documents

Problèmes classiques

Copier-coller depuis PDF ou tableurs

Insère des figure spaces dans des IBAN, montants ou identifiants, invisibles à l’œil nu.

Tests unitaires qui échouent

Une chaîne contient un U+2007 au milieu d’un email ou d’un code; l’égalité échoue.

Trim() ou strip() inefficace

Ne supprime pas U+2007 par défaut; l’espace reste et perturbe vos validations.

Regex \s ou \w incomplètes

Sans mode Unicode, U+2007 n’est pas toujours matché; utilisez \p{Zs} ou des classes explicites.

Exemple de problème courant :

# Données qui semblent identiques mais ne le sont pas
string1 = "email@domain.com"
string2 = "email@domain.com " # Contient U+2007 à la fin
assert string1 == string2 # ❌ Échec

Symptômes qui doivent vous alerter

🚨 Signaux d'alarme

!
Un diff git montre des changements invisibles autour de chiffres alignés
!
Un split() sur l’espace ne découpe pas des montants correctement
!
Un .env contient une valeur avec un blanc “suspect” en fin de ligne
!
Le curseur saute trop loin entre deux chiffres dans l’éditeur
!
Un copier-coller de montants depuis un PDF casse vos commandes shell

Comment les détecter

Solution recommandée : Clean ASCII

Clean ASCII met en évidence le figure space (U+2007) et autres espaces spéciaux. Votre texte est analysé en direct, avec position précise et proposition de remplacement fiable.

✅ Détection automatique

Figure space U+2007, NBSP, ZWSP, soft hyphens, contrôles

📊 Analyse complète

Codes Unicode, positions exactes, remplacements sûrs

🧹 Nettoyage automatique

Conversion vers espace ASCII ou formatage souhaité

💾 Export propre

Téléchargement du texte nettoyé prêt à intégrer

Autres méthodes de détection

Affichage dans l'éditeur

Activez “render whitespace” et recherchez le code U+2007
Installez un linter qui surligne l’espace figure dans le code

En ligne de commande (Unix)

# Sortir les octets hors ASCII imprimable (inclut U+2007)
grep -P "[^\x09\x0A\x0D\x20-\x7E]" fichier.txt
# Voir les fins de ligne et tabulations
sed -n l fichier.txt
# Afficher les caractères de contrôle
cat -A fichier.txt
# Voir les codes hexadécimaux
hexdump -C fichier.txt

En code

JavaScript

/[\u2007]/.test(str) // détecte la présence de figure space

Python

any(ord(c) == 0x2007 for c in s)

Excel / Google Sheets

TROUVE(UNICHAR(8199);cellule)

Nettoyer et prévenir

🚀 Solution rapide avec Clean ASCII

Avant d’écrire des scripts, passez vos textes dans Clean ASCII pour neutraliser le figure space :

Détection de U+2007 immédiate
Remplacement par espace ASCII si souhaité
Export prêt pour vos pipelines

Méthodes techniques avancées

🔧 Normaliser

NFC/NFKC n’altèrent pas U+2007; prévoyez une table de mapping explicite
Uniformisez la casse et les fins de ligne pour réduire les diffs parasites
Évitez les BOM inutiles et fixez l’encodage en UTF-8

🧹 Filtrer

Créez une fonction trim_all() qui retire U+2007 et autres espaces Unicode
Remplacez U+2007 par l’espace ASCII (U+0020) si l’alignement n’est pas requis
Bloquez les caractères de contrôle non désirés et espacez explicitement

⚙️ Automatiser

Hooks pre-commit pour refuser des fichiers contenant U+2007
Tests sur inputs utilisateurs pour remplacer les espaces spéciaux
Linting dans la CI avec recherche explicite de \u2007

Checklist rapide

Fichiers en UTF-8 sans BOM
Fins de ligne uniformes via gitattributes
Affichage des espaces spéciaux activé dans l’éditeur
Fonction de nettoyage remplaçant U+2007 par U+0020 si nécessaire
Tests vérifiant l’absence de figure space dans les identifiants sensibles
Documentation interne sur les espaces Unicode (dont U+2007)

Conclusion

Le figure space sert l’alignement soigné des chiffres, mais peut saboter vos parsers et vos comparaisons si vous ne l’anticipez pas.

Adoptez une détection systématique de U+2007, remplacez-le quand l’alignement n’est pas requis et standardisez vos flux texte.

Détectez le figure space maintenant

Utilisez notre outil pour identifier et nettoyer l’espace figure (U+2007) dans vos textes.

Analyser mon texte