Fixé avec le dossier KissMetrics du 24/08 et validé par l'opérateur : « on peut se souvenir de ce format pour les communications avec KM et futurs prospects/clients ». Il ne servira à rien s'il faut le reconstituer à chaque fois — d'où un gabarit, un script, et les raisons écrites. LE TEST DU GABARIT : la lettre du 24/08 s'en régénère à l'identique, au mot près, vérifié par diff du texte extrait. Un gabarit qui ne reproduit pas son propre exemple n'est pas un gabarit. LES CHOIX, ET POURQUOI. Charter pour le texte — dessinée par Matthew Carter pour tenir le petit corps là où d'autres se délitent — et Optima pour les titres. Les deux incorporées au PDF : le rendu est le même chez le destinataire. Chiffres elzéviriens, pour que les montants s'alignent au lieu de faire des bâtons. Deux encadrés, deux usages : le gris porte une question, le rouge sourd ce qui doit être lu en diagonale — UN SEUL par lettre, deux et plus rien ne ressort. Les tableaux portent un <thead>, sans quoi ils perdent leur en-tête en se coupant entre deux pages. LE PIÈGE, consigné parce qu'il coûte une heure à qui le redécouvre : weasyprint NE SAIT PAS rendre Apple Color Emoji. C'est un format bitmap sbix qu'il ignore, et les trois emblèmes 🏹💻🪽 sortent en carrés vides — sans erreur, sans avertissement. D'où correspondance/emblemes/*.png, rendus une fois pour toutes par test/emoji2png.ts, qui passe par Chromium : lui lit la police système. Les PNG sont incorporés en base64 À LA GÉNÉRATION, pas dans le gabarit : un gabarit de 400 Ko dont 97 % de charabia ne se relit pas. Le PDF produit reste autonome. Les trois emblèmes viennent du site — « Gabriel 🪽 Radureau, pour 🏹 réussir vos projets 💻 ». L'arc et l'ange sont dans le nom lui-même. lettre.py proteste au-delà de deux pages : une lettre d'affaires qui déborde ne se lit pas, et la tentation est alors de rétrécir la typographie plutôt que le propos. C'est le propos qu'il faut resserrer. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
80 lines
3.5 KiB
Markdown
80 lines
3.5 KiB
Markdown
# Correspondance commerciale — le format maison
|
||
|
||
Le gabarit des lettres qu'Arcodange adresse à ses clients et prospects. Fixé le
|
||
24 août 2026 avec le dossier KissMetrics, et validé par l'opérateur : « on peut
|
||
se souvenir de ce format pour les communications avec KM et futurs
|
||
prospects/clients ».
|
||
|
||
## Produire une lettre
|
||
|
||
```bash
|
||
python3 correspondance/lettre.py corps.html sortie.pdf \
|
||
--titre "Contracts and invoices — cycles M1 to M4" \
|
||
--date "24 August 2026" --prenom Evan \
|
||
--destinataire "Evan Sforzo" --fonction "Chief Executive Officer" \
|
||
--societe "Kissmetrics Inc." \
|
||
--adresse "2850 34th Street North, 307 — St. Petersburg, Florida 33713 — United States" \
|
||
--copie "Hendrik Rootering" \
|
||
--pied "Arcodange × Kissmetrics Inc. — 24 August 2026"
|
||
```
|
||
|
||
`corps.html` ne porte que le corps — les `<h2>`, `<p>`, `<table>`, encadrés.
|
||
L'en-tête, le bloc destinataire, la signature et le pied viennent du gabarit.
|
||
Sans `--copie`, la ligne « cc » disparaît entièrement.
|
||
|
||
Le script vérifie le nombre de pages et proteste au-delà de deux : une lettre
|
||
d'affaires qui déborde ne se lit pas. Resserrer le CORPS, jamais la typographie.
|
||
|
||
## Les choix, et pourquoi
|
||
|
||
**Charter pour le texte, Optima pour les titres.** Charter a été dessinée par
|
||
Matthew Carter pour tenir le petit corps là où d'autres se délitent — elle reste
|
||
lisible à l'écran comme sur papier bon marché. Optima lui donne un contrepoint
|
||
humaniste sans raideur. Les deux sont incorporées au PDF : le rendu est le même
|
||
chez le destinataire, quelle que soit sa machine. Chiffres elzéviriens activés,
|
||
pour que les montants dans le texte s'alignent au lieu de faire des bâtons.
|
||
|
||
**Deux encadrés, deux usages.** Le gris (`.calme`) porte une question ou une
|
||
demande — elle ne doit pas se noyer dans un paragraphe. Le rouge sourd
|
||
(`.encart`) porte ce qui doit être lu même en diagonale. **Un seul par lettre** ;
|
||
deux, et plus rien ne ressort.
|
||
|
||
**Les tableaux portent un `<thead>`.** Sans lui, un tableau qui se coupe entre
|
||
deux pages perd son en-tête et devient illisible. Avec, il se répète.
|
||
|
||
**Les trois emblèmes 🏹💻🪽** viennent du site — *« Gabriel 🪽 Radureau, pour 🏹
|
||
réussir vos projets 💻 »*. L'arc et l'ange sont dans le nom lui-même. Ils
|
||
figurent en marque sous le mot-marque, et l'aile seule entre prénom et nom dans
|
||
la signature.
|
||
|
||
## Le piège des emblèmes
|
||
|
||
> [!IMPORTANT]
|
||
> **`weasyprint` ne sait pas rendre Apple Color Emoji.** C'est un format bitmap
|
||
> `sbix` qu'il ignore : les trois emblèmes sortent en carrés vides, sans erreur
|
||
> ni avertissement. Vérifié le 24/08/2026.
|
||
|
||
D'où `emblemes/*.png`, rendus une fois pour toutes par `test/emoji2png.ts`, qui
|
||
passe par Chromium — lui lit la police système. Pour les régénérer ou en ajouter :
|
||
|
||
```bash
|
||
cd test && deno run -A emoji2png.ts ../correspondance/emblemes 🏹 💻 🪽
|
||
```
|
||
|
||
Les PNG sont incorporés en base64 **à la génération**, pas dans le gabarit : un
|
||
gabarit de 400 Ko dont 97 % de charabia ne se relit pas. Le PDF produit, lui,
|
||
reste autonome.
|
||
|
||
## Ce que le format ne fait pas
|
||
|
||
Il ne remplace pas le message d'accompagnement. La lettre est le document qu'on
|
||
joint ; le mot sur Slack ou par courriel reste séparé, plus court, et dit
|
||
pourquoi on écrit. Les deux doivent rester d'accord — vérifier que la lettre ne
|
||
mentionne aucune pièce absente de l'envoi.
|
||
|
||
## Exemple de référence
|
||
|
||
`1_DOCUMENTS/prospects/KissMetrics/relances/2026-08-24_lettre_KM.html` — la
|
||
lettre du 24/08/2026, dont ce gabarit est extrait. Elle se régénère à
|
||
l'identique, au mot près, ce qui est le test du gabarit.
|