summaryrefslogtreecommitdiff
blob: 6a19825d2a5a4514ee34a1412f6f9ae03d37159e (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
--- src/kernel/qfontdatabsae_x11.cpp.orig	2004-03-04 17:53:01.000000000 +0100
+++ src/kernel/qfontdatabase_x11.cpp	2004-03-04 17:47:59.000000000 +0100
@@ -1508,6 +1516,24 @@
 	XftResult res;
 	XftPattern *result =
 	    XftFontMatch( QPaintDevice::x11AppDisplay(), fp->screen, pattern, &res );
+#ifdef QT_XFT2
+	if (script == QFont::Latin) {
+	    // since we added the Euro char on top, check we actually got the family
+	    // we requested. If we didn't get it correctly, remove the Euro from the pattern
+	    // and try again.
+	    FcChar8 *f;
+	    res = FcPatternGetString(result, FC_FAMILY, 0, &f);
+	    if (res == FcResultMatch && QString::fromUtf8((char *)f) != family->rawName) {
+		qDebug("trying without Euro");
+		FcPatternDel(pattern, FC_CHARSET);
+		FcCharSet *cs = FcCharSetCreate();
+		QChar sample = sampleCharacter(script);
+		FcCharSetAddChar(cs, sample.unicode());
+		FcPatternAddCharSet(pattern, FC_CHARSET, cs);
+		result = XftFontMatch( QPaintDevice::x11AppDisplay(), fp->screen, pattern, &res );
+	    }
+	}
+#endif
 	XftPatternDestroy(pattern);
 
 	// We pass a duplicate to XftFontOpenPattern because either xft font