Italiano

Strumenti di testo e di uso quotidiano · Text Toolkit

Come i generatori di lumache piegano gli accenti: spiegazione della scomposizione NFD

· Come funziona

url-slug conversione del testo javascript

Lettere accentate che si separano in lettere di base e segni prima di diventare uno slug URL
Illustrazione vettoriale originale ToolAcre

Spiega come la decomposizione canonica Unicode separa una lettera base dal suo accento in modo che "Café Crème" diventi cafe-creme anziché caf-cr-me e dove la sola scomposizione non è sufficiente.

caf-cr-me: il comune bug che altera i nomi e perché succede

Una routine slug debole può trasformare `Café Crème` in `caf-cr-me` quando elimina ogni carattere al di fuori di un intervallo ristretto di ASCII. Gli accenti visibili scompaiono, ma le lettere base sottostanti scompaiono con essi, lasciando un URL che non assomiglia più al titolo dell'articolo. Questo danno è particolarmente evidente nei nomi, nei luoghi e nelle ripetute categorie editoriali.

ToolAcre prende un percorso diverso in `slugify`. Innanzitutto normalizza l'input, quindi rimuove un intervallo specifico di segni di combinazione mantenendo le lettere risultanti. Solo successivamente minuscolo il testo e i separatori di forma. L'ordine è il motivo per cui `Café Crème` diventa `cafe-creme` invece di un frammento con vocali mancanti.

Un carattere, due rappresentazioni: come é può essere un singolo punto di codice o una e seguita da un accento acuto combinato

Il testo che sembra identico può avere sequenze interne diverse. Un `é` può arrivare come un carattere precomposto o come un normale `e` seguito da un segno acuto combinato. Un editor di contenuti di solito non può vedere quale rappresentazione proviene da un CMS, un documento o degli appunti, tuttavia un filtro carattere per carattere può trattare i due input in modo diverso.

Questa differenza nascosta è importante quando una regola di sostituzione riconosce una forma ma non l'altra. ToolAcre evita di scrivere una sostituzione separata per ciascuna ortografia precomposta. La normalizzazione conferisce alla pipeline slug una forma intermedia più coerente, quindi gli accenti supportati possono essere rimossi in un passaggio successivo mentre le lettere di base rimangono disponibili per URL.

Modulo di normalizzazione D: come la scomposizione canonica riscrive ogni lettera accentata nella lettera base più i segni di combinazione

L'implementazione chiama `.normalize("NFD")` prima di qualsiasi operazione di minuscolo o separatore. Per i caratteri che hanno una scomposizione canonica gestita dal runtime JavaScript, questo produce un carattere base seguito da uno o più segni di combinazione. La funzione non mantiene il proprio catalogo dell'ortografia francese o spagnola e non controlla semanticamente le parole.

Lo schema dice che NFD riscrive ogni lettera accentata, ma la fonte supporta un'affermazione più ristretta. La scomposizione dipende dal carattere e la seguente espressione di rimozione copre i punti di codice da `U+0300` a `U+036F`. L'articolo dovrebbe quindi descrivere il comportamento dimostrato dal codice piuttosto che promettere la rimozione universale dell'accento per ogni scrittura o segno.

NFD scompone i caratteri supportati; l'implementazione non promette che ogni lettera accentata si separi

Dopo la normalizzazione, `slugify` applica `/[̀-ͯ]/g` e sostituisce ciascun segno corrispondente con una stringa vuota. Nella forma scomposta di `é`, `e` non corrisponde a quell'intervallo, mentre il segno acuto sì. La rimozione solo del segno lascia la lettera di base leggibile che il precedente approccio ASCII-only avrebbe eliminato.

Questa è una piegatura degli accenti, non un passaggio generale di pulizia del testo. L'espressione regolare è deliberatamente posta prima della regola per i separatori, consentendo alla lettera base di partecipare come lettera successivamente. Se la rimozione del segno avvenisse dopo che le sequenze non supportate erano già state compresse, un segno scomposto potrebbe influenzare il posizionamento del separatore e produrre uno slug meno fedele.

Il resto della pipeline slug: minuscole, compressione di sequenze non alfanumeriche in trattini singoli, taglio dei separatori iniziali e finali, eliminazione delle emoji

La pipeline rimanente riduce in minuscolo il testo normalizzato e sostituisce ogni esecuzione che non sia una lettera o un numero Unicode con il separatore configurato, che per impostazione predefinita è un trattino. Una seconda espressione taglia i separatori ripetuti da entrambe le estremità. Emoji e punteggiatura quindi scompaiono come contenuto, mentre i caratteri adiacenti non supportati diventano un confine anziché diversi trattini.

La struttura descrive una compressione non alfanumerica, ma il modello effettivo utilizza gli escape delle proprietà Unicode, non un alfabeto solo ASCII. Le lettere provenienti da scritture non latine possono rimanere nello slug dopo essere state minuscole. La configurazione conferma che non è previsto alcun passaggio di traslitterazione: i simboli vengono rimossi, ma le lettere conservate non vengono riscritte automaticamente come ortografia latina approssimativa.

Il resto di questa pipeline slug mantiene lettere e cifre di qualsiasi script sostituendo le altre esecuzioni con il separatore scelto

Segui `Café Crème & Co. — Été 2024!` attraverso l'implementazione. NFD separa i caratteri accentati supportati in lettere di base e segni. L'espressione di rimozione dei segni lascia `Cafe Creme & Co. — Ete 2024!` e le lettere minuscole producono `cafe creme & co. — ete 2024!` prima che la punteggiatura sia stata elaborata.

Le sequenze senza lettere e senza numeri diventano quindi trattini, producendo la sequenza significativa `cafe-creme-co-ete-2024` dopo aver tagliato i separatori iniziali e finali. La e commerciale, il punto, il trattino e il punto esclamativo non ricevono nomi pronunciati o sostituzioni personalizzate. Servono solo come confini tra le sequenze di lettere e numeri in questa conversione.

Cosa non può fare la scomposizione: lettere come ø, ł, ß e æ non hanno accento da eliminare e necessitano di una tabella di traslitterazione

La scomposizione non è traslitterazione. Personaggi come `ø`, `ł`, `ß` E `æ` ci sono ancora lettere Unicode dopo questa pipeline, quindi il filtro basato sulle proprietà le conserva anziché consultare una tabella `o`, `l`, `ss` O `ae`. Affermare che gli utenti necessitano di una tabella di traslitterazione può essere un utile consiglio di progettazione altrove, ma in questo strumento non esiste una tabella del genere.

Questa distinzione spiega anche perché il risultato potrebbe essere uno slug di progetto valido senza essere solo ASCII. Gli editor il cui sistema di pubblicazione richiede ASCII devono verificare tale vincolo di sistema separato prima di utilizzare l'output. ToolAcre promette la piegatura dell'accento per l'intervallo di scomposizione e contrassegno implementato; non promette ortografia adeguata alla lingua, conversione reversibile o output latino per ogni titolo.

I caratteri senza segni rimovibili rimangono lettere; questo strumento non ha una tabella di traslitterazione

La conclusione affidabile è procedurale: normalizza prima, rimuovi i segni di combinazione supportati, le lettere minuscole, comprimi le sequenze non supportate e taglia i separatori. Ogni fase ha una responsabilità visibile e la loro sequenza preserva le lettere di base prima che la punteggiatura venga eliminata. Ciò è sufficiente per prevenire il comune errore `caf-cr-me` senza inventare regole linguistiche che la fonte non contiene.

Incolla il titolo elaborato nel Convertitore di maiuscole e minuscole di testo e seleziona l'opzione slug per controllare il risultato finale nella stessa casella di testo. Se un titolo include lettere al di fuori degli accenti dimostrati, rivedi l'output rispetto alla piattaforma di destinazione. Il convertitore fornisce una trasformazione prevedibile lato browser, mentre l'editor rimane responsabile delle convenzioni del percorso.