SVG 1.2 Tiny dodał zawijanie tekstu, ale większość implementacji SVG, które znajdziesz w przeglądarce (z wyjątkiem Opery) nie ma tej funkcji. Zwykle do Ciebie, programisty, należy ręczne pozycjonowanie tekstu.
Specyfikacja SVG 1.1 zapewnia dobry przegląd tego ograniczenia i możliwych rozwiązań, aby je przezwyciężyć:
Każdy element „tekst” powoduje renderowanie pojedynczego ciągu tekstu. SVG nie wykonuje automatycznego dzielenia wierszy ani zawijania słów. Aby uzyskać efekt wielu wierszy tekstu, użyj jednej z następujących metod:
- Autor lub pakiet autorski musi wstępnie obliczyć podziały wierszy i użyć wielu elementów „tekstowych” (po jednym na każdy wiersz tekstu).
- Autor lub pakiet autorski musi wstępnie obliczyć podziały wierszy i użyć pojedynczego elementu „text” z co najmniej jednym elementem podrzędnym „tspan” z odpowiednimi wartościami atrybutów „x”, „y”, „dx” i „dy” aby ustawić nowe pozycje początkowe dla tych znaków, które rozpoczynają nowe linie. (Takie podejście umożliwia użytkownikowi zaznaczanie tekstu w wielu wierszach tekstu - zobacz Zaznaczanie tekstu i operacje na schowku).
- Wyraź tekst, który ma być renderowany w innej przestrzeni nazw XML, takiej jak XHTML [XHTML] osadzony w linii w elemencie „ForeignObject”. (Uwaga: dokładna semantyka tego podejścia nie jest obecnie w pełni zdefiniowana).
http://www.w3.org/TR/SVG11/text.html#Introduction
Jako prymityw, zawijanie tekstu może być symulowane przy użyciu dy
atrybutu i tspan
elementów, a jak wspomniano w specyfikacji, niektóre narzędzia mogą to zautomatyzować. Na przykład w Inkscape wybierz żądany kształt i żądany tekst i użyj opcji Tekst -> Przepływ do ramki. Umożliwi to napisanie tekstu z zawijaniem, które będzie zawijane w oparciu o granice kształtu. Upewnij się również, że postępujesz zgodnie z tymi instrukcjami, aby poinformować Inkscape o zachowaniu zgodności z SVG 1.1:
http://wiki.inkscape.org/wiki/index.php/FAQ#What_about_flowed_text.3F
Ponadto istnieje kilka bibliotek JavaScript, których można użyć do dynamicznego zautomatyzowania zawijania tekstu:
http://www.carto.net/papers/svg/textFlow/
Warto zwrócić uwagę na rozwiązanie CSVG polegające na zawijaniu kształtu do elementu tekstowego (np. Zobacz przykład „przycisku”), chociaż ważne jest, aby wspomnieć, że ich implementacja nie jest użyteczna w przeglądarce:
http://www.csse.monash.edu .au / ~ clm / csvg / about.html
Wspominam o tym, ponieważ opracowałem bibliotekę inspirowaną CSVG, która pozwala robić podobne rzeczy i działa w przeglądarkach internetowych, chociaż jeszcze jej nie wydałem.