МакЦентр corporate blog
Professional literature
History of IT
Software
Tablets
April 2018 27

Электронные книги и их форматы: FB2 и FB3 — история, плюсы, минусы и принципы работы

В прошлом материале мы рассказывали об особенностях формата DjVu. Сегодня мы решили остановиться на формате FictionBook2, более известном как FB2, и его «наследнике» FB3.


/ Flickr / Judit Klein / CC

Появление формата


В середине 90-х годов энтузиасты начали оцифровывать советские книги. Они переводили и сохраняли литературу в самых разнообразных форматах. Одна из первых библиотек в Рунете — Библиотека Максима Мошкова — использовала форматированный текстовый файл (TXT).

Выбор в его пользу был сделан из-за устойчивости к повреждению байтов и универсальности — TXT открывается на любой операционной системе. Однако он затруднял обработку хранимой текстовой информации. Например, для перехода на тысячную строку приходилось обрабатывать 999 строк, идущих перед ней. Книги также хранили в «вордовских» документах и PDF — последний было сложно преобразовывать в другие форматы, а слабые компьютеры открывали и отображали PDF-документы с задержками.

Также для «хранения» электронной литературы использовали HTML. Он упростил индексацию, преобразование в другие форматы и создание документов (разметку текста тегами), но привнес собственные недостатки. Одним из самых значимых была «расплывчатость» стандарта: он позволял определенные вольности при написании тегов. Некоторые из них должны были быть закрыты, другие (например, <p>) — закрывать было необязательно. Сами теги могли иметь произвольный порядок вложения.

И хотя подобная работа с файлами не поощрялась — такие документы считались некорректными — стандарт требовал от ридеров попробовать отобразить содержимое. Здесь и возникали сложности, так как в каждом приложении процесс «домысливания» был реализован по-своему. При этом на тот момент имеющиеся на рынке устройства и приложения для чтения понимали один-два специализированных формата. Если книга имелась в одном формате, её приходилось переформатировать, чтобы прочесть. Решить все эти недостатки и был призван FictionBook2, или FB2, который взял на себя первичное «причесывание» текста и конвертацию.

Отметим, что у формата была первая версия — FictionBook1 — однако она носила лишь экспериментальный характер, просуществовала недолго, на сегодняшний день не поддерживается и не имеет обратной совместимости. Поэтому под FictionBook чаще всего подразумевают его «последователя» — формат FB2.

FB2 создала группа разработчиков, возглавляемая Дмитрием Грибовым, который является техническим директором компании «ЛитРес», и Михаилом Мацневым, создателем читалки Haali Reader. В основу формата лег XML, который строже, чем HTML, регламентирует работу с незакрытыми и вложенными тегами. XML-документ сопровождается так называемой XML-схемой. XML-схема — это специальный файл, в котором собраны все теги и описаны правила их применения (последовательность, вложенность, обязательность и необязательность и др.). В FictionBook схема находится в файле FictionBook2.xsd. Пример XML-схемы вы можете найти по ссылке (она используется магазином электронных книг «ЛитРес»).

Структура документа FB2


Текст в документе хранится в специальных тегах — элементах типов параграфов: <p>, <v> и <subtitle>. Также есть элемент <empty-line>, который не имеет содержимого и используется для вставки пропусков.

Все документы начинаются с корневого тега <fictionbook>, ниже которого могут появляться <stylesheet>, <description>, <body> и <binary>.

Тег <stylesheet> содержит таблицы стилей, чтобы облегчить конвертацию в другие форматы. В <binary> лежат закодированные с помощью base64 данные, которые могут понадобится для рендеринга документа.

Элемент <description> содержит всю необходимую информацию о книге: жанр произведения, список авторов (Ф. И. О., адрес электронной почты и сайт в интернете), название, блок с ключевыми словами, аннотацию. Также в нем может быть информация о вносимых в документ изменениях и данные об издателе книги, если она выпускалась на бумажном носителе.

Вот так выглядит часть блока <description> в записи FictionBook для произведения «Этюд в багровых тонах» Артура Конана Дойла, взятого из Проекта «Гутенберг»:

<?xml version="1.0" encoding="iso-8859-1"?>
 <FictionBook xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns="http://www.gribuser.ru/xml/fictionbook/2.0">
  <description>
    <title-info>
      <genre match="100">detective</genre>
      <author>
        <first-name>Arthur</first-name>
        <middle-name>Conan</middle-name>
        <last-name>Doyle</last-name>
      </author>
      <book-title>A Study in Scarlet</book-title>
      <annotation>
      </annotation>
      <date value="1887-01-01">1887</date>
    </title-info>
  </description>

Ключевым компонентом FictionBook-документа является <body>. Он содержит непосредственно текст книги. Во всем документе этих тегов может быть несколько — дополнительные блоки используются для хранения сносок, комментариев и примечаний.

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

Достоинства формата


Стандарт FB2 включает в себя лишь минимально необходимый набор тегов (достаточный для «оформления» художественной литературы), что упрощает его обработку ридерами. Причем в случае прямой работы ридера с форматом FB, пользователь получает возможность настроить под себя практически все параметры отображения.

Строгая структура документа позволяет автоматизировать процесс преобразования из формата FB в любой другой. Эта же структура дает возможность работать с отдельными элементами документов — настраивать фильтры по авторам книг, названию, жанру и др. По этой причине формат FB2 и приобрел популярность в Рунете, став стандартом по умолчанию в российских электронных библиотеках и библиотеках стран СНГ.

Недостатки формата


Простота формата FB2 является его достоинством и недостатком одновременно. Это ограничивает функционал для сложной верстки текста (например, примечаний на полях). В нем нет векторной графики и поддержки нумерованных списков. По этой причине формат не очень подходит для учебников, справочников и технической литературы (об этом даже говорит само название формата — fiction book, или «художественная книга»).

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

FB3 — развитие формата


В связи с возросшими требованиями к форматированию текстов книг (и чтобы нивелировать некоторые из недостатков FB2), Грибов начал работу над форматом FB3. Позже разработка остановилась, но в 2014 году была возобновлена.

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

В новой спецификации формат FictionBook представляет собой zip-архив, в котором отдельными файлами хранятся метаданные, изображения и текст. Требования к формату zip-файла и соглашения о его организации прописаны в стандарте ECMA-376, определяющем Open XML.

Был сделан ряд улучшений, связанных с форматированием (разрядка, подчеркивание) и добавлен новый объект — «блок» — оформляющий произвольный фрагмент книги в виде четырехугольника и способный внедряться в текст с обтеканием. Появилась поддержка нумерованных и маркированных списков.

FB3 распространяется по свободной лицензии и имеет открытый код, поэтому издателям и пользователям доступны все утилиты: конвертеры, облачные редакторы, читалки. Текущую версию формата, читалку и редактор можно найти в репозитории проекта на GitHub.

В целом FictionBook3 пока менее распространён, чем его старший брат, однако книги в этом формате уже предлагают несколько электронных библиотек. А в «ЛитРес» еще пару лет назад заявляли о намерении перевести весь свой каталог на новый формат. Часть ридеров уже поддерживает весь необходимый функционал FB3. Например, работать с этим форматом «из коробки» умеют все современные модели ридеров ONYX, например, Darwin 3 или Cleopatra 3.


/ ONYX BOOX Cleopatra 3

Более широкое распространение FictionBook3 позволит сформировать экосистему, ориентированную на полноценную и эффективную работу с текстом на любом устройстве с ограниченными ресурсами: черно-белым или небольшим дисплеем, низким объемом памяти и др. По словам разработчиков, единожды сверстанная книга будет максимально удобной в любой среде.



P.S. Предлагаем вашему вниманию несколько обзоров ридеров ONYX BOOX:

+38
35.8k 92
Comments 142