Вчимо cool reader використовувати системні шрифти з ms windows, exl - s developer blog

Годинники на кривих Безьє Bezier Clock є моєю першою спробою знайомства з мовою програмування QML і технологією Qt Quick. Додаток реалізовано у вигляді анімованих шпалер для робочого столу KDE Plasma 5 і у вигляді standalone-додатки.

Мій порт ігрового движка NXEngine призначений для запуску гри Cave Story на самих різних платформах, в тому числі на Dingux і MotoMAGX. З основних поліпшень: можливість виведення зображення на широкоформатний екран, оптимізація звуку і підтримка русифікації.


Вчимо cool reader використовувати системні шрифти з ms windows, exl - s developer blog

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

У всіх програмах для читання електронних книг, я звик використовувати Nokia Sans. Для мене цей конденсований шрифт є найкращим для відображення текстової інформації в інтерфейсах. У мене він вже досить давно встановлено в систему, а * .ttf-файлів не залишилося. Тому я вирішив трохи переробити зручну мені читалку Cool Reader, додавши в неї можливість використання всіх встановлених в систему шрифтів.

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


Вчимо cool reader використовувати системні шрифти з ms windows, exl - s developer blog

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

Завдяки фреймворку Qt це виявилося зробити дуже легко:

Тепер змінену програму необхідно було зібрати для 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 використовувати системні шрифти з ms windows, exl - s developer blog

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

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



Знайдений баг з відображенням повністю зарядженій батареї

Дозволивши проблеми з лінковкою статично зібраної програми, я вирішив оформити всі зміни в невеликий патч, забрати який можна звідси:
[=> DOWNLOAD | ЗАВАНТАЖИТИ (

4 KB)

Вчимо cool reader використовувати системні шрифти з ms windows, exl - s developer blog

Аргумент, прописаний в 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 використовувати системні шрифти з ms windows, exl - s developer blog

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

Завантажити мою збірку Cool Reader'а можна тут:
[=> DOWNLOAD | СКАЧАТИ (5.3 MB, 7z-архів) DOWNLOAD | СКАЧАТИ (6.2 MB, 7z-архів) DOWNLOAD | СКАЧАТИ (5.1 MB, 7z-архів)

Добрий день, спасибі за відгук! Функція дійсно цікава, якщо знайду вільний час і канал, що дозволяє мені стягнути вихідні Cool Reader'а зі сховищ (зараз у мене дуже поганий мобільний інтернет), то я обов'язково спробую зайнятися реалізацією вашої ідеї.

Оновлення ласка збірку Cool Reader'а з можливістю використовувати всі системні шрифти до версії 3.3.61 (cr3-win32-qt-opengl-3.3.61.zip)