от Mandor » Сря Сеп 17, 2014 5:34 pm
3.5. FictionBook 2
И така стигаме до любимия ми формат – FictionBook 2, или съкратено FB2. За него могат да се кажат доста интересни неща, но да караме подред.
Първо, това не е универсален формат като разглежданите до момента; както показва името му, той е ориентиран главно към художествената литература.
Второто интересна особеност е, че той никога не е замислян като формат за четене, а като формат за съхранение и източник за генериране на други формати. Ето накратко историята му.
Преди около десетина години, в пика на всевъзможни руски интернет-библиотеки, един руснак, Дмитрий Грибов, решава да направи библиотека, в която всяка книга да се представя на потребителите във всички масови (за онзи момент) формати. Както вече казахме, по онова време всички формати са били или базирани на HTML, или се генерирали от него, като всеки имал собствени, специфични изисквания. Така че Грибов бързо стига до концепцията за семантично форматиране и тъй като нямало нищо подходящо за целта, дефинира просто подмножество на XML. (За неспециалистите – XML е текстов формат като HTML, но за разлика от него няма изрична дефиниция на смисъла на маркерите – например в един XML маркерът „<i>“ може да означава наклонен текст, а в друг XML да указва малко име на автор. Което го прави универсално средство за представяне на данни.) Той съдържа десетина блокови маркера като „заглавие“, „епиграф“, „цитат“, „стих“ и т.н., а от вътрешнопараграфните са дефинирани неща като „горен индекс“, „долен индекс“, „препратка към бележка от линия“, „акцентиран текст“ и „силно акцентиран текст“. Забележете – не „наклонен“ и „удебелен“, както погрешно го възприемат много хора, а именно „акцентиран“ и „силно акцентиран“. Към всичко това добавя стандартен метод за кодиране и влагане на картинки, както и много богат набор от метаданни, включващ жанр, данни за оригиналното произведение, данни за хартиеното издание и т.н. и в крайна сметка се получава файл, съдържащ цялата необходима информация за генериране или каталогизиране на книгата. Крайните формати се получавали чрез стандартни трансформиращи файлове (XSLT), евентуално с последващо подаване към конвертор. И за да могат да се преглеждат FB2-файловете, Михаил Манцев написва първия четец за FictionBook, като го компилира за някои от най-масовите платформи за момента – PocketPC (три версии) и Windows. И така библиотеката заработила…
Но скоро се оказало, че форматът бил толкова компактен и удобен, че получил голяма известност и повечето потребители на библиотеката използвали само него за четене. Тази известност довежда до бързо изчистване на най-големите проблеми и само след половин година се появила втората (FB2), която и до момента се радва на голяма популярност. Това е единственият ми известен формат, за който има четци под всяка операционна система и кажи-речи – за всяко устройство, пригодно за четене на електронни книги. И няма защо да се учудваме, че преди няколко години библиотеката се трансформира в един от най-популярните магазини за електронни книги в Русия – LitRes – като запази първоначалната си схема за един източник (FB2) и много крайни формати, генерирани от него.
Както сигурно вече сте разбрали, в този формат се описва именно типът на текста – „това е заглавие“, „това е епиграф“, без по никакъв начин да се указва как се извежда дадения елемент. Това налага съответното форматиране да се извърши в четеца на крайния потребител, което е чудесно – така конкретните четци прилагат схема, която е най-подходяща за съответното устройство. Например при устройства със среден размер на екрана (около 6 инча) акцентираният текст се извежда с наклонен шрифт, но в устройствата с малки екрани същият текст се извежда в различен цвят. При първите епиграфът се извежда с ляв отстъп, при вторите – без, или с много малък такъв. По-добрите четци (включително и за eInk-устройства) дори предлагат възможност на потребителя сам да си дефинира как да се извеждат съответните елементи.
Друг интересен факт е, че във втората версия се появяват стилови таблици (като в HTML), което директно противоречи на идеологията на форма̀та и е източник на всевъзможни злоупотреби (имитация на HTML чрез FB2). Слава богу, това „отклонение“ не получава особено разпространение, защото много малко четци го поддържат. А тези, които все пак го реализират, имат собствени изисквания към стиловите таблици.
Любопитно е да се отбележи, че много хора, работещи с този формат, отказват да приемат идеологията му – „укажи какво е, а не как се извежда“ – и продължават да мислят с термините на крайно форматиране. Преди месец преглеждах FB2-файл, в който препратките към бележките под линия бяха допълнително повдигнати чрез маркер за горен индекс (по аналогия на книжните издания). Като резултат, на устройствата с малки екрани, където препратката се извежда с нормален размер на шрифта, беше невъзможно да се „уцели“ мястото с писалката и да се направи преход към тялото на бележката. Аналогично беше положението и на устройствата със среден и голям екран – там препратката се извежда в горен индекс и допълнителното повдигане доведе до ефекта „степен на степен“ – в крайна сметка отново беше невъзможно да я „уцеля“ с мишката.
Тук е мястото да вметна една забележка за крайното форматиране. До момента давах примери само с абсолютно крайно форматиране – „използвай този шрифт, в този размер“. Но всичко казано важи и за относителното крайно форматиране. Пояснявам с пример – в „Царска заръка“ на Теллалов има параграф, в който размерът на думите намалява прогресивно – за имитация на заглъхваща в далечината реч – до 50% от основния размер на шрифта. И тук хората, занимаващи се със семантично форматиране, се подвеждат; те си казват „Аз не искам да налагам с какъв шрифт или какъв размер ще се чете; просто искам следващите думи да са по-малки“. И съответно дефинират стилове за размер на шрифта 95%, 90% и т.н. до 50% от основния, като форматират съответните участъци с тези стилове. Резултатът? На устройства със средни екрани текста е нечитаем след около 70%, а на устройства с малки екрани – още на 85-90% от основния размер. Така че (отново) – никакво крайно форматиране; нито абсолютно, нито относително.
Но да се върнем на FB2. От всичко казано досега може би сте останали с впечатлението, че форматът е идеален и перфектен във всяко едно отношение. Е, както във всичко останало, и тук няма идеални неща. Първо, FB2 има доста ограничени изразни средства – в началото изброих основните блокови елементи. Второ, форматът има някои глупави ограничения, които буквално повреждат форматирането, но никога не са променяни; най-фрапиращият пример е правилото, че автор на цитат или епиграф може да се появи само в края на елемента. На пръв поглед е логично, но заради това правило не можете „чисто“ да форматирате писмо с подпис и послепис – налага се да се измъквате чрез акцентиране на подписа. Друг проблем е липсата на добър редактор за генериране и/или корекция на FB2 – двата най-популярни са само за Windows и всеки си има собствени „кусури“ за оправяне. Допълнителна заблуда причиняват редакторите, които за акцентиран и силно акцентиран текст използват стандартните икони за наклонен и удебелен текст. Това подвежда начинаещите, че работят със стандартен WYSIWYG-редактор и още на заглавието натискат иконата за „удебелен“ текст и търсят как да го центрират.
И още една вметка – много хора не разбират защо се е наложило Читанка да измисля собствен формат за представяне на текстовете. Някои дори стигат до крайности – „Откъде се пръкна този измислен формат?“. Много просто – форматът на Читанка (SFB) е обикновен FB2 файл, представен чрез текстови маркери по аналогия с уики системите. Това позволява да се изработват семантично форматирани файлове, и то с произволен текстов редактор, а конвертирането им до FB2 е сведено до почти тривиално заместване.
С това приключвам прегледа на най-популярните формати за електронни книги. Искам само да ви обърна внимание на още една особеност. Ако сте забелязали, всички разгледани формати (с изключение на PDF, но – както казахме – това не е формат за електронни книги) са базирани или на HTML, или на XML, където форматирането на елементите се извършва на блоков принцип. Тоест, указва се къде започва даден блок и къде свършва. От друга страна, всички популярни редактори форматират текста на абзацен принцип – там може да асоциираш стил само към параграф. И съответно не можеш (например) да укажеш два поредни цитата, всеки от по два параграфа, което е нещо тривиално при HTML/XML-форматирането. Което ги прави не особено подходящи за работа с формати, ориентирани към блоково форматиране.