@@ -261,6 +261,8 @@ bool QgsFontUtils::loadStandardTestFonts( QStringList loadstyles )
261
261
fontsLoaded = ( fontsLoaded || loaded );
262
262
QgsDebugMsg ( QString ( " Test font '%1' %2 from filesystem [%3]" )
263
263
.arg ( familyStyle ).arg ( loaded ? " loaded" : " FAILED to load" ).arg ( fontPath ) );
264
+ QFontDatabase db;
265
+ QgsDebugMsg ( QString ( " font families in %1: %2" ).arg ( fontID ).arg ( db.applicationFontFamilies ( fontID ).join ( " ," ) ) );
264
266
}
265
267
else
266
268
{
@@ -282,16 +284,37 @@ bool QgsFontUtils::loadStandardTestFonts( QStringList loadstyles )
282
284
283
285
QFont QgsFontUtils::getStandardTestFont ( const QString& style, int pointsize )
284
286
{
285
- QFontDatabase fontDB;
286
287
if ( ! fontFamilyHasStyle ( standardTestFontFamily (), style ) )
287
288
{
288
289
loadStandardTestFonts ( QStringList () << style );
289
290
}
290
291
292
+ QFontDatabase fontDB;
291
293
QFont f = fontDB.font ( standardTestFontFamily (), style, pointsize );
294
+ #ifdef Q_OS_WIN
295
+ if ( !f.exactMatch () )
296
+ {
297
+ QString modified;
298
+ if ( style == " Roman" )
299
+ modified = " Normal" ;
300
+ else if ( style == " Oblique" )
301
+ modified = " Italic" ;
302
+ else if ( style == " Bold Oblique" )
303
+ modified = " Bold Italic" ;
304
+ if ( !modified.isEmpty () )
305
+ f = fontDB.font ( standardTestFontFamily (), modified, pointsize );
306
+ }
307
+ if ( !f.exactMatch () )
308
+ {
309
+ QgsDebugMsg ( QString ( " Inexact font match - consider installing the %1 font." ).arg ( standardTestFontFamily () ) );
310
+ QgsDebugMsg ( QString ( " Requested: %1" ).arg ( f.toString () ) );
311
+ QFontInfo fi ( f );
312
+ QgsDebugMsg ( QString ( " Replaced: %1,%2,%3,%4,%5,%6,%7,%8,%9,%10" ).arg ( fi.family () ).arg ( fi.pointSizeF () ).arg ( fi.pixelSize () ).arg ( fi.styleHint () ).arg ( fi.weight () ).arg ( fi.style () ).arg ( fi.underline () ).arg ( fi.strikeOut () ).arg ( fi.fixedPitch () ).arg ( fi.rawMode () ) );
313
+ }
314
+ #endif
292
315
// in case above statement fails to set style
293
316
f.setBold ( style.contains ( " Bold" ) );
294
- f.setItalic ( style.contains ( " Oblique" ) );
317
+ f.setItalic ( style.contains ( " Oblique" ) || style. contains ( " Italic " ) );
295
318
296
319
return f;
297
320
}
0 commit comments