Простучал бы кто-нибудь автору насчет форматирования в fb2. Половина стихотворных книг отображается в прозе
» Sumatra PDF / SumatraPDF
Krot66
Если вы сможете подготовить скриншоты и методику проверки ошибки - можно попробовать. Иначе ребята попросят уточнения, а что им сказать? Нужно дать что-то из чего им станет понятно что и где править, тогда шансы есть, иначе В морг!©zg.
Если вы сможете подготовить скриншоты и методику проверки ошибки - можно попробовать. Иначе ребята попросят уточнения, а что им сказать? Нужно дать что-то из чего им станет понятно что и где править, тогда шансы есть, иначе В морг!©zg.
Цитата:
на древней htm2chm 3.0.9.3Пробовал пользоваться - не понравилось. По мне удобнее и гибче коммандерный плагин CHMDir. Наверное, с полтыщи документов собрано им, причём с кириллическими именами .html , а баг обнаружил только вчера. И что мне теперь, все перебирать заново?
А с картинками другая фигня. С целью уменьшить вес приходится оптимизировать форматы и цветность из первоисточника между .jpg, .png и .gif. пакетной обработкой. А затем, чтобы не возиться со ссылкой на каждый рисунок, в исходном .html удаляются все расширения.
В винде такие, без расширения, и с кириллицей (в .chm) открываются без проблем.
antabu
Ну, я TC как-то не пользуюсь, а зову эту тулзу через mc в вине когда работаю в основной ОС (демон), или если в винде (эта у меня в вирталбоксе крутится), то через ПКМ из Far, а ТС у меня за четверть века (я с ним ещё в 89-м(?) примерно встретился когда он звался Windows Commander) так и не прижился.
Что до расширений (в терминах UNIX протоколов) - ОС распаковывает контейнер в ОЗУ, и в фоне запускается движок IE который читает HTML файл из контейнера, а при отсутствии расширения графического файла в теге вызывает MIME/Type детектор и тот, если формат опознан вызывает его обработчик, а CHMEngine в суматре выполняет разбор HTML-файла внутри CHM-контейнера строго в соответствии со спецификациями W3C HTML , и если в тэге <img> файл указан без расширения, то вместо него выводится заглушка "Не известный тип файла", так что тут проявляется ошибка неверных исходных предпосылок выбранных при создании документа .
Ну, я TC как-то не пользуюсь, а зову эту тулзу через mc в вине когда работаю в основной ОС (демон), или если в винде (эта у меня в вирталбоксе крутится), то через ПКМ из Far, а ТС у меня за четверть века (я с ним ещё в 89-м(?) примерно встретился когда он звался Windows Commander) так и не прижился.
Что до расширений (в терминах UNIX протоколов) - ОС распаковывает контейнер в ОЗУ, и в фоне запускается движок IE который читает HTML файл из контейнера, а при отсутствии расширения графического файла в теге вызывает MIME/Type детектор и тот, если формат опознан вызывает его обработчик, а CHMEngine в суматре выполняет разбор HTML-файла внутри CHM-контейнера строго в соответствии со спецификациями W3C HTML , и если в тэге <img> файл указан без расширения, то вместо него выводится заглушка "Не известный тип файла", так что тут проявляется ошибка неверных исходных предпосылок выбранных при создании документа .
Цитата:
Вряд ли получится комфортно
Цитата:
Вот выключение средствами Autohotkey
спасибо, работает.
VictorVG2
Вот здесь лежит полдюжины стихотворных книг, самых школьных и из уважаемых библиотек (из сотен таких книг номально не отображаются процентов 60-70, если не больше). В архив включены английские версии AlReader, CoolReader и STDUViewer, показывающие их как надо. В каких-то скриншотах здесь едва ли есть нужда, т.к. поэзия от собранных в абзацы строк отличается довольно зримо, что по русски, что по польски
Вот здесь лежит полдюжины стихотворных книг, самых школьных и из уважаемых библиотек (из сотен таких книг номально не отображаются процентов 60-70, если не больше). В архив включены английские версии AlReader, CoolReader и STDUViewer, показывающие их как надо. В каких-то скриншотах здесь едва ли есть нужда, т.к. поэзия от собранных в абзацы строк отличается довольно зримо, что по русски, что по польски
VictorVG2
Смотрю https://github.com/sumatrapdfreader/sumatrapdf/blob/master/src/EbookFormatter.cpp
Код: void Fb2Formatter::HandleHtmlTag(HtmlToken *t)
Смотрю https://github.com/sumatrapdfreader/sumatrapdf/blob/master/src/EbookFormatter.cpp
Код: void Fb2Formatter::HandleHtmlTag(HtmlToken *t)
Krot66
Так баг-репорт на гит с парой-тройкой скриншотов и книгой-другой примером в Zip. Тогда есть шанс что поправят, а мне там лишний раз пока репортить не стоит.
Skif_off
Ну что мы хотим коли сама разметка FB2 создана по принципу кто в лес, кто по дрова.
Так баг-репорт на гит с парой-тройкой скриншотов и книгой-другой примером в Zip. Тогда есть шанс что поправят, а мне там лишний раз пока репортить не стоит.
Skif_off
Ну что мы хотим коли сама разметка FB2 создана по принципу кто в лес, кто по дрова.
VictorVG2
Вот - два файла-образца и по два скриншота (правильный и неправильный) к каждому с одного и того же места
Вот - два файла-образца и по два скриншота (правильный и неправильный) к каждому с одного и того же места
VictorVG2
Не, она не так уж и плоха Да, не без недостатков. Думаю, просто разрабы не в курсе деталей и того, как оформляется поэзия,
Читать <v></v> как <p></p> - самое очевидно решение в рамках существующей _базовой_ поддержки FB2
Цитата:
Там пары-тройки не нужно, достаточно [more=сохранить это]
Код: <?xml version="1.0" encoding="utf-8" ?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.1" xmlns:l="http://www.w3.org/1999/xlink">
<description>
<title-info>
<genre>reference</genre>
<author>
<nickname>x</nickname>
</author>
<book-title>Poetry</book-title>
<annotation>
<p>Test-file for poetry</p>
</annotation>
<lang>en</lang>
</title-info>
<document-info>
<author>
<nickname>x</nickname>
</author>
</document-info>
</description>
<body>
<title>
<p>Poetry's tags</p>
</title>
<section>
<title>
<p>For example</p>
</title>
<p>Max</p>
<poem>
<title>
<p>The End</p>
</title>
<stanza>
<v>This is the end</v>
<v>Beautiful friend</v>
<v>This is the end</v>
<v>My only friend, the end</v>
</stanza>
<stanza>
<v>Of our elaborate plans, the end</v>
<v>Of everything that stands, the end</v>
<v>No safety or surprise, the end</v>
<v>I'll never look into your eyes...again</v>
</stanza>
<text-author>The Doors</text-author>
</poem>
<p>Min</p>
<poem>
<stanza>
<v>This is the end</v>
<v>Beautiful friend</v>
<v>This is the end</v>
<v>My only friend, the end</v>
</stanza>
<stanza>
<v>Of our elaborate plans, the end</v>
<v>Of everything that stands, the end</v>
<v>No safety or surprise, the end</v>
<v>I'll never look into your eyes...again</v>
</stanza>
</poem>
</section>
</body>
</FictionBook>
Не, она не так уж и плоха Да, не без недостатков. Думаю, просто разрабы не в курсе деталей и того, как оформляется поэзия,
Читать <v></v> как <p></p> - самое очевидно решение в рамках существующей _базовой_ поддержки FB2
Цитата:
Так баг-репорт на гит с парой-тройкой скриншотов и книгой-другой примером в Zip.
Там пары-тройки не нужно, достаточно [more=сохранить это]
Код: <?xml version="1.0" encoding="utf-8" ?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.1" xmlns:l="http://www.w3.org/1999/xlink">
<description>
<title-info>
<genre>reference</genre>
<author>
<nickname>x</nickname>
</author>
<book-title>Poetry</book-title>
<annotation>
<p>Test-file for poetry</p>
</annotation>
<lang>en</lang>
</title-info>
<document-info>
<author>
<nickname>x</nickname>
</author>
</document-info>
</description>
<body>
<title>
<p>Poetry's tags</p>
</title>
<section>
<title>
<p>For example</p>
</title>
<p>Max</p>
<poem>
<title>
<p>The End</p>
</title>
<stanza>
<v>This is the end</v>
<v>Beautiful friend</v>
<v>This is the end</v>
<v>My only friend, the end</v>
</stanza>
<stanza>
<v>Of our elaborate plans, the end</v>
<v>Of everything that stands, the end</v>
<v>No safety or surprise, the end</v>
<v>I'll never look into your eyes...again</v>
</stanza>
<text-author>The Doors</text-author>
</poem>
<p>Min</p>
<poem>
<stanza>
<v>This is the end</v>
<v>Beautiful friend</v>
<v>This is the end</v>
<v>My only friend, the end</v>
</stanza>
<stanza>
<v>Of our elaborate plans, the end</v>
<v>Of everything that stands, the end</v>
<v>No safety or surprise, the end</v>
<v>I'll never look into your eyes...again</v>
</stanza>
</poem>
</section>
</body>
</FictionBook>
VictorVG2
Бог с ними, с расширениями картинок, таких файлов у меня не так много. но на будущее учту.
А что делать с кириллицей в именах .htm внутри .chm ? Пример такого файла: http://chemistry-chemists.com/forum/download/file.php?id=52228
Прошу прощения, почему-то файл по ссылке скачивается с расширением .pdf. Следует заменить на .chm.
Бог с ними, с расширениями картинок, таких файлов у меня не так много. но на будущее учту.
А что делать с кириллицей в именах .htm внутри .chm ? Пример такого файла: http://chemistry-chemists.com/forum/download/file.php?id=52228
Прошу прощения, почему-то файл по ссылке скачивается с расширением .pdf. Следует заменить на .chm.
antabu
Самое простое решение - переименовать в латиницу. Я с этим когда-то встретился на BSD UNIX - реально на Win кириллица это пёстрая смесь из доброго десятка кодировок которые могут использоваться в одной оси и тогда писал специальную инструкцию как решить сию задачу в PC-BSD 7 - Russian_on_PC-BSD7_Final.htm. Дело в том, что системы разработки исторически в основном основаны на латинице и с другими алфавитами нужны специальные приёмы обеспечивающие их поддержку на уровне машинного кода. Так что разумнее просто перекодировка и правка ссылок в тексте, благо FB2 по большому счёту это просто текст который не столь и сложно поправить.
Самое простое решение - переименовать в латиницу. Я с этим когда-то встретился на BSD UNIX - реально на Win кириллица это пёстрая смесь из доброго десятка кодировок которые могут использоваться в одной оси и тогда писал специальную инструкцию как решить сию задачу в PC-BSD 7 - Russian_on_PC-BSD7_Final.htm. Дело в том, что системы разработки исторически в основном основаны на латинице и с другими алфавитами нужны специальные приёмы обеспечивающие их поддержку на уровне машинного кода. Так что разумнее просто перекодировка и правка ссылок в тексте, благо FB2 по большому счёту это просто текст который не столь и сложно поправить.
В приведённом файле оказалось достаточным переименовать .htm, а папку с картинками и ссылки на них переделывать не пришлось.
antabu
Так всё в его имя упирается.
Так всё в его имя упирается.
Обновился с версии 3 до 3.1.1. При запуске суматры сообщение "точка входа в процедуру GetProcessHandleFromHwnd не найдена в библиотеке dll oleacc.dll " операциока windows xp
Цитата:
...реально на Win кириллица это пёстрая смесь из доброго десятка кодировок которые могут использоваться в одной оси и тогда писал специальную инструкцию как решить сию задачу в PC-BSD 7 - Russian_on_PC-BSD7_Final.htm. Дело в том, что системы разработки исторически в основном основаны на латинице и с другими алфавитами нужны специальные приёмы обеспечивающие их поддержку на уровне машинного кода. Так что разумнее просто перекодировка и правка ссылок в тексте...
Так, давайте по порядку.
Sumatra PDF - вьювер для просмотра, в т.ч. файлов .chm, работающий под Windows, предполагающей имена файлов в кодировке 1251.
Тут выяснилось, что если внутри контейнера имя файла .htm(L) содержит символы из второй половины таблицы, то такой .chm программой не открывается.
В чём я неправ?
Skif_off
Благодаря вашим изысканиям по вашему рецепту попробовал добавить замену v -> p. Не знаю, работает ли, но предложенные fb2 выглядят по мне вполне читабельно.
А так как никто не выложил скрины, как они выглядят и как они должны выглядеть, мне сравнить не с чем.
http://hostingkartinok.com/show-image.php?id=0ddd951a5bc5ef01bcc675e6bce1ed93
Благодаря вашим изысканиям по вашему рецепту попробовал добавить замену v -> p. Не знаю, работает ли, но предложенные fb2 выглядят по мне вполне читабельно.
А так как никто не выложил скрины, как они выглядят и как они должны выглядеть, мне сравнить не с чем.
http://hostingkartinok.com/show-image.php?id=0ddd951a5bc5ef01bcc675e6bce1ed93
antabu
ОС внутри вообще-то в UTF-16 LE работает, и имена файлов к примеру консоли могут быть переданы в СР-866 (ANSI), CP-1251 (ASCII), CP-10007 (MAC), UTF-8/UTF-16 LE (UNICODE) для русской версии ОС в зависимости от командного процессора. Сессия CMD вообще использует CP-866 и для преобразования приходится звать функции API типа Utf8ToUtf16(), Utf16ToUtf8(), MultiByteToWideChar(t1251, 1251) и им подобные. Так что ваше предположение ошибочно.
Добавлено:
Вот вам пример Lua скрипта преобразующего кодовые страницы при вставке кривого текста из буфера обмена винды:
Цитата:
так что без использования специальных приёмов работы можно т-а-а--кое получить .... мало не покажется.
ОС внутри вообще-то в UTF-16 LE работает, и имена файлов к примеру консоли могут быть переданы в СР-866 (ANSI), CP-1251 (ASCII), CP-10007 (MAC), UTF-8/UTF-16 LE (UNICODE) для русской версии ОС в зависимости от командного процессора. Сессия CMD вообще использует CP-866 и для преобразования приходится звать функции API типа Utf8ToUtf16(), Utf16ToUtf8(), MultiByteToWideChar(t1251, 1251) и им подобные. Так что ваше предположение ошибочно.
Добавлено:
Вот вам пример Lua скрипта преобразующего кодовые страницы при вставке кривого текста из буфера обмена винды:
Цитата:
-- shmuz, 02:30 28-10-2015 http://forum.ru-board.com/topic.cgi?forum=5&topic=31718&start=7820#21
-- updated VictorVG @ VikSoft.ru Wed Oct 28 03:43:44 +0300 2015
Macro { area="Common"; key="ShiftIns"; description="Вставка кривого юникода из буфера обмена";
action = function()
local text = win.Utf8ToUtf16(mf.clip(0))
local ansi7, ucs2 = true, false
local t1251 = string.gsub(text, "(.)(.)", function(a,b)
if string.byte(a) > 127 then ansi7 = false end
if string.byte(b) ~= 0 then ucs2 = true end
return a
end)
if not ansi7 and not ucs2 then
text = win.Utf16ToUtf8(win.MultiByteToWideChar(t1251, 1251))
mf.clip(1, text)
print(text)
else
Keys('ShiftIns')
end
end;
}
так что без использования специальных приёмов работы можно т-а-а--кое получить .... мало не покажется.
ItsJustMe
Цитата:
В смысле - правка исходников SumatraPDF? Или *.fb2? Второй вариант не корректен, если остаются poem и stanza: нарушение схемы, FictionBook Editor, например, не откроет. И вообще не очень красивый
Лучше сюда написать
Добавлено:
В общем, написал. С английским у меня не очень.
Цитата:
попробовал добавить замену v -> p
В смысле - правка исходников SumatraPDF? Или *.fb2? Второй вариант не корректен, если остаются poem и stanza: нарушение схемы, FictionBook Editor, например, не откроет. И вообще не очень красивый
Лучше сюда написать
Добавлено:
В общем, написал. С английским у меня не очень.
Skif_off
Цитата:
Ну да, а что же еще?
Цитата:
В смысле - правка исходников SumatraPDF?
Ну да, а что же еще?
ItsJustMe
Цитата:
Я не знаю, можно и книги править, выкусив элементы поэзии регялярками Ник знакомый, но не вспомнил.
А text-author внутри poem никуда не уезжает? В выложенных выше файлах вряд ли будет text-author, пример файла можно взять здесь.
Можно бинарник и патч? Любопытно взглянуть, а с issues неизвестно, когда что будет.
Цитата:
Ну да, а что же еще?
Я не знаю, можно и книги править, выкусив элементы поэзии регялярками Ник знакомый, но не вспомнил.
А text-author внутри poem никуда не уезжает? В выложенных выше файлах вряд ли будет text-author, пример файла можно взять здесь.
Можно бинарник и патч? Любопытно взглянуть, а с issues неизвестно, когда что будет.
Skif_off
Видел, и так же не скажу когда и какой ответ будет - по идее там возни прилично, а есть ещё и старые баги правки для которых так и не придумали...
Видел, и так же не скажу когда и какой ответ будет - по идее там возни прилично, а есть ещё и старые баги правки для которых так и не придумали...
Skif_off
Цитата:
Можно, конечно. Но мне было интересно, можно ли малыми усилиями сделать "лучше, чем было".
Цитата:
Вот, не знаю. Я вообще редко сабжем пользуюсь, и описанная проблема мне, естественно, встретилась впервые. Я выложил скрин, как оно выглядит. Понятия не имею, как оно выглядело до, так как я сначала добавил, потом открыл.
Ладно, вы меня убедили, ща гляну.
Посмотрел. Без - хуже.
Так что, если придумаете, что делать с poem и stanza, можно будет попробовать добавить и их.
btw, ваш Test file выглядит так:
http://hostingkartinok.com/show-image.php?id=a915168a707da9193d2e1a68bd91b1c6
Цитата:
можно и книги править, выкусив элементы поэзии регялярками
Можно, конечно. Но мне было интересно, можно ли малыми усилиями сделать "лучше, чем было".
Цитата:
А text-author внутри poem никуда не уезжает?
Вот, не знаю. Я вообще редко сабжем пользуюсь, и описанная проблема мне, естественно, встретилась впервые. Я выложил скрин, как оно выглядит. Понятия не имею, как оно выглядело до, так как я сначала добавил, потом открыл.
Ладно, вы меня убедили, ща гляну.
Посмотрел. Без - хуже.
Так что, если придумаете, что делать с poem и stanza, можно будет попробовать добавить и их.
btw, ваш Test file выглядит так:
http://hostingkartinok.com/show-image.php?id=a915168a707da9193d2e1a68bd91b1c6
VictorVG2
Цитата:
Я не программист, пишу удобняшки на AutoIt, немного (с гуглом подчас) могу немного понять, что происходит в С/дельфи/лазарус, если знаю, что ищу, мне сложно оценить Вижу, что преобразование fb2->html идёт в void Fb2Formatter::HandleHtmlTag(HtmlToken *t), подумал, что можно по аналогии с epigraph, вроде простенько:
Код: else if (t->NameIs("epigraph"))
HandleTagAsHtml(t, "blockquote");
Цитата:
Видел, и так же не скажу когда и какой ответ будет - по идее там возни прилично
Я не программист, пишу удобняшки на AutoIt, немного (с гуглом подчас) могу немного понять, что происходит в С/дельфи/лазарус, если знаю, что ищу, мне сложно оценить Вижу, что преобразование fb2->html идёт в void Fb2Formatter::HandleHtmlTag(HtmlToken *t), подумал, что можно по аналогии с epigraph, вроде простенько:
Код: else if (t->NameIs("epigraph"))
HandleTagAsHtml(t, "blockquote");
Цитата:
poem -> blockquote
Учитывая, что v находится внутри poem, то p внутри blockquote, полагаю, будет не очень.
ItsJustMe
Почему? Разве в HTML недопустимо
Код: <blockquote>
<p>text</p>
<p>text</p>
</blockquote>
Почему? Разве в HTML недопустимо
Код: <blockquote>
<p>text</p>
<p>text</p>
</blockquote>
Skif_off
Да, повозился я тут с этой SumatraPDF... И зачем только? Дурная голова рукам покоя не дает, видимо...
В общем, все сделал как предложено, только я заменяю не poem, а stanza на blockquote.
Вот, что получилось в результате добавления 2 строчек кода:
http://hostingkartinok.com/show-image.php?id=af047958fe362afc1917c39818132b24
Да, повозился я тут с этой SumatraPDF... И зачем только? Дурная голова рукам покоя не дает, видимо...
В общем, все сделал как предложено, только я заменяю не poem, а stanza на blockquote.
Вот, что получилось в результате добавления 2 строчек кода:
http://hostingkartinok.com/show-image.php?id=af047958fe362afc1917c39818132b24
ItsJustMe
Цитата:
Согласен, так лучше - сохраняется разбиение на строфы. К тому же stanza обязательный элемент poem, а значит будет раюотать всегда.
Можно увидеть патч с вашими правками? Или, может быть, вы сами напишете на гитхабе?
Думаю, если есть готовое рабочее решение, то больше шансов, что фича появится в обозримом будущем.
Добавлено:
P.S. Исправил на гитхабе poem -> stanza.
Цитата:
только я заменяю не poem, а stanza
Согласен, так лучше - сохраняется разбиение на строфы. К тому же stanza обязательный элемент poem, а значит будет раюотать всегда.
Можно увидеть патч с вашими правками? Или, может быть, вы сами напишете на гитхабе?
Думаю, если есть готовое рабочее решение, то больше шансов, что фича появится в обозримом будущем.
Добавлено:
P.S. Исправил на гитхабе poem -> stanza.
Skif_off
Цитата:
Можно, конечно. Только эти правки более ваши, чем мои. Вы и сами написали, где и что нужно добавить, я ничего нового тут не придумал.
Примерно так:
Код: else if (t->NameIs("stanza"))
HandleTagAsHtml(t, "blockquote");
else if (t->NameIs("v"))
HandleTagAsHtml(t, "p");
Цитата:
Можно увидеть патч с вашими правками?
Можно, конечно. Только эти правки более ваши, чем мои. Вы и сами написали, где и что нужно добавить, я ничего нового тут не придумал.
Примерно так:
Код: else if (t->NameIs("stanza"))
HandleTagAsHtml(t, "blockquote");
else if (t->NameIs("v"))
HandleTagAsHtml(t, "p");
ItsJustMe
У меня не заработало, без ошибок собрал в Visual Studio 2015 Free Community edition.
У меня не заработало, без ошибок собрал в Visual Studio 2015 Free Community edition.
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
Предыдущая тема: c$
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.