SVG 1.2 Minúsculo pacote de texto adicionado, mas a maioria das implementações do SVG que você encontrará no navegador (com exceção do Opera) não implementaram esse recurso. Normalmente, você é o desenvolvedor, para posicionar o texto manualmente.
A especificação SVG 1.1 fornece uma boa visão geral dessa limitação e as possíveis soluções para superá-la:
Cada elemento 'texto' faz com que uma única sequência de texto seja renderizada. O SVG não executa quebra automática de linha ou quebra de linha. Para obter o efeito de várias linhas de texto, use um dos seguintes métodos:
- O autor ou o pacote de autoria precisa pré-calcular as quebras de linha e usar vários elementos de 'texto' (um para cada linha de texto).
- O autor ou o pacote de autoria precisa pré-calcular as quebras de linha e usar um único elemento 'text' com um ou mais elementos filho 'tspan' com valores apropriados para os atributos 'x', 'y', 'dx' e 'dy' para definir novas posições iniciais para os caracteres que iniciam novas linhas. (Essa abordagem permite a seleção de texto do usuário em várias linhas de texto - consulte Seleção de texto e operações da área de transferência.)
- Expresse o texto a ser renderizado em outro espaço de nome XML, como XHTML [XHTML] incorporado embutido em um elemento 'ForeignObject'. (Nota: a semântica exata dessa abordagem não está completamente definida no momento.)
http://www.w3.org/TR/SVG11/text.html#Introduction
Como primitivo, o agrupamento de texto pode ser simulado usando o dy
atributo e os tspan
elementos e, como mencionado na especificação, algumas ferramentas podem automatizar isso. Por exemplo, no Inkscape, selecione a forma desejada e o texto desejado e use Texto -> Fluir para o quadro. Isso permitirá que você escreva seu texto, com quebra automática, que será quebrada com base nos limites da forma. Além disso, siga estas instruções para instruir o Inkscape a manter a compatibilidade com o SVG 1.1:
http://wiki.inkscape.org/wiki/index.php/FAQ#What_about_flowed_text.3F
Além disso, existem algumas bibliotecas JavaScript que podem ser usadas para automatizar dinamicamente a quebra de texto:
http://www.carto.net/papers/svg/textFlow/
É interessante observar a solução do CSVG para agrupar uma forma em um elemento de texto (por exemplo, veja o exemplo "botão"), embora seja importante mencionar que a implementação não é utilizável em um navegador:
http://www.csse.monash.edu .au / ~ clm / csvg / about.html
Estou mencionando isso porque desenvolvi uma biblioteca inspirada em CSVG que permite fazer coisas semelhantes e funciona em navegadores da web, embora ainda não a tenha lançado.