Что такое FictionBook

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

Нередко в сети встречаешь разное толкование этого понятия. Кто-то считает его форматом для PocketPC, кто-то программой для чтения электронных текстов. Поэтому этот вопрос требует тщательного разъяснения.

Итак, что же такое FictionBook? Этому можно дать несколько определений и все они будут верны. Начнем с того, что

FictionBook - универсальный формат хранения электронной литературы

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

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

FictionBook - формат, основанный на XML

За более, чем десятилетие существования Интернет мы все уже привыкли к языку разметки текста HTML - Hyper Text Markup Language. Мы все часто видим текст, размеченный тегами форматирования, с красиво (или не очень ? все зависит от того, кто им пользуется) оформленными текстом. Этот формат до сих пор популярен у части любителей электронной литературы, и вы наверняка нередко встречали книги в формате html или chm - упакованной формой формата html. Кроме того, на заре развития Интернет html был основным языком для создания сетевых страниц или сайтов.

Сама по себе идея использования тегов для форматирования текста - идея замечательная. Однако широкое использование стандарта быстро выявило его основные недостатки. Перечислим некоторые. Это расплывчивость стандарта - мы можем закрывать некоторые теги, например, тег <p>, можем не закрывать, стандарт возражать не будет. Стандарт допускает неверный порядок вложения тегов. Может быть с точки зрения невнимательного пользователя это замечательно, но это создает определенные трудности при обработки формата. Конечно стандарт подобные вольности не одобряет (и даже называет подобное невалидным документом), но все равно программам отображения рекомендуется пытаться как-то его отобразить, и вот тут-то и выплывают особенности домысливания реализованные по разному в разных программах (и даже в отличающихся версиях одной программы). К недостаткам можно отнести и то, что все теги, которые можно использовать, жестко описаны и для любой задачи несколько избыточны. В самом деле, встречали ли вы документ, в котором использовались весь перечень тегов стандарта html? С другой стороны, реализация обработки всех тегов с всевозможными атрибутами (да еще и разбор некорректных документов) весьма нетривиальная задача, тем более для устройств с ограниченной памятью (КПК, телефоны). К недостаткам html можно отнести и то, что, как правило, один документ состоит из нескольких файлов, причем иллюстрации всегда находятся в отдельных файлах.

Причем первый недостаток (т.е. допустимость отхода от стандарта) настолько отравляет жизнь сообществу, что была предпринята попытка принять стандарт xHTML, т.е. HTML, являющийся языком, основанном на XML. Он уже более строго относится к невалидным документам (незакрытые теги, пересекающиеся тэги, т.е. когда один тег из пары находится внутри пары других, а второй снаружи, ...). Но и здесь требования обратной совместимости с HTML сохранили некоторые его (HTML) недостатки. Это и чрезмерная сложность тэгов, и ориентация именно на визуальное отображение (чем это плохо будет рассмотрено позднее). Но, тем не менее, это все-таки XML, что позволяет использовать для обработки xHTML XML-ориентированные программы и библиотеки.

FictionBook - это подмножество стандарта XML (eXtensible Markup Language). В чем основные различия между html и xml? Первое, XML также основан на тегах, но в отличии от html правила применения тегов очень строгие и не допускается никаких вольностей. Список тегов произвольный, пользователь может сам создавать собственные теги. Теги зависимы от регистра, то есть тег <i> и тег <I> - это разные теги. Но самое главное преимущество состоит в том, что XML документ может (а в FictionBook в обязательном порядке) сопровождаться XML-схемой. XML-схема - это файл, содержащий все применяемые теги соответствующего формата и описывающие правила их применения. В FictionBook - это файл FictionBookX.xsd, где X - номер версии, для которой создана схема. Подробно о схеме мы поговорим позже в разделе ?Комментарии к схеме?. Здесь же важно указать, что схема описывает такие параметры, как последовательность применения тегов, обязательность или необязательность применения, правила вложенности, то есть какие теги могут присутствовать внутри определенного тега, а какие нет. Именно эта схема применяется для валидации (проверки правильности подготовки) документа. Как вы видите, подготовить правильный документ в формате FictionBook - задача более сложная и требует, даже при наличии арсенала программного обеспечения подготовки документов в формате FictionBook, обязательного ручного вмешательства. Отсюда следует аксиома, что подготовить качественный документ нажатием одной кнопки принципиально невозможно.

Но основным недостатком стандарта html, с точки зрения задачи, которые мы ставим (напомню, что мы говорим о формате хранения электронной литературы) является то, что html является форматом отображения текста. Иными словами он говорит о том, как отображать тот или иной элемент, но не говорит о том, что он собой представляет. Нет возможности понять, что собой представляет фраза, заключенная в теги <h1>...</h1> - имя автора, название книги, название главы, или что-то еще. Причем, если возможность настройки отображения под себя хоть и приятна, но не критична, то настройка под ограниченные возможности (или еще какие-то особенности) программного и аппаратного обеспечения бывает совершенно необходима, если нас конечно не устраивает полная потеря оформления. Человек еще может догадаться, но, к сожалению, компьютер такой прозорливостью не обладает. И тут мы подходим еще к одному очень важному определению.

FictionBook - формат описания структуры документа

Все теги, которые применяются в стандарте FB, описывают структурные элементы документа (автор книги, название, главы, параграфы, стихи, эпиграфы, аннотации и так далее), причем в минимально необходимом наборе, но ничего не говорят о том, как они должны быть отображены. Отображение отдается на откуп или таблицам преобразования (css, xslt) или ридеру. Причем в случае прямой работы ридера с форматом FB, практически все настройки отображения можно сделать настраиваемыми пользователем.

Это самое замечательное свойство формата FB. В самом деле, тот кто хоть один раз готовил текст в любом формате для чтения в ридере (я имею ввиду качественную подготовку, а не поток текстового файла, где при чтении книги можно только догадываться, что каким структурным элементом является) всегда сталкивался с необходимостью ручного определения структурных элементов документа. Не существует алгоритма, позволяющего со 100% вероятностью программно различить эпиграф и стихотворную строфу, название части (заголовок верхнего уровня) и название главы (заголовок нижнего уровня), заголовка и подзаголовка. Из формата FictionBook процесс подготовки любого формата можно полностью автоматизировать, потому что в выполнении единственной задачи, которая требует ручного вмешательства отпала необходимость. Вот почему в первом определении было сказано, что это универсальный формат. Но это только первое преимущество формата FB. Вторым преимуществом является то, что зная структуру документа, мы можем работать непосредственно со структурными элементами файлов формата FictionBook. Например, можно выбрать из всех файлов библиотеки имя автора, название произведения, жанр, обложку и аннотацию и создать автоматический каталог библиотеки, что очень актуально для онлайновых библиотек, но и в домашней библиотечке будет хорошим подспорьем. Можно вывести отдельную главу или даже документ из отдельных частей или глав, то есть любых структурных частей документов библиотеки.

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

Fb2-shema.jpg

Ну и напоследок рассмотрим схему подготовки документов. Для подготовки формата FB2 достаточно иметь любой текстовый файл, на иллюстрации мы обозначили входящий текст зеленной веткой и назвали Text. Здесь наступает самый ответственный момент. Используя различные программы (Any2fb, FBtools, BookDesigner), мы конвертируем файл в предварительный документ формата fb2. Затем используя FBTools (кстати, я предпочитаю использовать FBTools в связке с Any2FB, то есть для импорта файла в программу FBtools использую Any2FB) или любой текстовый редактор, тщательно проверяем форматирование - правим ошибки форматирования, проверяем на соответствие схеме валидатором. Только убедившись в том, что документ отформатирован верно, сохраняем и получаем файл в формате FictionBook. В зависимости от сложности текста и навыков подготовки на этот процесс уходит от 15 минут до нескольких часов. Зато теперь мы имеем документ в формате FictionBook (центральное ядро рисунка). И можем положить его в библиотеку, при желании даже заархивировав (многие программы и, в частности, ридер Haali, умеют работать непосредственно с архивами). Если вам понадобится этот файл в другом формате, по причине того, что ваше устройство и операционная система не имеет ридера для прямой работы с форматом FB (надеюсь, что это явление временное), вы можете легко переконвертировать в любой формат без боязни потерять качество разметки документа, например, используя программу fb2any (оранжевые ветви рисунка). Почему? Ну теперь вы это сами понимаете.

Алексей Седых /19.11.2004 14:28/

Личные инструменты