Учим Cool Reader использовать системные шрифты из MS Windows

Я очень люблю читать электронные книжки различных форматов на своем ноутбуке. К сожалению, удобных программ для чтения электронных книг формата *.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, для удобства просмотра тех или иных изменений я решил их выделить в отдельный репозиторий-форк:
https://github.com/EXL/coolreader

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

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

Manuals, Others

55 thoughts on “Учим Cool Reader использовать системные шрифты из MS Windows”

  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% высоты строки .
    Остальные значения слишком большие — можно даже удалить (необязательно).

    Спасибо .

Добавить комментарий

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