You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.5 KiB
42 lines
1.5 KiB
--- 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)
|