|
|
@ -1513,13 +1513,25 @@ static double addPatternProps(XftPattern *pattern, const QtFontStyle::Key &key,
|
|
|
|
convert the pixel size to a point size and request that.
|
|
|
|
convert the pixel size to a point size and request that.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
double size_value = request.pixelSize;
|
|
|
|
double size_value = request.pixelSize;
|
|
|
|
|
|
|
|
double dpi = QPaintDevice::x11AppDpiY(fp->screen);
|
|
|
|
double scale = 1.;
|
|
|
|
double scale = 1.;
|
|
|
|
if ( size_value > MAXFONTSIZE_XFT ) {
|
|
|
|
if ( size_value > MAXFONTSIZE_XFT ) {
|
|
|
|
scale = (double)size_value/(double)MAXFONTSIZE_XFT;
|
|
|
|
scale = (double)size_value/(double)MAXFONTSIZE_XFT;
|
|
|
|
size_value = 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 );
|
|
|
|
XftPatternAddDouble( pattern, XFT_SIZE, size_value );
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef XFT_MATRIX
|
|
|
|
#ifdef XFT_MATRIX
|
|
|
@ -1877,6 +1889,11 @@ static QFontEngine *loadFontConfigFont(const QFontPrivate *fp, const QFontDef &r
|
|
|
|
FcResult result;
|
|
|
|
FcResult result;
|
|
|
|
FcFontSet *fs = 0;
|
|
|
|
FcFontSet *fs = 0;
|
|
|
|
FcPattern *fsp = 0;
|
|
|
|
FcPattern *fsp = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Properly conform to fontconfig API. We need to call FcDefaultSubstitute()
|
|
|
|
|
|
|
|
// before FcFontSort()/FcFontMatch().
|
|
|
|
|
|
|
|
FcDefaultSubstitute(pattern);
|
|
|
|
|
|
|
|
|
|
|
|
if( use_fontsort ) {
|
|
|
|
if( use_fontsort ) {
|
|
|
|
fs = FcFontSort(0, pattern, FcFalse, 0, &result);
|
|
|
|
fs = FcFontSort(0, pattern, FcFalse, 0, &result);
|
|
|
|
if (!fs)
|
|
|
|
if (!fs)
|
|
|
|