Масштабируемая векторная графика (Scalable Vector Graphics)

Текст

Разбить на страницы
Показывать лекцию целиком
Внимание! Для работы с этой лекцией необходимы учебные файлы, которые Вы можете загрузить здесь.

Элемент text

Элемент text предназначен для помещения в SVG – документ символьных данных. Как и в случае графических фигур координаты x и y текстовой строки отсчитываются от верхнего левого угла. Элемент поддерживает текстовые свойства, такие как размер шрифта, стиль, начертание, причем строка может быть выделена и скопирована (рис. 4.1):

(рис 4.1) Копирование текста из SVG – документа в блокнот

Для включения текста в документ достаточно указать расположение текстовой строки при помощи атрибутов x и y элемента text:

<text x="50" y="50">
      Сюда помещается текстовый фрагмент.
</text>

Текст, помещаемый в SVG документ, может быть индексирован поисковыми системами.

SVG поддерживает формат Unicode и поэтому один и тот же документ допускает локализацию на различных языках.

В табл. 4.1 приводятся некоторые атрибуты элемента text. Использование в коде атрибута со значением по умолчанию, как правило, равносильно отсутствию явного определения этого атрибута.

Атрибуты элемента textЗдесь и далее в диапазоне указываются наиболее употребительные значения. Полный их список можно посмотреть в спецификации формата SVG 1.1: http://www.w3.org/TR/2003/REC-SVG11-20030114/text.html Названия атрибутов совпадают с названиями CSS2 и поэтому детальное описание можно получить в самой спецификации: http://www.w3.org/TR/REC-CSS2/ Спецификация на русском языке доступна здесь: http://www.intuit.ru/department/internet/css2/
Название
4.1.1 direction
Описание
Направление текста. В некоторых языках (например, в арабском) принято писать текст справа налево. Для задания написания справа налево необходимо дополнительно включать атрибут unicode-bidi
Диапазон значений
rtl | ltr rtl - right to left – справа налево. ltr - left to right – слева направо
Значение по умолчанию
ltr
Название
4.1.2 dominant-baseline
Описание
Выравнивание текста относительно горизонтальной линии
Диапазон значений
auto | hanging | mathematical
Значение по умолчанию
auto
Название
4.1.3 fill
Описание
Цвет текста. Поддерживаются именованные значения, а также RGB код в десятичной и шестнадцатеричной формах.
Диапазон значений
Все множество цветов.
Значение по умолчанию
black ( черный).
Название
4.1.4 font-family
Описание
Шрифт текста.
Диапазон значений
Все шрифты, доступные на компьютере. При отсутствии заданного шрифта будет использован подобный (например, при отсутствии шрифта Arial будет использован Arial Bold )
Значение по умолчанию
Arial
Название
4.1.5 font-size
Описание
Размер шрифта.
Диапазон значений
Все значения, имеющие размерность <length> См. табл. 2.8
Значение по умолчанию
12 пт.
Название
4.1.6 font-size-adjust
Описание
В обычных шрифтах зрительно воспринимаемый размер шрифта в основном зависит не от свойства font-size, а от атрибута x-height (вертикальный размер строчной буквы "x" ). Параметр x-height сильно отличается у различных шрифтов, имеющих одно и то же значение свойства font-size. В результате шрифты с одинаковым значением параметра font-size зрительно воспринимаются как шрифты разного размера. Отношение значения параметра x-height к значению свойства font-size называется аспектом шрифта ( font-size-adjust ). Если аспект одного шрифта больше чем аспект другого, то, при одном и том же значении свойства font-size, первый шрифт выглядит больше. Для того, что бы создать зрительное впечатление о шрифтах равных размеров, следует увеличить размер второго шрифта так, что бы вертикальный размер строчных букв был одинаковым в обоих шрифтах. Более подробно о свойстве font-size-adjust см. в спецификации CSS2: http://www.w3.org/TR/REC-CSS2/fonts.html#propdef-font-size-adjust Версия перевода на русском языке: http://www.intuit.ru/department/internet/css2/15/css2_15.html
Диапазон значений
Все значения, имеющие размерность <length> См. табл. 2.8
Значение по умолчанию
none
Название
4.1.7 font-stretch
Описание
Сжатие и растяжение текста
Диапазон значений
normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded
Значение по умолчанию
normal
Название
4.1.8 font-style
Описание
Курсивный текст.
Диапазон значений
normal | italic | oblique
Значение по умолчанию
normal
Название
4.1.9 font-weight
Описание
Свойство определяет вес шрифта. Значения имеют следующий смысл: от 100 до 900 Эти значения формируют упорядоченную последовательность, где каждый номер обозначает вес, который темнее своего предшественника. normal То же, что "400". bold То же, что "700". bolder Определяет вес шрифта, более темный, чем наследуемый. Если такого веса нет, результатом будет более "темное" числовое значение (а шрифт не изменяется), если только наследуемое значение не "900", в этом случае результат будет также "900". lighter Определяет вес шрифта, назначаемый шрифту, который светлее, чем наследуемый. Если такого веса нет, результатом будет более "светлое" числовое значение (а шрифт не изменяется), если только наследуемое значение не "100", в этом случае результат будет также "100".
Диапазон значений
normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
Значение по умолчанию
normal
Название
4.1.10 glyph-orientation-horizontal
Описание
Горизонтальная ориентация символов. Возможен выбор из фиксированного диапазона значений угла.
Диапазон значений
0 | 90 | 180 | 270 (и значения со знаком минус)
Значение по умолчанию
auto или 0
Название
4.1.11 glyph-orientation-vertical
Описание
Вертикальная ориентация символов. Возможен выбор из фиксированного диапазона значений угла.
Диапазон значений
0 | 90 | 180 | 270 (И значения со знаком минус)
Значение по умолчанию
auto
Название
4.1.12 kerning
Описание
Интервал между буквами.
Диапазон значений
auto | <length> См. табл. 2.8
Значение по умолчанию
auto
Название
4.1.13 letter-spacing
Описание
Интервал между буквами.
Диапазон значений
normal | <length> См. табл. 2.8
Значение по умолчанию
normal
Название
4.1.14 text-anchor
Описание
Выравнивание текста относительно начала строки.
Диапазон значений
start, middle, end
Значение по умолчанию
start
Название
4.1.15 text-decoration
Описание
Подчеркивание, надчеркивание, перечеркивание текста
Диапазон значений
none | underline | overline | line-through
Значение по умолчанию
none
Название
4.1.16 unicode-bidi
Описание
Для работы атрибута direction со значением ltr необходимо наличие в коде свойства unicode-bidi со значением embed или override. Подробнее см. http://www.ssga.ru/metodich/css-2/9-12.htm
Диапазон значений
normal | embed | bidi-override
Значение по умолчанию
normal
Название
4.1.17 word-spacing
Описание
Интервал между словами
Диапазон значений
normal | <length> См. табл. 2.8
Значение по умолчанию
normal
Название
4.1.18 writing-mode
Описание
Этот атрибут устанавливает расположение текстового фрагмента как единого целого относительно исходной точки. Возможные значения, например, слева направо - сверху вниз ( left to right top to bottom ) не изменяют порядок самих букв в словах.
Диапазон значений
lr-tb | rl-tb | tb-rl | lr | rl | tb
Значение по умолчанию
lr-tb
Название
4.1.19 x
Описание
Абсцисса верхней левой точки текстового блока
Диапазон значений
<coordinate> См. табл. 2.8
Значение по умолчанию
0
Название
4.1.20 y
Описание
Ордината верхней левой точки текстового блока
Диапазон значений
<coordinate> См. табл. 2.8
Значение по умолчанию
0

В табл. 4.2 приводятся примеры использования основных свойств элемента text.

Элемент text.
Код Вид в браузере
4.2.1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text1.svg
     </desc>
   <text x="50" y="50">
    Простой текст
    </text>
</svg>
Описание
Текст без форматирования. Выводится черным цветом шрифтом Arial размером в 12 пт.
Код Вид в браузере
4.2.2
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text2.svg
     </desc>
   <text x="10" y="50" font-family="Comic Sans MC" 
         font-size="24" fill="indigo">
    Цветной текст
   </text>
</svg>
Описание
Цветной текст для которого определен шрифт и размер.
Код Вид в браузере
4.2.3
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="300"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text3.svg
     </desc>
   <text x="10" y="50"  
         style="font-family: Comic Sans MC; font-size: 24; fill: indigo">
    Цветной текст
   </text>
  
  <g font-family="Arial" font-size="40" stroke="black" stroke-width="1">
   <text x="10" y="100" fill="red">
  Red
   </text>
  
   <text x="10" y="150" fill="yellow">
  Yellow
   </text>
  
   <text x="10" y="200" fill="green">
  Green
   </text>
  
  </g>
</svg>
Описание
Для оформления первой строки применено встраивание стиля в тег элемента. Последующие строки объединены в группу для которой определено общее оформление.
Код Вид в браузере
4.2.4
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="200"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text4.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="20"  text-decoration="none" >
    Обычный текст
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="20"  text-decoration="underline" >
    Подчеркнутый текст
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="20"  text-decoration="line-through" >
    Зачеркнутый текст
   </text>
   <text x="10" y="135" font-family="Arial" 
         font-size="20"  text-decoration="overline" >
   Текст под чертой
   </text>
   <text x="10" y="170" font-family="Arial" 
         font-size="20"  text-decoration="underline overline" >
   Две черты
   </text>
</svg>
Описание
Атрибут text-decoration определяет начертание текста.
Код Вид в браузере
4.2.5
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="200"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text5.svg
     </desc>
     <defs>
    <style type="text/css">
      <![CDATA[
      text
      {
       font-family: Arial;
        font-size: 20;
      }
      text.obichniy
      {
        text-decoration: none;        
      }
      text.podcherknutiy
      {
      text-decoration: underline;      
      }
      text.zacherknutiy
      {
        text-decoration: line-through;        
      }
      text.podChertoy
      {
        text-decoration: overline;    
      }
      text.dveCherti
      {
        text-decoration: underline overline;        
      }
          
      ]]>
    </style>
</defs>
   <text x="10" y="30" class="obichniy" >
    Обычный текст
   </text>
   <text x="10" y="65" class="podcherknutiy" >
    Подчеркнутый текст
   </text>
   <text x="10" y="100" class="zacherknutiy" >
    Зачеркнутый текст
   </text>
   <text x="10" y="135" class="podChertoy" >
   Текст под чертой
   </text>
   <text x="10" y="170" class="dveCherti" >
   Две черты
   </text>
</svg>
Описание
Использование классов, определяющих начертание текста.
Код Вид в браузере
4.2.6
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="480"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text6.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="20" font-weight="normal">
    Обычный текст
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="20"   font-weight="bold" >
    Жирный текст
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="20" font-weight="bolder">
    Текст bolder
   </text>
   <text x="10" y="135" font-family="Arial" 
         font-size="20"  font-weight="lighter" >
   Текст lighter
   </text>
   <text x="10" y="170" font-family="Arial" 
         font-size="20"  font-weight="100" >
   Текст 100
   </text>
   <text x="10" y="205" font-family="Arial" 
         font-size="20"  font-weight="200" >
   Текст 200
   </text>
   <text x="10" y="240" font-family="Arial" 
         font-size="20"  font-weight="300" >
   Текст 300
   </text>
   <text x="10" y="275" font-family="Arial" 
         font-size="20"  font-weight="400" >
   Текст 400
   </text>
   <text x="10" y="310" font-family="Arial" 
         font-size="20"  font-weight="500" >
   Текст 500
   </text>
   <text x="10" y="345" font-family="Arial" 
         font-size="20"  font-weight="600" >
   Текст 600
   </text> 
   <text x="10" y="380" font-family="Arial" 
         font-size="20"  font-weight="700" >
   Текст 700
   </text> 
   <text x="10" y="415" font-family="Arial" 
         font-size="20"  font-weight="800" >
   Текст 800
   </text> 
   <text x="10" y="450" font-family="Arial" 
         font-size="20"  font-weight="900" >
   Текст 900
   </text> 
</svg>
Описание
Примеры использования свойства font-weight, поддерживающего именованные и числовые значения.
Код Вид в браузере
4.2.7
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="200"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text7.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="20"  font-style="normal" >
    Обычный текст
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="20"  font-style="italic" >
    Курсивный текст
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="20"  font-style="oblique" >
    Курсивный текст
   </text>
  </svg>
Описание
Получение курсивного текста. Значение oblique атрибута font-style задает курсивное начертание строк прописными буквами.
Код Вид в браузере
4.2.8
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="445"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text8.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="20"  font-stretch="normal" >
 font-stretch
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="20"  font-stretch="wider" >
 font-stretch
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="20"  font-stretch="normal" >
 font-stretch
   </text>
   <text x="10" y="135" font-family="Arial" 
         font-size="20"  font-stretch="narrower" >
 font-stretch
   </text>
   <text x="10" y="170" font-family="Arial" 
         font-size="20"  font-stretch="ultra-condensed" >
 font-stretch
   </text>
   <text x="10" y="205" font-family="Arial" 
         font-size="20"  font-stretch="extra-condensed" >
 font-stretch
   </text>
   <text x="10" y="240" font-family="Arial" 
         font-size="20"  font-stretch="condensed" >
 font-stretch
   </text>
   <text x="10" y="275" font-family="Arial" 
         font-size="20"  font-stretch="semi-condensed" >
 font-stretch
   </text>
   <text x="10" y="310" font-family="Arial" 
         font-size="20"  font-stretch="semi-expanded" >
 font-stretch
   </text>
   <text x="10" y="345" font-family="Arial" 
         font-size="20"  font-stretch="expanded" >
 font-stretch
   </text>
   <text x="10" y="380" font-family="Arial" 
         font-size="20"  font-stretch="extra-expanded" >
 font-stretch
   </text>
   <text x="10" y="415" font-family="Arial" 
         font-size="20"  font-stretch="ultra-expanded" >
 font-stretch
   </text>
  </svg>
Описание
Уплотненное и разреженное начертание слов.
Код Вид в браузере
4.2.9
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="445"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text9.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="16"  kerning="auto" >
Кернинг
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="16" kerning="10" >
Кернинг
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="16"  kerning="15" >
Кернинг
   </text>      
   <text x="10" y="135" font-family="Arial" 
         font-size="16"  kerning="20" >
Кернинг
   </text>      
  </svg>
Описание
Атрибут kerning, задающий межбуквенный интервал в числовых значениях.
Код Вид в браузере
4.2.10
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="160"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text10.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="16"  letter-spacing="normal" >
Кернинг
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="16" letter-spacing="10" >
Кернинг
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="16"  letter-spacing="15" >
Кернинг
   </text>      
   <text x="10" y="135" font-family="Arial" 
         font-size="16"  letter-spacing="20" >
Кернинг
   </text>      
  </svg>
Описание
Атрибут letter-spacing аналогичен атрибуту кернинг.
Код Вид в браузере
4.2.11
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="160"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text11.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="12"  word-spacing="normal" >
Интервал между словами
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="12" word-spacing="10" >
Интервал между словами
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="12"  word-spacing="15" >
Интервал между словами
   </text>      
   <text x="10" y="135" font-family="Arial" 
         font-size="12" word-spacing="20" >
Интервал между словами
   </text>      
  </svg>
Описание
Атрибут word-spacing задает интервал между словами.
Код Вид в браузере
4.2.12
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="120" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text12.svg
     </desc>
   <text x="105" y="30" font-family="Arial" 
         font-size="16" text-anchor="start">
  text-anchor
   </text>
   <text x="105" y="65" font-family="Arial" 
         font-size="16" text-anchor="middle">
  text-anchor
   </text>
   <text x="105" y="100" font-family="Arial" 
         font-size="16" text-anchor="end">
  text-anchor
   </text>
</svg>
Описание
Выравнивание текста – слева, справа и по центру.
Код Вид в браузере
4.2.13
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="190" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text13.svg
     </desc>

     <defs>
    <style type="text/css">
      <![CDATA[
      text
      {
       font-family: Arial;
        font-size: 16;
      }
      text.ltr
      {
      direction:ltr;    
      unicode-bidi: bidi-override;  
      }
      text.rtl
      {
        direction:rtl;    
        unicode-bidi: bidi-override;    
      }
      ]]>
    </style>
</defs>
   <text x="50" y="30" class="ltr"  >
  Направление 
   </text>
   <text x="50" y="65" class="ltr">
  Direction
   </text>
   <text x="50" y="100" class="rtl" >
  Направление
   </text>
   <text x="50" y="135" class="rtl">
  Direction
   </text>
  
   <text x="50" y="170" direction="rtl" unicode-bidi="bidi-override">
  Просто текст
   </text>
</svg>
Описание
Атрибуты direction и unicode-bidi
Код Вид в браузере
4.2.14
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="250" height="400" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text14.svg
     </desc>
   <text x="125" y="30" writing-mode="lr" >
writing-mode="lr"
   </text>
   <text x="125" y="65" writing-mode="lr-tb">
writing-mode="lr-tb"
   </text>
   <text x="125" y="100" writing-mode="rl" >
 writing-mode="rl"
   </text>
   <text x="125" y="135" writing-mode="rl-tb">
writing-mode="rl-tb"
   </text>
   <text x="125" y="170" writing-mode="tb">
writing-mode="tb"
   </text>
   <text x="160" y="170" writing-mode="tb-rl">
writing-mode="tb-rl"
   </text>
  <!--Вспомогательные фигуры-->
  <line x1="125" y1="0" x2="125" y2="400" 
      stroke-width="1" stroke="blue"></line>
  <line x1="0" y1="170" x2="250" y2="170" 
      stroke-width="1" stroke="blue"></line>
  <line x1="160" y1="170" x2="160" y2="400" 
      stroke-width="1" stroke="blue"></line>
</svg>
Описание
Атрибут writing-mode, задает направление написания текста относительно исходной точки с сохранением расположения букв слева направо.
Код Описание
4.2.15
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="450" height="300" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text15.svg
     </desc>
   <text x="10" y="30" 
         glyph-orientation-horizontal="0">
         glyph-orientation-horizontal="0"
   </text>
   <text x="10" y="65" 
         glyph-orientation-horizontal="90">
         glyph-orientation-horizontal="90"
   </text>
   <text x="10" y="100" 
         glyph-orientation-horizontal="180" >
         glyph-orientation-horizontal="180"
   </text>
   <text x="10" y="135" 
         glyph-orientation-horizontal="270">
         glyph-orientation-horizontal="270"
   </text>
   <text x="10" y="170" 
         glyph-orientation-horizontal="-90">
         glyph-orientation-horizontal="-90"
   </text>
   <text x="10" y="205"
         glyph-orientation-horizontal="-180">
         glyph-orientation-horizontal="-180"
   </text>
   <text x="10" y="240"
         glyph-orientation-horizontal="-270">
         glyph-orientation-horizontal="-270"
   </text>
</svg>
Атрибут glyph-orientation-horizontal позволит без труда получить "зеркальное" отображение текста
Вид в браузере
Код Вид в браузере
4.2.16
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="300" height="450" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text16.svg
     </desc>


   <text x="10" y="10" writing-mode="tb-rl" 
         glyph-orientation-vertical="0"> 
         glyph-orientation-vertical="0"
   </text>
   <text x="45" y="10" writing-mode="tb-rl"   
         glyph-orientation-vertical="90"> 
         glyph-orientation-vertical="90"
   </text>
   <text x="80" y="10" writing-mode="tb-rl" 
         glyph-orientation-vertical="180" > glyph-orientation-vertical="180"
   </text>
   <text x="115" y="10" writing-mode="tb-rl"  
         glyph-orientation-vertical="270"> glyph-orientation-vertical="270"
   </text>
  
   <text x="150" y="10" writing-mode="tb-rl" 
         glyph-orientation-vertical="-90">
         glyph-orientation-horizontal="-90"
   </text>
  
   <text x="185" y="10" writing-mode="tb-rl" 
         glyph-orientation-vertical="-180">
         glyph-orientation-vertical="-180"
   </text>
  
   <text x="220" y="10" writing-mode="tb-rl" 
         glyph-orientation-vertical="-270">
         glyph-orientation-vertical="-270"
   </text>
  
  
</svg>
Описание
Атрибут glyph-orientation-vertical со значением "0" позволяет получить одно из наиболее употребительных оформлений текста.
Код Вид в браузере
4.2.17
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="320" height="280" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text17.svg
     </desc>


   <text x="30" y="30" font-size-adjust="0">
font-size-adjust="0"
   </text>
   <text x="30" y="65" font-size-adjust="0.4">
font-size-adjust="0.4"
   </text>
   <text x="30" y="100" font-size-adjust="0.5">
font-size-adjust="0.5"
   </text>
   <text x="30" y="135" font-size-adjust="1">
font-size-adjust="1"
   </text>
  
   <text x="30" y="170" font-size-adjust="1.1">
font-size-adjust="1.1"
   </text>
  
   <text x="30" y="205" font-size-adjust="1.2">
font-size-adjust="1.2"
   </text>
  
   <text x="30" y="240" font-size-adjust="1.3">
font-size-adjust="1.3"
   </text>
  
</svg>
Описание
Атрибут font-size-adjust со значением "0.5" достаточно близок к исходному тексту для шрифта Arial, принятому по умолчанию.
Код Вид в браузере
4.2.18
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="180" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text18.svg
     </desc>


   <text x="30" y="30" 
         dominant-baseline="auto">
         dominant-baseline="auto"
   </text>
   <text x="30" y="65" 
         dominant-baseline="hanging">
         dominant-baseline="hanging"
   </text>
   <text x="30" y="100" 
         dominant-baseline="mathematical">
         dominant-baseline="mathematical"
   </text>
  
   <text x="30" y="135">
text
   </text>
  
  <!--Вспомогательные фигуры-->
  <line x1="10" y1="30" x2="250" y2="30" 
      stroke-width="1" stroke="blue"></line>
  <line x1="10" y1="65" x2="250" y2="65" 
      stroke-width="1" stroke="blue"></line>
  <line x1="10" y1="100" x2="250" y2="100" 
      stroke-width="1" stroke="blue"></line>
  <line x1="10" y1="135" x2="250" y2="135" 
      stroke-width="1" stroke="blue"></line>
</svg>
Описание
Наиболее употребительные значения атрибута dominant-baseline позволяют задавать расположение строки относительно основной линии.

Элемент tspan

Попробуем разместить в SVG - документе достаточно большой фрагмент текста:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPangramma.svg
     </desc>
   <text x="10" y="50">
Съешь еще этих мягких французских булок, да выпей чаю.  
   Съешь еще этих мягких французских булок, да выпей чаю.
Съешь еще этих мягких французских булок, да выпей чаю.  
   Съешь еще этих мягких французских булок, да выпей чаю.
Съешь еще этих мягких французских булок, да выпей чаю.  
   Съешь еще этих мягких французских булок, да выпей чаю.
   </text>
</svg>

Несмотря на форматирование текста в коде в результате мы видим одну длинную строку, без разбиения на абзацы (рис. 4.2):

(рис 4.2) Пример textPangramma.svg

Элемент text не поддерживает перенос строк. Конечно, можно разбить этот фрагмент на три части и для каждой из них определить координаты элемента text. Но это не лучший способ. Для подобных задач в SVG – графике имеется элемент tspan, предназначенный для оформления отдельных фрагментов, слов или даже букв. Для рассматриваемого случая код должен выглядеть так:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
      <title>Лекция 4. Текст</title>
      <desc>Пример tspanPangramma.svg</desc>
   <text x="10" y="50">
            <tspan x="10" dy="1em">
                   Съешь еще этих мягких французских булок, да выпей чаю.  
                   Съешь еще этих мягких французских булок, да выпей чаю.
            </tspan>
            <tspan x="10" dy="1em">
                   Съешь еще этих мягких французских булок, да выпей чаю.  
                   Съешь еще этих мягких французских булок, да выпей чаю.
            </tspan>
            <tspan x="10" dy="1em">
                  Съешь еще этих мягких французских булок, да выпей чаю.  
                  Съешь еще этих мягких французских булок, да выпей чаю.
            </tspan>
   </text>
</svg>

Теперь все предложения помещаются в документе (рис. 4.3):

(рис 4.3) Пример tspanPangramma.svg

Элемент tspan помещается внутри элемент text и задает дополнительное форматирование при помощи атрибутов, значения которых приводятся в табл. 4.3

Атрибуты элемента tspan
Название
4.3.1 x
Описание
Абсцисса текстовой строки отсчитываемая относительно системы координат исходного SVG – документа т.е. это абсолютная координата.
Диапазон значений
<coordinate> см. табл. 2.8
Значение по умолчанию
Совпадает с абсциссой данного элемента text
Название
4.3.2 y
Описание
Ордината текстовой строки отсчитываемая относительно системы координат исходного SVG – документа т.е. это абсолютная координата.
Диапазон значений
<coordinate> см. табл. 2.8
Значение по умолчанию
Совпадает с ординатой данного элемента text
Название
4.3.3 dx
Описание
Горизонтальный отступ текстового фрагмента, отсчитываемый относительно начальной позиции с учетом направления координатных осей (рис 4.4(рис 4.4) Атрибуты dx и dy элемента tspan
Диапазон значений
<coordinate> см. табл. 2.8
Значение по умолчанию
0
Название
4.3.4 dy
Описание
Вертикальный отступ текстового фрагмента, отсчитываемый относительно начальной позиции с учетом направления координатных осей (см. рис. 4.4), т.е это относительная координата.
Диапазон значений
<coordinate> см. табл. 2.8
Значение по умолчанию
0
Название
4.3.5 rotate
Описание
Поворот первого символа, заключенного в элемент tspan, относительно горизонтальной оси. Положительному росту значений угла соответствует направление вращения часовой стрелки.
Диапазон значений
От 0 до 360 градусов <angle>, см. табл. 2.8
Значение по умолчанию
0
Название
4.3.6 baseline-shift
Описание
Атрибут для выравнивания блоков текста относительно горизонтальной линии. Самый удобный способ написания верхних и нижних индексов.
Диапазон значений
baseline | sub | super
Значение по умолчанию
baseline

В табл. 4.4 приводятся примеры использования элемента tspan.

Элемент tspan
Код Вид в браузере
4.4.1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" xmlns="http://www.w3.org/2000/svg" version="1.1">
	<title>Лекция 4. Текст</title>
	<desc>
		Пример tspan1.svg
	</desc>
	
<g font-family="Arial" font-size="16" >
    <text x="30" y="30" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" > выше,</tspan>
      сильнее
    </text>
  </g>
  
</svg>
Описание
Шрифт и его размер задается в группе. Это оформление распространяется и на содержимое вложенного элемента tspan. Для выделения цветом и шрифтом отдельного слова применяется элемент tspan с атрибутами font-weight и fill элемента text.
Код Вид в браузере
4.4.2
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan2.svg
     </desc>
   <text x="30" y="30" fill="blue" 
         font-family="Arial" font-size="16"  >
      Быстрее,
        <tspan font-weight="bold" 
               fill="red" > выше,</tspan>
      сильнее
   </text>
</svg>
Описание
Шрифт и его размер задается внутри элемента text. Это оформление распространяется и на содержимое вложенного элемента tspan.
Код Вид в браузере
4.4.3
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan3.svg
     </desc>
   <text x="30" y="30" fill="blue" 
         font-family="Arial" font-size="16">
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               dy="-10"> выше,</tspan>
      сильнее
   </text>
</svg>
Описание
Атрибут dy задает вертикальное смещение содержимого элемента tspan, причем последующий текст также располагается на новом уровне.
Код Вид в браузере
4.4.4
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan4.svg
     </desc>
   <text x="30" y="30" fill="blue" 
         font-family="Arial" font-size="16"  >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               dy="-10"> выше,</tspan>
           <tspan dy="10">сильнее</tspan>
   </text>
</svg>
Описание
Для выравнивания последующего текста снова применяется элемент tspan со значением атрибута dy="10", которое возвращает текстовую строку на прежний уровень.
Код Вид в браузере
4.4.5
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan5.svg
     </desc>
   <text x="30" y="30" fill="blue" 
         font-family="Arial" font-size="16">
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               dy="-10 10 -10 10"> выше,</tspan>
        <tspan dy="0">сильнее</tspan>
   </text>
</svg>
Описание
Атрибут dy может использоваться для задания смещения отдельных букв. В данном случае для расположения четырех букв в слове "выше" применяется атрибут dy, состоящий из четырех значений, разделенных пробелами.
Код Вид в браузере
4.4.6
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan6.svg
     </desc>
   <text x="30" y="30" fill="blue" font-family="Arial" 
         font-size="16"  >
      Быстрее,                       
        <tspan font-weight="bold" fill="red" 
               dy="-5 5 -5 5"> выше,</tspan>
        <tspan dy="-5 5 -5 5 -5 5 -5">
               сильнее</tspan>
      
   </text>
  
</svg>
Описание
Применение атрибутов dy для оформление слов из четырех и семи букв.
Код Вид в браузере
4.4.7
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan7.svg
     </desc>

<g font-family="Arial" font-size="16" >
   <text x="30" y="30" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               dx="30"> выше,</tspan>
      сильнее
   </text>
  </g>
</svg>
Описание
Атрибут dx задает горизонтальное смещение содержимое элемента tspan, причем последующий текст также располагается на новой позиции.
Код Вид в браузере
4.4.8
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan8.svg
     </desc>
<g font-family="Arial" font-size="16" >
   <text x="30" y="30" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               dx="10 10 10 10 "> выше,</tspan>
      сильнее
   </text>
  </g>
</svg>
Описание
Атрибут dx также может использоваться для задания смещения отдельных букв. В данном случае для расположения четырех букв в слове "выше" применяется атрибут dx, состоящий из четырех значений разделенных пробелами.
Код Вид в браузере
4.4.9
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan9.svg
     </desc>

<g font-family="Arial" font-size="16" >
   <text x="30" y="30" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               dx="10 -5 10 -5 "> выше,</tspan>
      сильнее
   </text>
  </g>
  
</svg>
Описание
Последовательное смещение отдельных букв позволяет получить эффект наложения.
Код Вид в браузере
4.4.10
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan10.svg
     </desc>
   <text x="30" y="30" fill="blue" font-family="Arial" 
         font-size="16"  >
      Быстрее,                       
        <tspan font-weight="bold" fill="red" 
               dy="-5 5 -5 5" dx="5 5 5 5"> 
                  выше,
        </tspan>
        <tspan dy="-5 5 -5 5 -5 5 -5" 
               dx="5 5 5 5 5 5 5">
                  сильнее
        </tspan>
   </text>
</svg>
Описание
Вертикальное и горизонтальное смещение букв.
Код Вид в браузере
4.4.11
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="150" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan11.svg
     </desc>
   <text fill="blue" font-family="Arial" 
         font-size="16">
        <tspan x="30 45 60 75 90" y="50">
        Верх и 
      </tspan>
      <tspan x="45 60 75" y="100">
         низ
      </tspan>
   </text>
</svg>
Описание
Задание расположения букв при помощи абсолютных координат x и y.
Код Вид в браузере
4.4.12
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan12.svg
     </desc>
   <text fill="blue" font-family="Arial" 
         font-size="16"  >
        <tspan  x="30 40 50 60 70 80 90" 
               y="85 75 65 55 45 35 25 "> Быстрее, </tspan>                
        <tspan font-weight="bold" fill="red" 
               x=" 60 70 80 90"  y="85 75 65 55">
                выше,
        </tspan>
        <tspan x="90 100 110 120 130 140 150" 
               y="85 75 65 55 45 35 25 ">
                сильнее
        </tspan>
   </text>
</svg>
Описание
Задание расположения букв при помощи наборов абсолютных координат x и y.
Код Вид в браузере
4.4.13
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan13.svg
     </desc>
<g font-family="Arial" font-size="40" >
   <text x="5" y="50" fill="blue" >
        <tspan  rotate="45 45 45 45 45"> Вкривь</tspan>
        <tspan font-weight="bold" fill="red" 
               rotate="15">и</tspan>
     <tspan  rotate="-45 -45 -45 -45 -45">вкось</tspan>
   </text>
  </g>
</svg>
Описание
Атрибут rotate предназначен для поворота отдельных букв.
Код Вид в браузере
4.4.14
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="250" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan14.svg
     </desc>
<g font-family="Arial" font-size="16">
   <text x="30" y="30" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               baseline-shift="baseline" > выше,</tspan>
      сильнее
   </text>
   <text x="30" y="80" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               baseline-shift="sub" > выше,</tspan>
      сильнее
   </text>
   <text x="30" y="130" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               baseline-shift="super" > выше,</tspan>
      сильнее
   </text>
   <text x="30" y="180" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               baseline-shift="-100%" > выше,</tspan>
      сильнее
   </text>
    
   <text x="30" y="230" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               baseline-shift="5" > выше,</tspan>
      сильнее
   </text>
  </g>
  
</svg>
Описание
Выравнивание текстового фрагмента относительно горизонтальной линии при помощи атрибута baseline-shift. Можно задавать также числовые значения смещения.
Код Вид в браузере
4.4.15
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="400" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan15.svg
     </desc>

     <!--Эмблема пожарного крана-->
     <rect  x="30" y="30" 
           height="50" width="50" fill="none" 
           stroke="red" stroke-width="5"></rect>
     <text x="38" y="68" fill="red" 
           font-family="Arial" font-size="30">
     <tspan dx="-16">K</tspan>     
   </text>

   <!--Химическая формула воды-->
   <text x="100" y="68" fill="blue" 
         font-family="Arial" font-size="40">
       H
       <tspan dy="12" font-size="20" dx="-10">2</tspan>   
       <tspan dy="-12" dx="-10" >O</tspan>   
   </text>
   <!--Химическая формула серной кислоты-->
   <text x="50" y="120" fill="orange" 
         font-family="Arial" font-size="40">
       H
        <tspan  font-size="20" 
               baseline-shift="-10">2</tspan>   
        <tspan  baseline-shift="0" >S</tspan>   
        <tspan  baseline-shift="0" >O</tspan>  
        <tspan  font-size="20"
               baseline-shift="-10" >4</tspan>  
   </text>  
    
         <!--Эмблема, похожая на LaTeX-->
   <text x="50" y="180" fill="black" 
         font-family="Times" font-size="40">
       L
        <tspan font-size="32" 
                  dy="-5" dx="-21">A</tspan>   
        <tspan dy="5"  dx="-12">T</tspan>   
        <tspan dy="7"  dx="-13">E</tspan>  
        <tspan dy="-7" dx="-13">X</tspan> 
   </text> 
         <!--Биквадратное уравнение-->
   <text x="20" y="250" fill="green" 
         font-family="Comic Sans MC" font-size="30">
       ax
        <tspan baseline-shift="super" 
               font-size="20">4</tspan>
       +bx
        <tspan baseline-shift="super" 
               font-size="20">2</tspan>
       +с=0
   </text>
    
         <!--Эмблема хакеров-->
   <text x="20" y="300" fill="black" 
         font-family="Verdana" font-size="40">
          0 1 0
        <tspan x="20" y="340" >0 0 1</tspan>   
        <tspan  x="20" y="380"> 1 1 1</tspan>   
  
   </text>
  
   <!--Cноска на  икс в квадрате-->
   <text x="160" y="350" fill="black" 
         font-family="Verdana" font-size="60">
          X
        <tspan baseline-shift="super" font-size="30" 
               dx="-15"  >2</tspan>   
        <tspan dy="-50" font-size="15" 
               dx="-15"> 2</tspan>   
     </text>
</svg>
Описание
Несколько примеров, иллюстрирующих возможности SVG – графики создания сложных текстовых элементов. Все эти строки остаются текстом, который может быть скопирован.

Элемент tspan также может содержать все прочие атрибуты элемента text кроме свойств writing-mode, glyph-orientation-vertical и text-anchor.

Элемент tref

В большом SVG – документе может возникнуть потребность в многократной вставке одного и того же блока текста. Для уменьшения размера файла в этом случае удобнее использовать ссылку на однократно определенный фрагментЭта концепция напоминает использование примитивов в XML – документах: http://www.intuit.ru/department/internet/xml/6/xml_6.html :

<defs>
   <text id="myText" >
    Простой текст
   </text>
</defs>
  
<text>
   <tref xlink:href="#myText" x="50" y="50"></tref>
</text>

Исходный фрагмент помещается в секцию defs, а далее он может быть отображен в любом месте документа при помощи элемента tref, помещаемого внутри элемента text. В табл. 4.5 приводятся примеры применения этого элемента.

Элемент tref
Код Вид в браузере
4.5.1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример tref1.svg
     </desc>
<defs>
   <text id="myText" >
    Простой текст
   </text>
 </defs>
  
   <text>
<tref xlink:href="#myText" x="50" y="50"></tref>
   </text>
</svg>
Описание
Простая вставка определенного фрагмента текста в документ. Без вставки элемента tref исходный фрагмент, определенный в секции defs, виден не будет.
Код Вид в браузере
4.5.2
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример tref2.svg
     </desc>
     <defs>
   <text id="myText"  >
    Простой текст
   </text>
  </defs>
  
   <text>
<tref xlink:href="#myText" x="30" y="50" 
      font-family="Arial" font-size="20" 
      fill="red"></tref>
   </text>
</svg>
Описание
Вставка текстового фрагмента с заданием оформления.

Элемент tref также может содержать все прочие атрибуты элемента text кроме свойств writing-mode и glyph-orientation-vertical.

Элемент textPath

Одной из самых интересных возможностей элемента text является привязка к произвольной траектории, определяемой элементом Path:

<defs>
  <!--Объект Path-->
  <path id="myPath" d="M25,75 C25,15 175,15 175,75" /> 
</defs>

<text font-size="24" text-anchor="middle" fill="blue">
   <textPath xlink:href="#myPath" startOffset="50%">
          Текст на кривой
   </textPath>
</text>

Поскольку элемент path, определяется в секции defs, то он остается невидимым в SVG – документе даже при задании оформления кривой:

<defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75" 
        style="fill:none; stroke:green;stroke-width:3"/> 
</defs>

Ссылка на кривую задается при помощи элемента textPath. Атрибут startOffset, задаваемый в процентах, определяет расположение текста – 0 % соответствуют началу, а 100% - концу кривой. В табл. 4.6 приводятся примеры использования этого элемента.

Элемент textPath.
Код Вид в браузере
4.6.1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath1.svg
     </desc>
     <defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75"/> 
     </defs>

   <text font-size="24" text-anchor="middle" 
         fill="blue">
   <textPath xlink:href="#myPath" startOffset="50%">
          Текст на кривой
        </textPath>
   </text>
</svg>
Описание
Расположение текста на середине кривой. См. пример CubicCurve1.svg
Код Вид в браузере
4.6.2
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath2.svg
     </desc>
     <defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75" /> 
     </defs>

   <text 
         font-size="12" text-anchor="middle" fill="blue">
   <textPath xlink:href="#myPath" startOffset="50%">
          Текст на кривой
        </textPath>
   </text>
<!--Вспомогательная фигура-->
<path d="M25,75 C25,15 175,15 175,75" 
      style="fill:none; stroke:green;stroke-width:3"/> 
</svg>
Описание
Для отображения кривой в документе элемент Path был добавлен в качестве обычной фигуры.
Код Вид в браузере
4.6.3
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath3.svg
     </desc>
     <defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75" /> 
     </defs>

   <text 
         font-size="12" text-anchor="middle" fill="blue">
   <textPath xlink:href="#myPath" startOffset="25%">
          Текст на кривой
        </textPath>
   </text>
<!--Вспомогательная фигура-->
<path d="M25,75 C25,15 175,15 175,75" 
      style="fill:none; stroke:green;stroke-width:3"/> 
</svg>
Описание
Расположение текста в начале кривой.
Код Вид в браузере
4.6.4
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath4.svg
     </desc>
     <defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75" /> 
     </defs>

   <text 
         font-size="12" text-anchor="middle" fill="blue">
   <textPath xlink:href="#myPath" startOffset="75%">
          Текст на кривой
        </textPath>
   </text>
<!--Вспомогательная фигура-->
<path d="M25,75 C25,15 175,15 175,75" style="fill:none; stroke:green;stroke-width:3"/> 
</svg>
Описание
Расположение текста в конце кривой.
Код Вид в браузере
4.6.5
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath5.svg
     </desc>
     <defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75" /> 
     </defs>

   <text font-size="12" text-anchor="middle" 
         fill="blue">
      <textPath xlink:href="#myPath" startOffset="95"  >
            Быстрее,
        <tspan font-weight="bold" fill="red" 
               dy="-10"> выше,</tspan>
        <tspan dy="10">сильнее</tspan>
      </textPath>
   </text>
<!--Вспомогательная фигура-->
<path d="M25,75 C25,15 175,15 175,75" 
      style="fill:none; stroke:green;stroke-width:3"/> 
</svg>
Описание
Элемент tspan может быть добавлен внутри текста, размещаемого на кривой.
Код Вид в браузере
4.6.6
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath6.svg
     </desc>
     <defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75" /> 
     </defs>
   <text 
         font-size="12" text-anchor="middle" fill="blue">
   <textPath xlink:href="#myPath" startOffset="50%" 
             glyph-orientation-horizontal="270">
          Текст на кривой
        </textPath>
   </text>
<!--Вспомогательная фигура-->
<path d="M25,75 C25,15 175,15 175,75" 
      style="fill:none; stroke:green;stroke-width:3"/> 
</svg>
Описание
Применение атрибута glyph-orientation-horizontal для текста на кривой.
Код Описание
4.6.7
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="700" height="150"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath7.svg
     </desc>
     <defs>
     <!--Объект Path-->
<path id="myPath" 
      d="M25,75 Q100,25 175,75 T 325,75 T475, 75 T 625,75" /> 
     </defs>

   <text font-size="12" text-anchor="middle" 
         fill="blue">
     <textPath xlink:href="#myPath" startOffset="50%" >
          При рисовании кривых с повторяющимися фрагментами удобно использовать команду 
          T для упрощения кода. 
     </textPath>
   </text>
<!--Вспомогательная фигура-->
<path d="M25,75 Q100,25 175,75 T 325,75 T475, 75 T 625,75" 
      style="fill:none; stroke:green;stroke-width:2"/> 
</svg>
Размещение текста на квадратичной кривой Безье. См. QuadraticCurve5.svg
Вид в браузере

Расположение текста на кривой в Corel Draw и SVG

Читатели, знакомые с программой Corel Draw, несомненно, обратили внимание на возможность SVG – графики создавать текст с привязкой к траектории, поскольку такая опция есть в самой программе. Посмотрим на код, который генерирует Corel Draw при создании подобного SVG – рисунка. Выбираем инструмент рисования Безье (рис. 4.5) и проводим несколько линий.

(рис 4.5) Выбор инструмента "Кривая Безье"

Выделяем созданный объект, в главном меню программы переходим "Text – Fit Text To Path" (рис. 4.6):

(рис 4.6) Привязка текста к заданной траектории

Вводим текст – он размещается на траектории, затем экспортируем рисунок (рис. 4.7):

(рис 4.7) Экспорт готового изображения

Внимательно изучив созданный код, замечаем, что расположение текста на кривой достигается заданием абсолютных координат каждой буквы и ее поворотом (фрагмент кода TextOnAPathCorelDraw.svg):

<text x="2.07099" y="4.97302"  class="fil1 fnt0">
  <tspan rotate="407">T</tspan>   
</text>
<text x="2.64671" y="5.59955"  class="fil1 fnt0">
  <tspan rotate="401">e</tspan>   
</text>
<text x="3.35142" y="6.20915"  class="fil1 fnt0">
  <tspan rotate="391">x</tspan>   
</text>
<text x="4.16422" y="6.68328"  class="fil1 fnt0">
  <tspan rotate="382">t</tspan>   
</text>
<text x="4.58388" y="6.86955"  class="fil1 fnt0">
  <tspan rotate="373"> </tspan>   
</text>
<text x="13.872" y="2.80555"  class="fil1 fnt0">
  <tspan rotate="373">t</tspan>   
</text>
<text x="5.03741" y="7.02195"  class="fil1 fnt0">
  <tspan rotate="364">o</tspan>
</text>
<text x="5.97918" y="7.07275"  class="fil1 fnt0">
  <tspan rotate="349">n</tspan>   
</text>
<text x="6.90402" y="6.85261"  class="fil1 fnt0">
  <tspan rotate="337"> </tspan>   
</text>
<text x="7.34061" y="6.66635"  class="fil1 fnt0">
  <tspan rotate="327">a</tspan>   
</text>
<text x="8.11305" y="6.14141"  class="fil1 fnt0">
  <tspan rotate="318"> </tspan>
</text>
<text x="9.82499" y="4.26182"  class="fil1 fnt0">
  <tspan rotate="318">t</tspan>   
</text>
<text x="8.46497" y="5.81968"  class="fil1 fnt0">
  <tspan rotate="314">P</tspan>   </text>
<text x="9.22189" y="4.98995"  class="fil1 fnt0">
  <tspan rotate="310">a</tspan>   
</text>
<text x="10.16" y="3.94009"  class="fil1 fnt0">
  <tspan rotate="322">h</tspan>   
</text>

Вывод, который мы делаем – Corel Draw не может генерировать код с корректным отображением привязки текста к траектории.

В этой лекции мы рассмотрели основные элементы и атрибуты SVG – графики для работы с текстом. Применение фильтров (см. Лекцию 7 и Лекцию 8) к тексту позволяет получать дополнительные эффекты – тень, размытие, текстуры.

Страницы:
Внимание! Для работы с этой лекцией необходимы учебные файлы, которые Вы можете загрузить здесь.

Элемент text

Элемент text предназначен для помещения в SVG – документ символьных данных. Как и в случае графических фигур координаты x и y текстовой строки отсчитываются от верхнего левого угла. Элемент поддерживает текстовые свойства, такие как размер шрифта, стиль, начертание, причем строка может быть выделена и скопирована (рис. 4.1):

(рис 4.1) Копирование текста из SVG – документа в блокнот

Для включения текста в документ достаточно указать расположение текстовой строки при помощи атрибутов x и y элемента text:

<text x="50" y="50">
      Сюда помещается текстовый фрагмент.
</text>

Текст, помещаемый в SVG документ, может быть индексирован поисковыми системами.

SVG поддерживает формат Unicode и поэтому один и тот же документ допускает локализацию на различных языках.

В табл. 4.1 приводятся некоторые атрибуты элемента text. Использование в коде атрибута со значением по умолчанию, как правило, равносильно отсутствию явного определения этого атрибута.

Атрибуты элемента textЗдесь и далее в диапазоне указываются наиболее употребительные значения. Полный их список можно посмотреть в спецификации формата SVG 1.1: http://www.w3.org/TR/2003/REC-SVG11-20030114/text.html Названия атрибутов совпадают с названиями CSS2 и поэтому детальное описание можно получить в самой спецификации: http://www.w3.org/TR/REC-CSS2/ Спецификация на русском языке доступна здесь: http://www.intuit.ru/department/internet/css2/
Название
4.1.1 direction
Описание
Направление текста. В некоторых языках (например, в арабском) принято писать текст справа налево. Для задания написания справа налево необходимо дополнительно включать атрибут unicode-bidi
Диапазон значений
rtl | ltr rtl - right to left – справа налево. ltr - left to right – слева направо
Значение по умолчанию
ltr
Название
4.1.2 dominant-baseline
Описание
Выравнивание текста относительно горизонтальной линии
Диапазон значений
auto | hanging | mathematical
Значение по умолчанию
auto
Название
4.1.3 fill
Описание
Цвет текста. Поддерживаются именованные значения, а также RGB код в десятичной и шестнадцатеричной формах.
Диапазон значений
Все множество цветов.
Значение по умолчанию
black ( черный).
Название
4.1.4 font-family
Описание
Шрифт текста.
Диапазон значений
Все шрифты, доступные на компьютере. При отсутствии заданного шрифта будет использован подобный (например, при отсутствии шрифта Arial будет использован Arial Bold )
Значение по умолчанию
Arial
Название
4.1.5 font-size
Описание
Размер шрифта.
Диапазон значений
Все значения, имеющие размерность <length> См. табл. 2.8
Значение по умолчанию
12 пт.
Название
4.1.6 font-size-adjust
Описание
В обычных шрифтах зрительно воспринимаемый размер шрифта в основном зависит не от свойства font-size, а от атрибута x-height (вертикальный размер строчной буквы "x" ). Параметр x-height сильно отличается у различных шрифтов, имеющих одно и то же значение свойства font-size. В результате шрифты с одинаковым значением параметра font-size зрительно воспринимаются как шрифты разного размера. Отношение значения параметра x-height к значению свойства font-size называется аспектом шрифта ( font-size-adjust ). Если аспект одного шрифта больше чем аспект другого, то, при одном и том же значении свойства font-size, первый шрифт выглядит больше. Для того, что бы создать зрительное впечатление о шрифтах равных размеров, следует увеличить размер второго шрифта так, что бы вертикальный размер строчных букв был одинаковым в обоих шрифтах. Более подробно о свойстве font-size-adjust см. в спецификации CSS2: http://www.w3.org/TR/REC-CSS2/fonts.html#propdef-font-size-adjust Версия перевода на русском языке: http://www.intuit.ru/department/internet/css2/15/css2_15.html
Диапазон значений
Все значения, имеющие размерность <length> См. табл. 2.8
Значение по умолчанию
none
Название
4.1.7 font-stretch
Описание
Сжатие и растяжение текста
Диапазон значений
normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded
Значение по умолчанию
normal
Название
4.1.8 font-style
Описание
Курсивный текст.
Диапазон значений
normal | italic | oblique
Значение по умолчанию
normal
Название
4.1.9 font-weight
Описание
Свойство определяет вес шрифта. Значения имеют следующий смысл: от 100 до 900 Эти значения формируют упорядоченную последовательность, где каждый номер обозначает вес, который темнее своего предшественника. normal То же, что "400". bold То же, что "700". bolder Определяет вес шрифта, более темный, чем наследуемый. Если такого веса нет, результатом будет более "темное" числовое значение (а шрифт не изменяется), если только наследуемое значение не "900", в этом случае результат будет также "900". lighter Определяет вес шрифта, назначаемый шрифту, который светлее, чем наследуемый. Если такого веса нет, результатом будет более "светлое" числовое значение (а шрифт не изменяется), если только наследуемое значение не "100", в этом случае результат будет также "100".
Диапазон значений
normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
Значение по умолчанию
normal
Название
4.1.10 glyph-orientation-horizontal
Описание
Горизонтальная ориентация символов. Возможен выбор из фиксированного диапазона значений угла.
Диапазон значений
0 | 90 | 180 | 270 (и значения со знаком минус)
Значение по умолчанию
auto или 0
Название
4.1.11 glyph-orientation-vertical
Описание
Вертикальная ориентация символов. Возможен выбор из фиксированного диапазона значений угла.
Диапазон значений
0 | 90 | 180 | 270 (И значения со знаком минус)
Значение по умолчанию
auto
Название
4.1.12 kerning
Описание
Интервал между буквами.
Диапазон значений
auto | <length> См. табл. 2.8
Значение по умолчанию
auto
Название
4.1.13 letter-spacing
Описание
Интервал между буквами.
Диапазон значений
normal | <length> См. табл. 2.8
Значение по умолчанию
normal
Название
4.1.14 text-anchor
Описание
Выравнивание текста относительно начала строки.
Диапазон значений
start, middle, end
Значение по умолчанию
start
Название
4.1.15 text-decoration
Описание
Подчеркивание, надчеркивание, перечеркивание текста
Диапазон значений
none | underline | overline | line-through
Значение по умолчанию
none
Название
4.1.16 unicode-bidi
Описание
Для работы атрибута direction со значением ltr необходимо наличие в коде свойства unicode-bidi со значением embed или override. Подробнее см. http://www.ssga.ru/metodich/css-2/9-12.htm
Диапазон значений
normal | embed | bidi-override
Значение по умолчанию
normal
Название
4.1.17 word-spacing
Описание
Интервал между словами
Диапазон значений
normal | <length> См. табл. 2.8
Значение по умолчанию
normal
Название
4.1.18 writing-mode
Описание
Этот атрибут устанавливает расположение текстового фрагмента как единого целого относительно исходной точки. Возможные значения, например, слева направо - сверху вниз ( left to right top to bottom ) не изменяют порядок самих букв в словах.
Диапазон значений
lr-tb | rl-tb | tb-rl | lr | rl | tb
Значение по умолчанию
lr-tb
Название
4.1.19 x
Описание
Абсцисса верхней левой точки текстового блока
Диапазон значений
<coordinate> См. табл. 2.8
Значение по умолчанию
0
Название
4.1.20 y
Описание
Ордината верхней левой точки текстового блока
Диапазон значений
<coordinate> См. табл. 2.8
Значение по умолчанию
0

В табл. 4.2 приводятся примеры использования основных свойств элемента text.

Элемент text.
Код Вид в браузере
4.2.1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text1.svg
     </desc>
   <text x="50" y="50">
    Простой текст
    </text>
</svg>
Описание
Текст без форматирования. Выводится черным цветом шрифтом Arial размером в 12 пт.
Код Вид в браузере
4.2.2
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text2.svg
     </desc>
   <text x="10" y="50" font-family="Comic Sans MC" 
         font-size="24" fill="indigo">
    Цветной текст
   </text>
</svg>
Описание
Цветной текст для которого определен шрифт и размер.
Код Вид в браузере
4.2.3
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="300"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text3.svg
     </desc>
   <text x="10" y="50"  
         style="font-family: Comic Sans MC; font-size: 24; fill: indigo">
    Цветной текст
   </text>
  
  <g font-family="Arial" font-size="40" stroke="black" stroke-width="1">
   <text x="10" y="100" fill="red">
  Red
   </text>
  
   <text x="10" y="150" fill="yellow">
  Yellow
   </text>
  
   <text x="10" y="200" fill="green">
  Green
   </text>
  
  </g>
</svg>
Описание
Для оформления первой строки применено встраивание стиля в тег элемента. Последующие строки объединены в группу для которой определено общее оформление.
Код Вид в браузере
4.2.4
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="200"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text4.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="20"  text-decoration="none" >
    Обычный текст
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="20"  text-decoration="underline" >
    Подчеркнутый текст
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="20"  text-decoration="line-through" >
    Зачеркнутый текст
   </text>
   <text x="10" y="135" font-family="Arial" 
         font-size="20"  text-decoration="overline" >
   Текст под чертой
   </text>
   <text x="10" y="170" font-family="Arial" 
         font-size="20"  text-decoration="underline overline" >
   Две черты
   </text>
</svg>
Описание
Атрибут text-decoration определяет начертание текста.
Код Вид в браузере
4.2.5
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="200"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text5.svg
     </desc>
     <defs>
    <style type="text/css">
      <![CDATA[
      text
      {
       font-family: Arial;
        font-size: 20;
      }
      text.obichniy
      {
        text-decoration: none;        
      }
      text.podcherknutiy
      {
      text-decoration: underline;      
      }
      text.zacherknutiy
      {
        text-decoration: line-through;        
      }
      text.podChertoy
      {
        text-decoration: overline;    
      }
      text.dveCherti
      {
        text-decoration: underline overline;        
      }
          
      ]]>
    </style>
</defs>
   <text x="10" y="30" class="obichniy" >
    Обычный текст
   </text>
   <text x="10" y="65" class="podcherknutiy" >
    Подчеркнутый текст
   </text>
   <text x="10" y="100" class="zacherknutiy" >
    Зачеркнутый текст
   </text>
   <text x="10" y="135" class="podChertoy" >
   Текст под чертой
   </text>
   <text x="10" y="170" class="dveCherti" >
   Две черты
   </text>
</svg>
Описание
Использование классов, определяющих начертание текста.
Код Вид в браузере
4.2.6
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="480"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text6.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="20" font-weight="normal">
    Обычный текст
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="20"   font-weight="bold" >
    Жирный текст
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="20" font-weight="bolder">
    Текст bolder
   </text>
   <text x="10" y="135" font-family="Arial" 
         font-size="20"  font-weight="lighter" >
   Текст lighter
   </text>
   <text x="10" y="170" font-family="Arial" 
         font-size="20"  font-weight="100" >
   Текст 100
   </text>
   <text x="10" y="205" font-family="Arial" 
         font-size="20"  font-weight="200" >
   Текст 200
   </text>
   <text x="10" y="240" font-family="Arial" 
         font-size="20"  font-weight="300" >
   Текст 300
   </text>
   <text x="10" y="275" font-family="Arial" 
         font-size="20"  font-weight="400" >
   Текст 400
   </text>
   <text x="10" y="310" font-family="Arial" 
         font-size="20"  font-weight="500" >
   Текст 500
   </text>
   <text x="10" y="345" font-family="Arial" 
         font-size="20"  font-weight="600" >
   Текст 600
   </text> 
   <text x="10" y="380" font-family="Arial" 
         font-size="20"  font-weight="700" >
   Текст 700
   </text> 
   <text x="10" y="415" font-family="Arial" 
         font-size="20"  font-weight="800" >
   Текст 800
   </text> 
   <text x="10" y="450" font-family="Arial" 
         font-size="20"  font-weight="900" >
   Текст 900
   </text> 
</svg>
Описание
Примеры использования свойства font-weight, поддерживающего именованные и числовые значения.
Код Вид в браузере
4.2.7
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="200"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text7.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="20"  font-style="normal" >
    Обычный текст
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="20"  font-style="italic" >
    Курсивный текст
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="20"  font-style="oblique" >
    Курсивный текст
   </text>
  </svg>
Описание
Получение курсивного текста. Значение oblique атрибута font-style задает курсивное начертание строк прописными буквами.
Код Вид в браузере
4.2.8
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="445"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text8.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="20"  font-stretch="normal" >
 font-stretch
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="20"  font-stretch="wider" >
 font-stretch
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="20"  font-stretch="normal" >
 font-stretch
   </text>
   <text x="10" y="135" font-family="Arial" 
         font-size="20"  font-stretch="narrower" >
 font-stretch
   </text>
   <text x="10" y="170" font-family="Arial" 
         font-size="20"  font-stretch="ultra-condensed" >
 font-stretch
   </text>
   <text x="10" y="205" font-family="Arial" 
         font-size="20"  font-stretch="extra-condensed" >
 font-stretch
   </text>
   <text x="10" y="240" font-family="Arial" 
         font-size="20"  font-stretch="condensed" >
 font-stretch
   </text>
   <text x="10" y="275" font-family="Arial" 
         font-size="20"  font-stretch="semi-condensed" >
 font-stretch
   </text>
   <text x="10" y="310" font-family="Arial" 
         font-size="20"  font-stretch="semi-expanded" >
 font-stretch
   </text>
   <text x="10" y="345" font-family="Arial" 
         font-size="20"  font-stretch="expanded" >
 font-stretch
   </text>
   <text x="10" y="380" font-family="Arial" 
         font-size="20"  font-stretch="extra-expanded" >
 font-stretch
   </text>
   <text x="10" y="415" font-family="Arial" 
         font-size="20"  font-stretch="ultra-expanded" >
 font-stretch
   </text>
  </svg>
Описание
Уплотненное и разреженное начертание слов.
Код Вид в браузере
4.2.9
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="445"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text9.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="16"  kerning="auto" >
Кернинг
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="16" kerning="10" >
Кернинг
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="16"  kerning="15" >
Кернинг
   </text>      
   <text x="10" y="135" font-family="Arial" 
         font-size="16"  kerning="20" >
Кернинг
   </text>      
  </svg>
Описание
Атрибут kerning, задающий межбуквенный интервал в числовых значениях.
Код Вид в браузере
4.2.10
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="160"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text10.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="16"  letter-spacing="normal" >
Кернинг
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="16" letter-spacing="10" >
Кернинг
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="16"  letter-spacing="15" >
Кернинг
   </text>      
   <text x="10" y="135" font-family="Arial" 
         font-size="16"  letter-spacing="20" >
Кернинг
   </text>      
  </svg>
Описание
Атрибут letter-spacing аналогичен атрибуту кернинг.
Код Вид в браузере
4.2.11
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="160"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример text11.svg
     </desc>
   <text x="10" y="30" font-family="Arial" 
         font-size="12"  word-spacing="normal" >
Интервал между словами
   </text>
   <text x="10" y="65" font-family="Arial" 
         font-size="12" word-spacing="10" >
Интервал между словами
   </text>
   <text x="10" y="100" font-family="Arial" 
         font-size="12"  word-spacing="15" >
Интервал между словами
   </text>      
   <text x="10" y="135" font-family="Arial" 
         font-size="12" word-spacing="20" >
Интервал между словами
   </text>      
  </svg>
Описание
Атрибут word-spacing задает интервал между словами.
Код Вид в браузере
4.2.12
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="120" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text12.svg
     </desc>
   <text x="105" y="30" font-family="Arial" 
         font-size="16" text-anchor="start">
  text-anchor
   </text>
   <text x="105" y="65" font-family="Arial" 
         font-size="16" text-anchor="middle">
  text-anchor
   </text>
   <text x="105" y="100" font-family="Arial" 
         font-size="16" text-anchor="end">
  text-anchor
   </text>
</svg>
Описание
Выравнивание текста – слева, справа и по центру.
Код Вид в браузере
4.2.13
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="190" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text13.svg
     </desc>

     <defs>
    <style type="text/css">
      <![CDATA[
      text
      {
       font-family: Arial;
        font-size: 16;
      }
      text.ltr
      {
      direction:ltr;    
      unicode-bidi: bidi-override;  
      }
      text.rtl
      {
        direction:rtl;    
        unicode-bidi: bidi-override;    
      }
      ]]>
    </style>
</defs>
   <text x="50" y="30" class="ltr"  >
  Направление 
   </text>
   <text x="50" y="65" class="ltr">
  Direction
   </text>
   <text x="50" y="100" class="rtl" >
  Направление
   </text>
   <text x="50" y="135" class="rtl">
  Direction
   </text>
  
   <text x="50" y="170" direction="rtl" unicode-bidi="bidi-override">
  Просто текст
   </text>
</svg>
Описание
Атрибуты direction и unicode-bidi
Код Вид в браузере
4.2.14
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="250" height="400" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text14.svg
     </desc>
   <text x="125" y="30" writing-mode="lr" >
writing-mode="lr"
   </text>
   <text x="125" y="65" writing-mode="lr-tb">
writing-mode="lr-tb"
   </text>
   <text x="125" y="100" writing-mode="rl" >
 writing-mode="rl"
   </text>
   <text x="125" y="135" writing-mode="rl-tb">
writing-mode="rl-tb"
   </text>
   <text x="125" y="170" writing-mode="tb">
writing-mode="tb"
   </text>
   <text x="160" y="170" writing-mode="tb-rl">
writing-mode="tb-rl"
   </text>
  <!--Вспомогательные фигуры-->
  <line x1="125" y1="0" x2="125" y2="400" 
      stroke-width="1" stroke="blue"></line>
  <line x1="0" y1="170" x2="250" y2="170" 
      stroke-width="1" stroke="blue"></line>
  <line x1="160" y1="170" x2="160" y2="400" 
      stroke-width="1" stroke="blue"></line>
</svg>
Описание
Атрибут writing-mode, задает направление написания текста относительно исходной точки с сохранением расположения букв слева направо.
Код Описание
4.2.15
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="450" height="300" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text15.svg
     </desc>
   <text x="10" y="30" 
         glyph-orientation-horizontal="0">
         glyph-orientation-horizontal="0"
   </text>
   <text x="10" y="65" 
         glyph-orientation-horizontal="90">
         glyph-orientation-horizontal="90"
   </text>
   <text x="10" y="100" 
         glyph-orientation-horizontal="180" >
         glyph-orientation-horizontal="180"
   </text>
   <text x="10" y="135" 
         glyph-orientation-horizontal="270">
         glyph-orientation-horizontal="270"
   </text>
   <text x="10" y="170" 
         glyph-orientation-horizontal="-90">
         glyph-orientation-horizontal="-90"
   </text>
   <text x="10" y="205"
         glyph-orientation-horizontal="-180">
         glyph-orientation-horizontal="-180"
   </text>
   <text x="10" y="240"
         glyph-orientation-horizontal="-270">
         glyph-orientation-horizontal="-270"
   </text>
</svg>
Атрибут glyph-orientation-horizontal позволит без труда получить "зеркальное" отображение текста
Вид в браузере
Код Вид в браузере
4.2.16
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="300" height="450" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text16.svg
     </desc>


   <text x="10" y="10" writing-mode="tb-rl" 
         glyph-orientation-vertical="0"> 
         glyph-orientation-vertical="0"
   </text>
   <text x="45" y="10" writing-mode="tb-rl"   
         glyph-orientation-vertical="90"> 
         glyph-orientation-vertical="90"
   </text>
   <text x="80" y="10" writing-mode="tb-rl" 
         glyph-orientation-vertical="180" > glyph-orientation-vertical="180"
   </text>
   <text x="115" y="10" writing-mode="tb-rl"  
         glyph-orientation-vertical="270"> glyph-orientation-vertical="270"
   </text>
  
   <text x="150" y="10" writing-mode="tb-rl" 
         glyph-orientation-vertical="-90">
         glyph-orientation-horizontal="-90"
   </text>
  
   <text x="185" y="10" writing-mode="tb-rl" 
         glyph-orientation-vertical="-180">
         glyph-orientation-vertical="-180"
   </text>
  
   <text x="220" y="10" writing-mode="tb-rl" 
         glyph-orientation-vertical="-270">
         glyph-orientation-vertical="-270"
   </text>
  
  
</svg>
Описание
Атрибут glyph-orientation-vertical со значением "0" позволяет получить одно из наиболее употребительных оформлений текста.
Код Вид в браузере
4.2.17
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="320" height="280" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text17.svg
     </desc>


   <text x="30" y="30" font-size-adjust="0">
font-size-adjust="0"
   </text>
   <text x="30" y="65" font-size-adjust="0.4">
font-size-adjust="0.4"
   </text>
   <text x="30" y="100" font-size-adjust="0.5">
font-size-adjust="0.5"
   </text>
   <text x="30" y="135" font-size-adjust="1">
font-size-adjust="1"
   </text>
  
   <text x="30" y="170" font-size-adjust="1.1">
font-size-adjust="1.1"
   </text>
  
   <text x="30" y="205" font-size-adjust="1.2">
font-size-adjust="1.2"
   </text>
  
   <text x="30" y="240" font-size-adjust="1.3">
font-size-adjust="1.3"
   </text>
  
</svg>
Описание
Атрибут font-size-adjust со значением "0.5" достаточно близок к исходному тексту для шрифта Arial, принятому по умолчанию.
Код Вид в браузере
4.2.18
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="180" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример text18.svg
     </desc>


   <text x="30" y="30" 
         dominant-baseline="auto">
         dominant-baseline="auto"
   </text>
   <text x="30" y="65" 
         dominant-baseline="hanging">
         dominant-baseline="hanging"
   </text>
   <text x="30" y="100" 
         dominant-baseline="mathematical">
         dominant-baseline="mathematical"
   </text>
  
   <text x="30" y="135">
text
   </text>
  
  <!--Вспомогательные фигуры-->
  <line x1="10" y1="30" x2="250" y2="30" 
      stroke-width="1" stroke="blue"></line>
  <line x1="10" y1="65" x2="250" y2="65" 
      stroke-width="1" stroke="blue"></line>
  <line x1="10" y1="100" x2="250" y2="100" 
      stroke-width="1" stroke="blue"></line>
  <line x1="10" y1="135" x2="250" y2="135" 
      stroke-width="1" stroke="blue"></line>
</svg>
Описание
Наиболее употребительные значения атрибута dominant-baseline позволяют задавать расположение строки относительно основной линии.

Элемент tspan

Попробуем разместить в SVG - документе достаточно большой фрагмент текста:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPangramma.svg
     </desc>
   <text x="10" y="50">
Съешь еще этих мягких французских булок, да выпей чаю.  
   Съешь еще этих мягких французских булок, да выпей чаю.
Съешь еще этих мягких французских булок, да выпей чаю.  
   Съешь еще этих мягких французских булок, да выпей чаю.
Съешь еще этих мягких французских булок, да выпей чаю.  
   Съешь еще этих мягких французских булок, да выпей чаю.
   </text>
</svg>

Несмотря на форматирование текста в коде в результате мы видим одну длинную строку, без разбиения на абзацы (рис. 4.2):

(рис 4.2) Пример textPangramma.svg

Элемент text не поддерживает перенос строк. Конечно, можно разбить этот фрагмент на три части и для каждой из них определить координаты элемента text. Но это не лучший способ. Для подобных задач в SVG – графике имеется элемент tspan, предназначенный для оформления отдельных фрагментов, слов или даже букв. Для рассматриваемого случая код должен выглядеть так:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
      <title>Лекция 4. Текст</title>
      <desc>Пример tspanPangramma.svg</desc>
   <text x="10" y="50">
            <tspan x="10" dy="1em">
                   Съешь еще этих мягких французских булок, да выпей чаю.  
                   Съешь еще этих мягких французских булок, да выпей чаю.
            </tspan>
            <tspan x="10" dy="1em">
                   Съешь еще этих мягких французских булок, да выпей чаю.  
                   Съешь еще этих мягких французских булок, да выпей чаю.
            </tspan>
            <tspan x="10" dy="1em">
                  Съешь еще этих мягких французских булок, да выпей чаю.  
                  Съешь еще этих мягких французских булок, да выпей чаю.
            </tspan>
   </text>
</svg>

Теперь все предложения помещаются в документе (рис. 4.3):

(рис 4.3) Пример tspanPangramma.svg

Элемент tspan помещается внутри элемент text и задает дополнительное форматирование при помощи атрибутов, значения которых приводятся в табл. 4.3

Атрибуты элемента tspan
Название
4.3.1 x
Описание
Абсцисса текстовой строки отсчитываемая относительно системы координат исходного SVG – документа т.е. это абсолютная координата.
Диапазон значений
<coordinate> см. табл. 2.8
Значение по умолчанию
Совпадает с абсциссой данного элемента text
Название
4.3.2 y
Описание
Ордината текстовой строки отсчитываемая относительно системы координат исходного SVG – документа т.е. это абсолютная координата.
Диапазон значений
<coordinate> см. табл. 2.8
Значение по умолчанию
Совпадает с ординатой данного элемента text
Название
4.3.3 dx
Описание
Горизонтальный отступ текстового фрагмента, отсчитываемый относительно начальной позиции с учетом направления координатных осей (рис 4.4(рис 4.4) Атрибуты dx и dy элемента tspan
Диапазон значений
<coordinate> см. табл. 2.8
Значение по умолчанию
0
Название
4.3.4 dy
Описание
Вертикальный отступ текстового фрагмента, отсчитываемый относительно начальной позиции с учетом направления координатных осей (см. рис. 4.4), т.е это относительная координата.
Диапазон значений
<coordinate> см. табл. 2.8
Значение по умолчанию
0
Название
4.3.5 rotate
Описание
Поворот первого символа, заключенного в элемент tspan, относительно горизонтальной оси. Положительному росту значений угла соответствует направление вращения часовой стрелки.
Диапазон значений
От 0 до 360 градусов <angle>, см. табл. 2.8
Значение по умолчанию
0
Название
4.3.6 baseline-shift
Описание
Атрибут для выравнивания блоков текста относительно горизонтальной линии. Самый удобный способ написания верхних и нижних индексов.
Диапазон значений
baseline | sub | super
Значение по умолчанию
baseline

В табл. 4.4 приводятся примеры использования элемента tspan.

Элемент tspan
Код Вид в браузере
4.4.1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" xmlns="http://www.w3.org/2000/svg" version="1.1">
	<title>Лекция 4. Текст</title>
	<desc>
		Пример tspan1.svg
	</desc>
	
<g font-family="Arial" font-size="16" >
    <text x="30" y="30" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" > выше,</tspan>
      сильнее
    </text>
  </g>
  
</svg>
Описание
Шрифт и его размер задается в группе. Это оформление распространяется и на содержимое вложенного элемента tspan. Для выделения цветом и шрифтом отдельного слова применяется элемент tspan с атрибутами font-weight и fill элемента text.
Код Вид в браузере
4.4.2
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan2.svg
     </desc>
   <text x="30" y="30" fill="blue" 
         font-family="Arial" font-size="16"  >
      Быстрее,
        <tspan font-weight="bold" 
               fill="red" > выше,</tspan>
      сильнее
   </text>
</svg>
Описание
Шрифт и его размер задается внутри элемента text. Это оформление распространяется и на содержимое вложенного элемента tspan.
Код Вид в браузере
4.4.3
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan3.svg
     </desc>
   <text x="30" y="30" fill="blue" 
         font-family="Arial" font-size="16">
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               dy="-10"> выше,</tspan>
      сильнее
   </text>
</svg>
Описание
Атрибут dy задает вертикальное смещение содержимого элемента tspan, причем последующий текст также располагается на новом уровне.
Код Вид в браузере
4.4.4
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan4.svg
     </desc>
   <text x="30" y="30" fill="blue" 
         font-family="Arial" font-size="16"  >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               dy="-10"> выше,</tspan>
           <tspan dy="10">сильнее</tspan>
   </text>
</svg>
Описание
Для выравнивания последующего текста снова применяется элемент tspan со значением атрибута dy="10", которое возвращает текстовую строку на прежний уровень.
Код Вид в браузере
4.4.5
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan5.svg
     </desc>
   <text x="30" y="30" fill="blue" 
         font-family="Arial" font-size="16">
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               dy="-10 10 -10 10"> выше,</tspan>
        <tspan dy="0">сильнее</tspan>
   </text>
</svg>
Описание
Атрибут dy может использоваться для задания смещения отдельных букв. В данном случае для расположения четырех букв в слове "выше" применяется атрибут dy, состоящий из четырех значений, разделенных пробелами.
Код Вид в браузере
4.4.6
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan6.svg
     </desc>
   <text x="30" y="30" fill="blue" font-family="Arial" 
         font-size="16"  >
      Быстрее,                       
        <tspan font-weight="bold" fill="red" 
               dy="-5 5 -5 5"> выше,</tspan>
        <tspan dy="-5 5 -5 5 -5 5 -5">
               сильнее</tspan>
      
   </text>
  
</svg>
Описание
Применение атрибутов dy для оформление слов из четырех и семи букв.
Код Вид в браузере
4.4.7
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan7.svg
     </desc>

<g font-family="Arial" font-size="16" >
   <text x="30" y="30" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               dx="30"> выше,</tspan>
      сильнее
   </text>
  </g>
</svg>
Описание
Атрибут dx задает горизонтальное смещение содержимое элемента tspan, причем последующий текст также располагается на новой позиции.
Код Вид в браузере
4.4.8
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan8.svg
     </desc>
<g font-family="Arial" font-size="16" >
   <text x="30" y="30" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               dx="10 10 10 10 "> выше,</tspan>
      сильнее
   </text>
  </g>
</svg>
Описание
Атрибут dx также может использоваться для задания смещения отдельных букв. В данном случае для расположения четырех букв в слове "выше" применяется атрибут dx, состоящий из четырех значений разделенных пробелами.
Код Вид в браузере
4.4.9
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan9.svg
     </desc>

<g font-family="Arial" font-size="16" >
   <text x="30" y="30" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               dx="10 -5 10 -5 "> выше,</tspan>
      сильнее
   </text>
  </g>
  
</svg>
Описание
Последовательное смещение отдельных букв позволяет получить эффект наложения.
Код Вид в браузере
4.4.10
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan10.svg
     </desc>
   <text x="30" y="30" fill="blue" font-family="Arial" 
         font-size="16"  >
      Быстрее,                       
        <tspan font-weight="bold" fill="red" 
               dy="-5 5 -5 5" dx="5 5 5 5"> 
                  выше,
        </tspan>
        <tspan dy="-5 5 -5 5 -5 5 -5" 
               dx="5 5 5 5 5 5 5">
                  сильнее
        </tspan>
   </text>
</svg>
Описание
Вертикальное и горизонтальное смещение букв.
Код Вид в браузере
4.4.11
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="150" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan11.svg
     </desc>
   <text fill="blue" font-family="Arial" 
         font-size="16">
        <tspan x="30 45 60 75 90" y="50">
        Верх и 
      </tspan>
      <tspan x="45 60 75" y="100">
         низ
      </tspan>
   </text>
</svg>
Описание
Задание расположения букв при помощи абсолютных координат x и y.
Код Вид в браузере
4.4.12
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan12.svg
     </desc>
   <text fill="blue" font-family="Arial" 
         font-size="16"  >
        <tspan  x="30 40 50 60 70 80 90" 
               y="85 75 65 55 45 35 25 "> Быстрее, </tspan>                
        <tspan font-weight="bold" fill="red" 
               x=" 60 70 80 90"  y="85 75 65 55">
                выше,
        </tspan>
        <tspan x="90 100 110 120 130 140 150" 
               y="85 75 65 55 45 35 25 ">
                сильнее
        </tspan>
   </text>
</svg>
Описание
Задание расположения букв при помощи наборов абсолютных координат x и y.
Код Вид в браузере
4.4.13
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="100" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan13.svg
     </desc>
<g font-family="Arial" font-size="40" >
   <text x="5" y="50" fill="blue" >
        <tspan  rotate="45 45 45 45 45"> Вкривь</tspan>
        <tspan font-weight="bold" fill="red" 
               rotate="15">и</tspan>
     <tspan  rotate="-45 -45 -45 -45 -45">вкось</tspan>
   </text>
  </g>
</svg>
Описание
Атрибут rotate предназначен для поворота отдельных букв.
Код Вид в браузере
4.4.14
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="250" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan14.svg
     </desc>
<g font-family="Arial" font-size="16">
   <text x="30" y="30" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               baseline-shift="baseline" > выше,</tspan>
      сильнее
   </text>
   <text x="30" y="80" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               baseline-shift="sub" > выше,</tspan>
      сильнее
   </text>
   <text x="30" y="130" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               baseline-shift="super" > выше,</tspan>
      сильнее
   </text>
   <text x="30" y="180" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               baseline-shift="-100%" > выше,</tspan>
      сильнее
   </text>
    
   <text x="30" y="230" fill="blue" >
      Быстрее,
        <tspan font-weight="bold" fill="red" 
               baseline-shift="5" > выше,</tspan>
      сильнее
   </text>
  </g>
  
</svg>
Описание
Выравнивание текстового фрагмента относительно горизонтальной линии при помощи атрибута baseline-shift. Можно задавать также числовые значения смещения.
Код Вид в браузере
4.4.15
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="280" height="400" 
     xmlns="http://www.w3.org/2000/svg" version="1.1">
     <title>Лекция 4. Текст</title>
     <desc>
          Пример tspan15.svg
     </desc>

     <!--Эмблема пожарного крана-->
     <rect  x="30" y="30" 
           height="50" width="50" fill="none" 
           stroke="red" stroke-width="5"></rect>
     <text x="38" y="68" fill="red" 
           font-family="Arial" font-size="30">
     <tspan dx="-16">K</tspan>     
   </text>

   <!--Химическая формула воды-->
   <text x="100" y="68" fill="blue" 
         font-family="Arial" font-size="40">
       H
       <tspan dy="12" font-size="20" dx="-10">2</tspan>   
       <tspan dy="-12" dx="-10" >O</tspan>   
   </text>
   <!--Химическая формула серной кислоты-->
   <text x="50" y="120" fill="orange" 
         font-family="Arial" font-size="40">
       H
        <tspan  font-size="20" 
               baseline-shift="-10">2</tspan>   
        <tspan  baseline-shift="0" >S</tspan>   
        <tspan  baseline-shift="0" >O</tspan>  
        <tspan  font-size="20"
               baseline-shift="-10" >4</tspan>  
   </text>  
    
         <!--Эмблема, похожая на LaTeX-->
   <text x="50" y="180" fill="black" 
         font-family="Times" font-size="40">
       L
        <tspan font-size="32" 
                  dy="-5" dx="-21">A</tspan>   
        <tspan dy="5"  dx="-12">T</tspan>   
        <tspan dy="7"  dx="-13">E</tspan>  
        <tspan dy="-7" dx="-13">X</tspan> 
   </text> 
         <!--Биквадратное уравнение-->
   <text x="20" y="250" fill="green" 
         font-family="Comic Sans MC" font-size="30">
       ax
        <tspan baseline-shift="super" 
               font-size="20">4</tspan>
       +bx
        <tspan baseline-shift="super" 
               font-size="20">2</tspan>
       +с=0
   </text>
    
         <!--Эмблема хакеров-->
   <text x="20" y="300" fill="black" 
         font-family="Verdana" font-size="40">
          0 1 0
        <tspan x="20" y="340" >0 0 1</tspan>   
        <tspan  x="20" y="380"> 1 1 1</tspan>   
  
   </text>
  
   <!--Cноска на  икс в квадрате-->
   <text x="160" y="350" fill="black" 
         font-family="Verdana" font-size="60">
          X
        <tspan baseline-shift="super" font-size="30" 
               dx="-15"  >2</tspan>   
        <tspan dy="-50" font-size="15" 
               dx="-15"> 2</tspan>   
     </text>
</svg>
Описание
Несколько примеров, иллюстрирующих возможности SVG – графики создания сложных текстовых элементов. Все эти строки остаются текстом, который может быть скопирован.

Элемент tspan также может содержать все прочие атрибуты элемента text кроме свойств writing-mode, glyph-orientation-vertical и text-anchor.

Элемент tref

В большом SVG – документе может возникнуть потребность в многократной вставке одного и того же блока текста. Для уменьшения размера файла в этом случае удобнее использовать ссылку на однократно определенный фрагментЭта концепция напоминает использование примитивов в XML – документах: http://www.intuit.ru/department/internet/xml/6/xml_6.html :

<defs>
   <text id="myText" >
    Простой текст
   </text>
</defs>
  
<text>
   <tref xlink:href="#myText" x="50" y="50"></tref>
</text>

Исходный фрагмент помещается в секцию defs, а далее он может быть отображен в любом месте документа при помощи элемента tref, помещаемого внутри элемента text. В табл. 4.5 приводятся примеры применения этого элемента.

Элемент tref
Код Вид в браузере
4.5.1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример tref1.svg
     </desc>
<defs>
   <text id="myText" >
    Простой текст
   </text>
 </defs>
  
   <text>
<tref xlink:href="#myText" x="50" y="50"></tref>
   </text>
</svg>
Описание
Простая вставка определенного фрагмента текста в документ. Без вставки элемента tref исходный фрагмент, определенный в секции defs, виден не будет.
Код Вид в браузере
4.5.2
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример tref2.svg
     </desc>
     <defs>
   <text id="myText"  >
    Простой текст
   </text>
  </defs>
  
   <text>
<tref xlink:href="#myText" x="30" y="50" 
      font-family="Arial" font-size="20" 
      fill="red"></tref>
   </text>
</svg>
Описание
Вставка текстового фрагмента с заданием оформления.

Элемент tref также может содержать все прочие атрибуты элемента text кроме свойств writing-mode и glyph-orientation-vertical.

Элемент textPath

Одной из самых интересных возможностей элемента text является привязка к произвольной траектории, определяемой элементом Path:

<defs>
  <!--Объект Path-->
  <path id="myPath" d="M25,75 C25,15 175,15 175,75" /> 
</defs>

<text font-size="24" text-anchor="middle" fill="blue">
   <textPath xlink:href="#myPath" startOffset="50%">
          Текст на кривой
   </textPath>
</text>

Поскольку элемент path, определяется в секции defs, то он остается невидимым в SVG – документе даже при задании оформления кривой:

<defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75" 
        style="fill:none; stroke:green;stroke-width:3"/> 
</defs>

Ссылка на кривую задается при помощи элемента textPath. Атрибут startOffset, задаваемый в процентах, определяет расположение текста – 0 % соответствуют началу, а 100% - концу кривой. В табл. 4.6 приводятся примеры использования этого элемента.

Элемент textPath.
Код Вид в браузере
4.6.1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath1.svg
     </desc>
     <defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75"/> 
     </defs>

   <text font-size="24" text-anchor="middle" 
         fill="blue">
   <textPath xlink:href="#myPath" startOffset="50%">
          Текст на кривой
        </textPath>
   </text>
</svg>
Описание
Расположение текста на середине кривой. См. пример CubicCurve1.svg
Код Вид в браузере
4.6.2
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath2.svg
     </desc>
     <defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75" /> 
     </defs>

   <text 
         font-size="12" text-anchor="middle" fill="blue">
   <textPath xlink:href="#myPath" startOffset="50%">
          Текст на кривой
        </textPath>
   </text>
<!--Вспомогательная фигура-->
<path d="M25,75 C25,15 175,15 175,75" 
      style="fill:none; stroke:green;stroke-width:3"/> 
</svg>
Описание
Для отображения кривой в документе элемент Path был добавлен в качестве обычной фигуры.
Код Вид в браузере
4.6.3
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath3.svg
     </desc>
     <defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75" /> 
     </defs>

   <text 
         font-size="12" text-anchor="middle" fill="blue">
   <textPath xlink:href="#myPath" startOffset="25%">
          Текст на кривой
        </textPath>
   </text>
<!--Вспомогательная фигура-->
<path d="M25,75 C25,15 175,15 175,75" 
      style="fill:none; stroke:green;stroke-width:3"/> 
</svg>
Описание
Расположение текста в начале кривой.
Код Вид в браузере
4.6.4
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath4.svg
     </desc>
     <defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75" /> 
     </defs>

   <text 
         font-size="12" text-anchor="middle" fill="blue">
   <textPath xlink:href="#myPath" startOffset="75%">
          Текст на кривой
        </textPath>
   </text>
<!--Вспомогательная фигура-->
<path d="M25,75 C25,15 175,15 175,75" style="fill:none; stroke:green;stroke-width:3"/> 
</svg>
Описание
Расположение текста в конце кривой.
Код Вид в браузере
4.6.5
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath5.svg
     </desc>
     <defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75" /> 
     </defs>

   <text font-size="12" text-anchor="middle" 
         fill="blue">
      <textPath xlink:href="#myPath" startOffset="95"  >
            Быстрее,
        <tspan font-weight="bold" fill="red" 
               dy="-10"> выше,</tspan>
        <tspan dy="10">сильнее</tspan>
      </textPath>
   </text>
<!--Вспомогательная фигура-->
<path d="M25,75 C25,15 175,15 175,75" 
      style="fill:none; stroke:green;stroke-width:3"/> 
</svg>
Описание
Элемент tspan может быть добавлен внутри текста, размещаемого на кривой.
Код Вид в браузере
4.6.6
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="100"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath6.svg
     </desc>
     <defs>
     <!--Объект Path-->
     <path id="myPath" d="M25,75 C25,15 175,15 175,75" /> 
     </defs>
   <text 
         font-size="12" text-anchor="middle" fill="blue">
   <textPath xlink:href="#myPath" startOffset="50%" 
             glyph-orientation-horizontal="270">
          Текст на кривой
        </textPath>
   </text>
<!--Вспомогательная фигура-->
<path d="M25,75 C25,15 175,15 175,75" 
      style="fill:none; stroke:green;stroke-width:3"/> 
</svg>
Описание
Применение атрибута glyph-orientation-horizontal для текста на кривой.
Код Описание
4.6.7
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="700" height="150"  
     xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 4. Текст</title>
     <desc>
          Пример textPath7.svg
     </desc>
     <defs>
     <!--Объект Path-->
<path id="myPath" 
      d="M25,75 Q100,25 175,75 T 325,75 T475, 75 T 625,75" /> 
     </defs>

   <text font-size="12" text-anchor="middle" 
         fill="blue">
     <textPath xlink:href="#myPath" startOffset="50%" >
          При рисовании кривых с повторяющимися фрагментами удобно использовать команду 
          T для упрощения кода. 
     </textPath>
   </text>
<!--Вспомогательная фигура-->
<path d="M25,75 Q100,25 175,75 T 325,75 T475, 75 T 625,75" 
      style="fill:none; stroke:green;stroke-width:2"/> 
</svg>
Размещение текста на квадратичной кривой Безье. См. QuadraticCurve5.svg
Вид в браузере

Расположение текста на кривой в Corel Draw и SVG

Читатели, знакомые с программой Corel Draw, несомненно, обратили внимание на возможность SVG – графики создавать текст с привязкой к траектории, поскольку такая опция есть в самой программе. Посмотрим на код, который генерирует Corel Draw при создании подобного SVG – рисунка. Выбираем инструмент рисования Безье (рис. 4.5) и проводим несколько линий.

(рис 4.5) Выбор инструмента "Кривая Безье"

Выделяем созданный объект, в главном меню программы переходим "Text – Fit Text To Path" (рис. 4.6):

(рис 4.6) Привязка текста к заданной траектории

Вводим текст – он размещается на траектории, затем экспортируем рисунок (рис. 4.7):

(рис 4.7) Экспорт готового изображения

Внимательно изучив созданный код, замечаем, что расположение текста на кривой достигается заданием абсолютных координат каждой буквы и ее поворотом (фрагмент кода TextOnAPathCorelDraw.svg):

<text x="2.07099" y="4.97302"  class="fil1 fnt0">
  <tspan rotate="407">T</tspan>   
</text>
<text x="2.64671" y="5.59955"  class="fil1 fnt0">
  <tspan rotate="401">e</tspan>   
</text>
<text x="3.35142" y="6.20915"  class="fil1 fnt0">
  <tspan rotate="391">x</tspan>   
</text>
<text x="4.16422" y="6.68328"  class="fil1 fnt0">
  <tspan rotate="382">t</tspan>   
</text>
<text x="4.58388" y="6.86955"  class="fil1 fnt0">
  <tspan rotate="373"> </tspan>   
</text>
<text x="13.872" y="2.80555"  class="fil1 fnt0">
  <tspan rotate="373">t</tspan>   
</text>
<text x="5.03741" y="7.02195"  class="fil1 fnt0">
  <tspan rotate="364">o</tspan>
</text>
<text x="5.97918" y="7.07275"  class="fil1 fnt0">
  <tspan rotate="349">n</tspan>   
</text>
<text x="6.90402" y="6.85261"  class="fil1 fnt0">
  <tspan rotate="337"> </tspan>   
</text>
<text x="7.34061" y="6.66635"  class="fil1 fnt0">
  <tspan rotate="327">a</tspan>   
</text>
<text x="8.11305" y="6.14141"  class="fil1 fnt0">
  <tspan rotate="318"> </tspan>
</text>
<text x="9.82499" y="4.26182"  class="fil1 fnt0">
  <tspan rotate="318">t</tspan>   
</text>
<text x="8.46497" y="5.81968"  class="fil1 fnt0">
  <tspan rotate="314">P</tspan>   </text>
<text x="9.22189" y="4.98995"  class="fil1 fnt0">
  <tspan rotate="310">a</tspan>   
</text>
<text x="10.16" y="3.94009"  class="fil1 fnt0">
  <tspan rotate="322">h</tspan>   
</text>

Вывод, который мы делаем – Corel Draw не может генерировать код с корректным отображением привязки текста к траектории.

В этой лекции мы рассмотрели основные элементы и атрибуты SVG – графики для работы с текстом. Применение фильтров (см. Лекцию 7 и Лекцию 8) к тексту позволяет получать дополнительные эффекты – тень, размытие, текстуры.

Вернуться к учебному плану