Как получить отдельные позиции символов текста SVG на сервере

Я пишу программное обеспечение на стороне сервера, которое делает фильм путем генерации отдельных кадров в SVG и рендеринга в PNG с помощью rsvg-convert. Фильм требует, чтобы эффект применялся к тексту в SVG на индивидуальной основе. С текстовым элементом SVG я не могу применить отдельные стили к каждому символу, поэтому я должен визуализировать текст, используя отдельные текстовые элементы для каждого символа.

Мой вопрос: каков наилучший способ получения позиций оси X каждого символа, чтобы при рисовании текста символ за символом он выглядел идентично тексту, нарисованному с помощью одного текстового элемента.

то есть.. <text x="100" y="100">aic</text> идентичный <text x="?" y="100">a</text> <text x="?" y="100">i</text> <text x="?" y="100">c</text>

У меня есть одно решение: при подготовке анимации в браузере используйте метод getExtentOfChar() текстового элемента SVG и передайте эти метаданные на сервер. Мне это не нравится, потому что оно оставляет меня открытым для вариантов реализации браузера, установленных шрифтов, ошибок браузера и т. Д. Кроме того, это затрудняет тестирование и не позволяет автоматически генерировать эти фильмы из сценария.

Я подозреваю, что мне нужно будет работать напрямую с библиотекой freetype2 или Pango, но я надеюсь, что кто-то уже решил эту проблему.

1 ответ

Если вы поместите символы в tspans, вы сможете их стилизовать: http://jsfiddle.net/longsonr/qxe4S/ не намного ли проще?

Другие вопросы по тегам