French typography in WordPress: spaces before ; : ! ? and « guillemets »
French typography puts a space before the "high" punctuation marks — ; : ! ? — and inside « guillemets ». English does the opposite. On French and bilingual WordPress sites this causes two kinds of problems: spaces that are missing, and spaces that break the line in the wrong place. And many tools built for English make things worse by "fixing" correct French spacing.
Contents
The rules in short
| Mark | Correct | Wrong |
|---|---|---|
? ! ; | Vraiment ? | Vraiment? |
: | Trois options : … | Trois options: … |
| « » | « Bonjour » | «Bonjour» or "Bonjour" |
, . | Oui, bien sûr. | Oui , bien sûr . |
Traditional typesetting uses a thin non-breaking space (U+202F) before ; ! ? and a regular-width non-breaking space (U+00A0) before : and inside guillemets. On the web, a regular non-breaking space everywhere is common and widely accepted; what matters most is that the space is there and that it does not break.
Why it must be a non-breaking space
With an ordinary space, the browser is free to wrap the line between the word and the mark. On a phone, that leaves a lonely ? or ! at the start of the next line:
… est-ce que c'est vraiment
?
A non-breaking space glues the mark to the word, so they always wrap together.
How French WordPress content goes wrong
- Missing spaces. Writers used to English, content translated by tools, or text pasted from English templates:
Bonjour!. - Ordinary spaces. The space is there but breaks: correct in the editor, broken on a phone.
- "Corrected" spaces. Generic proofreading tools and search-replace scripts written for English treat
Bonjour !as a space-before-punctuation error and remove it — breaking every correct sentence on the site. - Mixed-language sites. On a site with French and English posts, one global rule is always wrong for half the content.
How to type a non-breaking space
- macOS (French keyboard): Option+Space — and Option+Shift+Space for a thin non-breaking space on many layouts.
- Windows: Alt+0160 on the numeric keypad, or a keyboard layout that includes it (such as the French AZERTY "NF" layout).
- In the WordPress code editor or Custom HTML:
(or for the thin one).
In practice few people type them consistently — which is why it is worth checking automatically.
Fixing existing content
Content Polisher treats French as French. With the language set to Automatic, each post is checked in its own language — from Polylang or WPML when available, otherwise detected from the text — so English posts on the same site are not touched by French rules.
For French posts, the free plugin:
- keeps the space before
; : ! ?— it is never reported as a "space before punctuation" mistake; - adds a non-breaking space when it is missing before
; ! ?(Bonjour!→Bonjour !) as a safe fix, and suggests it before:, where times and references need a second look; - accepts existing non-breaking spaces of either width (U+00A0, U+202F or
) as correct; - leaves emoticons such as
;)and URLs alone, and uses a spaced en dash (–) where French typography calls for a dash.
Content Polisher Pro goes further for French content:
- replaces an ordinary space before
; : ! ?with a non-breaking one, so marks never wrap; - turns straight quotes into guillemets with non-breaking spaces:
"Bonjour"→« Bonjour », and adds missing spaces inside existing ones («Bonjour»→« Bonjour »).
Every change is shown with a Before / After preview and can be undone. See multilingual sites and the rules reference.