Perché i fori degli SVG si riempiono e come ripristinarli
I fori SVG possono riempirsi se un ritaglio perde il legame composto, cambia la regola di riempimento o l'importatore ignora il rapporto. Diagnostica e ripristinalo.
In questa pagina
Un foro SVG si riempie quando il file o la destinazione smette di trattare il contorno interno come esterno alla forma riempita. Le cause più comuni sono un tracciato composto rilasciato, un contorno interno salvato come oggetto riempito separato, una regola di riempimento o direzione del tracciato cambiata, un importatore che perde il rapporto tra i contorni oppure un ricalco raster che ha chiuso l'apertura prima della creazione dell'SVG.
Inizia aprendo l'SVG in un browser. Se il foro è già riempito lì, correggi il file. Se nel browser appare corretto ma un'altra app riempie il foro, il probabile responsabile è il passaggio di importazione.
La diagnosi rapida
- Metti la grafica su uno sfondo contrastante. Un oggetto bianco non è un foro trasparente.
- Ispeziona l'elemento nel pannello Layers o Objects. I contorni esterno e interno devono generalmente appartenere a un unico tracciato composto.
- Se il file usa
fill-rule="nonzero", la direzione dei contorni conta. Se usaevenodd, i contorni annidati alternano aree riempite e non riempite. - Se fallisce soltanto una destinazione, semplifica una copia o ricostruisci lì la sottrazione.
- Se il raster originale ha già uno spazio interno chiuso, ripulisci quella sorgente prima di ricalcarla nuovamente.
Prima individua dove è scomparso il foro
Usa due renderer prima di cambiare la geometria:
- Salva un duplicato dell'SVG.
- Apri il duplicato direttamente in Chrome, Safari, Firefox o un altro browser.
- Posizionalo su uno sfondo chiaro e poi scuro.
- Apri lo stesso file nell'app di destinazione.
- Confronta il foro specifico, non soltanto la silhouette complessiva.
| Cosa vedi | Causa probabile | Prossima azione |
|---|---|---|
| Il foro è riempito nel browser e nell'editor | La struttura SVG o il comportamento del riempimento è errato | Ispeziona tracciati composti, regola di riempimento e direzione dei contorni |
| Il foro è bianco su uno sfondo scuro | Una forma bianca copre la grafica | Sottraila o ricostruisci un vero foro trasparente |
| Il browser è corretto, ma la destinazione è errata | L'importatore ha cambiato o ignorato il rapporto composto | Semplifica una copia o sottrai il profilo interno dopo l'importazione |
| Il foro è scomparso subito dopo Break Apart o Release | Il contorno interno è diventato un normale tracciato riempito | Annulla o ricombina i contorni corretti |
| Il foro era già chiuso nel ricalco raster | Lo spazio nella sorgente era troppo piccolo o lo smussamento lo ha chiuso | Ripulisci la sorgente e ricalcala nuovamente oppure crea manualmente l'apertura |
Questo confronto distingue un SVG errato da un problema di importazione specifico della destinazione. Evita anche che operazioni casuali sui tracciati danneggino un file corretto prima dell'importazione.
Una forma bianca non è un foro
Un vero foro mostra ciò che sta dietro l'SVG. Una forma bianca sembra vuota soltanto su un'area di disegno bianca. Per la grafica usata in un'interfaccia web, la guida a pointer-events negli SVG mostra come un foro, una regione dipinta e un bersaglio di interazione separato rispondono ai clic.
Per provarlo, aggiungi un rettangolo scuro temporaneo dietro la grafica. Se il presunto foro rimane bianco, seleziona quell'oggetto interno. Puoi mantenerlo come elemento bianco intenzionale del progetto, ma non aspettarti che una macchina da taglio, uno strumento di incisione, una sovrapposizione nel browser o un importatore 3D lo interpreti come spazio vuoto.
Per un'apertura trasparente, usa un tracciato composto oppure sottrai la forma interna da quella esterna. Anche una maschera può creare trasparenza, ma molte app di produzione gestiscono la geometria semplice dei tracciati in modo più affidabile delle maschere. Per un flusso tramite script, prova a tagliare e unire tracciati importati con Paper.js, poi riapri l'SVG esportato per controllare l'apertura.
Per la grafica dei gobo, un'apertura trasparente corretta lascia comunque una decisione separata sul materiale. Il confronto tra gobo in acciaio e vetro segue la stessa lettera O in una disposizione con ponti d'acciaio e in un disegno sostenuto dal vetro e spiega perché invertire le regioni chiare e scure proiettate cambia ciò che deve restare collegato.
I tracciati composti conservano il rapporto del foro
Una lettera O, un anello e un logo con centro ritagliato usano spesso un unico elemento path con più sottotracciati chiusi. Il contorno esterno definisce la silhouette; un sottotracciato racchiuso definisce lo spazio interno o il ritaglio. Il modello dei tracciati SVG permette più sottotracciati all'interno di un unico tracciato.
Ecco perché Ungroup, Break Apart e Release Compound Path non sono intercambiabili. Rilasciare il tracciato composto può trasformare il contorno interno in un normale oggetto riempito. La geometria è ancora presente, ma il suo rapporto con il contorno esterno è scomparso.
Ripristinalo su un duplicato:
- Seleziona il confine esterno e soltanto i contorni che devono essere fori.
- Usa Make Compound Path, Combine o il comando equivalente.
- Applica un solo riempimento all'oggetto risultante.
- Controlla la regola di riempimento.
- Riapri l'SVG salvato in un browser e nell'app di destinazione.
L'attuale documentazione Adobe sui tracciati composti usa questo stesso modello: i tracciati costituenti determinano regioni riempite e trasparenti tramite una regola di riempimento.

Per la grafica dei timbri, controlla la geometria rialzata o incassata dei timbri per ceramica prima di decidere quali aree devono restare riempite.
Controlla nonzero ed evenodd
SVG ha due regole di riempimento. La specifica SVG 2 sul rendering imposta nonzero come valore iniziale e definisce evenodd come altra opzione.
nonzerousa attraversamenti dei tracciati con segno. Un contorno interno nella direzione sbagliata può aggiungersi al riempimento anziché annullarlo.evenoddconta gli attraversamenti. Un punto racchiuso due volte è esterno, quindi un semplice contorno annidato diventa un foro indipendentemente dalla direzione dei contorni.
Questo tracciato minimo contiene due rettangoli con la stessa direzione. Con evenodd, il centro resta trasparente:
<path
fill="#2563eb"
fill-rule="evenodd"
d="M10 10H90V90H10Z M30 30H70V70H30Z"
/>Cambiare la regola è utile quando corrisponde al progetto, ma non è una correzione universale. I due contorni devono comunque essere valutati come sottotracciati della stessa forma. Impostare fill-rule="evenodd" su due oggetti indipendenti non permette a uno di ritagliare l'altro.
Se mantieni nonzero, inverti soltanto il contorno interno quando l'editor offre quel comando. Illustrator espone entrambe le regole di riempimento e un controllo della direzione per i tracciati composti. Salva una copia prima di invertire qualsiasi cosa, perché autointersezioni e più spazi interni annidati possono produrre un risultato diverso da un semplice anello.
Quando l'SVG è corretto ma l'importatore sbaglia
Alcuni strumenti di taglio, CAD, 3D e animazione supportano soltanto un sottoinsieme pratico di SVG. Un browser può renderizzare correttamente il tracciato composto mentre la destinazione importa ogni contorno come oggetto pieno.
Segui questo ordine di correzione:
- Salva una copia semplificata dall'editor sorgente.
- Converti il testo modificabile in tracciati in quella copia quando l'importazione del testo è il punto debole.
- Sostituisci maschere, ritagli ed effetti di aspetto con semplice geometria di tracciati soltanto dove necessario.
- Mantieni ogni foro previsto insieme al suo contorno esterno in un unico tracciato composto.
- Prova
evenoddenonzeroconsapevolmente anziché alternarli ripetutamente. - Se l'importatore riempie ancora l'apertura, importa entrambi i confini e sottrai il profilo interno nella destinazione.
Per un flusso di estrusione, la destinazione deve anche riconoscere un profilo chiuso selezionabile. La diagnosi dell'estrusione SVG affronta estremità aperte, duplicati e validità del profilo dopo che il foro è stato preservato.
Quando il ricalco ha chiuso l'apertura
Uno strumento di ricalco può chiudere lo spazio interno di una piccola lettera o unire un'apertura stretta quando la sorgente raster è minuscola, sfocata o a basso contrasto. È un problema geometrico, non della regola di riempimento: il confine interno non è mai arrivato nell'SVG.
Torna alla sorgente raster e:
- ingrandiscila o acquisiscila nuovamente senza aggiungere sfocatura;
- aumenta la separazione attorno all'apertura importante;
- rimuovi il rumore di compressione vicino allo spazio;
- riduci smussamento o fusione dei colori se lo strumento espone questi controlli;
- confronta il nuovo ricalco alla dimensione finale dell'output.
Questo è il caso in cui PerfectVector può aiutare. Usa il flusso da immagine a vettore quando hai il raster originale e ti serve un nuovo ricalco SVG. Ispeziona ogni spazio interno e negativo prima del download. Se l'SVG era corretto finché un editor non ha rilasciato i tracciati composti, correggi invece quell'SVG; un nuovo ricalco non recupererà la cronologia delle modifiche persa.
Lo stesso approccio che parte dalla sorgente è utile per le lettere. La guida vettoriale al lettering a mano mostra come mantenere aperti i piccoli spazi interni senza privare l'intero disegno del suo carattere.
Un controllo finale sicuro
Prima di inviare l'SVG corretto:
- visualizzalo su sfondi chiari, scuri e trasparenti;
- seleziona l'elemento e conferma che sia un unico tracciato composto intenzionale;
- ispeziona la regola di riempimento nell'editor o nel sorgente SVG;
- controlla ogni spazio interno delle lettere, anello e spazio negativo racchiuso;
- riapri il file esportato anziché fidarti dell'area di disegno non salvata;
- prova l'esatta app di destinazione;
- mantieni separati sorgente modificabile e copia semplificata di consegna.
Se ora l'oggetto si comporta come un'unica selezione, può essere corretto. Un tracciato composto è un solo oggetto per definizione. Usa la guida alla separazione dei gruppi SVG prima di scomporlo di nuovo.
FAQ
Perché i fori si sono riempiti dopo aver usato Break Apart? Break Apart ha separato i contorni interni dal tracciato composto esterno. Gli ex fori sono diventati normali oggetti riempiti. Annulla il comando o ricombina ogni contorno esterno con i contorni interni corretti, poi verifica la regola di riempimento.
Dovrei usare fill-rule="evenodd" per i fori SVG?
evenodd è spesso comodo per contorni annidati perché la loro direzione non decide il risultato. Funziona comunque all'interno di una sola forma; non sottrae un oggetto separato. Mantieni nonzero quando sorgente e destinazione conservano le direzioni previste dei contorni.
Perché l'SVG appare corretto nel browser ma pieno nella mia app? L'importatore di destinazione potrebbe non conservare tracciato composto, regola di riempimento, maschera o direzione dei contorni. Semplifica una copia in tracciati semplici e riprova. Se necessario, importa i confini esterno e interno e sottrai il foro nella destinazione.
Posso creare un foro mettendo sopra una forma bianca? Simula un foro soltanto su uno sfondo bianco. L'oggetto bianco resta riempito, quindi può essere stampato, tagliato o importato come un'altra forma piena. Usa un tracciato composto, una sottrazione o un'altra struttura di trasparenza quando lo sfondo deve vedersi attraverso.
PerfectVector può correggere fori riempiti in un SVG esistente? PerfectVector è utile quando puoi tornare a una sorgente raster adatta e creare un nuovo ricalco con le aperture previste visibili. Non ripara un tracciato composto rilasciato da un editor o ignorato da un importatore. Correggi questi rapporti in un editor vettoriale o nell'app di destinazione.
Fonti
- W3C — Rendering SVG 2 — Definisce
nonzero,evenodde il valore iniziale della regola di riempimento. - W3C — Tracciati SVG — Definisce tracciati, sottotracciati e geometria dei tracciati chiusi.
- Adobe Illustrator — Creare tracciati composti — Documenta fori composti, regole di riempimento e inversione della direzione dei tracciati costituenti.
- PerfectVector — Da immagine a vettore — Il flusso attuale da raster a SVG usato nel caso condizionale del nuovo ricalco.
Se l'apertura è andata persa durante il ricalco raster, crea un nuovo vettore dalla sorgente pulita e ispeziona ogni spazio interno prima della consegna. Se la versione nel browser è già corretta, mantieni quella geometria e correggi soltanto l'importazione che fallisce.
Altro dal blog

Three.js SVGLoader: dalla grafica piana alla mesh 3D
Carica tracciati SVG in Three.js, conserva un'apertura reale, correggi l'orientamento verticale e dimensiona una mesh estrusa con un piccolo esempio riproducibile nel browser.

SVG in Unreal: verifica la geometria Motion Design
Prepara un SVG per Motion Design di Unreal Engine, ispeziona fori e parti separate e distingui la geometria di scena da texture e immagini per interfacce a runtime.