2010-07-22 3 views
13

Есть ли какие-либо средства для получения метрик шрифта в SVG? Я хотел бы получить: спуск, восхождение, максимальная высота, продвижение.Показатели SVG и шрифтов

Мне нужно это для рисования текста & графики вместе, как в блок-схемах.

Например, мне нужно нарисовать прямоугольник вокруг текста и нарисовать линию соединителя с середины ex-size (размер буквы «x»), а не от центра коробки.

ответ

3

Если у вас есть доступ к DOM, то есть число SVG DOM methods for text elements. Тогда есть метод getBBox, который доступен для большинства элементов svg.

Если вы имеете дело с SVGFonts, то данные уже доступны в формате XML как обычные атрибуты, например, ascent, descent и т.д.

Для вашего потребительной случае я бы рекомендовал getBBox, так как он может иметь дело с графикой элементы (в случае, если вы хотите добавить больше вещей, чем просто текст в диаграммы).

+2

Я бы определенно не рекомендовал использовать 'getBBox', поскольку он только уважает абсолютные границы текста. Однако, чтобы правильно разместить текст, нужно уважать восхождение и спуск. Атрибут 'y' SVGTextElement указывает вертикальную позицию _baseline_. Поэтому использование только «BBox» не помогло бы. Проблема в том, что методы SVG DOM не позволяют запрашивать информацию о восхождении и спуске! Я понятия не имею, почему этого не хватает в Spec. – radlan

+2

Чтобы вычислить спуск, вот что я сделал. Установите «y» для текстового элемента в SVG равным нулю. Теперь ваш базовый уровень равен нулю. Затем получите свойство «y2» из getBBox и это будет высота вашего «спуска». – Chad

Смежные вопросы