ForHosting KIT · Outils pour développeurs

Évitez les veuves avec une espace insécable

Cet outil de prévention des veuves améliore le rythme visuel des titres, chapeaux, cartes, légendes et autres textes dont la composition mérite une attention particulière.

● BetaGratuit · dans votre navigateur
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt

Il insère une espace insécable entre les deux derniers mots de chaque paragraphe afin d’inciter les navigateurs et moteurs de mise en page à conserver cette paire sur la même ligne. Les sauts de paragraphe, le texte, la ponctuation et les espacements existants restent intacts. La transformation est déterministe et idempotente : un même contenu peut traverser plusieurs fois un flux éditorial automatisé sans accumuler de modifications.

Pourquoi une espace insécable finale améliore la typographie

Une veuve est une ligne finale trop courte, souvent réduite à un seul mot, qui reste isolée au bas d’un paragraphe ou sous un titre. Elle peut donner un aspect accidentel à une carte, un bandeau ou un bloc éditorial pourtant équilibré, surtout lorsque la mise en page adaptative change de largeur selon l’appareil. Cet outil applique une protection typographique simple et reconnue : il remplace le dernier caractère d’espacement ordinaire précédant le mot final par une espace Unicode insécable. Les deux derniers mots se comportent alors comme une paire lorsque le navigateur ou un autre moteur compatible choisit les retours à la ligne. Le texte n’est ni réécrit, ni résumé, ni repensé sur le plan de la ponctuation. Les lignes vides entre les paragraphes gardent exactement leur place, et les espaces supplémentaires avant le dernier mot sont conservés, sauf le caractère rendu insécable. Les paragraphes sans paire finale appropriée restent inchangés. Une espace insécable déjà présente n’étant pas remplacée, les traitements répétés donnent toujours le même résultat sans ajouter de caractères invisibles.

Comment préparer et contrôler votre texte

Envoyez le contenu dans le champ text exactement sous la forme souhaitée pour tout le reste. Séparez les paragraphes par une ou plusieurs lignes vides ; ces séparateurs sont reproduits dans la sortie. Dans chaque paragraphe, le transformateur examine la dernière ligne et repère son dernier élément autre qu’un espace. Si cet élément est précédé d’une espace ordinaire ou d’une tabulation, le dernier caractère de cette séquence devient insécable. La ponctuation accolée au dernier mot reste en place : point final, point d’interrogation, guillemet ou parenthèse fermante ne nécessitent aucun traitement particulier. Après le traitement, copiez le texte renvoyé dans le système cible et prévisualisez-le aux largeurs pertinentes. Une espace insécable influence la césure sans garantir une composition parfaite si le conteneur est très étroit ou si les derniers mots sont exceptionnellement longs. Vérifiez également que l’éditeur, le CMS, le moteur de modèles ou la base de données conserve Unicode et ne normalise pas ensuite ce caractère en espace ordinaire.

Intégrer la protection dans un flux éditorial

Cette capacité convient à une dernière étape de formatage déterministe, après validation du texte et avant son rendu. Une intégration CMS peut traiter un titre et un résumé lors de la publication d’une entrée, tandis qu’un générateur de site statique peut l’appliquer à certains champs pendant la compilation. Les équipes chargées des e-mails peuvent protéger les en-têtes avant leur insertion dans des modèles, et les systèmes de design peuvent employer le résultat pour des titres de cartes souvent répartis sur plusieurs lignes. Appliquez cette transformation avec discernement, et non indistinctement au code source, au texte préformaté, aux URL ou aux données dont chaque espace est significatif. Conservez le texte renvoyé si votre canal accepte Unicode, ou convertissez l’espace insécable en représentation échappée uniquement si un format en aval l’exige expressément. L’API facture $0.002 par requête, tandis que l’exécuteur du navigateur propose localement la même logique déterministe. Sans réseau, modèle, valeur aléatoire ni horloge, une entrée identique produit toujours une sortie identique.

Soigner les titres adaptatifs

Conservez ensemble les deux derniers mots des bandeaux et cartes lorsque la mise en page se resserre sur ordinateur ou mobile.

Préparer les contenus d’un CMS

Appliquez une protection uniforme aux titres, chapeaux, légendes ou champs promotionnels pendant la publication.

Améliorer la typographie des e-mails

Protégez la paire finale des en-têtes et courts paragraphes avant d’insérer le contenu dans un modèle d’e-mail.

Que modifie cet outil ?

Il transforme en espace Unicode insécable le dernier caractère d’espacement ordinaire avant le mot final de chaque paragraphe admissible.

Les sauts de paragraphe sont-ils conservés ?

Oui. Les séparateurs constitués de lignes vides et l’ensemble du texte restent strictement inchangés.

Puis-je traiter deux fois le même texte ?

Oui. La transformation est idempotente : un texte déjà protégé par une espace insécable ne change plus.

Toutes les lignes finales courtes disparaîtront-elles ?

Non. La paire finale reste groupée, mais la césure réelle dépend de la police, de la largeur du conteneur et du moteur de mise en page.

Combien coûte l’API ?

Chaque requête API coûte $0.002. La version dans le navigateur exécute localement la même logique.

Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.

POSThttps://api.kit.forhosting.com/str/prevent-widows

Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.

curl -X POST https://api.kit.forhosting.com/str/prevent-widows \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"A clear headline should never leave one word behind.\n\nThis second paragraph is protected too."}'
{
  "text": "A clear headline should never leave one word behind.\n\nThis second paragraph is protected too."
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "str.prevent_widows",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

max_chars200000
HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Consulter la documentation complète du KIT →