Расширение функциональности программы Cool Reader

Я очень люблю читать электронные книжки различных форматов на своем ноутбуке. К сожалению, удобных программ для чтения электронных книг формата *.fb2, не так уж и много. Из наиболее известных можно отметить FBReader и Cool Reader; обе программы разработаны отечественными программистами. FBReader является де-факто стандартной читалкой, используемой в дистрибутивах GNU/Linux, а Cool Reader, на мой взгляд, больше подходит для MS Windows.



Интерфейс программ для чтения электронных книг. FBReader и Cool Reader в операционной системе MS Windows 8.1 (кликабельно)

У FBReader’а в Windows, по моему мнению, просто ужасный интерфейс; зато имеется возможность использовать любой системный шрифт. Версия Cool Reader’а для Windows может быть собрана с использованием различных фреймворков графических интерфейсов: кроме нативного Win32 API тут имеется Qt и WxWidgets. Кросс-платформенная Qt-версия Cool Reader’а выглядит весьма лаконично, но, увы, отсутствует возможность использовать какой-либо другой системный или пользовательский шрифт, кроме тех, что отмечены автором, как наиболее подходящие. Честно говоря, возможность использовать кастомный шрифт в Cool Reader имеется: для этого необходимо в корневой директории с программой создать папку «Fonts/» и положить туда любимые *.ttf-шрифты. Но ведь весьма велика вероятность, что любимый шрифт уже давно установлен в систему, а *.ttf-файл удален. Я считаю, что возможность использования любого установленного в систему шрифта — это наиболее правильное решение.

Во всех программах для чтения электронных книг, я привык использовать Nokia Sans. Для меня этот конденсированный шрифт является наиболее предпочтительным для отображения текстовой информации в интерфейсах. У меня он уже достаточно давно установлен в систему, а *.ttf-файлов не осталось. Поэтому я решил немного переделать удобную мне читалку Cool Reader, добавив в неё возможность использования всех установленных в систему шрифтов.

Скачав исходный код программы, я углубился в его изучение. Спустя одну чашку кофе была найдена функция InitCREngine(), в которой и происходила загрузка системных шрифтов из захардкоденного массива const char *fontnames[]. Вместо инициализации этого массива я решил написать блок кода, сканирующий каталог «%WINDIR%\Fonts» и рекурсивно добавляющий системные шрифты подходящего формата в массив *fontnames[].



Массив с несколькими системными шрифтами

Благодаря фреймворку Qt это оказалось сделать очень легко:

Сниппет для конвертирования QStringList’а в массив обычных сишных строк, я нашел тут. Далее с помощью цикла элементы нашего массива, содержащие имена системных шрифтов, передаются аргументом в метод RegisterFont(), а затем обрабатываются движком:

Теперь изменённую программу необходимо было собрать для MS Windows. Если скачать архив с программой с официального сайта, то можно заметить, что она собрана компилятором cl.exe, идущим в комплекте с MS Visual Studio. Для нормальной работы с фреймворком Qt в Visual Studio необходимо установить специальное дополнение. Так как Express-версия программы не поддерживает установку дополнений, я решил рискнуть и попробовать скомпилировать Cool Reader с помощью GNU Compilers Collection (MinGW) и интегрированной среды разработки Qt Creator. Кроме того, Cool Reader, доступный для скачивания с официального сайта, использует Qt 4.7.1, у меня же установлена последняя версия из четвертой ветки — Qt 4.8.5.

Для компиляции читалки используется CMake, работа с этой кросс-платформенной системой сборки уже предусмотрена в Qt Creator’е; CMake необходимо лишь скачать и установить.

После генерации Makefile’ов я запустил сборку проекта. На удивление, он собрался под Qt 4.8.5 и MinGW практически без каких-либо изменений и весьма быстро. Пофиксив единственную ошибку, связанную с компилятором MinGW, я принялся за тестирование.

Как и ожидалось, мои изменения в коде программе, помогли ей увидеть все системные шрифты.



Доступные шрифты в Cool Reader, после внесённых изменений

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



Найденный баг с отображением полностью заряженной батарейки

Разрешив проблемы с линковкой статически собранной программы, я решил оформить все изменения в небольшой патч, забрать который можно отсюда:
[ => DOWNLOAD | СКАЧАТЬ (~4 KB) <= ]
В нём код добавления всех системных шрифтов на всякий случай обвернут в дефайн «_USE_ALL_SYSTEM_FONTS».

Если вы хотите скомпилировать Cool Reader с моим патчем, то вот вам руководство к действию:

С помощью команд:

Скачиваете исходный код из git-репозитория и патчите его.

Затем открываете файл «CMakeLists.txt» с помощью Qt Creator’а, выбираете директорию для сборки и пишете в аргументы CMake строку:

-DCMAKE_CXX_FLAGS:STRING="-D_USE_ALL_SYSTEM_FONTS"



Аргумент, прописанный в CMake (выделен красным овалом)

После генерации Makefile’ов, можете приступать к сборке программы. Компиляция успешно проходит на Qt 4.8.5 и MinGW (4.6.2), на остальных версиях компилятора и фреймворка тоже должно быть всё гладко. Для разрешения конфликтов в процессе линковки следует использовать аргументы:

-DUSE_QT_JPEG=1 -DUSE_QT_ZLIB=1 -DUSE_QT_PNG=1

Если вы статически линкуете программу, не забудьте прописать:

-DCMAKE_EXE_LINKER_FLAGS:STRING="-static -static-libgcc -static-libstdc++"

Итак, моя цель была полностью достигнута: в Cool Reader’е теперь появилась возможность использовать любой *.ttf-шрифт, установленный в систему.



Программа Cool Reader, запущенная в Windows 8.1; для отображения текста используется кастомный шрифт Nokia Sans

Скачать мою сборку Cool Reader’а можно здесь:
[ => DOWNLOAD | СКАЧАТЬ (5.3 MB, 7z-архив) <= ]

Update 21-AUG-2016: Специально для страждущих обновил свою сборку Cool Reader до master-версии из официального репозитория на GitHub’е. По просьбе Арнольда увеличил диапазон размеров шрифта между 32-36. Скачать новую сборку можно здесь:
[ => DOWNLOAD | СКАЧАТЬ (6.2 MB, 7z-архив) <= ]

Update 12-JUN-2017: В комментариях к этой статье Кирилл обозначил интересную проблему со страничными отступами. Сначала я решил, что это мои патчи как-то сломали программу, но проведя небольшое расследование, я обнаружил, что Вадим Лопатин (автор программы Cool Reader) при изменении отступов в коммите 28811c4 забыл поправить файл формы settings.ui, из-за чего и возник этот баг. Я создал Pull Request с исправлением этой проблемы и обновил свою сборку Cool Reader, скачать которую можно по этой ссылке:
[ => DOWNLOAD | СКАЧАТЬ (5.1 MB, 7z-архив) <= ]

Update 08-APR-2018: Читатель моего блога, использующий ник Evg, в комментариях к этой статье предложил ещё несколько усовершенствований для Cool Reader, которые повышают удобство использования программы на планшете в полноэкранном режиме. В частности, в приложение была добавлена специальная опция, позволяющая активировать переключение страниц электронных книг по клику или нажатию на сенсорный экран. Если нажатие произошло в левой части страницы, то будет выполнен переход на предыдущую страницу, а если в правой, то на следующую. Кроме того, в главное контекстное меню также были добавлены пункты для переключения страниц. Все изменения исходного кода были вынесены в отдельный патч, посмотреть который можно по этой ссылке; скачать готовую к использованию новую сборку Cool Reader можно здесь:
[ => DOWNLOAD | СКАЧАТЬ (5.2 MB, 7z-архив) <= ]

Update 20-APR-2018: В комментариях к записи Алексей попросил меня ещё больше расширить диапазон размеров шрифтов, исправить некоторые баги и добавить несколько небольших улучшений. Таким образом, к существующим шрифтам были добавлены варианты размеров 8..13, 27, 29..31, 80 и 96, исправлен баг с выбором текстуры страницы, добавлена кнопка «Apply», а вкладка «Стили» в настройках стала снова установлена по умолчанию. Патчи изменений можно посмотреть здесь, а скачать новую сборку можно по этой ссылке:
[ => DOWNLOAD | СКАЧАТЬ (5.2 MB, 7z-архив) <= ]

Update 11-MAY-2018: Читатель моего блога Кирилл снова попросил меня добавить некоторые дополнительные возможности в программу Cool Reader, которые я в свободное время попытался реализовать. Полный список добавлений выглядит следующим образом:

  • Добавлено отображение процентной позиции страницы с возможностью выбора количества знаков после запятой.
  • В строку состояния программы добавлено отображение различной информации, что полезно для режима просмотра «Свиток».
  • В окно поиска добавлена возможность сохранения искомых строк, убрана модальность диалога.
  • Добавлена возможность сохранения и загрузки пяти различных пресетов размера окна и шрифта.
  • В архив с программой добавлена версия Cool Reader, статически собранная с новой версией фреймворка Qt 5.
  • Добавлено сочетание клавиш быстрого доступа «Ctrl+M», которое перемещает окно в позицию 0, 0.

Подробнее изменения описаны в этом комментарии. Кроме того, в upstream репозитория Cool Reader были отправлены различные исправления ошибок и багов, с которыми я столкнулся во время реализации вышеописанных возможностей. Автор программы Cool Reader недавно принял мои патчи в официальный репозиторий. Список принятых изменений (+ ещё одно исправление с выбором текстуры страницы из моего предыдущего релиза):

  • Исправлены ошибки сборки на современных версиях компилятора GCC, коммит 4a72937.
  • Исправлена ошибка сборки программы под 64-битные операционные системы MS Windows, коммит de03a11.
  • Исправлены ошибки сборки с новой версией фреймворка Qt 5, коммит d9c1f3f.
  • Исправлены несколько вылетов (Segmentation fault), коммиты 01befed и e54d409.
  • Исправлен бесконечный цикл в режиме Scroll View для одностраничных документов, который нагружал CPU, коммит c948eb6.

Скачать готовую к использованию сборку Cool Reader с новыми возможностями под MS Windows можно здесь:
[ => DOWNLOAD | СКАЧАТЬ (12.5 MB, 7z-архив) <= ]

Update 16-MAY-2018: Были добавлены незначительные исправления, предложенные пользователем Evg:

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

Скачать новую сборку программы Cool Reader можно по этой ссылке:
[ => DOWNLOAD | СКАЧАТЬ (12.5 MB, 7z-архив) <= ]

Update 05-JUN-2018: По совету Evg был немного расширен планшетный режим с экранным управлением, теперь нажатия в определённой области дисплея отвечают за различные полезные функции:



Вариант экранного управления в планшетном режиме программы Cool Reader.

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

Новую сборку программы Cool Reader можно скачать по этой ссылке:
[ => DOWNLOAD | СКАЧАТЬ (12.5 MB, 7z-архив) <= ]

Update 22-AUG-2018: С момента прошлого релиза у меня накопились некоторые полезные исправления и добавления для моего форка программы Cool Reader, которые я оформил под версией v3.2.2-2m и выпустил в свет. Общий список изменений следующий:

  • Изменено поведение кнопки «Применить» в диалоге «Настройки» в соответствии с общепринятой UX/UI-логикой, см. предложение в комментариях к статье от Алексея.
  • Изменён формат сохранения пути фонового изображения «Стиля страницы» на относительный, благодаря чему сборка программы получилась по-настоящему портативной, см. предложение в комментариях к статье от Алексея.
  • Добавлена небольшая задержка, позволяющая подавить срабатывание действий при клике на окно программы, когда оно находится вне фокуса, см. предложение в комментариях к статье от Eug‘а.
  • Исправлены серьёзные утечки памяти, возникающие при открытии и закрытии некоторых диалоговых окон.
  • В 7Z-архив дистрибутива программы добавлен файл ReadMe.txt с краткой информацией и полезными ссылками.
  • Исправлены ссылки на GitHub-репозиторий форка программы.
  • Отменено сжатие EXE-файлов утилитой upx, что повлекло за собой уменьшение размера 7Z-архива дистрибутива программы, увеличение скорости первого запуска (холодный старт) приложения и понизило подозрительность антивирусов; однако это изменение в результате увеличило размер самих EXE-файлов.

Обновлённую версию программы Cool Reader v3.2.2-2m можно скачать по этим ссылкам:
[ => DOWNLOAD | СКАЧАТЬ (9.2 MB, 7z-архив) <= ]
[ => MIRROR | ЗЕРКАЛО (9.2 MB, 7z-архив) <= ]

Update 08-SEP-2018: Благодаря двум сервисам непрерывной интеграции (Continuous Integration): Travis CI и AppVeyor, мой форк программы Cool Reader обзавёлся пакетами под три популярные платформы: MS Windows, Apple macOS и GNU/Linux. Хотя моя настройка CI выглядит немного усложнённой, проект четыре раза собирается под выбранные операционные системы всего лишь за 10 минут. Сервис AppVeyor используется только для создания одного 64-битного исполнительного файла под MS Windows, который линкуется со статически собранной библиотекой Qt 5, доступной в пакетной базе сборочной платформы MSYS2. Поскольку сервис Travis CI, к сожалению, не имеет современных образов дистрибутивов GNU/Linux, в которых происходит процесс сборки, мне пришлось использовать Docker-контейнер с образом Ubuntu 16.04 LTS. В нём я подцепляюсь через PPA к пользовательскому репозиторию с самой новой версией Qt и собираю пакет AppImage, предназначенный для всех дистрибутивов GNU/Linux; инструкции по запуску таких пакетов можно найти на официальном сайте проекта AppImage. В этом же контейнере я разворачиваю собственноручно собранный статически фреймворк Qt 4 и компилирую 32-битный исполнительный файл для MS Windows. Сборка DMG-образа под Apple macOS происходит средствами самого Travis CI, без использования Docker’а. Файлы сборочных рецептов CI-сервисов выглядят следующим образом:

  1. appveyor.yml — Используется для разворачивания MSYS2 и запуска сборочного скрипта.
  2. appveyor.sh — Сборочный скрипт для MSYS2, который собирает 64-битный исполнительный файл под MS Windows.
  3. .travis.yml — Используется для разворачивания Docker-контейнера и для сборки DMG-образа под Apple macOS.
  4. Dockerfile — Сборочный рецепт для Docker’а, который собирает AppImage-пакет для GNU/Linux и 32-битный исполнительный файл для MS Windows.

Файлообменный сервис transfer.sh позволяет забрать готовые пакеты из виртуальных машин разных CI-платформ.



Форк Cool Reader 3, запущенный в разных настольных операционных системах (превью, увеличение по клику).

Список изменений, который включает в себя новая версия программы, получился следующий:

  • Исправлена загрузка строк локализации библиотеки Qt в сборках программы, использующих Qt 5.
  • Внедрены системы непрерывной интеграции Travis CI и AppVeyor для сборки программы под MS Windows, GNU/Linux и macOS.
  • Для сборок программы с использованием Qt 5 режим поддержки HiDPI-дисплеев активирован по умолчанию.
  • Добавлено новое сочетание клавиш быстрого доступа «Shift+Space» для перелистывания страницы назад, так как клавиша «Space» используется для переключения на следующую страницу.
  • Сборка пакетов теперь осуществляется с более новыми версиями библиотек Qt 5.11.1 и Qt 4.8.7, что исправило некоторые недочёты.
  • В контекстное меню был добавлен пункт, позволяющий инвертировать цвет фона, см. предложение в комментариях к статье от Evg.
  • Добавлена небольшая задержка, позволяющая подавить срабатывание нежелательных действий в планшетном режиме при закрытии контекстного меню кликом курсора мимо цели, см. предложение в комментариях к статье от Evg. Примечательно, что этот недочёт был замечен лишь на MS Windows.
  • Пункты контекстного меню, отвечающие за изменения цветов фона и текста, вынесены в главное меню «View». Такое дублирование стало необходимым потому что во фреймворке Qt, начиная с версии 5.10, изменилось поведение отображения сочетаний клавиш быстрого доступа. Теперь по умолчанию они скрыты в контекстных меню, но показаны в главных. Подробнее см. эту и эту проблемы в багтрекерах.

Пакеты новой версии форка Cool Reader для различных операционных систем можно скачать по этим ссылкам:

[Скачать | Download] | [Зеркало | Mirror] — 7Z-архив для MS Windows, v3.2.2-3m, 08-SEP-2018, x86, x86_64, Qt 4, Qt 5, 9.2 MB.
[Скачать | Download] | [Зеркало | Mirror] — DMG-образ для Apple macOS, v3.2.2-3m, 08-SEP-2018, x86_64, Qt 5, 13.1 MB.
[Скачать | Download] | [Зеркало | Mirror] — AppImage-пакет для GNU/Linux, v3.2.2-3m, 08-SEP-2018, x86_64, Qt 5, 24.5 MB.

Update 11-DEC-2018: Подготовлена ещё одна пачка исправлений и расширений функциональности программы, самым значимым нововведением является поддержка операционной системы Haiku:



Пакет приложения Cool Reader 3, установленный в Haiku OS.

Список всех изменений, которые вошли в новую релизную версию приложения:

  • В кодовую базу интегрированы патчи поддержи операционной системы Haiku, предоставленные 3dEyes** (Герасим Троеглазов), благодаря им появилась возможность сделать сборку программы для Haiku OS. Готовые пакеты Cool Reader доступны для установки из репозитория HaikuPorts или из системной программы Haiku Depot. Почитать подробнее о процессе портирования моего форка программы Cool Reader можно в этой статье.
  • В скриптах сборки обеспечен деплой файла локализации на русский язык внутренних строк библиотеки Qt. Благодаря этому перевод приложения теперь является полным.
  • Шрифт DejaVu Sans, который программа на некоторых операционных системах выбирает при своём первом запуске, изменён на DejaVu Serif.
  • Исправлен начальный выбор стиля интерфейса программы, опция «Настройки» => «Окно» => «Стиль интерфейса».
  • Добавлены и переписаны некоторые информационные файлы и документы в репозитории и в пакетах сборок.
  • Добавлена возможность отключения альфа-канала у изображений, что может быть полезным при использовании тёмного цвета фона, подробнее см. этот комментарий. Опция «Настройки» => «Страница» => «Параметры изображений» => «Отключить альфа-канал».
  • Добавлена возможность выбора инвертированного (относительно фона) цвета выделения текста, подробнее см. этот комментарий. Опция «Настройки» => «Страница» => «Цвет выделения» => «Инвертировать».
  • Исправлено отображение выбранного цвета у некоторых параметров в диалоге настроек.
  • Исправлено отображение выбранных параметров в примере, который располагается в диалоге настроек.
  • Исправлены автоматические сборки приложения для Windows (AppVeyor), macOS (Travis-CI) и Linux (Travis-CI). Сборка DMG-образа для macOS переведена на 10.12, поскольку новые версии Qt поддерживают macOS лишь начиная с этой версии. Сборка AppImage для Linux теперь использует PNG-иконку, вместо иконки устаревшего формата XPM. Подробнее см. обсуждение issue здесь.
  • Исправлен баг, связанный с выделением текста и переходом по ссылкам в двухстраничном режиме, см. комментарии от Vit и Vladimir.
  • Добавлена возможность изменения яркости иллюстраций в тексте синхронно с изменением яркости или цвета текста. Опция «Настройки» => «Страница» => «Параметры изображений» => «Использовать цвет шрифта», см. комментарий от Evg. Имеется небольшое ограничение: при изменении яркости или цвета фона яркость изображения сбрасывается, поэтому для возвращения параметра требуется изменить яркость текста повторно в любую сторону.
  • Сборка для Windows стала более портативной. Теперь различные параметры и файлы, необходимые для работы программы, сохраняются в каталог приложения, а не в реестр или пользовательскую директорию. Кроме того, появилась возможность создать каталог ./books/ в директории с программой. Параметры книг, которые лежат в этом каталоге, будут являться переносимыми. Подробнее см. предложение в комментарии от Игоря.

Пакеты новых версий программы Cool Reader можно скачать по этим ссылкам:

[Скачать | Download] | [Зеркало | Mirror] — 7Z-архив для MS Windows, v3.2.2-4m, 11-Dec-2018, x86, x86_64, Qt 4, Qt 5, 9.2 MB.
[Скачать | Download] | [Зеркало | Mirror] — DMG-образ для Apple macOS, v3.2.2-4m, 11-Dec-2018, x86_64, Qt 5, 13.3 MB.
[Скачать | Download] | [Зеркало | Mirror] — AppImage-пакет для GNU/Linux, v3.2.2-4m, 11-Dec-2018, x86_64, Qt 5, 24.6 MB.
[Скачать | Download] | [Зеркало | Mirror] — HPKG-пакет для Haiku OS, v3.2.2-4m, 11-Dec-2018, x86, Qt 5, 2.1 MB.
[Скачать | Download] | [Зеркало | Mirror] — HPKG-пакет для Haiku OS, v3.2.2-4m, 11-Dec-2018, x86_64, Qt 5, 2.1 MB.

Update 22-DEC-2018: Мной было решено выделить несколько минорных изменений и исправлений в новую релизную версию программы:

  • Настройки яркости в контекстных меню вынесены в специальное подменю «Яркость». Настройка изменения яркости изображений теперь обрабатывается отдельно и не зависит от яркости текста или фона, кроме того для неё добавлены новые сочетания клавиш быстрого доступа «Ctrl+Shift+/» и «Ctrl+Shift+*». Опция «Настройки» => «Страница» => «Параметры изображений» => «Использовать цвет шрифта» была удалена за ненадобностью. Яркость обложки теперь тоже зависит от выставленной яркости изображений. Подробнее см. эту ветку комментариев с участием Evg.
  • Добавлена экспериментальная возможность отключения создания файлов кэша. Опция «Настройки» => «Окно» => «Отключить кэш (эксп.)», после изменения которой требуется перезапуск программы. Подробнее см. предложение в комментариях от Игоря.
  • Пакет программы для операционной системы Haiku теперь сохраняет настройки по правильному пути: ~/config/settings/cr3/, вместо ~/.cr3/.
  • В некоторых местах изменён шрифт с DejaVu Sans на DejaVu Serif и поправлены размеры окна при первом запуске приложения.
  • Исправлен выбор обложки с низкокачественной на высококачественную, если такая имеется первой в книге. Поскольку некоторые генераторы FB2-файлов помещают в XML одинаковые теги с одинаковыми атрибутами id, был добавлен обходной путь для исправления этой проблемы на некоторых электронных книгах. Подробнее об этом см. комментарий от Дмитрия.
  • Исправлено отображение состояния батареи в свойствах документа: «Файл» => «Свойства документа».
  • Файлы для непрерывной интеграции теперь скрыты, а скрипты сборки выделены в отдельную директорию ./ci/.

Подготовленные для запуска и установки пакеты новой версии приложения Cool Reader можно скачать по этим ссылкам:

[Скачать | Download] | [Зеркало | Mirror] — 7Z-архив для MS Windows, v3.2.2-5m, 22-Dec-2018, x86, x86_64, Qt 4, Qt 5, 10 MB.
[Скачать | Download] | [Зеркало | Mirror] — DMG-образ для Apple macOS, v3.2.2-5m, 22-Dec-2018, x86_64, Qt 5, 13.3 MB.
[Скачать | Download] | [Зеркало | Mirror] — AppImage-пакет для GNU/Linux, v3.2.2-5m, 22-Dec-2018, x86_64, Qt 5, 24.6 MB.
[Скачать | Download] | [Зеркало | Mirror] — HPKG-пакет для Haiku OS, v3.2.2-5m, 22-Dec-2018, x86, Qt 5, 2.1 MB.
[Скачать | Download] | [Зеркало | Mirror] — HPKG-пакет для Haiku OS, v3.2.2-5m, 22-Dec-2018, x86_64, Qt 5, 2.1 MB.

Так как в данный момент у меня накопилось большое количество патчей к программе Cool Reader, для удобства просмотра тех или иных изменений я решил их выделить в отдельный репозиторий-форк:
https://github.com/EXLMOTODEV/coolreader

Приятного чтения!

Manuals, Others

Комментарии: 167

  1. Доброе время суток, Сергей. Спасибо за вашу сборку Cool Reader’а — пользуюсь ей второй год. Возможность использовать все системные шрифты — это то, чего очень не хватало, но есть еще одна вещь, которую было бы здорово реализовать — это возможность в режиме просмотра «Две страницы» использовать скины, которые бы растягивались на всю книгу, а не на каждую страницу по отдельности.

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

    1. Добрый день, спасибо за отзыв! Функция действительно интересная, если найду свободное время и канал, позволяющий мне стянуть исходники Cool Reader’а из репозитория (сейчас у меня очень плохой мобильный интернет), то я обязательно попробую заняться реализацией вашей идеи.

  2. Обновите пожалуйста сборку Cool Reader’а с возможностью использовать все системные шрифты до версии 3.3.61(cr3-win32-qt-opengl-3.3.61.zip)

    1. Обновил сборку Cool Reader’а до последней ветки master’а, это 3.2.1-x

      См. последний раздел статьи. К сожалению, Cool Reader 3.3.61 это уже совсем другой проект.

  3. Спасибо за исключительно полезную сборку! С расширением набора шрифтов довольно убогий интерфейс Cool Reader’а стал значительно богаче. К сожалению, выбор размеров шрифта в этой читалке тоже весьма ограничен. Например, для самых ходовых шрифтов на экране моего таблета (10″, Win 8.1) размер 32 пк явно мал, а 38 -слишком велик, а между ними ничего нет. Нельзя ли «научить» Cool Reader применять также более широкую гамму размеров шрифта?
    С глубоким уважением.

    1. День добрый, специально для вас сделал последнюю сборку Cool Reader, где можно выставить размер шрифта в 32, 33, 34, 35, 36, 37 и 38. Смотрите в обновлениях поста выше.

  4. Замечательная сборка!
    Спасибо огромное за работу!

    Маленькое и некритичное пожелание: в сборке «Update 21-AUG-2016: cr3-qt-win32-static-latest» настройка «Страница — Отступы страницы» имеет в несколько раз меньший эффект, чем в старой сборке «cr3-qt-win32-3.0.57-15» и оригинальных старых версиях — даже при максимальном значении отступа 30 он всё равно очень маленький. Можно, конечно, скомпенсировать через «Таблицы стилей — Стиль параграфа — Отступы», но это же костыли.
    Ещё раз спасибо!

    1. Кирилл, здравствуйте! Извините за задержку с ответом.
      Я исправил описанную вами проблему, подробнее смотрите в конце этой статьи.
      Кроме того, я добавил новую сборку с исправленным багом. Просьба протестировать.

  5. Большое спасибо за то, что улучшаете старую версию CoolReader. Версия 3.3 меня несколько, признаться, разочаровала. Поэтому продолжаю пользоваться по старинке прежней версией программы. Меня все в ней устраивает, кроме, пожалуй, некоторого неудобства при использовании на планшете в полноэкранном режиме: нет возможности быстро переключать страницы. Поэтому у меня к вам такая просьба — усовершенствовать программу, чтобы можно было переключать страницы из контекстного меню, добавив там строки вперед/назад. Это вообще возможно сделать? Ну и конечно возможность переключать страницы кликая на экране также была бы весьма кстати…

    Также обратил внимание на такую особенность работы CR с архивированными файлами — есть возможность запускать сразу из архива только файлы fb2. Но это мелочь — решается путем переименования расширения. Более серьезная проблема при работе с архивами в том, что некоторые кодировки файловых систем не открываются — так, если правильно помню, возникали проблемы с кодировкой имен файлов в UTF-8.

    Спасибо вам большое. Надеюсь, что вы и в дальнейшем будете уделять свое внимание этой замечательной программе!

    1. Вы говорите про это контекстное меню?

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

      1. Да, это меню, совершенно верно.
        А что касается работы с архивами, то я сам еще не до конца изучил это явление: столкнулся с этим буквально позавчера и еще не уделил этому достаточно внимания. Проблемы у меня возникали, когда я с помощью Total Commander пытался архивировать книги с проблемными названиями. Появлялось окно (скорее всего оно вам уже знакомо) с шестью кнопками и просьбой сохранить имена файлов в отдельном поле/кодировке UTF и прочими, не помню точно какими. После этого CoolReader отказался открывать такие файлы. Пытался их переименовывать и уже упакованные и до переупаковывания — не получалось… но правда, за малым исключением, если переименовать упаковываемый файл на «0.fb2», то такой файл получалось открыть, но вот только в программе его имя показывалось таким же «0.fb2», а не сам заголовок книги.
        Пока это все, что могу сказать об этом. Проблема явно есть и, скорее всего, она в том что встроенный деархиватор довольно древненький и не воспринимает современные кодировки.

        1. С архивами и кодировками в них довольно много проблем даже на уровне различных современных OS. Поэтому я всегда предпочитаю работать с распакованными файлами и никогда не пользуюсь встроенными деархиваторами в программах для чтения электронных книг или в различных эмуляторах.

          Касательно предложенных вами улучшений, попробуйте протестировать эту сборку. Для активации переключения страниц по нажатию на экран можете использовать эту добавленную мной опцию:

          Если у вас будут ещё предложения и замечания, то отпишитесь.

          1. Большое вам спасибо! Это именно то, чего очень не хватало.
            Единственное несущественное пожелание — наверное было бы еще лучше предусмотреть возможность и обратного листания мышью, например, анализируя координаты клика мышью, как это используется на смартфонах — если кликаем в левой части, то переходим назад, если в правой, то стало быть — вперед.

            1. Спасибо за предложение, действительно, так будет более логично. Если есть возможность, протестируйте новую сборку и отпишитесь, всё ли работает.

              У меня нет возможности запустить и проверить работу приложения в Windows-окружении, поэтому приходится работать «вслепую».

  6. Добрый день. Добрая работа! Не планируете ли добавить размеры шрифтов 27, 29, 30, 31? Пользуюсь КулРидером на мониторе 24 дюйма, и реально не хватает шрифта размером 30… 28 — маловат, а 32 — великоват…

    1. Доброй ночи!
      Добавил эти размеры шрифтов + некоторые другие. Скачать новую сборку можно по последней ссылке в статье.

  7. Если интересно, то вот список найденных багов:
    1. При входе в настройки первой открывается вкладка «Страница». В версии cr3-qt-win32-3.1.2-52-12-jun-2017 открывалась вкладка «Стили».
    Как-то привычнее, если первой открывается самая левая вкладка 🙂
    2. Вкладка «Стили».
    2.1 При назначении стиля страницы [NONE], сохранении настроек, и последующем открытии настроек, отображается не стиль [NONE], а стиль bg_paper1.
    2.2 Стиль bg_paper1 можно включить только переключаясь НЕ со стилей [NONE] и глючного отображения [NONE] из п. 2.1
    3. Воспроизвелось 1 раз, но всё же…
    При выборе некоторых шрифтов аннотация книги и слово «Глава» в обозначении глав начали отображаться знаками вопроса. Помогла перезагрузка программы.
    4. Не баг, а ещё маааленькая просьба))))
    А можно в настройках ещё добавить кнопку «применить»? А то очень неудобно каждый раз открывать настройки, когда делаешь кучу мелких изменений.

    В любом случае, благодарю ещё раз за добавленные размеры шрифта текста.

    1. №1, №2 и №4 — исправлено/добавлено.
      Насчёт №3 — скорее всего в шрифте не было глифов для кириллицы, поэтому они отображались знаками вопроса, а после перезапуска программа установила fallback-шрифт с поддержкой кириллицы.
      Сборка и ссылки в статье обновлены.

  8. Приветствую!
    Продолжаю с удовольствием пользоваться Вашей сборкой Cool Reader.
    Спасибо огромное за неё!
    По ходу пользования возникло несколько идей. Возможно, какие-то из них покажутся интересными для воплощения.
    1. Сделать окошко поиска текста немодальным. Сказать по правде, не представляю, почему это не так изначально. Тем более, что, к примеру, окошко «Содержание» сделано как раз немодальным.
    1а. Научить окошко поиска запоминать последнюю искомую строку. А в идеале, чтобы был выпадающий список с недавними строками.
    2. Опция отображения процентной позиции в книге. Этой информации категорически не хватает при отображении в режиме свитка. Да и в постраничном режиме при изменении размеров и перестроении страниц тоже очень не помешало бы.
    3. Возможность сохранения пресетов размера окна (возможно, не только его, но и других параметров отображения, но это уже совсем широкая идея). Или хотя бы одного размера по умолчанию. Прежде всего, это позволяло бы возвращаться к привычному разбиению страниц в читаемой книге после нарочного или случайного изменения размеров окна.

    И ещё, маленький багрепорт. Упомянутое окошко поиска умеет как-то очень необычно сходить с ума, если переключать направление поиска не закрывая окошка: то вообще перестаёт искать, то ищет назад до первой ранее найденной позиции при поиске вперёд или что-то вроде того.

    С уважением.

    1. Упс. Ещё пара мелочей.
      2а. Проценты хорошо бы с регулируемым количеством знаков после запятой — 0, 1, 2. На здоровенной книге могут быть удобными и сотые доли процента.
      4. Я правильно понимаю, что в данной версии строка состояния ничего не показывает и пользы не несёт?

      1. 1 (1a), 2 (2a) — посмотрю в свободное время.
        3 — какие именно пресеты там должны быть? Мне ваша идея пока не совсем ясна.
        4 — скорее всего да, есть идеи, что именно там отображать?

        1. 1 (1a), 2 (2a) — 🙂

          3 — Лучше подойду с практической стороны.
          Вот читаю сейчас длинную книгу (порядка 1000 страниц). Что существенно, по характеру книги часто приходится возвращаться к прочитанному раньше, к знакомым страницам. Читаю на одном компе с неизменным размером окна Cool Reader. Соответственно, разбивка на страницы неизменная и уже стала привычной.
          И тут, я открываю ещё одну книгу. И по какой-то причине эту другую книгу удобнее читать в окне другого размера.
          Или же я просто случайно изменил размер окна, зацепив край мышкой вместо полосы прокрутки.
          И когда я возвращаюсь к своей длинной книге, разбивка страниц оказывается другой, мозг страдает и ломается. ((
          Конечно, эта проблема во многом надуманная. Но, с другой стороны, для её решения достаточно малой малости — возможности запоминания и восстановления хотя бы одного размера окна (пресета).
          Ну, а при желании, пресетов можно сделать больше одного, и можно включить также другие настройки (размер шрифта, настройки страницы и т.п.).

          4 — первое, что приходит на ум — уже озвученные проценты (хотя, их может уместнее рядом с номером страницы отображать, я бы такое опционально делал), а так же название раздела/главы.

          P.S. Столько всего написал. Мне аж печально, что я делфист, а не кьютист. 🙂

          1. Доброго дня. В свободное время немного посмотрел исходный код Cool Reader и сделал следующее:

            1. У окошка поиска убрана модальность и реализована возможность сохранения истории с последующей очисткой:

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

            2. Добавлена возможность отображения процентов с различным числом знаков после запятой, активировать настройку можно на вкладке «Страница»:

            3. Добавлена возможность сохранения различных пресетов размера окна и некоторых его настроек (шрифт и его размер), см. вкладку «Окно»:

            Можно сохранить до пяти различных пресетов.

            4. В строку состояния добавлен вывод различной информации, например, название главы:

            5. Добавлена сборка программы с новой версией фреймворка Qt 5 (5.10.1), что позволило программе выглядеть нормально на современных HiDPI и 4K дисплеях:

            Просьба протестировать новую сборку.

                1. В первом приближении всё чудесно! Спасибо!
                  Попробовал также версию qt5. На обычном мониторе разница просто не наблюдается (видимо, так оно и должно быть).

                  Есть только пара моментов.

                  1. В пресетах окна «Заголовок» — это чисто информационный текст, куда помещается название книги, при чтении которой пресет был создан? Если так, то было бы здорово, чтобы его можно было редактировать (пресет не обязательно ведь по сути привязан к конкретной книге).

                  2. Строка состояния, где кроме прочего отображается текущая глава книги — вещь! Но, к сожалению, если книга открыта в режиме одной страницы, то все элементы (название книги, название главы; время, страница, прогресс, батарея) просто не помещаются по ширине. Точнее, не помещается целиком название книги и название главы — на них налазит время и т.д., которые выровнены вправо. Было бы здорово, по-моему, сделать для элементов строки состояния такой же выбор отображаемых, как для элементов заголовка.

                2. Пришла в голову второстепенная идея, касающаяся отображения окна.
                  При использовании ноутбука с внешним монитором иногда бывают неприятные ситуации с попаданием окна приложения при запуске в невидимую область виртуального рабочего стола (после отключения внешнего монитора или после изменения его виртуальных координат).
                  Можно, конечно, настроить интеллектуальную автоматику приведения координат к видимой области.
                  Но простейшим решением было бы наличие клавиатурной комбинации, перемещающей окно в позицию 0, 0.

                  Понимаю, что проблема весьма специфическая. Но вдруг найдёт отклик. 🙂

                  1. Протестируйте эту сборку.

                    1. В пресетах окна «Заголовок» был изменён на «Комментарий», который можно редактировать, кликнув по необходимой ячейке таблицы два раз мышкой или выделить ячейку и нажать клавишу «Пробел».
                    2. Компоненты, которые отображаются в строке состояния, теперь можно включать и отключать.
                    3. Добавлена горячая клавиша «Ctrl + M» (латинская M), перемещающая окно в позицию 0, 0.

                    Версию для Qt 5 соберу когда вы отпишитесь, что всё нормально, тогда же и подготовлю релиз.

                    Попробовал также версию qt5. На обычном мониторе разница просто не наблюдается (видимо, так оно и должно быть).

                    Да, на различных современных HiDPI и 4К-мониторах разница должна быть, так как фреймворк Qt 4 старый и не поддерживает такие мониторы. Интерфейс в них будет программно растянут и, соответственно, «замылен» самой операционной системой. А у версии программы, собранной с Qt 5, такой проблемы не должно быть.

                    1. В порядке развития фантазии. =)
                      А увеличение количества пресетов до 10 и выделение горячих клавиш для них (что-то вроде Ctr+Shift+1..9, 0) не задумано случаем?
                      Едва ли мне лично это надо. Тут речь скорее о красоте реализации идеи. Шлифовка обтекаемых поверхностей до космического блеска. ))

                    2. Я попробовал увеличить количество пресетов до 10, появилось несколько проблем: таблица сильно разрослась, немного увеличилось время загрузки окна настроек, элемент выбора строки стал выдавать длинный и неудобный список из 10 элементов. Я считаю, что 5 элементов более чем достаточно. Этакая золотая середина. По поводу сочетаний клавиш на пресеты, я думаю это не настолько часто используемая фича, чтобы забивать ей хоткеи. Тем более не видя информации того, какой шрифт и какой размер окна будет применяться, да и реализация довольно сложна, так как обработка горячих кнопок идёт в другом месте программы.

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

                      Удачи и приятного чтения!

  9. Небольшое предложение по поводу набора размеров для шрифтов. А почему не сделать вместо ниспадающего окошка для размеров, поле с непосредственным вводом размеров в текстовом виде. А то и вовсе начать использовать стандартное окно Windows для изменения параметров шрифта — не понятно почему это не было сделано изначально. Да и для клавиш «+» и «-» гораздо удобнее был бы постоянный шаг в единицу — разрешения мониторов и экранов плашетов сейчас весьма различны, на подходе уже массовое внедрение разрешений 4к, а то и все 8к, так что гораздо сподручнее было бы иметь в рапоряжении более широкий диапазон размеров шрифтов без пропусков.

    Еще хочу поделиться наблюдением касательно переключения сохраненных пресетов. При нахождении в режиме полного экрана и переключении на другой пресет не происходит возвращения обратно в режим полного экрана — внизу остается незаполненная узкая полоса. То ли артефакт от строки состояния, которая в тот момент даже и не использовалась, то ли еще чтото…

    1. Также заметил, что в режиме qt5 и полноэкранном режиме при перезапуске программы не происходит развертывания на весь экран — полноэкранный режим почему то включается не на полный экран

    2. По поводу шрифтов, посмотрю что можно сделать.

      А вот глюк с полноэкранным режимом никак не могу повторить. Есть чёткая последовательность действий для воспроизведения проблемы на чистой (только что распакованной) сборке?

      Кроме того, Qt 5 версия на MS Windows 10 у меня тоже работает без проблем:
      Запускаем программу => переходим в полноэкранный режим по Alt+Enter => закрываем программу => запускаем снова => полноэкранный режим на месте.

      1. Последовательность здесь простая — закрываем в полноэкранном режиме и затем открываем какую-нибудь книгу. Итог: программа в «полноэкранном» режиме (то есть без границ окна и прочего) открывается лишь на часть экрана. Возможно у вас не повторяется из-за того что маленькое разрешение экрана. Я проверял на двух экранах 2560х1440 и 3000х2000
        Также хочу добавить что есть нестыковки в работе переключателя полноэкранного режима при переключении пресетов с пресета с полным экраном и без него.

      2. Странно… сейчас стал запускать программу на экране 2560х1440 и глюк с полным экраном не обнаруживается…
        Очень странно…
        Видимо проблема во взаимодействии с системой и чтото изменилось…

        Тем не менее этот глюк еще есть на планшете с экраном 3000х2000

        Зато обратил внимание на другую особенность — шрифты в файлах epub и fb2 отображаются разными размерами, хотя в окне размера шрифта стоит одна и та же величина.

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

      В качестве графических элементов для управления размерами шрифтов заголовка и текста добавлены двунаправленные счётчики с диапазоном значений 8..100 и шагом в единицу.

      Еще хочу поделиться наблюдением касательно переключения сохраненных пресетов. При нахождении в режиме полного экрана и переключении на другой пресет не происходит возвращения обратно в режим полного экрана.

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

      Зато обратил внимание на другую особенность — шрифты в файлах epub и fb2 отображаются разными размерами, хотя в окне размера шрифта стоит одна и та же величина.

      Это особенность формата электронных версий книг «ePub», который позволяет встраивать внутрь себя шрифты и различные стили отображения.

      Эту возможность можно отключить, используя опции «Разрешить встроенные стили» и «Разрешить встроенные шрифты» в настройках программы.

      в режиме qt5 и полноэкранном режиме при перезапуске программы не происходит развертывания на весь экран

      Попробовал исправить «вслепую», но вряд ли что-либо существенно изменилось. Возможно какой-то баг в новой версии Qt 5, нужно будет смотреть. Пока я не могу повторить у себя данную проблему.

      Скачать новую сборку можно в конце статьи. Спасибо за багрепорт.

      1. Большое спасибо!!!

        И что касается разных размеров шрифтов в epub и fb2. Я конечно же в курсе, что существуют те настройки, что вы указали. И именно поэтому они у меня были выключены. Я специально на это обращал свое внимание. НО…!! Тем не менее по неизвестной причине для меня один и тот же размер одного и то же шрифта в epub и fb2 отображаются разной величиной букв. То есть в настройках я вижу одно и то же число размера шрифта, но визуально шрифты все таки разного размера.

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

          1. Я разобрался в чем проблема. Это касается установки размера шрифта в настроках стиля параграфа в таблице стилей. По какой то причине одно и то же значение коэффициента в 120% дает разный эффект на размеры шрифтов файлов epub и fb2.

            Скорее всего, и в других настройках таблицы стилей проявляется тот же эффект — я не проверял.

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

              1. Согласен, что можно их и не использовать. Я их использовал как раз по причине отсутствия некоторых размеров шрифтов в линейке — увеличиваем процент и тем самым несколько сдвигаем необходимый размер в ту область, где есть необходимые размеры. Не так давно сменил и, как оказалось, далеко не сразу заметил связь между различиями отображения у разных типов файлов. Теперь такой необходимости, конечно, нет — уже отключил и все нормализовалось.

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

  10. Доброго дня !
    1. Скажите пожалуйста есть ли возможность назначить ассоциация файлов .fb2 и др. программой принудительно
    потому что виндоус 10 что то сделала и возможность назначить ассоциация файлов .fb2 — не работает
    пробовал сделать даже с помощью cmd

    2. Настройки — таблицы стилей — отступы
    слева и справа — отступы можно выбрать только 50% высоты строки а это многовато .
    Есть предложение добавить 20 и 30 % высоты строки . Оставить 50% высоты строки .
    Остальные значения слишком большие — можно даже удалить (необязательно).

    Спасибо .

    1. Здравствуйте!

      1. Нет, такой возможности в программе не предусмотрено. Попробуйте воспользоваться следующими инструкциями для задания файловых ассоциаций в MS Windows 10 или их восстановления в первоначальное состояние:
      1.1. Ассоциации файлов Windows 10.
      1.2. Как восстановить файловые ассоциации в Windows 10.
      1.3. How to Change File Associations in Windows.
      1.4. How to Restore Default Apps for File Type Associations in Windows 10.

      2. Я добавил значения в 20% и 30%, просьба протестировать. Если всё нормально, соберу версию и под Qt 5.
      Сборку программы можно скачать по этой ссылке.

  11. Очень хотелось бы увидеть в CR3 возможность менять яркость фона кнопками, например, из всплывающего меню и/или кнопками, например, Num/ или Num* с шагом, к примеру, в 5 или 10 (от 1 до 256) или даже может тапом по краю экрану (как это реализовано в Android-версии). Частенько возникает такая необходимость поменять яркость экрана монитора в зависимости от внешнего освещения — приходится отрываться от чтения и лезть в настройки.
    Еще совсем не лишней была бы возможность делать автоматически фон выделения таким же как и фон страницы: из-за этого изменения яркости фона приходится дублировать — все же CR3 это программа для чтения книг, а не для редактирования и необходимость в выделении текста очень мала.

    1. Спасибо за тест. Под изменением яркости фона вы понимаете простое изменение цвета фона и текста на более приглушённый или какую-то определённую настройку?

      1. Да, то, что я имею ввиду касается изменения цвета фона на более приглушенный (более серый/темный) в настройках программы. Там есть настройка яркости — вот к ней то я и предлагаю «прикрутить» горячие клавишы, чтобы не отвлекаться лишний раз от чтения.

    2. Насчёт выделения текста. В настройках на вкладке «Окно» имеется опция «Переворачивать страницы кликом мышки» и если её активировать, то выделение текста отключится. Или всё-таки необходима ещё одна опция, которая будет выключать выделение текста, не изменяя поведение кликов/нажатий на экран?

      1. Думаю, конечно, можно оставить как есть, раз такое уже предусмотрено. В любом случае это не столь критично.

      1. Работает все хорошо, но если возможно, просьба разделить изменение яркости шрифта и фона. Может лучше предусмотреть переключение в негативный режим?

        1. Разделил, теперь яркость шрифта регулируется с зажатым модификатором «Shift», то есть:

          • «Shift + /» — понизить яркость шрифта.
          • «Shift + *» — повысить яркость шрифта.

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

          1. Спасибо! Вот теперь все как и хотелось. )
            Хотя разве что почти….
            Для чтения на планшете, конечно, очень не помешала бы настройка яркости прямо на эране.
            Если возможно просьба сделать и управление с экрана. Например, верхнюю треть окна программы можно было отвести под управление яркостью — правая половина этой трети, к примеру, под настройку яркости фона, а левая — для шрифта.
            Еще раз спасибо!

          2. Да еще… уж совсем для достижения идеала — вынести на экран еще и изменение размера шрифта.
            Тогда Cool Reader 3 уж точно станет лучшей программой для чтения для Windows.

    3. Я немного расширил «Планшетный режим» и добавил подсказку, которая демонстрирует за что отвечает нажатие в ту или иную часть экрана. Активировать этот режим можно опцией «Настройки» => «Окно» => «Планшетный режим», всплывающие подсказки можно убрать там же.

      Проверьте пожалуйста новую сборку.

      1. Вот только еще думаю… А не могла ли быть еще удобнее для использования такая схема, при которой экран по вертикали делится не на две части, а на три? И левая половина нижней трети — это предыдущая страница, а правая — следующая.

        1. Я попробовал разные варианты, этот оказался самым удобным, на мой взгляд. Проблема с тремя делениями по вертикали в том, что часты нажатия в пограничные места, потому что нет ориентира. Здесь же более менее удобно — мысленно делим экран крестом: квадраты близко к середине отвечают за одни действия, а те, что ближе к краям экрана — за другие. Легко запоминается, ошибок нажатий практически нет.

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

            Поэтому я предлагаю такой вариант «раскладки» экрана:

            Хотя в то же время, если есть возможность реализовать несколько вариантов «раскладок», то предпочтительнее, конечно, реализовать именно такую возможность.

    4. Переделал управление по Вашей схеме. Такой вариант действительно тоже получился удобным, я просто делил экран на три части немного по-другому. Насчёт нескольких раскладок, это, конечно, хорошо, но слишком муторно в плане реализации, да и количество настроек сильно «разбухнет». На мой взгляд лучше выбрать самый удобный вариант и закрепить его.

      Пожалуйста проверьте новую сборку. Обновлённую подсказку в виде изображения и версию с использованием фреймворка Qt 5 я сделаю позже.

      1. О, да! Вот теперь действительно идеально! Спасибо Вам!

        И обращаю Ваше внимание на то, что всплывающая схема раскладки в настройках осталась прежней…

        1. Обновил подсказку и добавил версию с использованием фреймворка Qt 5. Скачать архив сборки программы можно в самом конце статьи.
          Приятного чтения!

    1. По сути это и есть 3.2.2-1, только без фиксов для сборки wxWidgets-версии. About-диалог в моих патчах уже поправлен.
      Чуть позже перенесу эти исправления, бампну тег и версию программы.

  12. Доброго времени суток !
    Не устанавливается .deb пакет для ubuntu 18.04 — пишет неудовлетворенные зависимости .
    «Пакет libpng12-dev недоступен»
    Спасибо .

    1. День добрый. К сожалению, я не располагаю информацией о пакетах для Ubuntu.
      Судя по информации, которая изложена здесь, пакет переименовали и теперь он называется libpng-dev. О том, как модифицировать DEB-пакет спрашивайте на форумах Ubuntu.

  13. Доброго времени суток!
    В связи с тем, что в КулРидере присутствует достаточно много горячих клавиш, возник вопрос: а не планируется ли добавить в настройки ещё одну вкладку с перечислением этих клавиш?
    Я, конечно, понимаю, что много хочу, но, быть может, на этой страничке ещё сделать и возможность переназначения горячих клавиш?))))
    Если же все этого не планируется, то прошу хотя бы сделать перелистывание вперёд по нажатию пробела.
    Заранее спасибо!

    1. Добрый день. К сожалению, разработка и внедрение полноценной системы переназначиваемых горячих клавиш потребует серьёзной переделки программы и значительных временных затрат. К тому же некоторые «горячие клавиши» для каждой OS разные, хотя это предусмотрено изначально во фреймворке Qt.

      А какое именно перелистывание по нажатию пробела вам требуется? У меня сейчас если нажимаешь на пробел, то книга листается вперёд в любых режимах программы (свиток, одна страницы, две страницы).

      1. О, прошу прощения! Пользовался версией cr3-qt-win32-3.1.2-52_20-Apr-2018, там перелистывание по нажатию пробела не работало. В последней версии работает, спасибо!
        Кстати, заметил такую штуку: кнопка «применить» в любом случае активна, даже если изменений в настройках не было.

        1. А, и ещё: при перемещении папки с программой и последующем запуске программы стиль страницы сбрасывается на [NONE].

        2. Кстати, заметил такую штуку: кнопка «применить» в любом случае активна, даже если изменений в настройках не было.

          Да, есть такой небольшой недочёт. Это из-за того, что используется кастомный диалог Qt.

          Кстати, заметил такую штуку: кнопка «применить» в любом случае активна, даже если изменений в настройках не было.

          Так видимо и задумывалось автором программы, в конфигурационном файле cr3.ini есть параметр background.image.filename, в который сохраняется путь целиком. При перемещении каталога программы он, естественно, становится неправильным.

          Будет время, посмотрю что с этим можно сделать.

        3. Поправил эти недочёты и несколько других, см. конец этой статьи для ссылок на новую версию моего форка Cool Reader.

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

    1. Да. Добавил эту возможность, см. конец этой статьи для ссылок на новую сборку программы.

      1. При переключении с другого окна все работает, конечно, замечательно…
        Но вот когда закрываем кликом мышки контекстное всплывающее меню также происходит нежелательное срабатывание действий.
        Большая просьба, если есть возможность, исправить и эту особенность.
        Также есть просьба добавить в контекстное меню пункт, позволяющий быстро установить настройки яркости экрана и текста в негативный режим.
        Пункт сброса настроек для прямого режима уже есть, но иногда бывает необходимость переключения и в негативный режим.

  15. Добрый день! Собрал пакет Cool Reader v3.2.2-2m для Debian отсюда.
    не знаю как было в оригинальной версии но здесь есть некоторые проблемы:
    Не работают любые ссылки, сноски в fb2, epub, другие форматы не проверял.
    Не работает выделение текста,
    кстати опции «Переворачивать страницы кликом мышки» и «Показывать сноски внизу страницы» отсутствуют в настройках, их возможно сделать и для Linux ?
    И ещё пару вопросов (необязательных):
    Можно ли собрать пакет с версией фреймворка Qt 5 ?
    Сделать нормальную библиотеку как во многих читалках с обложками и т.д. в основном окне а не в отдельном?

    1. У меня подобных проблем нет, возможно как-то криво собрался DEB-пакет. Или старый файл настроек, который находится в ~/.cr3/cr3.ini, конфликтует с новым.

      кстати опции «Переворачивать страницы кликом мышки» и «Показывать сноски внизу страницы» отсутствуют в настройках, их возможно сделать и для Linux ?

      Переворот страницы кликом мышки переместился в «Планшетный режим», опция про сноски имеется на самой первой вкладке «Окно».

      Можно ли собрать пакет с версией фреймворка Qt 5 ?

      Да, конечно. В опциях команды CMake нужно явно указать параметр $ cmake -DGUI=QT5 .. для этого.

      Сделать нормальную библиотеку как во многих читалках с обложками и т.д. в основном окне а не в отдельном?

      Да, при желании это сделать, конечно, можно. Вот только лично у меня совсем нет времени на добавление подобной функциональности.

      P.S. Насчёт пакетов для GNU/Linux, попробуйте скачать образ AppImage в конце статьи и запустить его на своём дистрибутиве таким образом:

      Возможно, ваши проблемы будут решены.

      1. Извиняюсь за долгий ответ, были проблемы с доступом в интернет.
        Не думаю что пакет криво собрался по крайней мере ошибок я не видел. Пробовал удалять настройки и запускал AppImage — тоже самое.
        Обнаружил что выделение работает нормально в одностраничном режиме, а в двух работает, но выделяется совсем не там где нужно,
        например пытаешься выделить текст на одной странице а выделяется на следующей…
        Проблема с ссылками — очевидно что это одна и та же проблема.

        P.S. Забыл добавить, у меня Debian Sid возможно поэтому так, хотя по идее в AppImage должны свои библиотеки использоваться…

        1. Проблема с ссылками — очевидно что это одна и та же проблема.

          А можно пример такого файла, в котором будут проблемы со ссылками? И шаги для воспроизведения проблемы.
          Спасибо.

          1. Да любой файл, ну например этот.
            Насчет шагов не совсем понял, записал видео (обрезал разрешение до 1280×720), можно открыть в браузере.
            Пояснение к видео:
            Kernel: x86_64 Linux 4.18.9-towo.1-siduction-amd64 — это ядро установлено из реп siduction недавно, а проблема с Cool Reader была и раньше.
            Другая читалка в видео Calibre-viewer.

              1. Спасибо, работает AppImage и пакет собранный, а прозрачность изображений пока не отключается?

                Ещё не нашёл как изменить цвет выделения, напрашивается опция и/или лучше возможность применить свою таблицу стилей.

                1. Добавил возможность отключения альфа-канала у изображений, см. «Настройки» => «Страница» => «Параметры изображений» => «Отключить альфа-канал».

                  Цвет выделения изменяется, но изменение цвета текста при выделении не было заложено изначально. Поэтому как альтернативный вариант добавил параметр инвертированного выделения, см. «Настройки» => «Страница» => «Цвет выделения» => «Инвертировать», возможно с помощью этой опции вы достигнете того, что вам хочется.

                  Скачать AppImage-пакет можно по этой ссылке.

                  1. Э нет, отключения альфа-канала не меняет вид изображения как на скрине выше и я имел ввиду вообще функцию которую вы добавили по просьбе Evg, до этого было нормально.
                    На счёт выделения, инвертировать хорошая функция но хотелось бы привести к такому виду:

                    Но если это нелегко сделать тогда необязательно.
                    Кстати на сайте при добавлении комментария можно использовать html теги для вставки изображения?

                    1. и я имел ввиду вообще функцию которую вы добавили по просьбе Evg

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

                      Весьма полезно при использовании программы с выбранным тёмным цветом фона, когда в электронных книгах попадаются такие изображения.

                      но если это нелегко сделать тогда необязательно.

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

                      Кстати на сайте при добавлении комментария можно использовать html теги для вставки изображения

                      Не беспокойтесь об этом, я сам добавляю изображения себе на сайт во избежание битых ссылок на внешних ресурсах в будущем.

                      P.S. Вот ссылка на обновлённый AppImage с исправленной ошибкой.

  16. Доброго дня.
    Скажите, пожалуйста, возможно ли каким-то образом добавить изменение яркости (прозрачности) картинок? И желательно синхронно с изменением яркости текста в негативном режиме.

    1. Да, я попробовал добавить такую возможность, см. «Настройки» => «Страница» => «Параметры изображений» => «Использовать цвет шрифта». Проверьте EXE-файлы для Qt 4 и Qt 5 (замените их в каталоге программы) и выскажите ваши пожелания по улучшению данной функциональности. Готовые пакеты соберу позже.

  17. Яркость определенно меняется, но в те моменты, когда я после переключения в другой режим инвертирования (по кнопкам Ctrl+/) начинаю изменять яркость текста, она как-то скачком становится темнее (в прямом режиме при увеличении яркости текста) и светлее (в негативном при уменьшении яркости). Видимо для картинки в самом начале изменения применяются значения яркости для текста, которые потом синхронно и меняются вместе с яркостью самого текста. Вот это начальное применение настроек яркости текста для картинки явно лишнее — лучше бы использовать текущее значение.

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

      1. Спасибо! Яркость изображений меняется, как и хотелось. Конечно немного напрягает это досадное ограничение… Неужели никак нельзя его обойти…? Разве не подойдет такой способ, как сохранять текущее значение яркости/цвета текста, по которому, насколько я понял, и выставляется яркость изображений в отдельную переменную, которую затем и использовать при выставлении яркости изображений при изменении яркости фона?

      2. А может быть еще лучше предусмотреть возможность изменения яркости картинок вне зависимости от яркости текста? Как считаете?

        1. Конечно немного напрягает это досадное ограничение… Неужели никак нельзя его обойти…?

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

          А может быть еще лучше предусмотреть возможность изменения яркости картинок вне зависимости от яркости текста? Как считаете?

          Если будет свободное время, попробую разделить и посмотреть. Проблема тут будет в том, что в меню тогда будет куча различных пунктов по яркости или сочетаний клавиш для быстрого доступа. Что не есть хорошо. Изменение яркости текста вместе с яркостью изображения по идее то что нужно. Ограничение конечно печалит и видимо убрать его можно лишь таким вот разделением и введением отдельного параметра яркости для изображений.

          1. Раз уж при изменении яркости фона и следующем затем сбросе яркости картинки, она возвращается в прежнее состояние при любом изменении яркости текста, то может быть возможно обойти это досадное ограничение тем, что просто после каждого изменения яркости фона добавить тот же перечень действий, что и при изменении яркости текста без самого, собственно, изменения его яркости?

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

              1. Ну в общем-то я частенько пользуюсь низкими настройками яркости текста и, стало быть, картинок. Читаю не включая стороннего освещения. Потому и уменьшаю яркость до почти нуля…
                Еще как способ решения, можно попробовать запускать автоматически после изменения яркости фона два последовательных изменения яркости текста: уменьшение/увеличение яркости и сразу за этим последующее возвращение к предыдущему значению. Это, по идее, и должно дать нам необходимый эффект устранения сброса яркости изображения. Хотя, конечно, при этом изображение будет мигать… Но в любом случае это лучше, чем возвращать яркость вручную.

                1. Я разделил изменение яркости изображений и текста, а также выделил все функции, связанные с изменением яркости, в отдельное подменю «Яркость». Ещё были добавлены сочетания клавиш для быстрого изменения этих параметров. Более подробно см. описание изменений в конце этой статьи. Ссылки на загрузку новой версии программы там же. То ограничение, которое вас беспокоило, пропало.

                  1. По какой-то причине яркость изображений не меняется — ни пункты меню, ни клавиши «Ctrl+Shift+/» и «Ctrl+Shift+*», указанные вами, не работают.
                    Есть большая просьба предусмотреть изменение яркости изображений и для планшетного режима. Например, разделить верхнюю треть экрана на шесть частей, а не как сейчас — четыре части.
                    Также есть предложение назначить изменение яркости изображений на клавиши «Ctrl+/» и «Ctrl+*». А сброс яркости и инвертирование перенести на «Ctrl+Shift+/» и «Ctrl+Shift+*». На мой взгляд так будет удобнее для использования.

                    1. Это странно, у меня всё работает. Возможно, просто шаг изменения яркости небольшой.

                      По поводу остального буду заниматься этим уже в следующем году. Сейчас совсем нет времени на это.

                  2. Что называется пробовал и так, и этак — и жал клавиши долго, не отпуская, и раздельными нажатиями. Яркость не меняется. Дело не в шаге изменений…
                    Предыдущая версия яркость изменяет.

                    1. Возможно слишком «сложная» комбинация для хоткея и что-то его «перехватывает» на уровне OS. Какая операционная система?
                      Не работает как на версии Qt 4, так и на версии Qt 5?
                      Если раз 10-15 нажать не горячую клавишу, а выбрать пункт меню «Уменьшить яркость изображений», точно ничего не меняется?

                  3. Да, вы оказались правы. С помощью пунктов меню, если запастись достаточным терпением, можно изменять яркость изображений.
                    Как на версии Qt 4, так и на версии Qt 5. Но это, конечно, слишком долго и неудобно… Возможно в меню стоит увеличить шаг изменения величин яркости.
                    Но тогда возникает вопрос, что не дает этим клавишам нормально работать. Система у меня Win 10. На этих клавишах никаких глобальных комбинаций у меня не установлено: уже проверил.

                    1. и, кстати, по какой-то причине в ваших последних постах нет кнопки «Ответить»…

                  4. Также при нажатии кнопки сброса яркости либо инвертирования сброса яркости изображений не происходит.

                    1. хотя нет, ошибся… при сбросе яркости, сбрасывается яркость и изображений

                    2. Но тогда возникает вопрос, что не дает этим клавишам нормально работать. Система у меня Win 10. На этих клавишах никаких глобальных комбинаций у меня не установлено: уже проверил.

                      Наверное, переключение раскладки клавиатуры у вас активировано на Ctrl+Shift, поэтому этот хоткей и не проходит в программу. В общем, нужны какие-то менее сложные комбинации клавиш быстрого доступа, желательно похожие для всех вариантов изменения яркости. Подумайте, возможно у вас будут какие-либо предложения на этот счёт. Лучше всего если в них не будут фигурировать сочетания Ctrl+Shift или Alt+Shift из-за таких вот проблем, когда на одних настройках системы оно работает, а на других — нет.

                      и, кстати, по какой-то причине в ваших последних постах нет кнопки «Ответить»…

                      Глубина дерева диалога — 10 ответов, после чего кнопка «Ответить» отключается. Можете либо отвечать на своё предпоследнее сообщение (на которое сейчас ответил я) либо вообще начать новую ветку диалога. Это ограничение движка сайта придумал не я, оно мне тоже иногда неудобно.

                      Также при нажатии кнопки сброса яркости либо инвертирования сброса яркости изображений не происходит.

                      хотя нет, ошибся… при сбросе яркости, сбрасывается яркость и изображений

                      Не совсем понятно, что делать при инвертировании с этой яркостью изображений. Тоже сбрасывать?

              2. А вы оказались правы! Действительно выяснилось, что у меня переключение языка ввода назначено на «Ctrl+Shift». Но толку от этого, правда, мало… я сменил на «Alt+Shift» и по-прежнему яркость не меняется.
                И, как я уже предлагал, полагаю, что наиболее удобный вариант: изменение яркости картинок можно назначить на «Ctrl+/» и «Ctrl+*», а также предусмотреть возможность менять их яркость и в планшетном режиме. Инвертирование и сброс яркости можно оставить даже без горячих клавиш — эти команды нет необходимости многократно повторять, как изменение величин яркости; без больших неудобств их можно вызвать и через всплывающее меню.
                При инвертировании думаю, что лучше, если будут меняться местами цвета шрифта и фона. Яркость картинок при этом лучше не менять. Ну или можно задать какую-нибудь формулу, по которой можно будет вычислять инвертированный цвет. Например, исходя из расстояния до средней яркости — яркость 78 из 256 меняется на 128+(128-78) = 178 и т.д. Но тут нужно поэкспериментировать. Вполне возможно, что оно того не стоит.
                При сбросе яркости можно задать циклическое переключение между начальной яркостью (максимальной) и предыдущим значением яркости.

                1. Вполне возможно, что оно того не стоит.

                  Да, наверное, не стоит. В предпоследней версии подобная формула имеется, отчасти из-за этого и возникло то ограничение.

  18. Большое спасибо за работу!
    Обратите внимание на небольшой глюк: в 2-страничном режиме при выделении текста выделяется аналогично расположенный текст на следующей странице — он и копируется в буфер обмена или словарь. Пакет cr3-qtx-win-3.2.2-3m_08-Sep-2018.7z, исполняемый файл cr3-qt5-64.exe

    1. Спасибо за отзыв. Да, я исправил этот глюк, но пакеты ещё не собирал. Если есть желание, можете попробовать заменить файл cr3-qt5-64.exe вот этим файлом и проблема должна уйти.

  19. Здравствуйте.
    Есть ли возможность сделать сборку более портативной? То есть, чтобы папка cr3 с кэшем и прочим параметрами прочитанного была не в %USERPROFILE%, а в папке с установленной программой.
    В идеале, в файле cr3hist.bmk параметр doc-filepath имел бы относительный путь книги, если книга лежит, к примеру, в папке Books, которая соответственно находится в дистрибутиве программы.
    Ну и в идеале-2 (хотя и не критично) хотелось чтобы программа не писала в реестр HKCU\Software\CoolReader (пустой), HKCU\Software\Trolltech.

    И, конечно, спасибо огромное за поддержку системных шрифтов, суперфича!

    1. Здравствуйте. Такая возможность имеется. Я попробовал выполнить все три ваших предложения. Посмотрите новую сборку в конце этой статьи.

      HKCU\Software\Trolltech

      В этот ключ реестра Cool Reader вроде как ничего и не писал. Это что-то другое наверное туда пишет, либо сама библиотека Qt.

      1. Великолепно! Теперь всё своё ношу с собой)) в смысле, на флешке и не от чего не завишу…
        Спасибо, огромное! Всё работает отлично.

        Насчет Trolltech, да, это Qt оставляет. Если до этого в системе не было софта с Qt, то создается этот ключ, вроде бы, после того, как в настройках Cool Reader поменять цвет чего либо. Вообще не важно… пусть пишет.

  20. В связи с последними изменениями в портативности, назрел такой вопрос:
    Обязательно ли для нормальной работы Cool Reader нужен кеш открытых файлов?
    На флешке, как обычно, места в обрез, а если материала много, то папка с кешем раздувается быстро, съедая полезное пространство. Никаких инструментов по его ограничению или очистки/оптимизации в программе нет. Даже после удаления записей из диалога «Последние книги» весь мусор остаётся в кеше. Поэтому остаётся единственный дедовский способ — переодически заходить в эту папку и очищать её. Да, и на стационаре лишний хлам без надобности.
    В старых версиях Cool Reader книги не кешировались и, вроде, проблем особых не было.

    1. Обязательно ли для нормальной работы Cool Reader нужен кеш открытых файлов?

      Попробовал отключить кеш — время старта программы с открытой книгой незначительно увеличилось. Глубоко не ковырял что там в итоге сломалось. Если есть желание попробовать, скачайте этот файл и потестируйте. Если всё будет нормально, тогда буду думать над созданием опции отключения кеширования в настройках. Но как у меня будет свободное время. Там слишком много возни с этими параметрами.

      1. Работает! Вообще не заметил падения скорости при старте программы и открытия книг, даже в zip’ах.
        Лично меня, такой вариант устраивает на все сто, и даже опция в настройках не нужна 🙂
        Спасибо, за работу, отзывчивость и оперативность!

        1. Если вам интересно, то я добавил экспериментальную опцию отключения файлового кэша в новой версии программы. Она находится в «Настройки» => «Окно» => «Отключить кэш (эксп.)», после изменения этого параметра требуется перезапуск программы. Скачать новую версию Cool Reader можно по ссылкам в самом конце статьи.

          1. Да, конечно, интересует. Я слежу за изменениями. Очень радует прогресс, как-будто заново оживили Cool Reader 🙂 Всё устраивает… если только… не помешала бы опция скрытия меню и панели инструментов при переходе в полноэкранный режим, заодно и курсора при его бездействии секунды через 2-3, чтобы уж совсем ничего не отвлекало от чтения. Но «не горит», можно и проигнорировать.
            Опция отключения кэша работает замечательно. Спасибо!

            Вылез баг (Win7 32-bit) — если активировать полноэкранный режим из диалога настроек, а затем выйти из режима с помощью клавиш или контекстного, то программа виснет. При активации режима и последующем выходе из него клавишами или через контекстное — проблемы нет. Баг не последней версии, сейчас повторил его на 3.2.2-1-m, может присутствует и на более ранних сборках. На оригинальной 3.0.56-42 — нормально.

            1. Насчёт бага — да, вижу такое. Кажется только на Windows оно проявляется. Причём, если в диалоге настроек не нажимать клавишу «Применить», а нажимать просто «ОК», то баг не воспроизводится. Примерную локализацию проблемы я обнаружил, но как и с вашими предложениями, смотреть и разбираться со всем этим буду уже в следующем году. Спасибо за баг-репорт.

              1. Да, да, через «Применить». В оригинале эта кнопка (кстати, очень полезная) отсутствует, поэтому и проблемы нет.

  21. Спасибо за ваши версии этой замечательной программы. У меня к этой программе есть одна существенная претензия. Если файл FB2 скачан с Либрусека, то у него растровый файл обложки в двух видах: cover.jpg (полноразмерная версия) и cover.jpg_0 (маленькая по размеру версия). И почему-то обложка отображается в CR из маленькой версии обложки: cover.jpg_0, хотя при этом в поле обложки установлена большая версия cover.jpg. Приходится каждый файл открывать в FBE и удалять cover.jpg_0, чтобы CR показывал полноразмерную обложку.
    Вот пример из FBE:

    1. Здравствуйте. Спасибо за отзыв. Пожалуйста, отправьте мне любой файл с такой проблемой любым удобным для вас способом, например, по e-mail. Контактную информацию смотрите здесь. А то я что-то не могу скачать что-либо с Либрусека.

      Как будет свободное время, посмотрю в чём проблема.

    1. День добрый, нашёл время более подробно изучить эту проблему. Оказалось, что в вашем FB2-файле одинаковый атрибут id у всех обложек. А поскольку Cool Reader хранит эту информацию в контейнере HashTable, где ключ (в данном случае id) должен быть уникальным, то алгоритм просто перезаписывает обложку до тех пор, пока не установится последняя, которая прописана в самом конце файла.

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

      1. Испытал сегодня новую версию программы — всё работает. Теперь читается обложка основная, а не ее уменьшенная копия. Теперь лично для меня у этой программы нет недостатков. Огромное спасибо!

  22. Здравствуйте. Программу испытаю чуть позже. Спасибо. А тот файл, который я вам прислал — это типичный валидный файл с Либрусека или Флибусты. Причем эти ID сайт сам прописывает в структуру файлов fb2 и сам добавляет эту мини копию обложки. Зачем они (эти сайты) это делают — мне не понятно, но тем не менее эти книжные сайты все равно самые большие в рунете и через них проходят основная масса новых поступлений. Я подниму данный вопрос в своем блоге на Либрусеке — может админ расскажет зачем они вносят все эти ID и мини эскизы обложек.

    1. Добрый день. Уточните пожалуйста ваш Linux-дистрибутив. Насчёт пакетов в snap или flatpak пока не смотрел, так как нужно разбираться с пакетированием Qt-приложений в эти форматы. Если у вас имеется такой опыт, можете попробовать перепаковать Cool Reader или собрать его самостоятельно. Просто для AppImage и Qt-приложений нашёлся удобный инструмент, который называется linuxdeployqt.

      1. Fedora 29 с репозиториями RPM-fusion и RussianFedora. Вывод консоли:

        Конфиг ~/.cr3/cr3.ini про который ваша сборка выдаёт ошибку доступен для чтения/записи и корректен — оригинальный cr3 работает с ним.

  23. Бонжур!

    Небольшое пожелание: будет очень здорово, если CoolReader узнает про XDG_ переменные. У меня это одна из последних программ, хранящих данные непосредственно в ~.

    С наступающим!

    1. С наступающим Рождеством!

      Да, спасибо за этот баг-репорт, постараюсь исправить это к выходу новой версии форка.

  24. Добрый день.
    Есть мелкие глюки с вызовом «File Properties» и с сохранением «Settings» / «Styles» / «Page skin»
    Эксперименты проводились со сборками:

    • cr3-qt5-lin-3.2.2-5m_22-Dec-2018.AppImage — linux Mint Cinnamon 19.1 — 64
    • cr3-qtx-win-3.2.2-5m_22-Dec-2018.7z (cr3-qt5-x86_64.exe) — Windows 10 Pro — 64
    • CoolReader 3.2.2.5m-1 — Haiku beta1 — 32

    1. Команда «File Properties». Из меню выполняется нормально, а вот вызов Ctrl+F1 работает только если в настройках «Windows» отмечено «Show menu» — причем это и в Linux и в Windows. В Haiku «File Properties» работает только из меню — комбинация Ctrl+F1 (точнее левый Alt + F1 на местном наречии) не работает независимо от наличия/отсутствия строки меню. Остальные комбинации клавиш работают нормально (конечно, можно бы заменить в пунктах меню Ctrl на Alt и наоборот, но это и так понятно, к тому же кнопки там можно переназначать).

    2. Linux — не сохраняется выбор скина. Хотя в файле «~/.cr3/cr3.ini» он прописывается, но в сомнительной форме: «background.image.filename=/tmp/.mount_cr3-qteix79t/usr/bin/../share/cr3/backgrounds/bg_paper1.jpg» (часть filename на месте «qteix79t» меняется при каждом старте).

    3. Windows — при выборе скинов проблемы с портабельностью — хранить в ini относительные пути это недостаточно, т.к. при использовании «Открыть с помощью» или «Ассоциации файлов» Far’а текущий каталог не будет каталогом исполняемого файла и папки скинов вообще не видны. Так что для полной портабельности надо бы при старте определять каталог .exe и уже от него отсчитывать пути скинов.

    -. В Haiku выбор «Page skin» сохраняется нормально.

    1. Здравствуйте, спасибо за баг-репорты. По поводу «File Properties» в Windows/Linux/Haiku: видимо комбинация быстрого доступа конфликтует с чем-то системным, нужно изменять это сочетание. Есть предложения?

      Остальные комбинации клавиш работают нормально (конечно, можно бы заменить в пунктах меню Ctrl на Alt и наоборот, но это и так понятно, к тому же кнопки там можно переназначать).

      Да, в Haiku имеется возможность переключения в привычный режим Windows/Linux: «Preferences» => «Keymap» => «Switch shortcut keys to Windows/Linux mode».

      P.S. По поводу проблем с сохранением скинов тоже посмотрю, спасибо.

      1. Спасибо за быстрый ответ.
        К сожалению, мое образование в области систем закончилось на уровне MS DOS 3.30, но с точки зрения дилетанта вряд ли проблема системная, т.к. баг с Ctrl+F1 исчезает при включении в настройках «show menu». Изменять комбинацию тоже бы не хотелось — пальцы привыкают к одинаковым кнопкам во всех форках и системах.

  25. Здравствуйте! Использую на Линуксе последнюю на данный момент версию 3.2.2-5m, всё прекрасно, но не хватает отображения вначале книги Серии и Номера, если таковые имеются. На Windows в проге AlReader2 такая информация отображалась и было очень удобно. Возможно ли реализовать такое в CoolReader?

  26. Спасибо за модификацию. Использую версию от 22 декабря 2018 г. Нашел глюк, если по сноске, то переход обратно к тексту по «Backspace» не происходит.

  27. Добрый день. Заметил, что в полосе прокрутки, когда текст имеет заголовки одного уровня, то видны все вертикальные «зарубки-главы». Если же в книге заголовки 2-х и более уровней (Части и главы), то отображается зарубками только заголовок 1-го уровня, а заголовки 2-го уровня и дальше — пропадают. Можно ли модифицировать эту полосу прокрутки до показа определенного уровня заголовков (2 и тд.)?

  28. Здравствуйте !
    Можно прикрутить к CoolReader отображение названия серии и номера книги, если они присутствуют в файле? Сейчас после аннотации отображается год издания, вот перед годом можно было бы добавить эту информацию.

    Спасибо огромное !

  29. Здравствуйте. Хотелось бы увидеть версию на wxWidgets, а она не собирается.
    Планируется ли обновление сборки с актуальной libwxgtk3.0 ? Или только Qt ?

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

    Алгоритм растягивания картинок в оригинальной версии Cool Reader 3.3.61 реализован уже достаточно качественно. В вашей программе, как и у классической оригинальной картинки растягиваются ужасно криво. Приходится в настройках отключать эту функцию. Возможно ли как-то улучшить данный алгоритм?

    Не так важно, но все-же. Есть ли возможность прикрутить анимированные схемы перелистывания страницы?

    Спасибо за программу!

  31. По поводу текстуры. В оригинальной версии все достаточно логично: то, что в папке backgrounds — растягивается, что в textures — замощается. Так что баг.

    Хотелось бы иметь возможность независимой настройки, какие панели оставлять в полноэкранном режиме, а какие в стандартном. Например, я хочу, что-бы в полноэкранном не оставалось никаких панелей, ни Меню ни Панель Инструментов, НО при выходе из полноэкранного в стандартный было Меню. Сейчас так можно сделать, только каждый раз залазая в настройки.

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

  32. Автоскроллинг сложно приделать?
    например на хоткей [Insert] с регулировкой скорости на NUM_+ NUM_-

    p.s.
    в линухе не осталось ни одной живой fb2 читалки умеющей автоскролл :/

  33. EXL, скажите пожалуйста, возможно ли увеличение количества отображаемых столбцов в многостраничном режиме чтения до 3-х?
    Ну или вообще в идеале автоматический подбор количества столбцов в зависимости от оптимальной ширины отображаемой колонки текста — максимум 8..12 см…

  34. Во-первых, огромное спасибо за вашу авторскую сборку! CoolReader3 для меня был и остаётся эталоном читалки для ПК. То, что вы поддерживаете проект — это огромное благо для всех любителей чтения, и заодно лишний раз демонстрирует силу принципа OpenSource.

    Во-вторых, начну с небольшого баг-репорта. Windows 7, двухстраничный режим просмотра, разрешение экрана 1920×1080. Если при полноэкранном просмотре закрыть приложение, то при следующем открытии приложение примет за размер «окна без рамки» разрешение 800×600, и останется таким пока не нажать Alt-Enter два раза (то есть, свернуть-развернуть полноэкранный режим туда-обратно).

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

    1. На указанный выше баг нашёл временное решение. Нужно открыть файл «cr3.ini» в папке с программой. Там нужно найти и отредактировать пару записей.
      Должно стать так:

      Это для моего случая, у меня разрешение экрана 1920×1080.
      Если у вас иное разрешение экрана, впишите туда свои значения.
      Значение {0,0} — указывает на то, что окно должно начинаться с верхнего левого угла, а не с какой-то иной произвольной точки.
      Программа почему-то не сохраняет эти значения. Ну, или сохраняет, но неправильно.

      Так же я отредактировал для себя ещё три параметра к следующим значениям:

      И теперь программа всегда запускается в полноэкранном режиме. Очень удобно, если ассоциировать файлы fb2 с программой.

      Я не знаю с чем связан баг. У файла «cr3.ini» атрибуты в порядке, права записи тоже в порядке. Остальные настройки в этом файле программа успешно сохраняет.

      Надеюсь, кому-нибудь помог!

      P.S. Просьба о возможности настроить скрытие меню и значков в полноэкранном режиме всё ещё актуальна. 🙂

  35. Спасибо за билд. не тормозит при развороте на полный экран, что бесило в официальной сборке, например.

  36. Заметил проблему с програмой. Windows 11 но похоже на всех версиях ос.
    Не хочет цеплять шрифт Futura PT
    Первая проблема не видит вообще в системе, но даже если каким то чудом заставить видеть,
    корректно отображает только английский текст, а русский игнорит и скидывает на Arial

Добавить комментарий для alex Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *