FictionBook 3.0 beta - краткое описание

Материал из FictionBook
Перейти к: навигация, поиск

Описание формата fb3 (предложение)

Ответственный: Грибов Д.П., grib@gribuser.ru

Первая версия предложена 3 июля 2008 г.
Версия 0.1 от 1 октября 2008 г.

Цель создания формата

Формат fb3 разрабатывается для удовлетворения возросших требований к форматированию текста книг и возможностям их каталогизации. Современное состояние стандартов и технологий позволяет, помимо простого расширения набора тегов, привести формат к совместимости с наиболее удачными и перспективными наработками. В частности, в основу fb3 положен стандарт Open Packaging Convention (ECMA-376 Part 2). Помимо этого в качестве картинок можно использовать SVG-файлы (и GIF-файлы, патент на которые закончился).

Преемственность с форматом fb2

Приоритеты, на которых основан формат fb2, остаются, но частично расширяются:

  • Принцип одна книга - один файл сохраняется. Более того, fb3 полноценно поддерживает "подшивки" - несколько книг в одном fb3-файле.
  • Минимализм форматирования сохраняется, но для работы со сложными документами (например, с учебниками) в fb3 вводится минимально-необходимый набор тегов, обеспечивающий максимальное качество верстки при максимально возможной простоте.
  • Вся мета-информация является неотъемлемой частью файла. В соответствии с возросшими требованиями к полноте и точности мета-информации была разработана новая, прямо не совместимая с дескрипшном fb2, структура.
  • Формат, как и прежде, максимально ориентирован на полноценную и эффективную переносимость текста на любое устройство, с ограниченными ресурсами, черно-белым или небольшим дисплеем и т.п. Единожды сверстанная книга должна быть максимально удобной в любой среде.


Основные отличия от fb2 находятся не в области идеологии, а в области технологических решений. Коротко о наиболее важных отличиях отметим:

  • fb3-файл теперь является по сути zip-архивом, в котором упакованы отдельными файлами мета-информация, картинки и текст. Требования к формату zip-файла и соглашения об именах файлов, их размещении и организации описаны в стандарте ECMA-376 Part 2
  • Мета-информация выносится в отдельный файл, тело книги и сноски - в другой файл
  • Все картинки выносятся из XML и являются, в конечном счете файлами в архиве
  • Связи документа с файлами осуществляются не через xlink, а в соответствии с описанным в OPF механизмом отношений (Relationships)
  • Помимо ряда мелких нововведений в форматирование (разрядка, подчеркивание) добавляется принципиально новый объект "блок", выпадающий из общего течения документа и оформляющий произвольный фрагмент книги в виде четырехугольника, который может иметь границу, внедряться в текст с обтеканием и иметь некоторые другие особенности размещения.
  • Часть тегов, имеющих смысловые аналоги в HTML будет переименована, к примеру emphasis превратится в em.

Общая информация о структуре fb3-файла

В соответствии со спецификацией ECMA-376 Part 2 файл fb3 будет представлять собой стандартный zip-архив, допустимые методы сжатия - store (без компрессии) и deflate (совместимый с zlib). Имена файлов в архиве сравниваются без учета регистра, изначально зарезервированы имена файлов:

  • /[Content_Types].xml
  • /_rels/.rels

Файл /_rels/.rels адресует файл-обложку (thumbnail) для всего fb3-пакета и как минимум один файл дескрипшна книги. Дескрипшн книги, в свою очередь, связан с телом книги и своей собственной обложкой, а тело книги связано со всеми включенными в него объектами. Все связи описываются стандартными средствами OPC (ECMA-376 Part 2, раздел 8.3 Relationships).

В качестве графических форматов будет поддерживаться gif/png/jpg/svg (SVG 1.1 Basic)

Более детальное описание требований к zip-архиву, механизмов связывания, кодировок и ограничений на именование файлов в архиве можно найти в стандарте ECMA-376 Part 2.

.xml-файлы в архиве

fb3_meta.xml содержит:

  • Метаинформация: название документа (пустое название недопустимо, редактор не должен позволять сохранять такой документ), авторы, жанр, etc. В основном повторяет дескрипшн fb2, со следующими отличиями:
    • Упразднен src-title-info (информация библиографического характера будет отдельно обрабатываться, в книге ей делать нечего)
    • Тег translator упраздняется
    • Тег author в title-info получит новый атрибут role, который будет принимать значения author|translator|compiler|illustrator|editor. Тег translator упраздняется, соответственно.
    • Добавлен необязательный book-sub-title для сложных заголовков.
    • Новый тег quick-annotation для короткого (120 символов, к примеру) анонса
    • Новый порядок тегов title-info:
      1. coverpage
      2. book-title
      3. book-sub-title
      4. sequence
      5. author
      6. genre
  • Структура документа: дерево секций, объединенных.
    • Оконечные (содержащие текст) секции будут храниться в отдельных файлах, которые описываются в виде атрибута xlink:href.
    • Для всех секций возможно указание обложки, картинки, title, subtitle, id.

text#.xml ? множественные файлы с текстом секций. Аналогичны содержимому оконечных секций в fb2 с небольшими расширениями. Имена и размещение файлов в архиве не оговаривается, но все они должны быть корректно адресованы через атрибут xlink:href секций в файле fb3_meta.xml. Нововведения по отношению к fb2:

  • Нумерованные и ненумерованные списки
  • Блоки, выпадающие из общего потока, с атрибутами float, align, width. Возможно, с разрешенной вложенностью. Возможно, с бордерами. К примеру <block float="left" width="40em" align="right"><p>тутатекст</p></block>.
  • Убирается inline-элемент code, добавляется block-элемент code, аналог p.
  • Картинки больше не хранятся в XML, лежат в архиве, отдельно.
  • Сноски будут типизированные. Выделяются концевые и подстраничные. Читалке желательно отображать сноски соответственно.
  • Сноски выделяются в отдельный section (или в несколько), и отделяются друг от друга не секциями, а новым тегом <note>
  • Новый элемент marker (в учебных пособиях часто используется)

fb3_marks.xml содержит закладки ? указывается адрес закладки (с точностью до символа, отмечается начало выделения и конец), тип закладки (закладка, заметка, правка). Адресация с использованием xpointer, в закладке может содержаться текст, аналогичный содержимому секций.

Пример содержимого fb3-архива:

Book.fb3 -> fb3-файл, де-факто ZIP-архив
   fb3_meta.xml -> Обязательный файл в архиве, содержит метаинформацию и структуру
   cover.png -> Необязательный файл в архиве, содержит малоразмерную версию обложки
   text.dir -> Папка, в которой лежат тексты (могли лежать и в корне, но так нагляднее)
      part1.xml -> Первая секция (у нас всего две текстовых секции в тексте)
      part2.xml -> Вторая секция
   fb3_marks.xml -> Заметки/закладки на полях (которые поставила программа-читалка?)