label_ponctuer() : espace en trop #4895

Open
opened 2 weeks ago by tcharlss · 12 comments
tcharlss commented 2 weeks ago
Owner

Le filtre label_ponctuer() m'ajoute un espace en trop devant les 2 points :

[(#VAL{Mon champ}|label_ponctuer|var_dump)]
[(#VAL{Mon champ :}|label_ponctuer|var_dump)]

Retour :

string 'Mon champ  :' (length=15)
string 'Mon champ  :' (length=15)
Le filtre [label_ponctuer()](https://git.spip.net/spip/spip/src/branch/master/ecrire/inc/filtres.php#L5494-L5506) m'ajoute un espace en trop devant les 2 points : ``` [(#VAL{Mon champ}|label_ponctuer|var_dump)] [(#VAL{Mon champ :}|label_ponctuer|var_dump)] ``` Retour : ``` string 'Mon champ  :' (length=15) string 'Mon champ  :' (length=15) ```
tcharlss added the
filtres et balises
bug
labels 2 weeks ago
Owner

Ça vient de Salvatore ?

daee5e6

Ça vient de Salvatore ? daee5e6
b_b added this to the 4.0 milestone 1 week ago
Poster
Owner

Ah, salvatore qui ajouterait des espaces le coquinou ?

En anglais il y a également un espace en trop d'ailleurs, mais ça semble être la trad d'origine dans ce cas : https://trad.spip.net/tradlang_module/spip/tradlang/label_ponctuer-spip-en?id_tradlang=685749&retour=spip.php%3Fpage%3Dtraduction_recherche%26amp%3Brecherche%3D%2540label%2540%26amp%3Blang_string%255B%255D%3Den%26amp%3Bid_tradlang_module%3D74

edit : je viens de corriger du coup

Ah, salvatore qui ajouterait des espaces le coquinou ? En anglais il y a également un espace en trop d'ailleurs, mais ça semble être la trad d'origine dans ce cas : https://trad.spip.net/tradlang_module/spip/tradlang/label_ponctuer-spip-en?id_tradlang=685749&retour=spip.php%3Fpage%3Dtraduction_recherche%26amp%3Brecherche%3D%2540label%2540%26amp%3Blang_string%255B%255D%3Den%26amp%3Bid_tradlang_module%3D74 edit : je viens de corriger du coup
Owner

Careful car j’avais explicitement mis un espace insécable en français (très facile à faire en bépo ) ; attention donc à bien le conserver ; Cependant en anglais tu es sûr que l’espace est nécessaire ?

Wikipedia dit dans https://en.wikipedia.org/wiki/Colon_(punctuation)

Spacing
In print, a thin space was traditionally placed before a colon and a thick space after it. In modern English-language printing, no space is placed before a colon and a single space is placed after it. In French-language typing and printing, the traditional rules are preserved.

Careful car j’avais explicitement mis un espace insécable en français (très facile à faire en bépo ` `) ; attention donc à bien le conserver ; Cependant en anglais tu es sûr que l’espace est nécessaire ? Wikipedia dit dans https://en.wikipedia.org/wiki/Colon_(punctuation) > Spacing > In print, a thin space was traditionally placed before a colon and a thick space after it. In modern English-language printing, no space is placed before a colon and a single space is placed after it. In French-language typing and printing, the traditional rules are preserved.
Poster
Owner

Avant il y avait un espace insécable et un espace, j'ai retiré l'espace en trop mais oublié de laisser l'insécable.

J'ai remis l'insécable du coup.

Avant il y avait [un espace insécable *et* un espace](https://trad.spip.net/spip.php?page=traduction&etape=revision&id_objet=685749&objet=tradlang&id_version=2), j'ai retiré l'espace en trop mais oublié de laisser l'insécable. J'ai [remis](https://trad.spip.net/spip.php?page=traduction&etape=revision&id_objet=685749&objet=tradlang&id_version=4) l'insécable du coup.

Euh... en anglais pas d'espace (pas même insécable) avant les deux points :)
Confirmé par le lien donné par marcimat : "In modern English-language printing, no space is placed before a colon and a single space is placed after it"

Euh... en anglais pas d'espace (pas même insécable) avant les deux points :) Confirmé par le lien donné par marcimat : "In modern English-language printing, no space is placed before a colon and a single space is placed after it"
Poster
Owner

Je crois qu'on est tous d'accord pour dire qu'il ne faut pas d'espace en anglais, mais il reste la question de la non-sécabilité avant les deux points.

Du coup en anglais, à la place de l'espace insécable c'est un word-joiner qu'il faudrait ?

The word joiner does not produce any space and prohibits a line break at its position

Je crois qu'on est tous d'accord pour dire qu'il ne faut pas d'espace en anglais, mais il reste la question de la non-sécabilité avant les deux points. Du coup en anglais, à la place de l'espace insécable c'est un [word-joiner](https://en.wikipedia.org/wiki/Word_joiner) qu'il faudrait ? > The word joiner does not produce any space and prohibits a line break at its position
Owner

Bah non a priori : tu le colles au mot simplement. Les navigateurs ne doivent pas être si cons que ça tout de même. En tout cas dans ce textarea un : collé au mot va à la ligne avec le mot ! Heureusement :)

Bah non a priori : tu le colles au mot simplement. Les navigateurs ne doivent pas être si cons que ça tout de même. En tout cas dans ce textarea un `:` collé au mot va à la ligne avec le mot ! Heureusement :)
Poster
Owner

Heu.. Bah oui, ce que j'avais fait au tout début quoi :p

Bon bref, je re-re-corrige.

Heu.. Bah oui, ce que j'avais fait au tout début quoi :p Bon bref, je re-re-corrige.
Owner

Bah salvatore a remis l’espace… wtf !
https://git.spip.net/spip/spip/commit/3bade1a4

Bah salvatore a remis l’espace… wtf ! https://git.spip.net/spip/spip/commit/3bade1a4
Owner

Dans inc/salvatore.php de trad-lang, la fonction salvatore_nettoyer_chaine_langue execute typographie_fr_dist() sur la chaine de langue entrante.

Et typographie_fr se vautre sur l’espace insécable.

Dans le test suivant : le premier bonjour est avec un espace, le second avec un espace insécable :

$tests = [
    'bonjour :' => 'bonjour :',
    'bonjour :' => 'bonjour :',
];
$typo = charger_fonction('fr', 'typographie');

foreach ($tests as $in => $out) {
    $res = $typo($in);
    dump([
        'in' => $in, 
        'res' => $res, 
        'out' => $out
    ]);
}

Résultat :

^ array:3 [
  "in" => "bonjour :"
  "res" => "bonjour :"
  "out" => "bonjour :"
]

^ array:3 [
  "in" => "bonjour :"
  "res" => "bonjour  :"
  "out" => "bonjour :"
]

On voit que l’espace insécable n’est pas pris en compte par typographie_fr qui ajoute un  

Dans inc/salvatore.php de trad-lang, la fonction `salvatore_nettoyer_chaine_langue` execute `typographie_fr_dist()` sur la chaine de langue entrante. - https://git.spip.net/spip-contrib-extensions/trad-lang/src/branch/master/inc/salvatore.php#L557 - https://git.spip.net/spip/spip/src/branch/master/ecrire/typographie/fr.php#L19 Et typographie_fr se vautre sur l’espace insécable. Dans le test suivant : le premier bonjour est avec un espace, le second avec un espace insécable : ```php $tests = [ 'bonjour :' => 'bonjour :', 'bonjour :' => 'bonjour :', ]; $typo = charger_fonction('fr', 'typographie'); foreach ($tests as $in => $out) { $res = $typo($in); dump([ 'in' => $in, 'res' => $res, 'out' => $out ]); } ``` Résultat : ```php ^ array:3 [▼ "in" => "bonjour :" "res" => "bonjour :" "out" => "bonjour :" ] ^ array:3 [▼ "in" => "bonjour :" "res" => "bonjour  :" "out" => "bonjour :" ] ``` On voit que l’espace insécable n’est pas pris en compte par typographie_fr qui ajoute un ` `
Owner

C’est la ligne 67 de typographie_fr() de textwheel qui fait cela : https://git.spip.net/spip/textwheel/src/branch/master/typographie/fr.php#L67
Le remplacement après est bonjour ~:

Qui correspond à la ligne 52 sur typographie_fr_dist() de spip https://git.spip.net/spip/spip/src/branch/master/ecrire/typographie/fr.php#L52

C’est la ligne 67 de typographie_fr() de textwheel qui fait cela : https://git.spip.net/spip/textwheel/src/branch/master/typographie/fr.php#L67 Le remplacement après est `bonjour ~:` Qui correspond à la ligne 52 sur typographie_fr_dist() de spip https://git.spip.net/spip/spip/src/branch/master/ecrire/typographie/fr.php#L52
Owner

Il y a le remplacement de l’espace insécable (équivalent à  ) par ~ puis par   dans textwheel.

Sauf que moi j’ajoute qui est https://www.fileformat.info/info/unicode/char/202f/index.htm (équivalent à &nnbsp;) et il n’est pas traité de la sorte.

Or wikipédia dit : https://fr.wikipedia.org/wiki/Espace_ins%C3%A9cable

Le code typographique français recommande d'insérer une espace fine insécable devant les signes de ponctuation haute (composés d'un point sous un autre signe) : point-virgule, point d'interrogation et point d'exclamation, ainsi que comme séparateur de milliers, entre un nombre et son unité, et comme séparateur sans valeur facilitant la lecture des numéros de téléphone ou des numéros et codes d'identification, etc. Certains symboles, à l'instar des unités, sont également précédés d'une espace insécable (étroite), comme %, et les symboles monétaires comme € ; d'autres, comme le symbole degré, font figure d'exception et sont accolés.

Le deux-points et les guillemets en chevrons constituent une exception en ce que le code typographique français recommande d'insérer devant le deux-points, ou entre les guillemets et le texte qu'ils renferment, non une espace fine insécable mais une espace insécable (espace-mot insécable).

Voir également : https://fr.wikipedia.org/wiki/Espace_fine_ins%C3%A9cable

Il faudrait donc, si on suit les recommendations :

  • une espace fine insécable (&nnbsp;) avant "!?;", mais
  • une espace insécable ( ) avant ":"
Il y a le remplacement de l’espace insécable (équivalent à ` `) par `~` puis par ` ` dans textwheel. Sauf que moi j’ajoute ` ` qui est https://www.fileformat.info/info/unicode/char/202f/index.htm (équivalent à `&nnbsp;`) et il n’est pas traité de la sorte. Or wikipédia dit : https://fr.wikipedia.org/wiki/Espace_ins%C3%A9cable > Le code typographique français recommande d'insérer une espace fine insécable devant les signes de ponctuation haute (composés d'un point sous un autre signe) : point-virgule, point d'interrogation et point d'exclamation, ainsi que comme séparateur de milliers, entre un nombre et son unité, et comme séparateur sans valeur facilitant la lecture des numéros de téléphone ou des numéros et codes d'identification, etc. Certains symboles, à l'instar des unités, sont également précédés d'une espace insécable (étroite), comme %, et les symboles monétaires comme € ; d'autres, comme le symbole degré, font figure d'exception et sont accolés. > Le deux-points et les guillemets en chevrons constituent une exception en ce que le code typographique français recommande d'insérer devant le deux-points, ou entre les guillemets et le texte qu'ils renferment, non une espace fine insécable mais une espace insécable (espace-mot insécable). Voir également : https://fr.wikipedia.org/wiki/Espace_fine_ins%C3%A9cable Il faudrait donc, si on suit les recommendations : - une espace fine insécable (&nnbsp;) avant "!?;", mais - une espace insécable ( ) avant ":"
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.