Typographie : restaurer les guillemets courbes dans le texte français #25

Closed
opened 2026-05-08 21:30:30 +00:00 by cedricAbonnel · 1 comment
Owner

Besoin

Le rendu des articles affiche des guillemets droits ("texte" ou 'texte') là où la typographie française attend des guillemets courbes (“texte” ou ‘texte’). Il faut corriger ce rendu automatiquement.

Comportement attendu

  • Les guillemets droits " dans le texte courant sont convertis en guillemets typographiques /
  • Les apostrophes droites ' sont converties en apostrophes courbes
  • Les blocs de code Markdown sont exempts de toute conversion : le contenu entre backticks simples (`code`) ou triples (```...```) ne doit pas être modifié

Règle de non-régression critique

La conversion ne doit jamais toucher :

  • Les blocs de code ` et ``` (inline et multilignes)
  • Les URLs (dans les liens Markdown [label](url))
  • Les attributs HTML éventuellement présents dans le Markdown

Pistes techniques

Option A — Post-traitement après rendu Parsedown

Appliquer la substitution sur le HTML produit par Parsedown, en ignorant le contenu des balises <code> et <pre> via un parser DOM ou une regex ciblant uniquement les nœuds texte hors balises.

Option B — Pré-traitement avant Parsedown

Substituer les guillemets dans le source Markdown uniquement hors des blocs de code, en détectant et sautant les séquences backtick avant de passer le texte à Parsedown.

L'option A est préférable car elle opère sur du HTML structuré et évite les faux positifs Markdown.

Exemple

Source Markdown Rendu attendu
Il dit "bonjour" Il dit “bonjour”
`"quoted"` "quoted" (inchangé)
l'article l’article
```php\n$x = "val";\n``` $x = "val"; (inchangé)

Critères d'acceptation

  • Les guillemets droits sont remplacés par des guillemets courbes dans le texte rendu
  • Les apostrophes droites sont remplacées par des apostrophes courbes
  • Le contenu des blocs <code> et <pre> est strictement préservé
  • Les URLs dans les liens ne sont pas altérées
  • Aucune régression sur les articles existants
## Besoin Le rendu des articles affiche des guillemets droits (`"texte"` ou `'texte'`) là où la typographie française attend des guillemets courbes (`“texte”` ou `‘texte’`). Il faut corriger ce rendu automatiquement. ## Comportement attendu - Les guillemets droits `"` dans le texte courant sont convertis en guillemets typographiques `“` / `”` - Les apostrophes droites `'` sont converties en apostrophes courbes `’` - **Les blocs de code Markdown sont exempts de toute conversion** : le contenu entre backticks simples (`` `code` ``) ou triples (```` ``` ````...```` ``` ````) ne doit pas être modifié ## Règle de non-régression critique La conversion ne doit jamais toucher : - Les blocs de code `` ` `` et ```` ``` ```` (inline et multilignes) - Les URLs (dans les liens Markdown `[label](url)`) - Les attributs HTML éventuellement présents dans le Markdown ## Pistes techniques ### Option A — Post-traitement après rendu Parsedown Appliquer la substitution sur le HTML produit par Parsedown, en ignorant le contenu des balises `<code>` et `<pre>` via un parser DOM ou une regex ciblant uniquement les nœuds texte hors balises. ### Option B — Pré-traitement avant Parsedown Substituer les guillemets dans le source Markdown **uniquement hors des blocs de code**, en détectant et sautant les séquences backtick avant de passer le texte à Parsedown. L'option A est préférable car elle opère sur du HTML structuré et évite les faux positifs Markdown. ## Exemple | Source Markdown | Rendu attendu | |---|---| | `Il dit "bonjour"` | Il dit “bonjour” | | `` `"quoted"` `` | `"quoted"` (inchangé) | | `l'article` | l’article | | ```` ```php\n$x = "val";\n``` ```` | `$x = "val";` (inchangé) | ## Critères d'acceptation - [ ] Les guillemets droits sont remplacés par des guillemets courbes dans le texte rendu - [ ] Les apostrophes droites sont remplacées par des apostrophes courbes - [ ] Le contenu des blocs `<code>` et `<pre>` est strictement préservé - [ ] Les URLs dans les liens ne sont pas altérées - [ ] Aucune régression sur les articles existants
Author
Owner

Ticket migré vers le dépôt Folio : cedricAbonnel/folio#15

Ticket migré vers le dépôt Folio : https://git.abonnel.fr/cedricAbonnel/folio/issues/15
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cedricAbonnel/varlog#25