Prestigio PER3362B - Ошибки при отображение FB2. Адаптация FB2-файлов

 
Libroom Forum IndexАрхив форумов устройствPrestigio
AuthorMessage

GreeX
Недавний участник форума

Недавний участник форума



Joined: 01 May 2014
Posts: 12



Posted: 14.05.2014 00:10    

Пользуюсь электронной книгой Prestigio Libretto PER3362B. Обратил внимание на то, что некоторые книги в формате FB2 отображаются с ошибками. В некоторых книгах нет отступа у красных строк, названия глав отображаются таким же шрифтом, что и весь текст, и сливаются с ним. Кроме этого часто бывает так, что в тексте отсутствуют разделительные пустые строки (отступы) между главами. Каждая из таких ошибок отображения текста делает чтение книги неудобным, а когда они встречаются все вместе – становится совсем грустно...

Кроме этого, оказалось, что в PER3362B невозможно посмотреть сноски. Т.е. в тексте ссылка на сноску есть, но "кликнуть" по ней нечем... Текст сноски не отображается внизу текущей страницы (как в обычных книгах), и в конце книги перечня сносок также нет...

Сначала я грешил на нерадивых создателей FB2-файлов или какие-то внутренние особенности формата, но оказалось что виноват ридер.
Опытным путём я установил, что если внести в FB2-файл ряд изменений, то ридер сможет отобразить текст так, чтобы его было удобно читать.


Слева – тот случай, когда "совсем грустно".
Справа – тот же FB2-файл, "адаптированный" под читалку.


Сложнее всего оказалось заставить ридер отображать отступы красных строк. В конце концов мне удалось установить, что виной всему разбивка текста на главы. Т.е. если книга идёт сплошным текстом – красная строка есть, а если текст в структуре FB2-файла разделён на главы, читалка отображает оглавление книги и позволяет перейти к нужной главе, но красные строки в тексте не отображаются.

Если быть более точным, то "виноваты" не сами главы, а их заголовки. Часть текста главы помеченная тегами как заголовок, отображается в оглавлении, но в тексте при этом нет красных строк. Если теги заголовка убрать, то название главы в тексте останется и красные строки будут отображаться, но в оглавлении вместо названия главы будет троеточие.

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

А чтобы появились разделительные пустые строки между главами, и отступ между заголовком и текстом главы – нужно в соответствующих местах вставить специальный тег "пустой строки".

Существуют разные редакторы для FB2-файлов, но вносить небольшие изменения в структуру файла можно и в обычном текстовом редакторе.

Рассмотрим пример адаптации книги на небольшом фрагменте, имитирующем интересующую нас часть структуры FB2-файла:

Code:
<body>
  <title>
    <p>Название Книги</p>
  </title>
  <section>
    <title>
      <p>Глава 1</p>
      <p>Название Главы</p>
    </title>
    <p>Первый Абзац</p>
    <p>Второй Абзац</p>
    <p>и т.д.</p>
  </section>
</body>

В структуре FB2-файла текст книги размещается между тегами <body> и </body>
Текст заключённый между тегами <title> и </title> это заглавие. Заглавие идущее сразу после тега <body> – это заглавие всей книги, обычно там указывается автор и название книги.
Тегами <p> и </p> текст разделяется на абзацы.
Тегами <section> и </section> текст книги в структуре FB2-файла разделяется на главы. Если теги <title> и </title> идут после тега <section>, то это уже заголовок этой "секции" – название главы.

Именно из-за наличия "заголовка секции" ридер PER3362B не отображает отступы красной строки. Чтобы избавится от этой ошибки достаточно удалить из текста теги заголовка секции.

Чтобы название главы всё-таки выделялось на фоне остального текста, оформим его как "подзаголовок". Для этого используются теги <subtitle> и </subtitle>, и заменить они должны теги абзаца в строчках, которые раньше были заголовком.

Чтобы отделить одну главу от другой, и название главы от текста главы вставим тег "пустой строки" – <еmpty-linе/> перед, и после заголовка главы.

В результате должно получиться следующее:

Code:
<body>
  <title>
    <p>Название Книги</p>
  </title>
  <section>
    <empty-line/>
      <subtitle>Глава 1</subtitle>
      <subtitle>Название Главы</subtitle>
    <empty-line/>
    <p>Первый Абзац</p>
    <p>Второй Абзац</p>
    <p>и т.д.</p>
  </section>
</body>

После этого книга будет отображаться нормально, и читать её будет удобно. Единственный "минус" такой адаптации – в книге будет отсутствовать оглавление.


Осталось разобраться со сносками.
Текст сносок расположен в отдельной части FB2-файла, а для перехода к ним используются ссылки, но в PER3362B это не работает.

Чтобы иметь возможность прочесть сноску её нужно вставить прямо в текст. Я копирую текст сноски и вставляю его сразу после того предложения, в котором была ссылка на сноску. Чтобы текст сноски не сливался с текстом книги, я оформляю его как "эпиграф" и вставляю дополнительные разделительные линии.

Рассмотрим это на примере такого фрагмента:

Code:
<body>
  <p>Первый Абзац</p>
  <p>Второй Абзац</p>
  <p>Третий абзац. В этом абзаце<a l:href="#Note1" type="note">1</a> есть сноска. Следующее предложение в этом абзаце.</p>
  <p>Четвёртый Абзац</p>
</body>
<body name="notes">
  <section id="Note1">
    <title><p>1</p></title>
    <p>Текст сноски 1</p>
  </section>
</body>

В третьем абзаце есть ссылка на сноску. Для обозначения ссылок применяется тег <a>. В свойствах ссылки указан её тип - 'type="note"', и ID секции в которой содержится текст ссылки - "#Note1"

Как правило, блок с текстом сносок располагается сразу за блоком с текстом книги. Блок с текстом книги обычно не имеет дополнительных свойств и обозначается тегами <body> и </body>.
Блок с текстом сносок также размещается между тегами <body> и </body>, но у открывающего тега теперь прописано "имя" - <body name="notes">. Блок со сносками обычно размещается сразу за блоком с текстом книги, его легко найти.

Каждая сноска размещается в отдельной секции. Каждая секция имеет свой идентификатор, который указывается в ссылке. В нашем случае это <section id="Note1">

Скопировав текст сноски прямо в текст книги, и оформив его как эпиграф, получим примерно следующее:

Code:
<body>
  <p>Первый Абзац</p>
  <p>Второй Абзац</p>
  <p>Третий абзац. В этом абзаце<a l:href="#Note1" type="note">1</a> есть сноска.</p>
    <p>————————————————————————</p>
    <p><strong>Примечание 1</strong></p>
    <epigraph>
      <p>Текст сноски 1</p>
    </epigraph>
    <p>————————————————————————</p>
  <p>Следующее предложение в этом абзаце.</p>
  <p>Четвёртый Абзац</p>
</body>
<body name="notes">
  <section id="Note1">
    <title><p>1</p></title>
    <p>Текст сноски 1</p>
  </section>
</body>

Такая сноска будет отображаться ридером примерно так, как показано на фото.

Надеюсь эта информация будет кому-нибудь полезна...


Last edited by GreeX on 08.02.2018 00:03; edited 2 times in total
 
View user's profile ^

Артём-80
Недавний участник форума

Недавний участник форума



Joined: 13 May 2012
Posts: 18



Posted: 30.05.2014 19:23    

А как у вас отображается "не адаптированный" текст в программе "Cool Reader" http://coolreader.org/? С теми же ошибками что и в вашем устройстве?
 
View user's profile ^

GreeX
Недавний участник форума

Недавний участник форума



Joined: 01 May 2014
Posts: 12



Posted: 31.05.2014 12:33    

В "Cool Reader" текст отображается нормально.



В "постраничном" режиме просмотра текст сноски отображается внизу страницы, как в бумажных книгах.
При этом, список всех сносок также отображается и в конце книги.
В режиме просмотра "Свиток" тест сноски "внизу страницы" уже не отображается.

Ссылка на сноску в тексте перекидывает в конец книги к списку сносок, однако способа вернутся назад не предусмотрено. Перед тем как переходить по ссылке нужно не забыть самостоятельно поставить "закладку". Особенно это актуально для режима просмотра "Свиток" т.к. при нём не отображаются номера страниц и линейка с текущей позицией в книге.


Last edited by GreeX on 08.02.2018 00:04; edited 1 time in total
 
View user's profile ^

GreeX
Недавний участник форума

Недавний участник форума



Joined: 01 May 2014
Posts: 12



Posted: 05.12.2015 02:29    

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

    У меня имеется некоторый опыт работы с программой-конструктором для создания меню автозагрузки CD/DVD, в ней я и решил "собирать" свою программу, которая сама бы вносила необходимые изменения в FB2-файл.

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

    В какой-то момент функционал программы достиг уровня, при котором стало возможным произвести адаптацию FB2-файла без предварительных подстроек, а получаемый на выходе файл не особо нуждался в корректировке. Книгу можно было сразу загружать в ридер – адаптированный файл отображался нормально. Теперь программой мог пользоваться не только я, а любой, у кого возникнет такая потребность.

    Приведя в порядок внешний вид и интерфейс программы, я решил ею поделиться.



FB2 Adapter v0.9

Программа предназначена для адаптации книг в формате FB2 под ридер Prestigio Libretto PER3362B.

Функции программы:
  • Преобразование заголовков секций (глав) – Основная функция программы.
        Преобразование заголовков позволяет сделать чтение книги более удобным. Появляется отступ у красной строки, заголовок выделяется на фоне основного текста жирным шрифтом и увеличенным отступом от левого края страницы.
        Побочный эффект – пустые строки вместо названия глав в оглавлении книги.

  • Вставка сносок в текст
        Данное действие позволяет вставить текст сноски прямо в текст книги.
        В ридере PER3362B в принципе невозможно посмотреть сноски. Т.е. в тексте ссылка на сноску есть, но "кликнуть" по ней нечем... Текст сноски не отображается внизу текущей страницы (как в обычных книгах), и в конце книги перечня сносок также нет...

  • Добавление разделительных пустых строк
        Разделительные пустые строки позволяют визуально отделить одну главу от другой, заголовок главы, подзаголовки и изображения от основного текста.

  • Замена дефисов на тире
        В некоторых книгах вместо тире применяется дефис. Это неправильно, а при использовании пропорционального шрифта ещё и некрасиво.
        Данное действие позволяет заменить дефисы на короткое тире. А также длинное тире на короткое – иногда длинное тире слишком длинное...



Пример работы программы


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

  • Во время обработки файла окно программы может "подвисать" (В заглавии появляется надпись "не отвечает" и прогресс не изменяется). Тем не менее процесс обработки продолжается в фоновом режиме и по его завершении окно "отвиснет".

  • Вставляемые сноски отделяются от основного текста разделительными линиями, их длина подобранна под те настройки шрифта которые использую я ("ArialN" размер "2"), и не регулируется т.к. программа изначально делалась "для себя".

  • Для создания адаптированной версии книги рекомендуется использовать только оригинальный FB2-файл.
    Повторная обработка файла, который ранее уже был адаптирован этой программой, может привести к некорректному результату.

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

Исправления и изменения:
  • v0.9.0.24
    – Первая публичная версия программы.

  • v0.9.0.26
    – Исправлено несколько мелких ошибок.
    – Ссылка на сноску выделяется жирным.

  • v0.9.0.28
    – Исправлено несколько ошибок. (При изменении настроек некоторые переменные не очищались.)
    – Разделительные пустые строки добавляются ещё и вокруг изображений.
    – Доработана и улучшена функция добавления сносок в текст.
       Если в одном абзаце размещены несколько сносок подряд, то текст сносок вставляется одним блоком.

Скачать с Яндекс.Диск

Контрольная сумма MD5:    38919CC5822A0793977057A04148CB87
 
 
View user's profile ^
Libroom Forum IndexАрхив форумов устройствPrestigioAll times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© Libroom, 2021