LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File use-freetype-default.diff of Package libqt4 (Project KDE:Qt)

Index: src/gui/text/qfontengine_x11.cpp
===================================================================
--- src/gui/text/qfontengine_x11.cpp.orig
+++ src/gui/text/qfontengine_x11.cpp
@@ -967,6 +967,26 @@ Q_GUI_EXPORT void qt_x11ft_convert_patte
         *antialias = b;
 }
 
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_LCD_FILTER_H
+
+static bool subpixel_rendering_available()
+{
+    static int implemented = -1;
+
+    if (implemented >= 0)
+        return implemented;
+
+    extern FT_Library qt_getFreetype();
+    FT_Library lib = qt_getFreetype();
+
+    if (FT_Err_Unimplemented_Feature ==
+            FT_Library_SetLcdFilter(lib, FT_LCD_FILTER_DEFAULT ))
+        return (implemented = false);
+
+    return (implemented = true);
+}
 
 QFontEngineX11FT::QFontEngineX11FT(FcPattern *pattern, const QFontDef &fd, int screen)
     : QFontEngineFT(fd)
@@ -984,7 +1004,7 @@ QFontEngineX11FT::QFontEngineX11FT(FcPat
     canUploadGlyphsToServer = QApplication::testAttribute(Qt::AA_X11InitThreads) || (qApp->thread() == QThread::currentThread());
 
     subpixelType = Subpixel_None;
-    if (antialias) {
+    if (subpixel_rendering_available() && antialias) {
         int subpixel = X11->display ? X11->screens[screen].subpixel : FC_RGBA_UNKNOWN;
         if (subpixel == FC_RGBA_UNKNOWN)
             (void) FcPatternGetInteger(pattern, FC_RGBA, 0, &subpixel);