Выравнивание текста в SVG - PullRequest
       45

Выравнивание текста в SVG

70 голосов
/ 11 сентября 2008

Я пытаюсь сделать документы SVG XML со смесью строк и кратких фрагментов текста (обычно два или три слова). Основная проблема, с которой я сталкиваюсь, это выравнивание текста по отрезкам.

Для горизонтального выравнивания я могу использовать text-anchor с left, middle или right. Я не могу найти эквивалент для вертикального выравнивания; alignment-baseline, похоже, этого не делает, поэтому в настоящее время я использую dy="0.5ex" в качестве ключа для выравнивания по центру.

Есть ли способ выравнивания по центру или вершине текста по вертикали?

Ответы [ 2 ]

60 голосов
/ 16 сентября 2008

Оказывается, вам не нужны явные текстовые пути. Firefox 3 имеет только частичную поддержку тегов вертикального выравнивания ( см. Эту тему ). Также кажется, что доминантная базовая линия работает только при применении в качестве стиля, тогда как привязка текста может быть частью стиля или атрибута тега.

<path d="M10, 20 L17, 20"
      style="fill:none; color:black; stroke:black; stroke-width:1.00"/>
<text fill="black" font-family="sans-serif" font-size="16"
      x="27" y="20" style="dominant-baseline: central;">
  Vertical
</text>

<path d="M60, 40 L60, 47"
      style="fill:none; color:red; stroke:red; stroke-width:1.00"/>
<text fill="red" font-family="sans-serif" font-size="16"
      x="60" y="70" style="text-anchor: middle;">
  Horizontal
</text>

<path d="M60, 90 L60, 97"
      style="fill:none; color:blue; stroke:blue; stroke-width:1.00"/>
<text fill="blue" font-family="sans-serif" font-size="16"
      x="60" y="97" style="text-anchor: middle; dominant-baseline: hanging;">
  Bit of Both
</text>

Это работает в Firefox. К сожалению, Inkscape, похоже, не обрабатывает доминантно-базовый уровень (или, по крайней мере, не так).

2 голосов
/ 15 мая 2014

Этого действительно можно добиться, установив alignment-baseline в central или middle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...