Создание электронных книг в формате FictionBook 2.1: практическое руководство
Шрифт:
Самое существенное нововведение — выделенные блоки, с атрибутами расположения, выравнивания, отбивки бордюра. Соответственнно, тэг форматирования code заменен на элемент code. Сделано все это для облегчения верстки сложных документов, в частности учебников и научно-популярных изданий.
Вообще, ясно просматривается тенденция расширения применяемости формата. Если FB2 «претендовал», в основном, на художественную литературу, то FB3 должен «перекрыть» большинство видов книжной продукции, исключая разве что, глянцевые журналы.
Главное достоинство FictionBook остается неизменным: максимальная ориентация на полноценную и эффективную переносимость книги на любое устройство, с ограниченными ресурсами, черно-белым или небольшим дисплеем и т.п. Единожды сверстанная книга должна быть читаема на любой аппаратной базе.
Сейчас проект находится в состоянии «бета». Это позволяет надеяться, что в формат будут добавлены еще какие-нибудь полезные
Желающие узнать больше могут ознакомиться с соответствующей статьей Дмитрия Грибова на FictionBook.org, краткий пересказ которой вы, собственно, сейчас и прочли.
От себя же вынужден отметить, что, несмотря на столь выдающиеся задатки, будущее формата весьма туманно.
Во-первых, неоспоримо, что на инновационный формат будет «давить» уже накопленная масса книг. Пусть даже конвертация FB2 в FB3, стараниями Дмитрия Грибова, будет тривиальной задачей. Но перелопачивание прорвы книг растянется на годы. Именно большой объем имеющихся данных в свое время помешал новым форматам VQF, MP3 Pro, а затем и OggVorbis вытеснить MP3.
Кроме того, за бугром уже стал офицальным стандартом весьма зубастый конкурент — e-Pub. Конечно, можно успокаивать себя, что в Рунете он не прижился. Но продвижение FB3 за рубеж он может подпортить самым решительным образом.
Конечно, за FB3 стоит уже не горстка энтузиастов, а солидная компания — «». Что добавляет в нашу бочку мёда еще один черпачок дёгтя.
Велик соблазн сделать из FB3 чисто коммерческий формат. Тем более, что навесить DRM на zip-архив на порядок проще, чем на текстовый XML. Конечно, навряд ли FB3 станет закрытым форматом. Это, как говорится, из области фантастики. Но в том, что продвинутые средства разработки останутся монополией «»-а, можно даже не сомневаться. Что, несомненно, «добавит» формату привлекательности.
Впрочем, автор книги искренне надеется, что последние абзацы так и останутся параноидальными домыслами, а FB3 сравнится по популярности с MP3. К вящей радости читателей…
Часть II
Подробное описание формата FictionBook
§ 2.1 Структура файла FictionBook.
Базовые понятия
Книга FictionBook представляет собой XML-файл.
Структурно этот файл можно разделить на три части.
1) Desсription — заголовок (описание) книги;
2) Body — непосредственно текст книги. В книге может быть несколько body.
3) Binary — необязательная часть. Содержит бинарные файлы, в кодировке BASE64. [2.1] Как правило, это картинки.
2.1
Подробное описание BASE64 cм. приложение E.
§ 2.2 Пример книги в формате FictionBook
Cпецификация (schema) FictionBook находится на сайте Дмитрия Грибова, а также входит в комплект FB Tools. Поэтому размещать ее в электронной версии книги смысла нет.
Но пример книги в формате FictionBook привести необходимо:
<?xml version="1.0" encoding="windows-1251"?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
<description>
<title-info>
<genre>reference</genre>
<author>
<first-name>Имя автора</first-name>
<last-name>Фамилия автора</last-name>
<nickname>Юзич</nickname>
</author>
<book-title>Пример книги в формате FictionBook 2.1</book-title>
<annotation>
Это пример книги в формате FictiionBook
</annotation>
<date value="2006-04-14">14 апреля 2006 г.</date>
<lang>ru</lang>
</title-info>
<document-info>
<author>
<nickname>Юзич</nickname>
</author>
<program-used>FB Tools</program-used>
<date value="2006-04-14">2006-04-14</date>
<id>1E693E16-8A80-4391-9800-C1A91A5E29A7</id>
<version>1.0</version>
<history>
v 1.0 — создание книги (Юзич)
</history>
</document-info>
</description>
<body>
<title>
Юзич
ПРИМЕР КНИГИ В ФОРМАТЕ FictionBook 2.1
</title>
<epigraph>
Это эпиграф
<text-author>Автор эпиграфа</text-author>
</epigraph>
<section>
<title>
Первая секция
</title>
Секции обычно содержат текст.
<empty-line/>
Текст может разделяться пустыми строками.
<subtitle>Подзаголовок</subtitle>
Или подзаголовками.
</section>
<section>
<title>
Вторая секция
</title>
<section>
<title>
Первая вложенная секция
</title>
Текст может быть <strong>полужирным</strong> или <emphasis>курсивным</emphasis>.
Содержать <a l:href="#Sect3">линки</a> и <a l:href="#note01" type="note">[сноски]</a>.
В тексте могут быть картинки.
<image l:href="#sampl.png"/>
<empty-line/>
</section>
<section>
<title>
Вторая вложенная секция
</title>
<cite>
Это цитата.
<text-author>Автор цитаты.</text-author>
</cite>
Снова текст.
</section>
</section>
<section id="Sect3">
<title>
Третья секция
</title>
Стихи:
<poem>
<title>
Парус
</title>
<stanza>
<v>А у дельфина взрезано брюхо винтом.</v>
<v>Выстрела в спину не ожидает никто.</v>
<v>На батарее нету снарядов уже.</v>
<v>Надо быстрее на вираже.</v>
</stanza>
<stanza>
<v>Но парус! Порвали парус!</v>
<v>Каюсь! Каюсь! Каюсь!</v>
</stanza>
<text-author>Владимир Высоцкий</text-author>
</poem>
Снова обычный текст.
</section>
</body>
<body name="notes">
<title>
Примечания
</title>
<section id="note01">
<title>
1
</title>
Текст сноски.
</section>
</body>
<binary id="sampl.png" content-type="image/png">iVBORw0KGgoAAAANSUhEUgAAAAkAAAAICAMAAAAcEyWHAAAABGdBTUEAAK/INwWK6QAAABl0
RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAGUExURQEBAf///+tZAq0AAAAY
SURBVHjaYmBAAEZGRjDGzsKvDgYAAgwABR4AH2mwMFgAAAAASUVORK5CYII=</binary>
</FictionBook>
§ 2.3 Элементы описания книги.
Базовые структурные элементы
В самом начале любого файла книги идет признак формата XML
<?xml version="1.0" encoding="windows-1251"?>
Здесь указана сигнатура принадлежности к формату XML, его версия и кодировка файла. Для русскоязычных FictionBook это обычно windows-1251 или utf-8. [2.2]
За ним в обязательном порядке следует:
2.2
UTF-8 — это ASCII-совместимая многобайтная кодировка Unicode.
В отличие от стандартного Unicode, в utf-8 cимволы с кодами от 0x00000000 до 0x0000007f (стандартный набор US-ASCII) кодируются как байты с кодами от 0x00 до 0x7f (совместимость с кодовой таблицей ASCII). Это означает, что файлы и строки, содержащие только 7-битные ASCII-символы, будут иметь одинаковое представление как в ASCII, так и в UTF-8.
Корневой элемент.
Cинтаксис: <FictionBook>content</FictionBook>.
Фактически, всегда используется в виде:
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
content
</FictionBook>.
Используется в элементах: корневой элемент
Вложенные элементы: stylesheet, description, body, binary
Количество вхождений: одно
Атрибуты: xmlns
Версия формата: 2.0
Пример: см. пример книги FictionBook, § 2.2
Список стилей, позволяющих конкретно определить, как будет выглядеть книга на экране устройства для чтения. До последнего времени читалками не поддерживался и практически не использовался. Лишь в конце 2007 года появился CoolReader 3.09 с экспериментальной поддержкой stylesheet.
Cинтаксис: <stylesheet>content</stylesheet>.
Используется в элементах: FictionBook
Вложенные элементы: нет
Количество вхождений: одно или отсутствует.
Атрибуты: type
Версия формата: 2.0
Пример:
<stylesheet type="text/css">
.body{font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;}
.p{margin:0.5em 0 0 0.3em; padding:0.2em; text-align:justify;}
</stylesheet>