@@ -36,7 +36,13 @@ bool QgsFontUtils::fontFamilyOnSystem( const QString& family )
36
36
{
37
37
QFont tmpFont = QFont ( family );
38
38
// compare just beginning of family string in case 'family [foundry]' differs
39
- return family.startsWith ( tmpFont.family (), Qt::CaseInsensitive );
39
+ return tmpFont.family ().startsWith ( family, Qt::CaseInsensitive );
40
+ }
41
+
42
+ bool QgsFontUtils::fontFamilyHasStyle ( const QString& family, const QString& style )
43
+ {
44
+ QFontDatabase fontDB;
45
+ return ( fontFamilyOnSystem ( family ) && fontDB.styles ( family ).contains ( style ) );
40
46
}
41
47
42
48
bool QgsFontUtils::fontFamilyMatchOnSystem ( const QString& family, QString* chosen, bool * match )
@@ -196,13 +202,17 @@ bool QgsFontUtils::updateFontViaStyle( QFont& f, const QString& fontstyle, bool
196
202
return false ;
197
203
}
198
204
205
+ QString QgsFontUtils::standardTestFontFamily ()
206
+ {
207
+ return " QGIS Vera Sans" ;
208
+ }
209
+
199
210
bool QgsFontUtils::loadStandardTestFonts ( QStringList loadstyles )
200
211
{
201
212
// load standard test font from filesystem or testdata.qrc (for unit tests and general testing)
202
- QFontDatabase fontDB;
203
213
bool fontsLoaded = false ;
204
214
205
- QString fontFamily ( " QGIS Vera Sans " );
215
+ QString fontFamily = standardTestFontFamily ( );
206
216
QMap<QString, QString> fontStyles;
207
217
fontStyles.insert ( " Roman" , " QGIS-Vera/QGIS-Vera.ttf" );
208
218
fontStyles.insert ( " Oblique" , " QGIS-Vera/QGIS-VeraIt.ttf" );
@@ -220,8 +230,7 @@ bool QgsFontUtils::loadStandardTestFonts( QStringList loadstyles )
220
230
}
221
231
QString familyStyle = QString ( " %1 %2" ).arg ( fontFamily ).arg ( fontstyle );
222
232
223
- if ( fontFamilyOnSystem ( fontFamily )
224
- && fontDB.styles ( fontFamily ).contains ( fontstyle ) )
233
+ if ( fontFamilyHasStyle ( fontFamily, fontstyle ) )
225
234
{
226
235
fontsLoaded = ( fontsLoaded || false );
227
236
QgsDebugMsg ( QString ( " Test font '%1' already available" ).arg ( familyStyle ) );
@@ -259,3 +268,19 @@ bool QgsFontUtils::loadStandardTestFonts( QStringList loadstyles )
259
268
260
269
return fontsLoaded;
261
270
}
271
+
272
+ QFont QgsFontUtils::getStandardTestFont ( const QString& style, int pointsize )
273
+ {
274
+ QFontDatabase fontDB;
275
+ if ( ! fontFamilyHasStyle ( standardTestFontFamily (), style ) )
276
+ {
277
+ loadStandardTestFonts ( QStringList () << style );
278
+ }
279
+
280
+ QFont f = fontDB.font ( standardTestFontFamily (), style, pointsize );
281
+ // in case above statement fails to set style
282
+ f.setBold ( style.contains ( " Bold" ) );
283
+ f.setItalic ( style.contains ( " Oblique" ) );
284
+
285
+ return f;
286
+ }
0 commit comments