[LyX/master] Restore XLFD code for Qt 4

Scott Kostyshak skostysh at lyx.org
Sat Mar 21 00:38:19 UTC 2020


commit 0d2773ff5e9b052fac39bb9502311a55228f935b
Author: Scott Kostyshak <skostysh at lyx.org>
Date:   Fri Mar 20 20:36:35 2020 -0400

    Restore XLFD code for Qt 4
    
    There is a chance that this code is still useful for Qt 4. We keep
    it around just in case.
    
    For the case of Qt 4, this commit restores the code changed in
    f8e40f8a, d255339a, and d4ff3a29.
---
 src/frontends/qt/GuiFontLoader.cpp |   49 ++++++++++++++++++++++++++++++++++++
 1 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/src/frontends/qt/GuiFontLoader.cpp b/src/frontends/qt/GuiFontLoader.cpp
index cf73292..01e7a66 100644
--- a/src/frontends/qt/GuiFontLoader.cpp
+++ b/src/frontends/qt/GuiFontLoader.cpp
@@ -64,9 +64,26 @@ namespace {
 struct SymbolFont {
 	FontFamily lyx_family;
 	QString family;
+#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
+	QString xlfd;
+#endif
 };
 
 SymbolFont symbol_fonts[] = {
+#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
+	{ SYMBOL_FAMILY,"symbol", "-*-symbol-*-*-*-*-*-*-*-*-*-*-adobe-fontspecific"},
+	{ CMR_FAMILY,   "cmr10",  "-*-cmr10-medium-*-*-*-*-*-*-*-*-*-*-*" },
+	{ CMSY_FAMILY,  "cmsy10", "-*-cmsy10-*-*-*-*-*-*-*-*-*-*-*-*" },
+	{ CMM_FAMILY,   "cmmi10", "-*-cmmi10-medium-*-*-*-*-*-*-*-*-*-*-*" },
+	{ CMEX_FAMILY,  "cmex10", "-*-cmex10-*-*-*-*-*-*-*-*-*-*-*-*" },
+	{ MSA_FAMILY,   "msam10", "-*-msam10-*-*-*-*-*-*-*-*-*-*-*-*" },
+	{ MSB_FAMILY,   "msbm10", "-*-msbm10-*-*-*-*-*-*-*-*-*-*-*-*" },
+	{ EUFRAK_FAMILY,"eufm10", "-*-eufm10-medium-*-*-*-*-*-*-*-*-*-*-*" },
+	{ RSFS_FAMILY,  "rsfs10", "-*-rsfs10-medium-*-*-*-*-*-*-*-*-*-*-*" },
+	{ STMARY_FAMILY,"stmary10","-*-stmary10-medium-*-*-*-*-*-*-*-*-*-*-*" },
+	{ WASY_FAMILY,  "wasy10", "-*-wasy10-medium-*-*-*-*-*-*-*-*-*-*-*" },
+	{ ESINT_FAMILY, "esint10","-*-esint10-medium-*-*-*-*-*-*-*-*-*-*-*" }
+#else
 	{ SYMBOL_FAMILY,"symbol"},
 	{ CMR_FAMILY,   "cmr10"},
 	{ CMSY_FAMILY,  "cmsy10"},
@@ -79,6 +96,7 @@ SymbolFont symbol_fonts[] = {
 	{ STMARY_FAMILY,"stmary10"},
 	{ WASY_FAMILY,  "wasy10"},
 	{ ESINT_FAMILY, "esint10"}
+#endif
 };
 
 size_t const nr_symbol_fonts = sizeof(symbol_fonts) / sizeof(symbol_fonts[0]);
@@ -125,6 +143,19 @@ GuiFontInfo & fontinfo(FontInfo const & f)
 }
 
 
+#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
+QString rawName(QString const & family)
+{
+	for (size_t i = 0; i < nr_symbol_fonts; ++i)
+		if (family == symbol_fonts[i].family)
+			return symbol_fonts[i].xlfd;
+
+	LYXERR(Debug::FONT, "BUG: family not found !");
+	return QString();
+}
+#endif
+
+
 QString symbolFamily(FontFamily family)
 {
 	for (size_t i = 0; i < nr_symbol_fonts; ++i) {
@@ -203,6 +234,20 @@ QFont symbolFont(QString const & family, bool * ok)
 		return font;
 	}
 
+#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
+	// A simple setFamily() fails on Qt 2
+
+	QString const raw = rawName(family);
+	LYXERR(Debug::FONT, "Trying " << raw << " ... ");
+	font.setRawName(raw);
+
+	if (isChosenFont(font, family, QString())) {
+		LYXERR(Debug::FONT, "raw version!");
+		*ok = true;
+		return font;
+	}
+#endif
+
 	LYXERR(Debug::FONT, " FAILED :-(");
 	*ok = false;
 	return font;
@@ -335,6 +380,10 @@ QFont makeQFont(FontInfo const & f)
 	else
 		LYXERR(Debug::FONT, "This font is NOT an exact match");
 
+#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
+	LYXERR(Debug::FONT, "XFLD: " << font.rawName());
+#endif
+
 	font.setPointSizeF(f.realSize() * lyxrc.currentZoom / 100.0);
 
 	LYXERR(Debug::FONT, "The font has size: " << font.pointSizeF());


More information about the lyx-cvs mailing list