вертикальное выравнивание текстового элемента в SVG

Предположим, у меня есть файл SVG:

 b a  

Я хочу как-то выровнять вершину a и b . На самом деле, я хочу, чтобы мое позиционирование соответствовало линии roofline вместо baseline !

Свойство alignment-baseline – это то, что вы ищете, оно может принимать следующие значения

 auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | inherit 

Описание от w3c

Это свойство указывает, как объект выравнивается относительно его родителя. Это свойство указывает, какая базовая линия этого элемента должна быть выровнена с соответствующей базой данных родителя. Например, это позволяет использовать алфавитные базовые линии в тексте Roman для выравнивания по всем изменениям размера шрифта. По умолчанию используется базовая линия с тем же именем, что и вычисленное значение свойства alignment-baseline. То есть позиция «идеографической» точки выравнивания в направлении продвижения блока является позицией «идеографической» базовой линии в базовой таблице объекта, который выровнен.

Источник W3C

К сожалению, хотя это и есть «правильный» способ достижения того, что вы после этого, Firefox не реализовал множество атрибутов представления для текстового модуля SVG ( «SVG в Firefox» MDN Documentation )

Согласно спецификации SVG, alignment-baseline применяется только к , , и . Я понимаю, что он используется, чтобы компенсировать те из объекта над ними. Я думаю, что то, что вы ищете, является dominant-baseline .

Возможные значения dominant-baseline :

auto | use-script | no-change | reset-size | ideographic | alphabetic | hanging | mathematical | central | middle | text-after-edge | text-before-edge | inherit

Ознакомьтесь с рекомендацией W3C для свойства доминантной базовой линии для получения дополнительной информации о каждом возможном значении.

attr («доминирующая-базовая линия», «центральная»)

Если вы тестируете это в IE, базовая линия и базовая линия выравнивания не поддерживаются.

Самый эффективный способ центрировать текст в IE – использовать что-то подобное с помощью «dy»:

  Ya Text  

Отрицательное значение сдвинет его, и положительное значение dy сдвинет его. Я нашел, что использование -.4em кажется немного более сосредоточенным по вертикали для меня, чем -5em, но вы будете судьей этого.

Изучив рекомендацию SVG, я пришел к пониманию, что базовые свойства предназначены для размещения текста по сравнению с другим текстом, особенно при смешивании разных шрифтов и языков. Если вы хотите опубликовать текст так, чтобы он был сверху, тогда вам нужно использовать dy = "y + the height of your text" .

Давайте будем гением компьютера.