Tre cose che la schermata può far sembrare uguali
Una frase lunga può occupare quattro righe su un telefono e due su un monitor. Se cambia soltanto la larghezza disponibile, il testo resta lo stesso. Questa è una disposizione visiva. Quando premi un comando che inserisce un’interruzione, invece, la sequenza di testo può cambiare. La differenza diventa evidente copiando il contenuto in un campo che conserva gli a capo.
Un paragrafo è ancora un’altra cosa. In un documento ricco può essere un elemento strutturale, con stile e spaziatura propri. In una stringa semplice quella struttura deve essere rappresentata da una convenzione. Per capire un conteggio chiedi quindi tre cose: quali separatori sono presenti, come vengono interpretati e quale numero stai leggendo. La parola “riga” da sola non risponde a nessuna delle tre. Una riga di stampa, una riga del file e una riga del campo di testo possono corrispondere a oggetti diversi.
LF e CRLF: due rappresentazioni del ritorno a capo
Le sigle LF e CR indicano due caratteri di controllo. Nei file puoi incontrare LF da solo oppure la coppia CRLF. La voce MDN dedicata a CRLF ne chiarisce i nomi e le notazioni: \n per LF e \r per CR. Non devi contare le due lettere della notazione: sono un modo leggibile per mostrare il controllo.
Il nostro motore trasforma CRLF e CR isolato in LF prima dell’analisi. Perciò due copie che differiscono soltanto per questa convenzione producono gli stessi conteggi editoriali. I byte del file originale possono restare diversi. Se stai controllando una dimensione massima di caricamento, la normalizzazione del conteggio non dimostra che i due file pesino uguale. Per quella domanda serve una misura dei byte sul contenuto realmente inviato, come spiega il confronto tra caratteri e byte UTF-8.
Stesse parole, separatori diversi
| Stringa (notazione) | Battute del sito | Righe | Paragrafi | Byte UTF-8 originali |
|---|---|---|---|---|
| Luce blu | 8 | 1 | 1 | 8 |
| Luce\nblu | 7 | 2 | 1 | 8 |
| Luce\r\nblu | 7 | 2 | 1 | 9 |
| Luce\n\nblu | 7 | 3 | 2 | 9 |
| Luce\n | 4 | 2 | 1 | 5 |
Come il contatore distingue righe e paragrafi
Nel sito una riga corrisponde a un segmento separato da un a capo esplicito, dopo l’uniformazione di CRLF. Una stringa vuota ha zero righe. La stringa Luce ne ha una; aggiungere un ritorno a capo alla fine ne produce due, perché esiste anche un segmento finale vuoto. Non si tratta di una seconda parola o di un secondo paragrafo.
I paragrafi vengono invece riconosciuti come blocchi separati da una riga vuota. Una sola interruzione dentro un blocco non lo divide in due paragrafi. Questa è la convenzione del nostro testo semplice e non una definizione universale di paragrafo. Se il tuo editor memorizza ogni pressione di Invio come nuovo paragrafo, il suo indicatore può avere un altro significato. Nel confronto annota la convenzione; cambiare il numero atteso senza sapere che cosa misura rende soltanto meno leggibile lo scarto.

La prova con “luce” e “blu”
Nella tabella trovi stringhe brevi misurate con il motore del sito in un esperimento locale. La versione con uno spazio, Luce blu, ha otto caratteri e due parole. Sostituendo quello spazio con LF ottieni sette caratteri nel nostro indicatore: i quattro di Luce e i tre di blu. Il separatore continua a dividere le parole, anche se non entra nelle battute.
Con due LF consecutivi i caratteri restano sette e le parole restano due, ma le righe diventano tre e i paragrafi due. Questa combinazione è utile per diagnosticare un caso reale: un aumento dei paragrafi senza aumento delle parole può dipendere dalla struttura, non da testo aggiunto. Per riprodurre la prova inserisci davvero gli a capo. Se scrivi i simboli \n come testo letterale, il contatore riceve una barra e una lettera, e stai misurando un altro campione.
Ridimensionare una finestra non dovrebbe cambiare le parole
Se il numero di righe che vedi cambia quando allarghi il campo, controlla prima se stai osservando il testo o un indicatore numerico. Il ritorno visivo è normale: il programma cerca un punto adatto per continuare sotto. La proprietà CSS white-space regola parte del trattamento di spazi e interruzioni nella visualizzazione; non basta quindi guardare uno screenshot per ricostruire i caratteri della stringa.
Una prova semplice consiste nel copiare la stessa frase senza modificarla e misurarla prima e dopo il ridimensionamento. Non aggiungere spazi per imitare l’allineamento dello screenshot. Se il risultato differisce, confronta le copie: potrebbe essere stata selezionata soltanto una parte, potrebbe esserci un’interruzione esplicita, oppure la sorgente potrebbe trasformare il contenuto durante la copia. L’effetto visivo è un indizio da verificare, non una ragione sufficiente per correggere i numeri.
Gli a capo introdotti durante un’importazione
Un PDF può contenere frammenti collocati sulla pagina anziché una sequenza di paragrafi già pronta. Il lettore deve ricostruire una forma testuale. Un’interruzione dopo ogni riga stampata può essere utile per confrontare la pagina, ma scomoda per una successiva revisione. Nel DOCX la struttura iniziale è diversa, e una tabella può introdurre separatori tra contenuti che sul foglio appaiono affiancati.
Prima di unire tutto, scegli una pagina con titolo, paragrafo e tabella. Controlla quali separatori corrispondono a confini reali e quali soltanto all’impaginazione. La guida sul testo estratto da PDF a colonne aiuta quando l’ordine è il problema principale. Se manca una frase, sostituire gli a capo non la recupera. La correzione dei separatori deve iniziare soltanto dopo aver verificato completezza e ordine di lettura.
Quando la consegna dice “battute” o “righe”
Per un limite di battute usa la definizione richiesta dal destinatario. Nel nostro indicatore gli a capo sono esclusi e le tabulazioni diventano uno spazio ai fini dell’analisi. Se un sistema di invio conta ogni controllo o ogni unità della stringa, può mostrare un valore differente. Non cercare un fattore fisso di conversione: dipende da quanti separatori sono presenti nel testo concreto.
Una richiesta espressa in righe richiede ancora più contesto. “Venti righe” può riferirsi a un’impaginazione con font, corpo e larghezza prestabiliti, oppure a venti righe di un file tecnico. Nel primo caso il conteggio delle interruzioni non sostituisce il controllo del layout. Nel secondo caso bisogna concordare il trattamento della riga finale vuota. Chiedere o leggere questa specifica prima di tagliare un testo evita di cancellare contenuto per risolvere un’ambiguità di formato.
Una differenza che puoi localizzare
Se due strumenti danno le stesse parole ma righe diverse, prova prima un campione senza ritorno finale e poi lo stesso campione con un solo ritorno finale. Questo separa il problema della convenzione dall’eventuale presenza di testo nascosto. Se cambiano anche le parole, controlla le giunzioni: una rimozione degli a capo senza spazio può aver fuso due termini.
Per un documento lungo, confronta un blocco alla volta invece di ripulire tutto alla cieca. Segna il primo punto in cui righe o paragrafi non corrispondono più alla struttura attesa. Potresti trovare una riga vuota mancante tra due sezioni, una tabella incollata come elenco oppure il ritorno di una citazione che va conservato. Correggere quel confine preciso è più affidabile di ottenere un totale apparentemente plausibile attraverso una sostituzione generale.
Fonti e verifiche
- MDN: CRLFNomi e notazioni dei controlli CR e LF.
- MDN: white-spaceDistinzione tra contenuto testuale e trattamento di spazi e interruzioni nella resa CSS.
Controlli specifici di questa guida
- Eseguito analyze() del motore su cinque stringhe con spazio, LF, CRLF, riga vuota e LF finale.
- Verificati i byte delle stringhe originali con TextEncoder.
- Confrontata la convenzione dei paragrafi con la funzione analyze() effettiva.