SVG 1.2 Tiny menambahkan pembungkus teks, tetapi sebagian besar implementasi SVG yang akan Anda temukan di browser (dengan pengecualian Opera) belum menerapkan fitur ini. Biasanya terserah Anda, pengembang, untuk memposisikan teks secara manual.
Spesifikasi SVG 1.1 memberikan tinjauan yang baik tentang batasan ini, dan kemungkinan solusi untuk mengatasinya:
Setiap elemen 'teks' menyebabkan satu string teks dirender. SVG tidak melakukan pemecahan garis otomatis atau pembungkus kata. Untuk mencapai efek beberapa baris teks, gunakan salah satu metode berikut:
- Penulis atau paket pembuat perlu melakukan pra-komputasi jeda baris dan menggunakan beberapa elemen 'teks' (satu untuk setiap baris teks).
- Penulis atau paket pembuat perlu melakukan pra-komputasi jeda baris dan menggunakan elemen 'teks' tunggal dengan satu atau lebih elemen anak 'tspan' dengan nilai yang sesuai untuk atribut 'x', 'y', 'dx' dan 'dy' untuk mengatur posisi awal baru untuk karakter-karakter yang memulai baris baru. (Pendekatan ini memungkinkan pemilihan teks pengguna di beberapa baris teks - lihat Pemilihan teks dan operasi clipboard.)
- Ekspresikan teks yang akan dirender dalam namespace XML lain seperti XHTML [XHTML] yang disematkan sebaris di dalam elemen 'foreignObject'. (Catatan: semantik yang tepat dari pendekatan ini tidak sepenuhnya ditentukan saat ini.)
http://www.w3.org/TR/SVG11/text.html#Introduction
Sebagai primitif, pembungkus teks dapat disimulasikan dengan menggunakan dy
atribut dan tspan
elemen, dan seperti yang disebutkan dalam spesifikasi, beberapa alat dapat mengotomatisasi ini. Misalnya, di Inkscape, pilih bentuk yang Anda inginkan, dan teks yang Anda inginkan, dan gunakan Teks -> Alirkan ke Bingkai. Ini akan memungkinkan Anda untuk menulis teks Anda, dengan pembungkus, yang akan membungkus berdasarkan batas-batas bentuk. Juga, pastikan Anda mengikuti instruksi ini untuk memberi tahu Inkscape untuk menjaga kompatibilitas dengan SVG 1.1:
http://wiki.inkscape.org/wiki/index.php/FAQ#What_about_flowed_text.3F
Selain itu, ada beberapa perpustakaan JavaScript yang dapat digunakan untuk mengotomatiskan pembungkusan teks secara dinamis:
http://www.carto.net/papers/svg/textFlow/
Sangat menarik untuk mencatat solusi CSVG untuk membungkus bentuk ke elemen teks (mis. Lihat contoh "tombol" mereka), meskipun penting untuk menyebutkan bahwa implementasi mereka tidak dapat digunakan dalam browser:
http://www.csse.monash.edu .au / ~ clm / csvg / about.html
Saya menyebutkan ini karena saya telah mengembangkan perpustakaan yang diilhami CSVG yang memungkinkan Anda untuk melakukan hal serupa dan berfungsi di browser web, meskipun saya belum merilisnya.