[Все] [А] [Б] [В] [Г] [Д] [Е] [Ж] [З] [И] [Й] [К] [Л] [М] [Н] [О] [П] [Р] [С] [Т] [У] [Ф] [Х] [Ц] [Ч] [Ш] [Щ] [Э] [Ю] [Я] [Прочее] | [Рекомендации сообщества] [Книжный торрент] |
FB2 v2.4 Draft (разрабатываем)
FB2 "напрягает" своими недостатками. Думаю у присутствующих здесь разработчиков и книгоделателей есть вполне достаточно "веса" и знаний разработать и продвинуть новую ревизию FB2. Именно новую ревизию FB3 или нечто подобное врядли потянем, а вот на исправление мелких недостатков без радикальных изменений - сил вполне хватит.
Предлагаемые изменения будем собирать пока ниже, прошу высказываться по делу и не предлагать революций радикально меняющих формат, его идеологию и цели и т.п. Изменения только в рамках изменения схемы.
Проблема назрела давно.
Короче, на данный момент предлагаю следующее.
1. Расширить поддержку таблиц до того же уровня что задан в HTML без "визуальных" атрибутов (элементы caption , colgroup, thead, tbody, tfoot ).
2. Добавить атрибут dir=left/right указывающий направление текста, ко всем элементам для поддержки арабского/иврита/тайского
3. Добавить элемент u (на одном уровне с италик и болд) для подчеркнутого текста.
4. Добавить поддержку (по крайней мере в стандарте, дальше потом разберемся) файлов изображений с векторной графикой в формате SVG.
5. Добавить атрибут lang (тут надо подумать ко всем элементам-контейнерам или только к section) Первый вариант "естественней" но не понятно применение, второй позволит в одном документе держать книжки на разных языках.
6.Добавить элемент dir=right/left (на одном уровне с болд и италик) для сознательного изменения направления текста внутри другого текста.
7.Добавить элемент span (одного уровня с болд и италик) который как и в HTML не делает ничего, но позволяет задавать стили а так же имеет атрибут id чтобы на него можно было бы "прыгать" по ссылке. А то достало что "прыгать" можно только на элементы на не на случайное ничем не обозначенное место внутри текста.
8."Стандартизировать" три разных типа комментариев, те что на странице, те что в конце главы/секции и те что в конце книги. Тут надо думать, для одного из типов (на странице) возможно введение нового элемента comment выглядящего примерно так:
<comment text="1" > родился в 1820-м году <comment>
Соответственно в тексте будет показываться {1} а текст "родился в 1820-м году" при нажатии на кнопку или внизу страницы, в зависимости от интерперетации ридера.
Для второго варианта возможно добавление в section подраздела локальных section_notes , что то вроде:
<section_notes>
<note id="1"> текст комментария 1<note>
<note id="ме"> текст комментария ме<note>
</section_notes>
При этом, естественно надо будет разработать и формат ref= указывающий на комментарий локальный для секции, так как секции могут быть вложенными а такой комментарий может относится к "уровням выше" то над этим еще надо думать, чтобы не слишком усложнить "жизнь" ридерам и редакторам. Это так предложение "навскидку".
9. Сомнительный момент, вроде не в рамках нынешних изменений, но возможно можно будет продумав "аккуратно вставить" - возможность задавать автора для секции, если честно, без серьезных изменений формата, выходящих за рамки изменений в данном предложении, что либо действительно полезное сделать будет тяжело, но возможно хоть немного удастся исправить положение со сборниками.
10. Изменить схему чтобы можно было вставлять сколько угодно sectionimage не заморачиваясь empty_line и подобными извращениями.
Ну и предлагайте свое, будем "собирать", главное помните все изменения не должны идти дальше изменения схемы XSD, никаких особо радикальных изменений и предложенные изменения не должны создавать сильных проблем в имплементации на ридерах и редакторах. "Идеология" формата (то есть содержит данные а не как отображать) тоже не должна меняться.
Очень хотелось чтобы тут поучаствовали и другие разработчики Alan, Sclex, SeNS, kumpelalte, Stiver и прочие, кто может что то реально сделать, чтобы "поднять" стандарт, а не только любители умно поболтать, с одной стороны, и те кто реально делает книги и встречается с ограничениями стандарта с другой.
Думаю вместе мы потянем, а если пойдет хорошо, то со временем и на FB3 замахнемся :) Нечего ждать милостей от Литреса - сделаем все сами :)
Re: FB2 v2.4 Draft (разрабатываем)
Добавьте ещё, пожалуйста, тег <tristar /> - три звёздочки по центру. Использование <subtitle> для этих целей кажется нелогичным.
А заодно "five-dash/", "cube-triangle/", "six-boublik/", "nine-bullet/" и ещё пару десятков подобных. :-)))))))))))))))))))))))
Нет, это для коньяка.
Re: FB2 v2.4 Draft (разрабатываем)
Оказывается, формат SVG тоже XML-ный, как и FB2.
Картинка из редактора SVG Sketsa
может, svg будет
прощелучше в виде xml закодировать, чем в base64?Re: FB2 v2.4 Draft (разрабатываем)
может, svg будет
прощелучше в виде xml закодировать, чем в base64?Да уже предлагали, так и оставить в xml как есть, и положить в тот же zip рядом с текстом. А не два раза завернутым и приклеенным к хвосту.
Но Тигре что-то не нравится. Наверно длинные хвосты любит.
Re: FB2 v2.4 Draft (разрабатываем)
Дело не в нравах Тигра, а в том, что без изменения XSD в binary ничего лишнего положить нельзя, даже если прописать дополнительные namespace-ы для svg.
Re: FB2 v2.4 Draft (разрабатываем)
и положить в тот же zip рядом с текстом.
Не думаю, что это хорошо: это осложнит редактирование неспециализированными редакторами (и потребует переделки специализированных, а также вьюеров) и изгадит жизнь читателям, привыкшим хранить (например, при вычитке) несжатые .fb2 по несколько (или даже много) штук в одном каталоге.
А не два раза завернутым и приклеенным к хвосту.
(откашливается) Видишь ли, gzip и в растровой графике популярен; PNG, например, - это просто картинка, сжатая gzip'ом и приклеенная к небольшому (пару десятков байт) несжатому заголовку. Т.е. для показа .png-картинки её тоже надо раскодировать из base64, а потом раз'gzip'овать. Но зато такой подход позволяет картинки легко редактировать существующим софтом (извлёк из .fb2 - поправил - запихал обратно) и/или полностью заменять (тот же fb2bin или FBE2).
С другой стороны, хранение .svg-картинки просто в виде ветки в .fb2 потребует существенно большего расхода ОЗУ для хранения .fb2 (а особенно для развёртывания в дерево) - ридеру придётся развёртывать сразу все картинки вместе с текстом при загрузке .fb2-книги, в то время как .svgz, завёрнутый в base64 и хранящийся в тэге binary, распаковывать надо только когда понадобится, перед самой прорисовкой.
С третьей стороны, хранение в виде .svg- (или .svgz-) файла в .fbz-архиве вместе c .fb2... ну, я уже расписывал, чем оно мне не нравится.
Ясен перец, я FB2-вьюеры не писал и не отлаживал и могу ошибаться, оценивая расход ОЗУ и проца в том и в другом случае; тут надо спросить таки у вьюерописателей.
Re: FB2 v2.4 Draft (разрабатываем)
тут надо спросить таки у вьюерописателей.
Дык транспортный цех уже высказался:
- все сразу в зипе (*.fbz24?)
- все всегда в утф8
- картинки в отдельном каталоге image (понятное дело - внутри зипа)
- cover - отдельным файлом в корне архива
- description и annotation в отдельном файле - еще было бы неплохо, чтобы этот файл был первым в архиве и не сжимался бы, но это врядли реально на практике:(
Попытаюсь разжевать.
То что сейчас на самом деле неудобно для всех.
Для читателей - двойным расширением .fb2.zip - винда такого не понимает. Тоесть очевидное действие - тыкнул в файл, оно открылось в читалке - не сработает. Откроется архиватор.
Для верстальщиков - тем что нужны какие-то сделаные на коленке тулзы для вынимания и впендюривания картинок.
Выход уже много раз предлагался - узаконить отдельное расширение для сжатой подготовленной к использованию книги - .fbz
А внутри - одна, и только одна книга.
Для читателей, которых 99.99% - это снимет все проблемы. В АлРидере это уже давным давно сделано, есличо.
Верстальщики - распаковывают этот архив В ОТДЕЛЬНЫЙ ПОДКАТАЛОГ (в WinRAR-е команда Alt-E). После окончания измывательств над текстом упаковывают ВСЁ содержимое этого подкаталога в zip и переименовывают в fbz.
Это легко делается как руками, так и простейшим скриптом.
Может предложеное Аланом слишком радикально, и можно для начала ограничиться чем попроще, например отдельно хранить только новомодные svg. Раз уж старые читалки их все равно в упор не увидят, то без разницы где их хранить.
Re: FB2 v2.4 Draft (разрабатываем)
транспортный цех уже высказался:
[...]
неудобно для всех.
Для читателей - двойным расширением .fb2.zip - винда такого не понимает. Тоесть очевидное действие - тыкнул в файл,
Согласен. Раздражает.
В АлРидере это уже давным давно сделано, есличо.
О! Не знал. Это серьёзно меняет дело. Ежли чего - Alan с Buggins'ом же ж поделится этим кусочком?
Верстальщики - распаковывают этот архив В ОТДЕЛЬНЫЙ ПОДКАТАЛОГ (в WinRAR-е команда Ctrl-E). После окончания измывательств над текстом упаковывают ВСЁ содержимое этого подкаталога в zip и переименовывают в fbz.
Согласен.
Следующее очевидное неудобство - натравить вьюер на каталог, в котором много (несколько :-) ) книг, просто для .fb2, но для предлагаемой Alan'ом схемы потребует дополнительных телодвижений. Значит, придётся усложнять диалог открытия - чтобы выбирал каталог, а не файл. Как в ФР9 при выборе "FR-документа". Я не знаю, как это сделать. :-(
для начала ограничиться чем попроще, например отдельно хранить только новомодные svg. Раз уж старые читалки их все равно в упор не увидят,
Согласен - .svg-декодеру (т.е. мне :-) ) проще, если ему передают целиком файл, чем обрабатывать каждую XML-строку в отдельности.
Значит, храним .svg[z] за пределами .fb24, обращаемся к нему тем же тэгом "image", только не через "l:href=", а через какой-то другой атрибут (это, кстати, позволит сделать и бэкапную растровую картинку). Гуд. Утверждаю. :-)
Re: FB2 v2.4 Draft (разрабатываем)
.svg-декодеру (т.е. мне :-) ) проще, если ему передают целиком файл, чем обрабатывать каждую XML-строку в отдельности.
Ну почти. На самом деле это не совсем файл - алридер никаких временных файлов не создает - а поток байт на выходе того же zlib. Который используется при вытаскивании упакованного алгоритмом deflate файла из zip-a.
Но по сути верно.
Re: FB2 v2.4 Draft (разрабатываем)
если ему передают целиком файл
поток байт
Тем более.
Re: FB2 v2.4 Draft (разрабатываем)
транспортный цех уже высказался:
[...]
неудобно для всех.
Для читателей - двойным расширением .fb2.zip - винда такого не понимает. Тоесть очевидное действие - тыкнул в файл,
Согласен. Раздражает.
В АлРидере это уже давным давно сделано, есличо.
О! Не знал. Это серьёзно меняет дело. Ежли чего - Alan с Buggins'ом же ж поделится этим кусочком?
Хуевый формат. Его только AlReader и понимает, остальные читалки - нет!
Ларин предлагал сделать еще и выкачку в FBZ и может вообще переход на FBZ
Затея восторга не вызвала. В общем-то тот же FB3, или EPUB
Опять же FBE переделывать, да и кроме AlReadera никто не поддерживает, а AlReader вовсе не верх совершенства!
Re: FB2 v2.4 Draft (разрабатываем)
Хуевый формат. Его только AlReader и понимает, остальные читалки - нет!
Ларин предлагал сделать еще и выкачку в FBZ и может вообще переход на FBZ
Затея восторга не вызвала. В общем-то тот же FB3, или EPUB
Опять же FBE переделывать, да и кроме AlReadera никто не поддерживает, а AlReader вовсе не верх совершенства!
Это Ларин сваял какую-то хуиту. Щас потестил - там как минимум три баги, и за полгода не почесались исправить.
Для ретроградов никто не мешает отдавать физически тот же самый файл, но как сейчас с двойным расширением. Или сконвертированный в стандарт 2.3 методом вырезания всего лишнего. Тигра обещал сваять конвертор.
(Обещал-обещал, никто за язык не тянул)
С FBE проблема, не отрицаю. До SeNS-а я так и не достучался, а без него или кого другого взявшегося допиливать редактор - это всё пустрй трёп.
Re: FB2 v2.4 Draft (разрабатываем)
То что сейчас на самом деле неудобно для всех.
Для читателей - двойным расширением .fb2.zip - винда такого не понимает. Тоесть очевидное действие - тыкнул в файл, оно открылось в читалке - не сработает. Откроется архиватор.
Это да, точно! Зато в Лине наверно, без проблем, там часто такие двойные-тройные-четверные расширения используются(.tar.gz например)
Я обычно в Тотал Коммандере (в винде) беру файл, который хочу почитать и мышкой его переношу на значок CR.
Файл открывается в CoolReader'е. Точно также если переместить на значок AlReader'а, то открывается в AlReader'е.
Re: FB2 v2.4 Draft (разрабатываем)
[off-topic]
Кстати, объясните мне кто-ньдь "на пальцах", что такое namespace и зачем оно. Зачем "l:href=" в атрибутах тэга "image", почему нельзя просто "href="?
[/off-topic]
Re: FB2 v2.4 Draft (разрабатываем)
[off-topic]
Кстати, объясните мне кто-ньдь "на пальцах", что такое namespace и зачем оно. Зачем "l:href=" в атрибутах тэга "image", почему нельзя просто "href="?
[/off-topic]
Э.. что такое просто namespace в програмировании знаешь?
Ну типа у тебя два пакета от разных производителей , в обоих функции с одинаковым именем , если использовать "напрямую" то не только линкер офигеет но и компилятор ошибку на инклюды даст.
Тав вот для этого пакет загоняют в namespace.
Тут почти то же самое, только оно еще типа как подключения библиотек работает (хотя это не совсем так, просто задействует встроенные вроде даты там или языка), а то что URI - плюнь, это для уникальности, там любой текст может быть, просто URI удобней чем GUID например запоминать.
Re: FB2 v2.4 Draft (разрабатываем)
[off-topic]
что такое namespace и зачем оно. Зачем "l:href=" в атрибутах тэга "image", почему нельзя просто "href="?
[/off-topic]
Э.. что такое просто namespace в програмировании знаешь?
[...]
Тут почти то же самое, только оно еще типа как подключения библиотек работает (хотя это не совсем так, просто задействует встроенные вроде даты там или языка)
Хм. Всё равно не уловил. Типа если я напишу просто "href=", то оно пересечётся с
чем-то ещёуже имеющейся обработкой уже имеющегося href'а и выполнится не то, что мне нужно?а то что URI - плюнь, это для уникальности
Э... Ща зависну. Какой URI? Где URI? Не вижу я никаких URI в FB2... :-(((((((
Re: FB2 v2.4 Draft (разрабатываем)
Перепост из http://www.flibusta.net/node/85763:
[oftopic]
http://www.the-ebook.org/forum/viewtopic.php?p=530690#530690
Новая версия:
- поддержка атрибута style в fb2
Аттрибуты style теперь влияют на конвертацию следующим образом: если у элемента присутствует атрибут style с непустым значением и в настройках присутствует стиль параграфа с таким именем, то использовать этот стиль для вывода этого элемента. Теоретически возможны три варианта использования этой функциональности:
- есть готовая книжка fb2, имеющая атрибуты style. В этом случае можно обозвать стили в настройках в соответствии со стилями в книжке.
Гы-гы. Никакого css, просто имя.
Не понял. Как имя трактуется атрибут "style=" любого тэга? Не пойдёт - получается жуткая несовместимость форматов: у некоторых тэгов (особенно у самого ходового - "p") уже есть атрибут "style=", причём в нём лежит именно строка в формате CSS-стиля. И таких книг много.
Автору идеи отписал.
Re: FB2 v2.4 Draft (разрабатываем)
В общем почитал я вчера переписку
ленина с кауцкимразработчиков epub - и теперь пожалуй согласен что городить свой новый формат уже смысла нет. Поезд ушел. Или уйдет к тому времени когда мы тут сможем что-то родить кардинально новое.Так что беру взад свои первоначальные слова о невозможности косметических правок - наоборот только они и имеют смысл. Если все-таки будет что-то меняться - то чтоб старые читалки жрали это без конвертирования. Ну для совсем уж тупых читалок - конвертор с тупым вырезанием лишнего.
Re: FB2 v2.4 Draft (разрабатываем)
epub - и теперь пожалуй согласен что городить свой новый формат уже смысла нет. Поезд ушел.
ePub - формат, заточенный на представление. Значит, перебить его можно только форматом, заточенным на структурирование.
Re: FB2 v2.4 Draft (разрабатываем)
А если попробовать расширить FB2 вот таким макаром http://www.flibusta.net/node/93482 (особенно http://www.flibusta.net/comment/251696#comment-251696)?
Re: FB2 v2.4 Draft (разрабатываем)
Ну аналогичное предложение было 4 года назад - http://www.fictionbook.org/forum/viewtopic.php?p=25544#p25544
Никто и не почесался. Значит никому не надо, кроме Тигры.
Re: FB2 v2.4 Draft (разрабатываем)
Ну аналогичное предложение было 4 года назад - [...] Никто и не почесался. Значит никому не надо
Нууу, тогда нас было мало. Меня, во всяком разе, тогда точно не было - я развлекался реставрацией кинофильмов и звуковых дорожек. Опять же, сколько народу ходит на fictionbook.org и сколько сюда?
Re: FB2 v2.4 Draft (разрабатываем)
Да вроде тогда там было не меньше народу, чем сейчас здесь. Или не сильно меньше.
Тогда формату уже года три было.
Потом все разбежались - кто в литрес, кто куда.
Re: FB2 v2.4 Draft (разрабатываем)
Дополнительное форматирование можно получить уже сейчас, немного изменив схему и просмотреть результат в CoolReader.
Например:
Для поддержки выравнивания текста нужно добавить в файл fb2.css или напрямую в FB2 такие стили:
p[align="left"] {
text-align: left;
}
p[align="center"] {
text-align: center;
}
p[align="right"] {
text-align: right;
}
Вот примеры файлов:
FB2.5 (beta).fb2 [9.8 кб]
Троелсен - C# 2010 (FB2.5).fb2 [1013.8 кб]
Вот измененная схема (я в XSD не силен, т.к. скорее всего будут ошибки, но эти два файла проходят валидацию)
Схема
Только FB Editor все время пытается удалить неизвестные атрибуты и а неизвестные теги вкладывает в <p>. Наверное это надо менять на уровне кода программы.
Вместо тега <u> для подчеркивания, можно использовать <emphasis role="underline">Подчеркнутый текст</emphasis> (Как предлагал Рыжий Тигра и как сделано в формате DocBook). Если читалка не поддерживает атрибут role, то текст все равно останется выделенным (курсивом).
<p><emphasis>Курсивный текст</emphasis></p>
<p><emphasis role="underline">Подчеркнутый текст</emphasis></p>
<p><emphasis role="strikethrough">Зачеркнутый текст</emphasis></p>
<p><emphasis role="spacing">РАЗРЯДКА ТЕКСТА</emphasis></p>
<p><emphasis role="small-caps">Капитель</emphasis></p>
emphasis[role="underline"]
{
font-style: normal;
text-decoration: underline;
}
emphasis[role="strikethrough"]
{
font-style: normal;
text-decoration: line-through;
}
emphasis[role="spacing"]
{
font-style: normal;
letter-spacing: 0.2em;
}
emphasis[role="small-caps"]
{
font-style: normal;
font-variant: small-caps;
}
PS: Капитель (small-caps) пока в CoolReader не поддерживается
Re: FB2 v2.4 Draft (разрабатываем)
Дополнительное форматирование можно получить уже сейчас, немного изменив схему и просмотреть результат в CoolReader.
Например:
Это уже реализовано таблицами, столь ненавидимыми многими за то, что их показывает только CoolReader, а их любимый (AlReader,Haali,FBReader и т.д.) их не показывает.
Re: FB2 v2.4 Draft (разрабатываем)
Дополнительное форматирование можно получить уже сейчас, немного изменив схему и просмотреть результат в CoolReader.
Например:
Это уже реализовано таблицами, столь ненавидимыми многими за то, что их показывает только CoolReader, а их любимый (AlReader,Haali,FBReader и т.д.) их не показывает.
Кстати, надо бы наведаться в багзиллу к Okular с этим FeatureRequest'ом...
Re: FB2 v2.4 Draft (разрабатываем)
Re: FB2 v2.4 Draft (разрабатываем)
Я уж повидал хитрожопых заливальщиков, которые обернут тегами <pre> текстовый файл и заливают уже в виде HTML. Только вот такой HTML не сконвертируешь быстро ни как HTML, ни как TXT. Приходится сперва убирать все теги, а потом переименовывать в TXT, и только потом уж конвертировать такой TXT.
lynx -dump
не спасает вождя мирового пролетариата?Re: FB2 v2.4 Draft (разрабатываем)
Иногда мешает primary-position тега title в section. В этом отношении epub гибче, поскольку TOC от контента отделена. По моему, можно аналогично было бы сделать в FB. Варианты:
1) атрибут title в section;
2) тег toc-title в section
у тега title при этом primary-position отобрать, впрочем это уже вторично, поскольку в конце концов subtitle можно использовать в свободной позиции.
Для клиентов соответственно логика такая:
1) есть атрибут title в section или блок toc-title в section берем его в TOC иначе берем title как сейчас
2) toc-title в тексте не отображается
Примеры текстов встречал когда структура книга построена весьма необычно (книги Хасселя)
...
номер главы
текст
название главы
текст
...
В оглавлении же она идет либо так:
<номер главы. название главы>
либо так
<название главы>
В текущем fb2 приходится извращаться, но в любом случае свести оглавление книги c TOC fb2 к одному виду не удается без изменения внутри текста.