From 45d7ab7118b99033aca71700c2f5dbded695c53d Mon Sep 17 00:00:00 2001
From: liuxinhao <liuxinhao@kylinsec.com.cn>
Date: Mon, 15 Aug 2022 14:58:13 +0800
Subject: [PATCH] fix(hidpi): Fixed QT font DPI to avoid double scaling
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- 设置缩放两倍时，通过QT_FONT_DPI固定QT字体DPI，避免QT_SCALE_FACTOR和Xft.dpi对字体进行两次缩放过大的问题

Closes #I5LQSK  #I5LQQQ
---
 plugins/xsettings/xsettings-manager.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/plugins/xsettings/xsettings-manager.cpp b/plugins/xsettings/xsettings-manager.cpp
index 9612a85..7532668 100644
--- a/plugins/xsettings/xsettings-manager.cpp
+++ b/plugins/xsettings/xsettings-manager.cpp
@@ -346,10 +346,19 @@ void XSettingsManager::scale_change_workarounds(int32_t scale)
                 KLOG_WARNING("There was a problem when setting QT_AUTO_SCREEN_SCALE_FACTOR=0: %s", error.c_str());
             }
 
+
+            /* FIXME: 由于QT_SCALE_FACTOR将会放大窗口以及pt大小字体，而缩放将会更改Xft.dpi属性，该属性也会导致qt pt字体大小放大，字体将会放大过多。
+            目前暂时解决方案：缩放两倍时固定Qt字体DPI 96，由QT_SCALE_FACTOR环境变量对窗口以及字体进行放大.
+            后续应弃用QT_SCALE_FACTOR方案
+            */
             if (!XSettingsUtils::update_user_env_variable("QT_SCALE_FACTOR", scale == 2 ? "2" : "1", error))
             {
                 KLOG_WARNING("There was a problem when setting QT_SCALE_FACTOR=%d: %s", scale, error.c_str());
             }
+            else if ( scale==2 && !XSettingsUtils::update_user_env_variable("QT_FONT_DPI","96",error) )
+            {
+                KLOG_WARNING("There was a problem when setting QT_FONT_DPI=96: %s", error.c_str());
+            }
         }
     }
     else
-- 
2.33.0

