Mova0.6 pre-release⌕
☰
home / docs / languages / fr / 07. Punctuation, typography, capitals, abbreviations and numbers

07. Punctuation, typography, capitals, abbreviations and numbers

French uses the marks of the other Latin-script languages and sets them differently. The differences matter to a reader of the printed page, and they matter more to a program that cuts a string into tokens: the space that sits before a question mark, the apostrophe that leaves a one-letter word behind, the hyphen that joins a verb to its inverted pronoun, the space that groups the digits of a number. This chapter describes the conventions of the French standard, the points where Switzerland, Belgium and Canada differ, what the open treebanks actually contain, and what Mova's tokenizer does with it. It replaces the older "12. Punctuation and typography" of this manual; its numbers are re-counted on the UD 2.18 release (2026-11-06).

The authoritative statement of the French rules is the Lexique des règles typographiques en usage à l'Imprimerie nationale (paris-2002), which is copyrighted and which we know only by its card (paris-2002-lexique-des-regles-typographiques). No sentence below is attributed to it as a quotation. The rules given here are the ones that every French typesetting manual and word processor share, checked against what the corpora do (§12); where we could not check a rule in the data, the text says so.

1. The marks and their tags

marknameUD tagnotes
.pointPUNCTalso ends abbreviations
,virgulePUNCTalso the decimal mark
;point-virgulePUNCTthin space before
:deux-pointsPUNCTfull space before
! ?point d'exclamation, d'interrogationPUNCTthin space before
…points de suspensionPUNCTthree dots, no space before, one space after
« »guillemetsPUNCTspaces inside
" "guillemets droitsPUNCTtypewriter quote, common on the web
“ ”guillemets anglaisPUNCTfor a quotation inside a quotation
( ) [ ]parenthèses, crochetsPUNCTno space inside
— –tiret cadratin, demi-cadratinPUNCTdialogue, incises
-trait d'unionPUNCT as a token of its own; part of a word otherwise
' ’apostrophepart of the elided word
/barre obliquePUNCT or SYMkm/h, et/ou
% € $SYMafter the number, with a space

2. The high marks and the spaces

French has four high marks: the semicolon, the colon, the exclamation mark and the question mark. Each is separated from the word before it by a space.

markspace beforespace afterexample
. , …nonenormalIl pleut. Oui, il pleut…
; ! ?thin non-breaking (fine insécable, U+202F)normalVraiment ? Oui !
:full non-breaking (insécable, U+00A0)normalIl a dit : non.
«nonenon-breaking« Bonjour »
»non-breakingnormal
( [normalnone(voir plus haut)
) ]nonenormal
– (incise dash)normalnormalIl est venu – enfin – hier.

The space is non-breaking so that a line can never begin with a mark that belongs to the word before. In practice typists put a plain space, many keyboards give no easy way to type U+202F, and text from the web mixes plain space, U+00A0 and no space. The standard is a space; a program must read all of these.

What the corpora show (UD 2.18, SpaceAfter=No analysis, 2026-11-06). A mark counts as "spaced" if the token before it has no SpaceAfter=No:

treebank? ! ; : after a spaceglued to the word
GSD (400 385 words)1 7706
Sequoia4151
PUD733
FQB2 2400
ParisStories (spoken, transcribed)18750

In the written treebanks the French rule holds in 99.7% of the cases in GSD; the six exceptions are typing slips. In ParisStories, which transcribes spoken stories with a mixed tradition, 21% of high marks are glued, and the comma is never separated by a space (5 378 glued against 10 spaced). The comma in GSD is glued 18 647 times and spaced 3 times. The treebank text keeps ordinary spaces: the corpus text lines contain no U+00A0 and no U+202F (neither character occurs anywhere in the French UD files, checked on all lines of the nine French treebanks, 2026-11-06), so the non-breaking character is lost before it reaches any tool.

Other languages' practice. Switzerland usually writes the question mark, the exclamation mark and the semicolon directly after the word, with a space only before the colon and inside the guillemets; Belgium follows France. Québec, following the practice of the Office québécois de la langue française, puts a non-breaking space before the colon and inside the guillemets but, in much printed usage, none before ; ! ?. These are practices, not different standards: the Imprimerie nationale rule is the one a French publisher uses, and a text can mix them.

3. The marks one by one

3.1 The full stop

It ends a declarative sentence and is followed by a capital. It ends an abbreviation that is cut inside a word (M., p., av.: §8). It is not put after a title, a heading or a caption, nor after the last abbreviation point of a sentence that already ends with one. The full stop is not used as a thousands separator in the standard (§9.1) nor in a time of day (15 h 30).

3.2 The comma

The French comma is used less than the English one in several places and more in others.

3.3 Semicolon, colon, exclamation and question marks

The semicolon joins two independent clauses that are closely linked, or separates the elements of a list when they themselves contain commas. The colon introduces an enumeration, an explanation, a quotation (Il a dit : « non ») or a consequence; after a colon the word begins with a lower-case letter unless it is a proper name or opens a quoted sentence. The exclamation mark follows an interjection or an exclamative sentence; the question mark follows a direct question and is not put after an indirect question (Je me demande s'il viendra.). Two marks at the end may be combined (Quoi ?!) but a tidy text avoids it; the sequence ?! occurs in the open treebanks only in web text.

3.4 Ellipsis

The ellipsis (points de suspension) is three dots, typed as three full stops or as the single character U+2026. It follows the word directly and is followed by a space. It marks a break, a trailing-off or an omission in a quotation, then written between square brackets: […]. It is not followed by a full stop and it is not combined with etc.: etc… is wrong, etc. is enough. In GSD the three full stops ... occur 181 times (as one token) and the character … never; in ParisStories the transcriptions have … 67 times and ... 5 times; Rhapsodie has … 250 times and ... never (all 2026-11-06). The written web text of GSD types three points, the spoken transcriptions use the single character: a tokenizer must read both as one token.

3.5 Parentheses, brackets, dashes, slash

Parentheses and brackets have no space inside and a space outside. A pair of dashes (tirets) sets off an incise as commas or parentheses would; in the printed text they are the long dash with spaces, in a hurried text a hyphen with spaces. A single dash at the beginning of a line opens a turn of dialogue (§4). The slash is used for km/h, et/ou (a calque on and/or that stylists dislike), dates (22/10/2026) and line breaks in quoted verse (Le vent se lève / il faut tenter de vivre), in which it is spaced.

4. Quotations and dialogue

4.1 The guillemets

The quotation marks of French are the guillemets « », with a non-breaking space inside each: Il a dit : « Je viens. » A quotation that contains a second quotation uses the English double quotes inside: « Le mot “liberté” est usé ». Further nesting uses guillemets again, or single quotes. Titles of articles and of short poems are put between guillemets; titles of books, films and journals are put in italics (§10). Scare quotes are put between guillemets.

The final point of the quoted sentence goes inside the guillemets only when the quotation is a full sentence of its own: Il a dit : « Je viens. » but Elle trouve « absurde » cette idée. A point that belongs to the framing sentence goes after the closing guillemet.

Counts. In GSD the guillemets are used (955 opening, 894 closing, 2026-11-06) beside the straight double quote " (956 tokens). The typographic English quotes “ ” do not occur in any French treebank we hold (0 in GSD, Sequoia, PUD, FQB, ParisStories, Rhapsodie, ALTS). GSD puts a space inside the guillemets in 952 of the 955 openings (the corpus text normalises the non-breaking space to a plain one), and the closing guillemet is preceded by a space in all 894 cases. Sequoia and FQB use only the straight double quote (497 and 362 tokens) and no guillemet. The straight quote is therefore as common in French web text as the guillemet and a tokenizer must handle both.

4.2 Dialogue

In novels dialogue is set with a dash (tiret) at the head of each speaker's turn, with or without opening guillemets at the very beginning:

— Tu viens ? — Non, dit-il. — Pourquoi ?

The incise of the narrator (dit-il, répondit Marie) stays inside the turn, after the quoted words, with the subject inverted and no closing mark between: « Je viens, dit-elle, mais pas tout de suite. » Within a turn the stage direction is set off by commas or dashes. The English custom of opening and closing quotation marks around every turn is not the French one. The transcriptions of spoken French in the open treebanks (ParisStories, Rhapsodie) do not use the dash at all; they have no dialogue markup, only utterances.

5. The apostrophe

The apostrophe marks elision, the dropping of a final vowel before a word that begins with a vowel or a mute h (04. Connected speech: enchaînement, liaison, elision, the mute e and assimilation §5): l'arbre, j'ai, qu'il, s'il, n'est, d'abord, c'est. The word aujourd'hui contains an apostrophe that is part of the word (it is one token in UD: 143 times in GSD, 2026-11-06; so are quelqu'un, 205 times, and presqu'île). No space follows the apostrophe, and none precedes it.

The typographic apostrophe ’ (U+2019) is standard in print; the typewriter ' (U+0027) is what keyboards give. In the French treebanks the apostrophe is always the typewriter one: in GSD 16 937 tokens contain ' and none contains ’ (2026-11-06); the same holds for Sequoia (3 270 against 0), PUD (1 131), FQB (1 047) and ParisStories (2 271). The corpora were normalised, so text taken from the printed or word-processed web (which has U+2019) will differ from them: a program trained on the treebanks sees a character it has never seen unless it maps the apostrophe first.

The apostrophe is also used in the written forms of colloquial speech (t'as vu, j'sais pas, y'a, p'tit, c't'à dire), which are not standard spelling but occur in dialogue and informal text.

6. The hyphen

The hyphen (trait d'union) is a mark inside a word, not between words. It joins:

useexamples
a verb and an inverted subject pronoun, with -t- when the verb ends in a vowel and the pronoun is il, elle, onviens-tu, est-ce, a-t-il, parle-t-elle, y a-t-il
an imperative and its clitic pronounsdonne-le-moi, vas-y, dis-lui
-ci and -làce livre-ci, cet homme-là, celui-ci, ceux-là
même after a strong pronounlui-même, nous-mêmes, vous-même
a compound wordarc-en-ciel, après-midi, grand-mère, porte-monnaie, chou-fleur
numerals from 17 to 99 below a hundred (traditional spelling) and, in the rectified spelling, all compound numeralsdix-sept, vingt-trois, soixante-quinze; rectified deux-cent-trois (06. Spelling rules: inflection, compounds, hyphens and the 1990 rectifications §6; cslf-1990)
a prefix and a word in some casesnon-lieu, ex-président, anti-inflammatoire, mi-chemin
two names or words in a place name or titleSaint-Denis, Aix-en-Provence, Jean-Pierre
a hyphen with euphonic taime-t-il, viendra-t-on

The rectifications of 1990 hyphenate all compound numerals and solder many compounds (weekend, portemonnaie, and contrecourant as a recommendation) (cslf-1990 part II); they do not touch the hyphen of inversion. Writers disagree on a number of compounds (week-end/weekend, socio-culturel/socioculturel): the hyphen is the least stable part of French spelling.

Counts. In GSD the letter-hyphen-letter pattern occurs in 3 175 tokens (2026-11-06; for example États-Unis, vingt-deux, arc-en-ciel, peut-être). Tokens that start with a hyphen are 572 plus 72 isolated hyphens: they are the second element of an inverted pronoun, split off by the treebank rule (-t-il 59, -t-elle 18, -là 13 and others). The treebank thus cuts a-t-il into the verb and a token written with a leading hyphen, -t-il, while it keeps peut-être and États-Unis whole.

7. Capital letters

French uses fewer capitals than English.

casecapital?examples
first word of a sentence, of a quoted sentenceyesIl pleut.
proper names of persons, places, peoples as nounsyesJeanne, Paris, les Français, un Anglais
adjectives of nationality, language namesnoun livre français, parler français, l'économie allemande
days, monthsnolundi, janvier
titles and functionsnole président de la République, le pape, monsieur Dupont
institutionsfirst significant wordl'Assemblée nationale, le Conseil constitutionnel, l'Académie française
titles of worksthe first word and the first noun, with its attached adjectivesLe Rouge et le Noir, À la recherche du temps perdu
centuriesRoman numeral in capitals, e in superscript or on the linele XIXe siècle
compass points as nounsyes, as adjectives nole Nord, un vent du nord
religious namesGod, not common nounsDieu, un dieu, la Bible, un évangile

Accented capitals. Correct typography keeps the accents on capitals: État, À bientôt, École, ÉCOLE, Œuvre. Older printing and many web texts leave them off (Etat, A bientôt, Ecole), because the French keyboard has no direct key for them; the Académie française recommends keeping them (its position is known to us from its card only). In GSD, À occurs 209 times and the preposition written A (unaccented) 86 times (the latter when a capital is required at the start of a sentence): 29% of capital prepositions are written without the accent. Of the nouns État(s), École, Église, Économie, Écosse 235 are accented and 58 are not (2026-11-06). The consequence is the ambiguity A (verb) / À (preposition) in such text.

Months, days, nationalities. In GSD 2 091 tokens are the lower-case names of months and days and the adjectives français, anglais, allemand; the capitalised months and days that are not proper nouns are 30 (nearly all at the start of a sentence), and the capitalised names of nationalities (Français, Anglais, Allemands, Italiens, Espagnols and their feminines) are 83. The English habit of capitalising months and languages is therefore an error in French (it is the rule in English).

8. Abbreviations and acronyms

An abbreviation that stops before the last letter takes a point; one that keeps the last letter does not:

wordabbreviationnote
monsieurM.not Mr; plural MM.
madame, mademoiselleMme, Mllelast letter kept: no point
docteurDrno point
maîtreMefor the title of a lawyer
saint, sainteSt, Ste
avenue, boulevardav., bd
pagep.plural pp.
numéron°, nºthe degree sign, not the letter o
et ceteraetc.preceded by a comma, never followed by …
c'est-à-direc.-à-d.
par exemplep. ex.
premier, première1er, 1re

Acronyms (sigles) are written in capitals without points: SNCF, ONU, TVA, RER. When read as a word they may take only an initial capital: Unesco, Insee, Otan. Their plural is not marked in the standard (les ONG); the gender is that of the head noun (la SNCF, le CNRS).

Counts. GSD (2026-11-06): M. 51, etc. 29, av. 21, Me 14, n° 14, No 8, Mme 8, Dr 4, Mlle 1, St 1, Ste 1. Tokens of two or more capital letters (acronyms, titles in capitals) are 1 667 in GSD. The ellipsis after etc. does not occur (0 of 29).

9. Numbers, dates, units

9.1 Decimal mark and grouping

9.2 Words or figures

Numbers up to sixteen (or to nine, by house style) and round numbers are written in words in running text: trois enfants, deux cents ans; larger ones in figures: 45 000 habitants, 1 200 mètres. A figure must not begin a sentence in a careful text. Ordinal numbers: 1er, 1re, 2e (not 2ème, 2nd, 2de, although 2ème is very common); centuries XIXe. In GSD 60 tokens are 1er, 226 are a Roman numeral plus e or ème (XXe, XIXe), 178 an Arabic numeral plus e or ème (2e, 3ème), and 20 of all these use the non-standard ème; the treebank has no superscript.

9.3 Dates and times

Dates: le 22 octobre 2026, le 1er mai; numerically 22/10/2026 (day first), also 22.10.2026 and 22-10-2026; ISO 2026-10-22 is used in computing. The day is not preceded by an article in a date line (Paris, le 22 octobre). Times: 15 h 30, 15h30 or 15:30; hours are l'heure, midi, minuit, 24-hour clock in writing (18 h). In GSD no token and no sentence text has the slashed date shape, and no token has the shape 15h30: dates in this corpus are written with the month in words (le 1er mai).

9.4 Currency, units and symbols

Units and currency follow the number with a space: 25 km, 10 %, 3 €, 12 °C, 5 m². The symbol precedes only in other languages ($5). The names of units are not capitalised and are not marked by an s in the plural when abbreviated (10 km, 10 kilomètres). In GSD the units km (76), m (80), kg (21), € (45), $ (13) and euros (66) occur as separate tokens after the number. The decimal comma stands before the decimals, and the unit follows: 1,5 kg.

10. Other conventions of the page

11. The keyboard and the web

The standard French keyboard (AZERTY) gives no key for «, », É, À, Œ or for the non-breaking spaces; word processors insert some of these automatically. This explains the facts of the corpora: web text often has straight quotes, a plain space before the high marks (or none), capital letters without accents, and the typewriter apostrophe. On social media the high marks are often glued to the word. An annotated corpus (GSD, Sequoia) keeps the plain-space habit of the page.

12. How Mova handles punctuation and typography

Raw text enters through the English tokenizer. Mova has no French tokenizer. en/src/tok.rs is a finite automaton (a table of states by character classes) with dictionaries learned from the training treebank: abbreviations with a point, hyphenated words kept whole or split, words with an initial apostrophe, numeric suffixes (1990s). The file's description is the English one. Applied to French text it behaves as follows:

Measured. en tok-eval with the dictionary learned from GSD train and tested on GSD dev, 2026-11-06 (binary built 2026-10-22; the run was repeated and gave the same numbers): of 1 476 dev sentences, 26.1% are tokenized exactly as the treebank has them (with the spaces: 26.1%); token precision 92.19%, recall 85.72%, F1 88.84%. On the test file (416 sentences) the exact rate is 21.9% and F1 88.16%. The errors printed by the tool are all of the types listed above: L' + oasis (we: L '), l'obscurité (kept whole), jusqu'alors (kept whole), aux (UD: à les), C'est (kept whole). This is the measured cost of reading French through the English tokenizer: about one in nine tokens is wrong, and nearly three sentences in four are not cut right. The measure is not a parse score; with gold tokens the parser's LAS is 87.00 (own tags) and 89.78 (gold tags) on GSD (PACKAGE.md, 2026-10-22).

Tags and the punctuation of the trees. en xpos-fill (en/src/main.rs, xpos_of) maps French punctuation to the English tag set. «, " and “ go to the opening-quote tag, » and ” to the closing-quote tag; , to the comma tag; . ? ! … ... to the sentence-final tag; ( [ and ) ] to bracket tags; - – — to the hyphen tag; every other punctuation sign (; : /) to the colon tag. The English parser therefore treats ; and : alike and does not distinguish the decimal comma (inside a number token it is not punctuation).

What a French tokenizer needs. Eleven rules cover almost all the differences above: (1) split a proclitic with an apostrophe from the following word (l', d', j', n', s', c', m', t', qu', jusqu', lorsqu', puisqu'), except for aujourd'hui, quelqu'un, presqu'île, prud'homme; (2) split the contracted articles and relatives au, aux, du, des, auquel, duquel… into two syntactic words, keeping the surface form as a range; (3) split the inverted pronoun after a hyphen (-t-il, -vous, -je) and -ce; (4) keep -ci and -même attached and split -là (as GSD does); (5) keep the hyphenated compounds and numerals whole, which needs a dictionary; (6) read U+00A0 and U+202F inside a number as part of it, with a space-grouped number as a single token; (7) read a decimal comma as part of the number; (8) keep abbreviations with their points and a list for French ones (the learned 69 is a start); (9) map U+2019 to ' before cutting; (10) treat « » as quotation marks whether or not spaces follow; (11) do not read a final point or question mark as part of a URL. None of this exists in code. The data to learn it from is the GSD range lines and the SpaceAfter columns of the French treebanks (CC BY-SA 4.0 for GSD, ParisStories, PUD, ALTS; LGPL-LR for Sequoia and FQB: see Sources).

Not handled at all. The 1990 rectified spelling of the hyphenated numerals is read as unknown words (06); inclusive writing (étudiant·e·s) is cut at the dot; the non-breaking space is not preserved on output, and nothing generates French typography (no space before ?, no guillemets) when French is written.

Sources for this chapter

This page in Markdown → https://md.mova.elamur.ai/free/en/docs/languages/fr/07-punctuation-typography/