Test with the thin space U+2009 (normal space after the "x"): abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx

Lines with a thin space before the punctuation character:

Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ? Ceci est un test ! Est-ce un test ?

Note: The thin space is normally used in French, but in Unicode, it is formally not a no-break space. However, a line break may be forbidden by the line breaking algorithm. See for instance, LB13 in Section Tailorable Line Breaking Rules from Unicode Standard Annex #14 (Unicode Line Breaking Algorithm); in case of future change with renumbering of the rules, this is in versionĀ 26 (2010-09-27).

Test with the narrow no-break space U+202F (normal space after the "x"): abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx abcd efgh ijkl mnop qrst uvwx

More information in the Unicode Character Code Charts (French version). The narrow no-break space is recommended for French on Wikipedia.