summaryrefslogtreecommitdiffstats
path: root/mageia/dependencies/qt3/qt-x11-free-3.3.8-qmo35263.patch
blob: 1d63754c2be1003a47d5098ea05ed877db904463 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
--- src/kernel/qfontdatabase_x11.cpp	2006-12-28 21:40:34.000000000 +0200
+++ src/kernel/qfontdatabase_x11.cpp	2006-12-28 21:43:44.000000000 +0200
@@ -1504,13 +1504,24 @@
       convert the pixel size to a point size and request that.
     */
     double size_value = request.pixelSize;
+    double dpi = QPaintDevice::x11AppDpiY(fp->screen);
     double scale = 1.;
     if ( size_value > MAXFONTSIZE_XFT ) {
 	scale = (double)size_value/(double)MAXFONTSIZE_XFT;
 	size_value = MAXFONTSIZE_XFT;
     }
-
-    size_value = size_value*72./QPaintDevice::x11AppDpiY(fp->screen);
+#ifdef QT_XFT2
+    /*
+     2006-12-28 If QT is not compiled against xft1, there is no need
+     for the workaround above (confirmed). Thus, in addition, add
+     font pixelsize to the pattern to avoid fontconfig making wrong
+     guesses. Also provide a DPI value for fontconfig so it never
+     attempts to fallback to its default.
+    */
+    XftPatternAddDouble(pattern, XFT_PIXEL_SIZE, size_value);
+    XftPatternAddDouble(pattern, XFT_DPI, dpi);
+#endif
+    size_value = size_value*72./dpi;
     XftPatternAddDouble( pattern, XFT_SIZE, size_value );
 
 #ifdef XFT_MATRIX
@@ -1875,6 +1886,11 @@
     FcResult result;
         FcFontSet *fs = 0;
         FcPattern *fsp = 0;
+
+	// Properly conform to fontconfig API. We need to call FcDefaultSubstitute()
+	// before FcFontSort()/FcFontMatch().
+	FcDefaultSubstitute(pattern);
+
         if( use_fontsort ) {
             fs = FcFontSort(0, pattern, FcFalse, 0, &result);
     if (!fs)