top of page

Векторная графика SVG
в электронной книге

Никита Козель

Новый подход к работе с изображениями в книгах в формате EPUB — использовать язык векторной графики SVG для схем, формул, карт и иллюстраций. SVG позволяет оптимизировать электронные книги, содержащие большое число иллюстраций, без потери качества изображений. Разбираемся в этом материале, как начать работать с SVG и на что обратить внимание в процессе работы.  

Что такое SVG

SVG (Scalable Vector Graphics) — язык разметки масштабируемой векторной графики, созданный Консорциумом Всемирной паутины (W3C) и входящий в подмножество расширяемого языка разметки XML. Этот язык предназначен для описания двумерной векторной и смешанной векторно-растровой графики в формате XML.

 

SVG-файлы представлены в форме текста, который следует структуре XML. Это делает их читаемыми как человеком, так и компьютером. Каждый элемент в SVG-файле определяет определенный аспект графического изображения, такой как линия, прямоугольник или текст. Векторные изображения хранят информацию о формах и цветах, что позволяет им быть масштабируемыми без потери качества.

 

Поскольку SVG является форматом векторной графики, изображения создаются с использованием геометрических фигур. SVG поддерживает множество различных графических элементов, включая:

  • Линии и кривые: от простых линий до более сложных кривых Безье.

  • Геометрические фигуры: круги, прямоугольники, многоугольники и эллипсы.

  • Текст: SVG позволяет вставлять текст, оформленный разными шрифтами и стилями.

  • Заливка и обводка: цвета заливки и обводки могут быть определены для каждого элемента.

  • Прозрачность: можно управлять прозрачностью графических элементов.

  • Градиенты: SVG поддерживает линейные и радиальные градиенты для создания более сложных цветовых эффектов.

 

Вот некоторые устройства и программы для чтения электронных книг, которые поддерживают формат SVG.

 

Все последние модели ведущих производителей читалок с электронными чернилами поддерживают SVG: Amazon Kindle, Kobo, PocketBook, Sony Reader и др. Устройства Kindle не работают с форматом EPUB напрямую, поэтому нужно помнить об издержках конвертации, а поддержка векторной графики в Kindle появилась вместе с очередной версией собственного формата Amazon — KF8. Среди моделей PocketBook, поддерживающих SVG, можно назвать PocketBook Touch HD 3, PocketBook Touch Lux 4, PocketBook InkPad 3 и др. Старые модели Kobo и Sony Reader, как и других читалок, могут иметь ограниченную поддержку SVG.

 

Последние версии приложений крупнейших книжных сервисов для iOS и Android имеют поддержку SVG. Это Apple iBooks для iOS, Google Play Books для Android и приложение Amazon Kindle для обеих платформ. Среди российских книжных сервисов читалка сервиса Строки поддерживает и SVG, и стили CSS для качественной работы с векторной графикой, а читалка Букмейта отображает SVG, но без стилей.

 

Популярные десктопные программы Thorium Reader, Calibre, Adobe Digital Editions и другие также способны отображать графику в SVG.

Преимущества SVG

Основное преимущество формата SVG заключается в его масштабируемости. Поскольку изображения в формате SVG описываются с использованием математических данных, они могут быть масштабированы без потери качества. Это делает SVG идеальным для веб-графики, так как она может отображаться на разных устройствах и экранах с разными разрешениями.


SVG позволяет добавлять интерактивные элементы, такие как гиперссылки и анимации. Это делает SVG полезным для создания интерактивных графических элементов, таких как интерактивные карты или диаграммы.

<svg width="300" height="100">
<title>Анимированный квадрат</title>
<!-- Внешний контур квадрата -->
<rect x="0" y="0" width="300" height="100" stroke="black" stroke-width="1" />

<!-- Анимированный квадрат -->
<rect
  x="0"
  y="0"
  width="20"
  height="20"
  fill="blue"
  stroke="black"
  stroke-width="1">
 
  <!-- Анимация движения по пути -->
  <animateMotion
    path="M 250,80 H 50 Q 30,80 30,50 Q 30,20 50,20 H 250 Q 280,20,280,50 Q 280,80,250,80Z"
   
    dur="3s" <!-- Продолжительность анимации в секундах -->
    repeatCount="indefinite" <!-- Бесконечное повторение анимации -->
    rotate="auto" />  <!-- Автоматическое вращение объекта -->

</rect>
</svg>

nk1_01.gif

Пример простого кода для создания анимации

SVG поддерживает стили, которые могут быть определены внутри файла SVG или внешними таблицами стилей CSS. Это позволяет легко изменять внешний вид элементов SVG без изменения самого содержания.

 

Большинство современных веб-браузеров, таких как Google Chrome, Mozilla Firefox, Safari и Microsoft Edge, полностью поддерживают SVG. Это означает, что SVG-изображения могут быть вставлены в веб-страницы и отображаться корректно. SVG можно использовать не только на веб-страницах, но и в различных приложениях для редактирования векторной графики, например, Adobe Illustrator, Inkscape и CorelDRAW.

 

При необходимости SVG может быть преобразован в другие форматы, такие как PNG или JPEG, чтобы обеспечить совместимость с устройствами, которые не поддерживают SVG. Экспорт математических формул из профильных программ (Mathtype, LaTex etc.) в SVG является огромным преимуществом этого формата. Примеры такого экспорта будут рассмотрены ниже.

Использование SVG в EPUB

Если вы создаете SVG-графику для использования в электронных книгах, рекомендуем придерживаться более простых и базовых элементов и стилей. Избегайте сложных фильтров, множества вложенных групп и других более сложных функций, которые могут вызвать проблемы на некоторых читалках.

 

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

 

Например географические карты часто содержат комбинацию векторных и растровых элементов. Границы стран, рек и городов делаем в векторном формате (для ясности чтения), в то время как тени, текстуры и рельефные детали оставляем в растре. Таким образом достигается оптимальный результат, учитывающий вес файла в публикации и передачу точности деталей.

 

Для формул и диаграмм очевидно необходимо использование векторного формата (индексы, математические операторы и т.д.). В растрированном виде это всё попросту поглотят пиксели, да и вес публикации будет расти в геометрической прогрессии.

 

В то же время есть векторные объекты, которые не стоит представлять в виде SVG. Большое количество узлов в пути, много объектов в группе, использование сложных стилей и эффектов, вложенные элементы и группы. Всё это может добавлять сложности файлу, особенно если это используется в избыточном количестве или формирует сложные структуры. В таком случае стоит посмотреть в сторону растровой графики (PNG, JPG). 


Использование SVG для включения формул в документ EPUB является одним из наиболее гибких и высококачественных способов, поскольку SVG-формулы остаются редактируемыми и масштабируемыми, а также сохраняют четкость и качество при изменении размера отображения. Это особенно полезно для сложных формул и выражений. SVG-документы легко интегрируются с HTML- и XHTML-документам, что несомненно является преимуществом при работе с EPUB.

Формула в редакторе Mathtype

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 124.7828064 48.1357422" style="enable-background:new 0 0 124.7828064 48.1357422;" xml:space="preserve">
<g>
<rect x="75.7515411" y="16.10672" width="9.375" height="0.28125"/>
<rect x="114.4078064" y="8.60672" width="8.5" height="0.28125"/>
<rect x="48.2515717" y="32.98172" width="76.5312347" height="0.5937805"/>
<g>
<path d="M16.8222656,31.5673828l1.6933594-0.3632812c0.1210938,0.2890625,0.21875,0.5839844,0.2929688,0.8847656
C18.9140625,32.5302734,19,33.0537109,19.0664062,33.6591797c0.03125,0.3046875,0.0742188,0.9492188,0.1289062,1.9335938
c0.4882812-0.5390625,0.7792969-0.8730469,0.8730469-1.0019531c0.515625-0.6992188,0.8125-1.109375,0.890625-1.2304688
c0.1289062-0.2070312,0.21875-0.3886719,0.2695312-0.5449219c0.0429688-0.1171875,0.0644531-0.2285156,0.0644531-0.3339844
c0-0.1015625-0.0908203-0.21875-0.2724609-0.3515625s-0.2724609-0.28125-0.2724609-0.4453125
c0-0.125,0.0498047-0.2363281,0.1494141-0.3339844s0.2177734-0.1464844,0.3544922-0.1464844
c0.1640625,0,0.3085938,0.0683594,0.4335938,0.203125s0.1875,0.3007812,0.1875,0.5s-0.03125,0.390625-0.09375,0.5742188
c-0.1015625,0.296875-0.2910156,0.6601562-0.5683594,1.0878906s-0.7246094,1-1.3417969,1.71875
c-0.078125,0.0898438-0.5117188,0.5429688-1.3007812,1.359375h-0.2167969
c-0.09375-2.4726562-0.2890625-4.015625-0.5859375-4.6289062c-0.0976562-0.1992188-0.2597656-0.2988281-0.4863281-0.2988281
c-0.0976562,0-0.2363281,0.0175781-0.4160156,0.0527344L16.8222656,31.5673828z"/>
</g>

</svg>

Часть формулы (переведенной в кривые) в текстовом редакторе в формате SVG

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

 

Использование специфических шрифтов в SVG-изображениях может вызвать проблемы, особенно если вы не встраиваете эти шрифты в файл EPUB. Вот несколько дополнительных соображений о шрифтах:

 

  • Зависимость от системных шрифтов. Если вы используете конкретные шрифты в SVG-изображениях, и эти шрифты не встроены в документ EPUB, читалка будет пытаться использовать системные шрифты, которые установлены на устройстве читалки. Это может привести к изменению внешнего вида текста и даже к тому, что текст станет неразборчивым, если используется отличающийся от ожидаемого шрифт.

  • Ограниченный выбор шрифтов. Читалки могут иметь ограниченный набор системных шрифтов, что означает, что ваш выбор шрифтов для SVG может быть сильно ограничен. Это также может привести к проблемам с отображением, если желаемый шрифт отсутствует на устройстве.

  • Увеличение размера файла. Встраивание шрифтов в EPUB увеличивает размер файла, что может быть нежелательным, особенно если вы стремитесь к малому размеру файла для более быстрой загрузки на устройствах читалки.

 

В целом использование системных шрифтов в SVG-изображениях для формата EPUB может повлечь за собой ряд проблем. Не встроенные шрифты могут привести к изменению внешнего вида текста или формулы и даже сделать его неразборчивым на устройствах читалки, где отсутствует необходимый шрифт. Ограниченный выбор системных шрифтов дополнительно ограничит ваше творчество и может вызвать проблемы с отображением, если читалка не поддерживает выбранный шрифт. С другой стороны, встраивание шрифтов для EPUB увеличит размер файла, что может быть нежелательным при стремлении к малому размеру для более быстрой загрузки на устройствах читалки. Поэтому превращение формул в кривые Безье может стать прекрасной альтернативой.

Пример использования SVG (для формул) в EPUB 2.0

Импорт формул в программу вёрстки

Давайте рассмотрим алгоритм, который позволяет работать над книгой, содержащей большое количество математических формул, используя в качестве примера книгу Нассима Талеба «Статистические последствия жирных хвостов. О новых вычислительных подходах к принятию решений». Книга содержит большое количество иллюстраций, графиков и около тысячи формул. Для работы верстальщику были предоставлены растровые иллюстрации, графики в векторном формате, а также текст с уже набранными формулами. На тексте мы остановимся подробнее.

 

Научный редактор, который готовил текст, выбрал для работы Microsoft Word и для набора формул использовал встроенный редактор формул Equation Editor. Теперь задача верстальщика — импортировать текст и формулы в inDesign.

 

Первый шаг: проверить и привести формулы к одному формату, в данном случае это формат MathType. Это нужно для дальнейшего экспорта формул в inDesign. MathType позволяет конвертировать все формулы, сделанные в Equation Editor, автоматически.

Второй шаг: экспорт всех формул из публикации Word в отдельную папку в формате EPS с присвоением им одинакового суффикса Eqn####. Теперь все формулы слинкованы и собраны в одну папку.

 

И, наконец, третий шаг: импортируем нашу публикацию в InDesign.

 

Таким образом мы получили формулы в формате EPS, встроенные в текст как инлайн графика, которые мы можем изменять и редактировать. Это можно делать прямо в MathType либо в Adobe Illustrator, но это будет менее удобно для правки.

 

В этой статье мы не будем разбирать вёрстку формул в бумажной книге, а сразу перейдем к электронному изданию.

Экспорт формул в EPUB

Экспортируем публикацию со стандартными настройками, которые используем для EPUB 2.0. Вот как выглядит наша формула в EPUB после экспорта.

<p> <img class="_idGenObjectAttribute-357" src="image/Eqn391.png" alt=""/></p>

HTML

img._idGenObjectAttribute-357 {width:31.36%;}

CSS

Так как мы выбрали векторный путь представления формул (SVG), растровый формат PNG нам не подходит.  Поэтому мы вооружаемся Adobe Illustrator, палитрой Actions и пересохраняем наши файлы EPS в формат SVG. Нужно не забыть перевести в кривые наши формулы, поскольку мы не встраиваем шрифты в публикацию, а также отформатировать монтажную область по размеру самой формулы для корректного помещения в программу верстки. То же самое касается и графиков.

nk1_04_edited.png

Диалог сохранения в Adobe Illustrator

Теперь у нас есть дубликат формул, которые имеют формат SVG. Загружаем файлы в EPUB, делаем замену PNG на SVG.

Важный момент по размерам отображения формул. Сейчас в атрибутах тега img мы видим проценты.

img._idGenObjectAttribute-357 {width:31.36%;}

Для отображения формул они не подходят, поскольку размер формул привязан к размеру основного шрифта. А это значит, что высоту формул надо обозначать в относительных единицах — em. К сожалению, в каждой формуле процент отображения совершенно разный, и поиск и замена нам не помогут. В книге, которую мы взяли за пример, формулы по высоте варьируются от одной строки (примерно 1em) до пятиэтажных формул (примерно 5em). Сначала создадим стили для наших формул в CSS.

img.f1 {height:1em;} /*стиль для формулы высотой в одну строку*/

img.f2 {height:2em;} /*стиль для формулы высотой в две строки*/

img.f5 {height:5em;} /*стиль для формулы высотой в пять строк*/

и так далее…

 

Определив стили, мы применяем их к каждой формуле индивидуально.

<p><img class="f24" src="image/Eqn781.svg" alt=""/></p>
<p><img class="f35" src="image/Eqn782.svg" alt=""/>.</p>

HTML

img.f35{margin:0.4em 0;height:3.5em;vertical-align:middle;}
img.f24{margin:0.4em 0;height:2.4em;vertical-align:middle;}

CSS

Результат работы в приложении Строки для iPad

SVG представляет собой удобный формат для создания масштабируемой векторной графики, особенно в веб-дизайне и электронных книгах. Его ключевое преимущество — масштабируемость без потери качества. SVG поддерживает интерактивность и стили, делая его гибким инструментом. Однако при использовании в EPUB, следует учитывать возможные ограничения и проблемы с отображением на различных устройствах. Осмотрительный выбор формата в зависимости от конкретных требований проекта — залог успешного использования SVG.

Статья впервые опубликована 27 марта 2024 года.

NK_2024 (1)_edited.jpg

Никита Козель

руководитель компании НЕБУМАГА

bottom of page