Eviti le righe vedove con uno spazio unificatore
Tenga sulla stessa riga le ultime due parole di ogni paragrafo: in un esempio di due paragrafi, entrambi i finali ricevono uno spazio unificatore, così careful details e narrow cards non lasciano mai una parola da sola. Testo e a capo restano invariati. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Lo strumento contro le righe vedove migliora il ritmo visivo di titoli, introduzioni, schede, didascalie e altri testi che richiedono una composizione accurata. Inserisce uno spazio unificatore tra le ultime due parole di ogni paragrafo, invitando browser e motori di impaginazione a mantenerle sulla stessa riga. Le interruzioni di paragrafo, le parole, la punteggiatura e gli spazi esistenti rimangono intatti. La trasformazione è deterministica e idempotente: lo stesso contenuto può attraversare più volte un flusso editoriale automatizzato senza accumulare ulteriori modifiche.
Perché lo spazio unificatore finale migliora la tipografia
Una vedova è una riga finale troppo breve, spesso composta da una sola parola, lasciata in fondo a un paragrafo o sotto un titolo. Può far sembrare casuale una scheda, un’apertura o un blocco editoriale altrimenti equilibrato, soprattutto quando un layout responsivo cambia larghezza sui diversi dispositivi. Lo strumento applica un accorgimento tipografico semplice e consolidato: sostituisce l’ultimo carattere di spaziatura ordinaria prima della parola finale con uno spazio Unicode unificatore.
Le ultime due parole si comportano quindi come una coppia quando il browser o un altro motore compatibile decide le interruzioni di riga. Il testo non viene riscritto, riassunto o ripunteggiato. Le righe vuote tra i paragrafi restano esattamente al loro posto e gli eventuali spazi aggiuntivi prima dell’ultima parola vengono conservati, eccetto il carattere reso non separabile.
I paragrafi privi di una coppia finale adatta non cambiano. Poiché uno spazio unificatore già presente non viene sostituito nuovamente, elaborazioni ripetute danno lo stesso risultato senza aggiungere caratteri invisibili.
Come preparare e controllare il testo
Invii il contenuto nel campo text esattamente come deve apparire per ogni altro aspetto. Separi i paragrafi con una o più righe vuote: tali separatori vengono conservati nell’output. In ogni paragrafo il trasformatore esamina l’ultima riga e individua l’ultimo elemento diverso da uno spazio.
Se è preceduto da uno spazio ordinario o da una tabulazione, l’ultimo carattere di quella sequenza diventa unificatore. La punteggiatura collegata alla parola finale rimane collegata, perciò un punto, un punto interrogativo, una virgoletta o una parentesi di chiusura non richiedono interventi particolari. Dopo l’elaborazione, copi il testo restituito nel sistema di destinazione e lo controlli alle larghezze rilevanti.
Uno spazio unificatore condiziona l’andata a capo, ma non garantisce una composizione perfetta se il contenitore è estremamente stretto o le ultime parole sono molto lunghe. Verifichi inoltre che editor, CMS, motore di template o database conservino Unicode senza normalizzare in seguito il carattere come spazio ordinario.
Uso nei flussi di pubblicazione
La capacità è adatta come ultima fase deterministica di formattazione, dopo l’approvazione del testo e prima del rendering. Un’integrazione CMS può elaborare titolo e sintesi quando viene pubblicata una voce, mentre un generatore di siti statici può applicarla ai campi scelti durante la compilazione. I team email possono proteggere le intestazioni prima di inserirle nei modelli e i design system possono usare il risultato per titoli di schede che vanno spesso a capo.
Applichi la trasformazione in modo selettivo, non indiscriminatamente a codice sorgente, testo preformattato, URL o dati in cui ogni spazio ha valore semantico. Memorizzi il testo restituito se il canale accetta Unicode oppure converta lo spazio unificatore nella rappresentazione di escape appropriata solo se un formato successivo lo richiede esplicitamente. Senza rete, modelli, valori casuali o orologi, input identici producono sempre output identici.
Casi d'uso
Rifinisca i titoli responsivi
Mantenga unite le ultime due parole di aperture e schede quando il layout si restringe su desktop e dispositivi mobili.
Prepari i contenuti per il CMS
Applichi una protezione coerente a titoli, sommari, didascalie o campi promozionali durante la pubblicazione.
Migliori la tipografia delle email
Protegga la coppia finale di intestazioni e brevi paragrafi prima di inserire il contenuto in un modello email.
Domande frequenti
Che cosa modifica lo strumento?
Trasforma in spazio Unicode unificatore l’ultimo carattere di spaziatura ordinaria prima della parola finale di ogni paragrafo idoneo.
Le interruzioni di paragrafo vengono conservate?
Sì. I separatori formati da righe vuote e tutte le parole rimangono esattamente invariati.
Posso elaborare due volte lo stesso testo?
Sì. La trasformazione è idempotente: un testo già protetto da uno spazio unificatore non cambia nuovamente.
Elimina sempre tutte le righe finali corte?
No. Mantiene unita la coppia finale, ma l’andata a capo effettiva dipende dal carattere, dalla larghezza e dal motore di layout.
Il mio editor o il mio sito manterranno lo spazio unificatore?
Di solito sì, ma lo verifichi. Alcuni editor, modelli o database trasformano quello spazio speciale in uno normale e la protezione si perde. Incolli il risultato, salvi e controlli la pagina alle larghezze che le interessano.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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."}'const res = await fetch("https://api.kit.forhosting.com/str/prevent-widows", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "A clear headline should never leave one word behind.\n\nThis second paragraph is protected too."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/prevent-widows",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "A clear headline should never leave one word behind.\n\nThis second paragraph is protected too."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/prevent-widows", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"A clear headline should never leave one word behind.\\n\\nThis second paragraph is protected too."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"A clear headline should never leave one word behind.\n\nThis second paragraph is protected too."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/prevent-widows", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"text": "A clear headline should never leave one word behind.\n\nThis second paragraph is protected too."
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.prevent_widows",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_chars | 200000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Uso nei flussi di pubblicazione
L’API addebita $0.002 per richiesta, mentre l’esecutore nel browser offre localmente la stessa logica deterministica.
Domande tecniche
Quanto costa l’API?
Ogni richiesta API costa $0.002. La versione per browser esegue localmente la stessa logica.