LINUX.ORG.RU

Форк CoolReader: crengine-ng, crqt-ng, crwx-ng

 , , ,


5

4

За основу взят срез репозитория CoolReader от 2021-09-16.

Основные изменения в crengine-ng по сравнению с CoolReader 3.2.59 (некоторые из изменений отправлены в upstream)

  • В репозитории оставлены только исходники библиотеки crengine, утилиты и используемые файлы данных.
  • Восстановлена возможность сборки под систему MacOS.
  • Восстановлена работа шрифтов Win32, может понадобиться, только, если есть потребность собрать библиотеку под Windows без использования FreeType (не рекомендуется).
  • Реализовано модульное тестирование с помощью библиотеки GoogleTest. На данный момент, это по большей части базовое регрессионное тестирование, а не набор полноценных юнит-тестов, охватывающих весь функционал библиотеки.
  • Оптимизация и исправление мелких ошибок работы с zip-архивами.
  • Рефакторинг некоторой части исходного кода для более удобной работы, в основном это разбиение огромных исходных файлов на несколько по принципу один класс - два файла (.h и .cpp).
  • Изменён формат словарей переносов: добавлены свойства title (язык словаря переносов), langtag (тег языка в ISO639), lefthyphenmin (минимальное количество символов слева в слове до переноса), righthyphenmin (минимальное количество символов в слове справа после переноса). Это избавляет от необходимости хардкодить эти данные в исходниках библиотеки.
  • Исключены словари переносов неизвестного происхождения, оставлены, добавлены новые совместимые с лицензией GPL.
  • Исправлен рендеринг колонтитула на странице текста.
  • Добавлено вычисление SHA256 для содержимого документа по аналогии с вычислением CRC32. Это может использоваться в фронтед-клиентах для поиска документов.
  • Исправлены множество ошибок, в том числе приводящих к SEGFAULTS, утечкам памяти.
  • Использование утилиты clang-format для форматирования исходников.

Основные изменения в crqt-ng по сравнению с CoolReader 3.2.59 (некоторые из изменений отправлены в upstream)

  • В репозитории оставлены только исходники клиента на Qt и некоторые файлы данных.
  • Поддержка HiDPI экранов.
  • Название открытого документа отображается в заголовке окна программы.
  • Восстановлена возможность сборки под систему MacOS.
  • Добавлена возможность сборки программы используя Qt 6.
  • В диалоге настроек превью отображается в отдельном окне.
  • Использование утилиты clang-format для форматирования исходников.

Основные изменения в crwx-ng по сравнению с CoolReader 3.2.59

  • В репозитории оставлены только исходники клиента на wxWidgets и некоторые файлы данных.

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

Ссылки:

Репозиторий crengine-ng: https://gitlab.com/coolreader-ng/crengine-ng

Репозиторий crqt-ng: https://gitlab.com/coolreader-ng/crqt-ng

Репозиторий crwx-ng: https://gitlab.com/coolreader-ng/crwx-ng

Архивы исходников crqt-ng и бинарные сборки под Win32 и MacOS: https://gitlab.com/coolreader-ng/crqt-ng/-/releases

Новость отражает состояние проекта на 19.12.2022, есть более свежая информация.

>>> Ссылка на репозитории



Проверено: Dimez ()
Последнее исправление: unfo (всего исправлений: 10)

но подумал, что на новость не тянет

На статью тем более не тянет. Статья — это либо «как сделать что-то», либо если бы ты писал про какую-то программу, например, детальный обзор.

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

Предлагаю довести дело до какого-нибудь релиза с циферками, пусть даже минорного, и написать новость, я подтвержу. Можно даже на 80% с копипастой отсюда, не страшно.

hobbit ★★★★★
()

Также интересно послушать мнение самого @Buggins относительно форка, на ЛОРе он появляется, хоть и не каждый день.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

На статью тем более не тянет. Статья — это либо «как сделать что-то», либо если бы ты писал про какую-то программу, например, детальный обзор.

Вы правы, изначально я писал эту заметку как новость, а потом передумал.

Просто хотелось понять будет это интересно кому-нибудь.

virx
() автор топика
Последнее исправление: virx (всего исправлений: 1)
Ответ на: комментарий от DrBrown

Нет, не используется. Я плохо знаю, что такое cpack (хватает возни с cmake), что даёт его использование?

virx
() автор топика
Ответ на: комментарий от virx

Это довесок к cmake, позволяет при сборке генерировать пакеты для Linux (DEB, RPM) и инсталляторы для Windows и Mac. То есть немного модифицируешь CmakeLists.txt и получаешь ещё и пакеты. Это лучше чем make install.

DrBrown
()
Ответ на: комментарий от utanho

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

DrBrown
()
Ответ на: комментарий от DrBrown

То есть немного модифицируешь CmakeLists.txt и получаешь ещё и пакеты

Боюсь, что не немного, что там с рантайм зависимостями будет? Наверное правильнее CI использовать для создания пакетов, например, тот же GitLab CI, но пока не умею.

virx
() автор топика
Ответ на: комментарий от utanho

Форк надо собирать самому, я так понимаю?

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

virx
() автор топика
Ответ на: комментарий от utanho

Сюда нет смотрели? https://build.opensuse.org/

Я бы не хотел распылять силы, попробуйте сами опакетить под SuSe, в readme более менее подробно написано как собирать под Linux. С SuSe вообще не знаком.

virx
() автор топика
Ответ на: комментарий от DrBrown

Обычно в пакетах DEB и RPM рантайм не тянут, а для Windows есть windeployqt.

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

virx
() автор топика
Последнее исправление: virx (всего исправлений: 1)
Ответ на: комментарий от grem

А это тогда зачем?

Это отдельный клиент на wxWidgets, просто жалко выкидывать. Вдруг кто-то захочет его развивать. Я же больше фокусируюсь на клиенте под Qt.

virx
() автор топика
Ответ на: комментарий от virx

Чего их писать? В дереве есть coolreader. Берёшь ebuild от него и добавляет тесты и зависимости для них и пытаешься собрать.

grem ★★★★★
()
Ответ на: комментарий от virx

Его столько лет не трогали, что удивительно, что он собирается.

Интерфейс сам сильно проще, в том числе и в плане управления настройками, чем на Qt, но главное, что движок работает.

grem ★★★★★
()
Ответ на: комментарий от virx

Можешь спросить у ментейнера, интересен ли ему форк в дереве, он из РФ. В крайнем случае, можешь в guru закинуть и там поддерживать. Понадобится сгенерировать gpg и ssh ключи и открытый ssh прикрепить к заявке на доступ к репе в gitweb. После подтверждения можно будет добавлять коммиты в ветку dev.

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от grem

Я на патчи не тяну. Правил ебилд в локальном оверлее, чтобы вхвиджеты собирались с гтк3. Давно это было.

utanho ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

Как оно хоть выглядит? Все то же чудовище из нулевых?

То есть по ссылкам не ходил?

Ну так то да, изменений почти нет.

virx
() автор топика
Ответ на: комментарий от Im_not_a_robot

Всё такое же удобное в использовании, каким и должно быть.

grem ★★★★★
()

Спасибо большое, буду использовать на маке.

sid350 ★★★★★
()

Сорри за Оффтопик, но…

Под старые Android’ы версий от 4.3 до 6.0 есть сборки которые никуда не стучат?

ex-kiev
()
Ответ на: комментарий от ex-kiev

Под старые Android’ы версий от 4.3 до 6.0 есть сборки которые никуда не стучат?

А разве последние версии куда-то стучат? Там, скорее всего, программа просто пытается забиндится к GooglePlay для работы функции доната путем покупки виртуальных монеток, ну и когда связь плохая - подвисает.

virx
() автор топика
Ответ на: комментарий от DrBrown

А куда стучит coolreader и почему это не отмечено на F_Droid?

А это что такое?..

have full network access

Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.

read phone status and identity

Allows the app to access the phone features of the device. This permission allows the app to determine the phone number and device IDs, whether a call is active, and the remote number connected by a call.

com.android.vending.BILLING

Google аккаунта у меня осознанно нет. Так что задонатить через приложение я при всем желании не смогу.

ex-kiev
()

virxkane, ты ли это? В любом случае, добро пожаловать на ЛОР!

Jurik_Phys ★★★★★
()
Ответ на: комментарий от ex-kiev

Про доступ к сети уже ответили, что это для OPDS, действительно удобная штука, можно Флибусту добавить. Про доступ к телефону тоже, но добавлю, что его давать не обязательно, если тебе не нужно чтение вслух или остановка его при звонке. Он даже и не спросит, пока не зайдёшь в эту опцию. А биллинг... Ну, в F-Droid версии его нет.

nebularia ★★★
()

Добавлено использование юнит тестирования используя GoogleTest.

«Гена, вот то самое полотенце, которое ты просил»

покрывающих весь функционал библиотеки

функциональность

исключить захардкоренный код в исходниках

«Труп умершего мертвеца» какой-то.

Radjah ★★★★★
()
Ответ на: комментарий от virx

Поздравляю! Теперь остаётся поддерживать в актуальном состоянии.

В clang-15 и 16 какие-то изменения пришли, из-за которых, в связи с более строгими проверками (tinderbox при проверке сборки выставляет определённые опции компилятора), ломается сборка некоторых приложений.

grem ★★★★★
()
Ответ на: комментарий от DrBrown

Планируется ли поддержка Markdown?

Да, но не скоро.

virx
() автор топика
Последнее исправление: virx (всего исправлений: 1)
Ответ на: комментарий от DrBrown

Добавлена поддержка Markdown в crengine-ng-0.9.4: https://gitlab.com/coolreader-ng/crengine-ng/-/releases/0.9.4

Доступно на выбор две реализации: используя cmark или cmark-gfm, для этого добавлены соответсвующие опции cmake USE_CMARK и USE_CMARK_GFM. USE_CMARK_GFM включена по умолчанию.

cmark - https://github.com/commonmark/cmark

cmark-gfm - https://github.com/github/cmark-gfm

Сборки crqt-ng-1.0.4 с crengine-ng-0.9.4: https://gitlab.com/coolreader-ng/crqt-ng/-/releases/1.0.4

virx
() автор топика
Ответ на: комментарий от e1nste1n

Возможность указать стандартные семейства шрифтов не планируете добавить https://github.com/buggins/coolreader/issues/331?

Правильно ли я понял, там описано пожелание указывать для различных семейств шрифтов конкретный шрифт по умолчанию, например, для универсального семейства шрифтов «sans-serif» шрифт «Noto Sans»?

А также видно, что не работает свойство css font-family, если указывать вместо конкретного шрифта так называемое универсальное семейство шрифта.

Из описания этого свойства видно что на самом деле указывается список резервных (fallback) шрифтов. В CoolReader и в crqt-ng есть возможность задать список fallback шрифтов, но этот список устанавливается глобально, не для семейства, не для css класса и конечно не подходит.

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

https://developer.mozilla.org/en-US/docs/Web/CSS/font-family#values

http://htmlbook.ru/css/font-family

В принципе, да, проблема есть и её надо исправлять, но думаю это будет не скоро, не так быстро как с Markdown, тут кажется больше объем работы.

virx
() автор топика
Ответ на: комментарий от virx

В принципе все верно, посмотрите еще определения https://w3c.github.io/csswg-drafts/css-fonts/#generic-font-families.

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

В fontconfig это примерно так и работает (https://github.com/behdad/fontconfig/blob/master/conf.d/60-latin.conf), но в GUI обычно это сильно упрощено (https://assets-prod.sumo.prod.webservices.mozgcp.net/media/uploads/gallery/images/2022-06-12-08-43-50-9b0880.png)

e1nste1n ★★★★★
()
Ответ на: комментарий от e1nste1n

Ну в принципе что-то получилось: https://gitlab.com/coolreader-ng/crengine-ng/-/merge_requests/13

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

Пока изменения внесены только в библиотеку crengine-ng, crqt-ng будет обновлен позже (там будет возможность в настройках указывать конкретный шрифт для нескольких универсальных семейств шрифтов).

virx
() автор топика
Последнее исправление: virx (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.