О легкости поддержки fb2 в PalmFiction - PalmFiction
PalmFiction


Russian » О легкости поддержки fb2 в PalmFiction


Author: PalmFiction, Posted: 09.11.05 17:05
Вы хотите чтобы PF читал fb2 и html. У Вас возникла гениальная идея "а почему бы не подсказать автору, что надо использовать для разбора этих файлов парсер". Вы ведь уверены, что такая простая и идеальная мысль должна быть озвучена.
Давайте посмотрим определение
Что такое парсер?
Парсер - это приложение для обработки текста. Текстом может быть как исходный текст программы (например C++), так и язык разметки документов (например HTML). Парсер обрабатывает этот текст и перенаправляет в приложение.


По определению парсер только обрабатывает текст, но никоим образом не занимается выводом обработанного текста.
Попробуйте доказать, что парсер способен заменить собой библиотеку FreeType, Windows GDI и RichEdit.

Шрифты. Средства работы со шрифтами. Функции вывода текста с различным форматированием. Функции вывода графики.
Все это я называю СРЕДСТВА ВЫВОДА.
Вот, что необходимо, а не умные мысли про парсеры и разборы fb2 и html.
СРЕДСТВА ВЫВОДА у PF на уровне NotePad. Даже до уровня WordPad еще очень и очень далеко.
Не надо сравнивать PalmOS с PocketPC. На платформе PocketPC обширные СРЕДСТВА ВЫВОДА встроенные в операционку. А PalmOS находится скорее на уровне MSDOS.

И напоследок, почему Мацнев не сделал Haali для PalmOS? Может потому, что пришлось бы заодно портировать под PalmOS половину WindowsCE?
Author: alan, Posted: 09.11.05 22:36
хм... набрал весь ответ здесь, но потом ушел в почту:)))
Author: avb, Posted: 10.11.05 12:16
PalmFiction, пожелание добавить обработку fb2 у меня возникло почти сразу после того, как я познакомился с Вашей программой :-).

Такие вопросы у новичков неизбежны, ИМХО.

Однако как только я узнал, чем чревата реализация этого пожелания, все вопросы у меня отпали. Надеюсь, данный топик на форуме позволит избежать новых "пожеланий" (вот только переименовать его не мешало бы -- например "О поддержке fb2")
Теперь просто держу на КПК Вашу программу (читаю в ней 90% книг) и Исилу (для текстов с большим количеством сносок).
Author: l1720, Posted: 14.11.05 12:22
PalmFiction
Наверное пишу не туда, но да ладно.
А что если вместо полной поддержки fb2, попробовать прикрутить поддержку формата plucker. Я вот isilo уже давно выкинул и то то требуется конверчу в Plucker. Программа эта вроде открытая. Но всё это на уровне хотелки, так как в программировании я никак.
Author: alexhemp, Posted: 14.11.05 12:57
l1720

Ты похоже ничего не понял. Какая разница какой формат отображать, если PF умеет отображать чистый текст только.

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

Читать форматы Plucker, fb2, html и т.п. это только четверть дела, а остальные 3/4 - выводить все это. Загвоздка именно с ЭТИМ!
Author: l1720, Posted: 14.11.05 13:59
Вот теперь ещё раз всё прочитал и осознал.
Author: Guest, Posted: 15.11.05 7:22
Я это осознал давно.
В плане желаний остались только:
- поддержка глав (средствами закладок);
- поддержка сносок.

Скорее даже, только сноски, по закладкам редко хожу, книги читаю от начала и до конца обычно :)

Я понимаю, что это сделать сложно, поэтому никогда автора об этом не просил.
Просто нашел xsl-ку переделал под себя, прикрутил makeztxt и перед копированием конверчу в pdb с ссылками и закладками.
Author: alone, Posted: 15.11.05 13:02
Про это уже давно говорилось - нужно парсить весь документ, чтобы вытащить ссылки и пр., поскольку сама структура XML такова, ПФ же работает только с куском текста.
И все-таки позволю себе написать, что технически это возможно - один раз, при открытии, пропарсить документ, и сохранить всю необходимую информацию в некоем файле, из которого при последующем открытии и черпать необходимые данные. Минус такого подхода - отделение книги от ее структуры.
К слову, чем мне нравится MobiReader - он создает временный файл с таким же названием, как у книги, но с другим расширением, и хранит там (по крайней мере) ссылку на текущую позицию. Гарантированно после всяких сбоев, включая хард-резет, чтение книги будет продолжено с того места, на котором установлена закладка (конечно, если книга была не в основной памяти).
Author: Self-Perfection, Posted: 15.11.05 22:51
А может быть лучше сделать свой формат? a-la zTxT но со ссылками, курсивами всякими, сжатием по-умолчанию... Ну и добавлять в него инфу о форматировании так, чтобы к ней был быстрый доступ. Это я в долгой перспективе, если будет поддержка форматирования.
Author: alexhemp, Posted: 16.11.05 0:32
Закрытый формат в долгой перспективе как раз приведет к упадку.

Одна из целей PalmFiction - читать все что реально прочесть.
Author: tamtam, Posted: 16.11.05 16:05
Только не свой формат. Тем болле что со своим форматом читалки есть - MobiReader и isilo.
Author: alexhemp, Posted: 16.11.05 18:56
tamtam

Вот, ты меня понимаешь :-) Открытость и распостранненость формата - залог успеха. haali не был бы популярен не сделай GribUser целую библиотеку сперва.
Author: Serg Gera, Posted: 16.11.05 20:15
alexhemp
Библиотеку чего?
Author: Alexx_S, Posted: 16.11.05 20:52
Serg Gera
Думаю, имеется в виду Fictionbook.ru + Aldebaran.ru на том же движке.
Author: Self-Perfection, Posted: 16.11.05 21:46
А зачем его делать закрытым?!?! Особо много форматирования поддерживаться точно не будет, так что в других программах легко можно будет организовать его поддержку. Ну я имею ввиду авторов других программ. Кроме того, я уже как-то предлагал добавить команду в списке книг "сохранить на карту как просто текст". Уже сталкивался с проблемой, что на девайсе знакомого нечем читать zTxT... И всё равно этим форматом пользуюсь!
Author: alexhemp, Posted: 16.11.05 21:55
Self-Perfection

Я уже писал на эту тему - бинарный формат - это внутреннее представление, а внешний формат не нужно делать бинарным категорически.

PalmDOC, zTxt по сути разновидность архива, если бы его автор взял и сделал стандартный zip архив то мы бы про него бы и не узнали. Закладки и другие фенечки можно хранить в файлах спутниках или комментарию. Основная ценность именно ZIP - в его стандартности. Он есть на всех платформах, под все распостраненные OS.

Автор написал в первом посте - парсинг из внешнего текстового в некий внутренний бинарный - это проблема уровнем ниже чем ОТОБРАЖЕНИЕ всей этой мишуры.

Я считаю что желающие получить вывод оформления должны сделать примерно так:

Написать список видов оформления, например:
1. Текст обычный, жирный, курсив, подчеркивание
2. Разные размеры шрифта
3. Разное выравнивание для абзацев
4. Цвет символа или строки
5. Отображение картинки, как отдельного абзаца и с обтеканием

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

Только так может "родиться" нужный бинарный формат.

А уже потом можно будет думать над ним - можно ли при открытии тектового формата быстро текст преобразовать в этот бинарный формат или нужно это делать на "большом брате" как случилось с PalmDOC.
Author: JAW, Posted: 17.11.05 20:28
Quote:

Я уже писал на эту тему - бинарный формат - это внутреннее представление, а внешний формат не нужно делать бинарным категорически.

Согласен, в том случае, если я смогу сделать бинарный файл самостоятельно и оставить его таким бинарным после того, как PaFi его создаст.

Quote:

Написать список видов оформления, например:
1. Текст обычный, жирный, курсив, подчеркивание
2. Разные размеры шрифта
3. Разное выравнивание для абзацев
4. Цвет символа или строки


Так этот список нужен, или нет? Или на тему забито в принципе?

Quote:

5. Отображение картинки, как отдельного абзаца и с обтеканием


Ох, не думаю что до этого дойдет...
Но если дойдет, то картинка, это не абзац, это буква такая.
Со всеми вытекающими последствиями. И работают с ней как с буквой.
Author: Alan, Posted: 17.11.05 22:56
Quote:
1. Текст обычный, жирный, курсив, подчеркивание
2. Разные размеры шрифта
3. Разное выравнивание для абзацев
4. Цвет символа или строки


А нужен ли пункт 2 в чтении книг?
Вдруг кому пригодиться:) (я так понимаю, автор проекта после этого топика либо пошлет эту тему навсегда, либо все же решиться на ее реализацию) - в своем проекте я заложился на следующее:
1. Текст обычный, жирный, курсив, подстрочный индекс, надстрочный. Индексы на треть меньше по высоте, чем основная строка. Высота строки всегда одинакова (т.е. высота болда и обычного текста соответствует друг другу). Линки подчеркиваются. Если в настроках обычный текст отобрадается жирным, то то, что должно быть жирным выводиться с подчеркиванием. Если используются индексы, то стили италика и болда не учитываются.
2. Цвета задаются для текста, для заголовков и для линков.
3. Абзацы бывают
- обычный с отступом слева, переносы и выравнивания как в настройках указано.
- без отступа слева (стихи), переносы и выравнивание как в настройках.
- выравнивание по правому краю, без переносов и выравнивания (эпиграфы, подпись автора).
- выравнивание по центу, без переносов (заголовки).
- выравнивание по центру с одинаковыми отступами слева и справа, переносы как в настройках (цитаты).
4. Картинки и таблицы отображаются только на отдельном экране, т.е. никакого перемешивания с текстом. При автопрокрутке отображаются наподобие линка (надпись TABLE с шрифтовым и цветовым выделением как у ссылки).

По поводу формата - я заложился на то, что все управляющие символы идут одним потоком с текстом, используется диапазон 0x01..0x31.

Quote:
Напишите навскидку быстрый алгоритм листания страниц "вверх" при таком оформлении, и подумайте что будет нужно для этого.


да без проблем и не на вскидку. только на паскаль переделывать и адаптировать под ПФ не буду:).


P.S. А вообще тема не о том... автору никто выздоровления не пожелал, а он занемог от тяжести ваших желаний:)... И пошлет сейчас эту всю тему нафиг под воздействием грипповой атаки:)
Author: alexhemp, Posted: 18.11.05 13:20
Alan
JAW

Вы все уходите в сторону проектирования какого-то формата. А что толку в формате - если нужен ВЫВОД, которого нет и не предвидиться.

Я бы предложил желающим написать свои процедуры вывода, и предложил им то, с чего можно начать - а именно с определения того, что им нужно. Формат можно выбрать произвольный, НЕ ФОРМАТ ТЕКСТА ОПРЕДЕЛЯЕТ ВЫВОД.
Author: Guest, Posted: 18.11.05 18:58
alexhemp
Quote:
Вы все уходите в сторону проектирования какого-то формата


это не формат - это внутреннее представление данных. пока оно не спроектировано - бессмысленно браться за вывод.

По поводу вывода. Насколько я понимаю, на текущий момент в ПФ есть две функции (в смысле их не может не быть:) ) - подсчет длины строки для конкретного шрифта и вывод на экран строки в конкретном шрифте.

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

А вообще - вы сначала убедите автора в том, что это ему надо, а потом в том, что это вообще имеет смысл делать под палм...
Author: mo3r, Posted: 18.11.05 21:20
Quote:
По поводу вывода. Насколько я понимаю, на текущий момент в ПФ есть две функции (в смысле их не может не быть:) ) - подсчет длины строки для конкретного шрифта и вывод на экран строки в конкретном шрифте.

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

Для нормального вывода больших тесктов с форматирование в палмоси нужны реализации следующих алгоритмов:
1) Подсчет высоты всего текста и/или определения текущей позиции - тут сойдет хотя бы приблизительный
2) Нахождение начала последней строки абзаца
3) Алгоритмы чтения элементов текста "назад" (т.е., в обратном направлении)
4) Разбиения абзаца на строки (причем строки могут добавляться в обоих направлениях)
5) Вычисление высоты и центра (или положения baseline) строки
Пункты 1, 2 и 3 нужны для того, чтобы не хранить в памяти весь текст.
На самом деле, реализация этих алгоритмов - вещь не очень тривиальная (учитывая малый объем памяти палмов).
Других приемлемых вариантов нету.
Опять же, реализация этих алгоритмов не слишком завязана на внешний формат данных (за исключением некоторых моментов).
Author: Guest, Posted: 18.11.05 21:22
Quote:
2) Нахождение начала последней строки абзаца

Имеется в виду, что знаем, где находится последняя буква (или элемент) абзаца.
Author: alexhemp, Posted: 18.11.05 21:36
Гость

При реализации алгоритмов станет понятно удобное внутреннее представление.

Может нужно хранить текст потоком - разбивая на управляющие символы? А может в виде DOM-дерева (наподобии HTML). А может в виде списка слов и списка атрибутов и таблицы связи - слово-набор атрибутов

И таких вариантов - сотни, выбор оптимального возможен только после реализации библиотеки вывода. Формат без РЕАЛИЗАЦИИ алгоритмов - ничего не дает ВООБЩЕ.

Убеждать автора не намерен. Но намерен убедить тех кто очень ХОЧЕТ форматирование текста, что им самим нужно приложить усилия в этом направлении. Ничего не мешает использовать исходники PF для создания своей читалки со своим форматом, разбивая строки как хочется и т.п.
Author: Guest, Posted: 18.11.05 21:53
alexhemp
Quote:
При реализации алгоритмов станет понятно удобное внутреннее представление.


ну... тоже конечно подход:)
В принципе, если нет опыта в проектировании хоть каких-либо более менее сложных систем, так и поступают. Это после появления опыта и наработок начинают сначала думать, а потом реализовывать...

mo3r
Quote:
1) Подсчет высоты всего текста и/или определения текущей позиции - тут сойдет хотя бы приблизительный
2) Нахождение начала последней строки абзаца
3) Алгоритмы чтения элементов текста "назад" (т.е., в обратном направлении)
4) Разбиения абзаца на строки (причем строки могут добавляться в обоих направлениях)
5) Вычисление высоты и центра (или положения baseline) строки
Пункты 1, 2 и 3 нужны для того, чтобы не хранить в памяти весь текст.
На самом деле, реализация этих алгоритмов - вещь не очень тривиальная (учитывая малый объем памяти палмов).
Других приемлемых вариантов нету.


1 - не совсем понял что считать... Если ты меня цитировал, то прочел, что все строки ОДНОЙ высоты...
2,3 - зачем???
4 - есть разница в строке и строке со стилями???
5 - тоже не понимаю о чем речь...

Естественно весь текст в памяти нет смысла хранить... если уж это получается делать на мпх200, в котором практически нет памяти, то в палме это тем более не будет проблемой.
Author: alexhemp, Posted: 19.11.05 9:30
Гость
Проектирование систем - это громкие слова, реально - тут трудности не в проектировании - а в реализации.

И его должно определять не в процессе болтовни на форуме а в процессе РАЗРАБОТКИ соотв. библиотеки вывода.

Все остальные разговоры без этого - пустая болтовня.
Author: Guest, Posted: 19.11.05 10:31
alexhemp
Quote:
И его должно определять не в процессе болтовни на форуме а в процессе РАЗРАБОТКИ соотв. библиотеки вывода.


кого - его? Формат представления данных? Скажи пожалуйста, а что ты будешь выводить, не зная как оно храниться и откуда его брать?:) Или по частям, типа написали кусочек, теперь будем думать как сюда втулить следующий, а потом думать как обходить какой-нибудь идиотизм, который был допущен при реализации первого кусочка вывода?:)
Данный "стиль":) программирования можно допускать только в случае, если есть твердая решимость в конце цикла разработки с нуля переписать все начисто и как положено... в данном случае скорее всего этого не будет:)

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

Quote:

Все остальные разговоры без этого - пустая болтовня.


А вот это золотые слова... никаких возражений не может быть.
Так что хватит болтать и займитесь (те кого интересует поддержка стилей текста) делом... В конце концов там писать меньше, чем языком трепать - у меня на такую библиотеку ушло две недели... На палме из-за маразма со шрифтами уйдет больше...

Да и найдите наконец кому это надо из людей, кто может что-то написать...
Author: Mo3r, Posted: 19.11.05 19:11
Quote:
Если ты меня цитировал, то прочел, что все строки ОДНОЙ высоты...

Тогда всесильно проще.
Quote:
А вот это золотые слова... никаких возражений не может быть.
Так что хватит болтать и займитесь (те кого интересует поддержка стилей текста) делом... В конце концов там писать меньше, чем языком трепать - у меня на такую библиотеку ушло две недели... На палме из-за маразма со шрифтами уйдет больше...

Полностью согласен. Маразм со шрифтами решается за пару дней (после того, как придет понимание, как с ним бороться).
Quote:
кому это надо из людей, кто может что-то написать...

Чем я сейчас и занимаюсь.
Author: Guest, Posted: 19.11.05 20:33
Mo3r
Quote:
Чем я сейчас и занимаюсь.


О... Браво!
Если хочешь - переходи в почту a1812lwis @@@ mail.ru - интересен подход к решению некоторых ньюансов, да и просто может помогу чем, а то по предыдущему твоему посту кажется мне, что ты некоторую лишнюю работу делаешь...
Author: dimitriy90, Posted: 30.11.05 17:23
Я вот думаю, может имеет смысл забить на такие вещи как
шрифт разной высоты и картинки. Т.е. свести к тому что все строки имеют одинаковую высоту и потому размер текста по высоте будет всегда одним и тем же в независимости от состава текста. А сделать поддежку выделений шрифтом - типа начало главы и оглавление. Я думаю этого бы хватило (по крайней мере на первом этапе). И можно было бы решить - а стоит ли вообще двигаться дальше.
Author: alexhemp, Posted: 30.11.05 19:27
Quote:

по крайней мере на первом этапе


Ну так попробуй сам сделать. Исходники открыты.
Author: Self-Perfection, Posted: 30.11.05 20:31
Исходники-то открыты, но не помеашал бы инструкция, как их компилировать... Я с паскалём 5 лет вожусь, что-нибудь бы поделал с удовольствием, но не писал ничего под пальм, так что не знаю ни где среду брать, ни какие дополнительные библиотеки нужны, эмуляторы, видимо, понадобятся...
Author: alexhemp, Posted: 30.11.05 21:02
Главное - начать и сообщать по мере поступления о проблемах и ждать конкретный советов.

Среда - PocketStudio 2.1 - вроде все библиотеки в комплекте.

Документация, эмуляторы, симуляторы - все берется в разделе для разработчиков на http://www.palmos.com/dev/dl/
Author: Myppp, Posted: 01.12.05 12:23
Mo3r
А что за Маразм у Пальм со шрифтами ?????
Я чего-то не понял...
Author: Guest, Posted: 01.12.05 12:46
Отсутствие векторных шрифтов
Author: Guest, Posted: 04.12.05 15:07
Quote:
А что за Маразм у Пальм со шрифтами ?????
Я чего-то не понял...

Quote:
Отсутствие векторных шрифтов

Не совсем то. Есть некоторые тонкости при выводе хайрезных шрифтов и жуткие глюки при работе с битмапами (а векторные сделать не очень сложно - freetype работает вполне прилично).
Author: Myppp, Posted: 04.12.05 15:14
Гость
Вывод Хай-рез шрифтов да есть нюансы.. но разработчикам они известны (и в ПФ вполне применяются) про глюки работы с БитМапами... тоже есть (под хайрез и с некоторыми глубинами цветности+ прозрачность) но тоже оборимы вполне...
Author: Хрямзик, Posted: 15.03.06 2:41
Совсем недавно пересел с iPAQ 4155 на sony sj20, тема читалки очень актуальна. Экран-то крут, а читалки...

Прочитал внимательно про сложность реализации вывода инфы. И все бы было понятно, если б в исиле не было картинок. Там-то как-то работает... В чем же загвоздка?
Author: danone, Posted: 15.03.06 2:54
как я понял из этого топика и ещё некоторых, уважаемые Alan и mo3r занимаются какими-то параллельными проектами читалок на основе PF, где всё прекрасно, и fb2 читается, и картинки грузятся со ссылками. если можно, господа, расскажите поподробнее о своих проектах, а если это уже сделано, положите здесь ссылочку. потому что думаю, не мне одному это очень интересно.
спасибо за понимание.
Author: Egres, Posted: 15.03.06 3:17
У Alan'а есть своя читалка под WinXX машинки. Насколько я помню, на основе HaaliReader
Author: PalmFiction, Posted: 15.03.06 6:52
Quote:

Прочитал внимательно про сложность реализации вывода инфы. И все бы было понятно, если б в исиле не было картинок. Там-то как-то работает... В чем же загвоздка?

Все очень просто, задайте этот вопрос себе. В чем загвоздка? Почему Вы сами не можете сесть и написать читалку лучше iSilo? Все что Вы ответите на этот вопрос, могу сказать и я.

© 2003 Клуб 12 вольт.