diff --git a/CHANGELOG.md b/CHANGELOG.md index f84cf3360..ea1939fbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -129,6 +129,7 @@ - Dev: Fixed some compiler warnings. (#5672) - Dev: Unified parsing of historic and live IRC messages. (#5678) - Dev: 7TV's `entitlement.reset` is now explicitly ignored. (#5685) +- Dev: Qt 6.8 and later now default to the GDI fontengine. (#5710) ## 2.5.1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 37c8835b8..c3f57d474 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,6 +32,7 @@ option(BUILD_TRANSLATIONS "" OFF) option(BUILD_SHARED_LIBS "" OFF) option(CHATTERINO_LTO "Enable LTO for all targets" OFF) option(CHATTERINO_PLUGINS "Enable ALPHA plugin support in Chatterino" OFF) +option(CHATTERINO_USE_GDI_FONTENGINE "Use the legacy GDI fontengine instead of the new DirectWrite one on Windows (Qt 6.8.0 and later)" ON) option(CHATTERINO_UPDATER "Enable update checks" ON) mark_as_advanced(CHATTERINO_UPDATER) diff --git a/cmake/resources/generate_resources.cmake b/cmake/resources/generate_resources.cmake index 0bd28a80e..df227a7d6 100644 --- a/cmake/resources/generate_resources.cmake +++ b/cmake/resources/generate_resources.cmake @@ -88,6 +88,15 @@ if (WIN32) list(APPEND RES_AUTOGEN_FILES "${CMAKE_BINARY_DIR}/autogen/windows.rc") endif () +set(WINDOWS_ARGUMENTS "@Invalid()") # empty QVariant() in QSettings +if (CHATTERINO_USE_GDI_FONTENGINE AND Qt${MAJOR_QT_VERSION}_VERSION VERSION_GREATER_EQUAL "6.8.0") + message(STATUS "Using legacy GDI fontengine") + set(WINDOWS_ARGUMENTS "fontengine=gdi") +endif () + +configure_file("${CMAKE_CURRENT_LIST_DIR}/qt.conf.in" "${CMAKE_SOURCE_DIR}/resources/qt.conf") +list(APPEND RES_AUTOGEN_FILES "${CMAKE_SOURCE_DIR}/resources/qt.conf") + list(APPEND RES_AUTOGEN_FILES "${CMAKE_SOURCE_DIR}/resources/resources_autogenerated.qrc" "${CMAKE_BINARY_DIR}/autogen/ResourcesAutogen.cpp" diff --git a/cmake/resources/qt.conf.in b/cmake/resources/qt.conf.in new file mode 100644 index 000000000..4706fdcc4 --- /dev/null +++ b/cmake/resources/qt.conf.in @@ -0,0 +1,2 @@ +[Platforms] +WindowsArguments = ${WINDOWS_ARGUMENTS} diff --git a/cmake/resources/resources_autogenerated.qrc.in b/cmake/resources/resources_autogenerated.qrc.in index cce67fae9..9e28de4a6 100644 --- a/cmake/resources/resources_autogenerated.qrc.in +++ b/cmake/resources/resources_autogenerated.qrc.in @@ -6,4 +6,7 @@ @RES_RESOURCES_CONTENT@ + + qt.conf + \ No newline at end of file diff --git a/resources/.gitignore b/resources/.gitignore index 1d38bf357..5402f76fb 100644 --- a/resources/.gitignore +++ b/resources/.gitignore @@ -1 +1,2 @@ linuxinstall +/qt.conf diff --git a/resources/qt.conf b/resources/qt.conf deleted file mode 100644 index 310dd86ab..000000000 --- a/resources/qt.conf +++ /dev/null @@ -1,2 +0,0 @@ -[Platforms] -WindowArguments = dpiawareness=2 diff --git a/resources/resources.qrc b/resources/resources.qrc deleted file mode 100644 index 8568b5032..000000000 --- a/resources/resources.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - qt.conf - - diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 631239533..04b863c79 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -740,8 +740,6 @@ set(SOURCE_FILES widgets/splits/SplitInput.hpp widgets/splits/SplitOverlay.cpp widgets/splits/SplitOverlay.hpp - - ${CMAKE_SOURCE_DIR}/resources/resources.qrc ) if (APPLE)