SVG 1.2 Piccolo testo aggiunto a capo automatico, ma la maggior parte delle implementazioni di SVG che troverai nel browser (ad eccezione di Opera) non hanno implementato questa funzione. Spetta in genere allo sviluppatore posizionare manualmente il testo.
La specifica SVG 1.1 fornisce una buona panoramica di questa limitazione e delle possibili soluzioni per superarla:
Ogni elemento "text" provoca il rendering di una singola stringa di testo. SVG non esegue alcuna interruzione di riga o ritorno a capo automatico. Per ottenere l'effetto di più righe di testo, utilizzare uno dei seguenti metodi:
- L'autore o il pacchetto di creazione deve pre-calcolare le interruzioni di riga e utilizzare più elementi di "testo" (uno per ogni riga di testo).
- L'autore o il pacchetto di authoring deve pre-calcolare le interruzioni di riga e utilizzare un singolo elemento 'text' con uno o più elementi figlio 'tspan' con valori appropriati per gli attributi 'x', 'y', 'dx' e 'dy' per impostare nuove posizioni iniziali per quei personaggi che iniziano nuove linee. (Questo approccio consente la selezione del testo dell'utente su più righe di testo: vedere Selezione del testo e operazioni negli Appunti.)
- Esprimi il testo da renderizzare in un altro spazio dei nomi XML come XHTML [XHTML] incorporato in linea all'interno di un elemento 'foreignObject'. (Nota: la semantica esatta di questo approccio non è completamente definita in questo momento.)
http://www.w3.org/TR/SVG11/text.html#Introduction
Come primitivo, il wrapping del testo può essere simulato utilizzando l' dy
attributo e gli tspan
elementi e, come menzionato nelle specifiche, alcuni strumenti possono automatizzarlo. Ad esempio, in Inkscape, seleziona la forma desiderata e il testo desiderato e usa Testo -> Scorri nella cornice. Questo ti permetterà di scrivere il tuo testo, con il wrapping, che si avvolgerà in base ai limiti della forma. Inoltre, assicurati di seguire queste istruzioni per dire a Inkscape di mantenere la compatibilità con SVG 1.1:
http://wiki.inkscape.org/wiki/index.php/FAQ#What_about_flowed_text.3F
Inoltre, ci sono alcune librerie JavaScript che possono essere utilizzate per automatizzare dinamicamente il wrapping del testo:
http://www.carto.net/papers/svg/textFlow/
È interessante notare la soluzione di CSVG per racchiudere una forma in un elemento di testo (ad es. Vedere il loro esempio di "pulsante"), sebbene sia importante ricordare che la loro implementazione non è utilizzabile in un browser:
http://www.csse.monash.edu .au / ~ CLM / CSVG / about.html
Sto citando questo perché ho sviluppato una libreria ispirata a CSVG che ti consente di fare cose simili e funziona nei browser Web, anche se non l'ho ancora rilasciato.