QFontDatabase/QFont question

John Sturtz john at sturtz.org
Sun Jan 5 22:37:35 GMT 2025


Hi again.

Wondering if anyone can help me understand this behavior that, to me, is 
unexpected.

I'm using QFontDatabase to manipulate system fonts.  Mostly it seems to 
work great, and behaves as I expect.  I especially like its handy 
.font() method, that returns a QFont object.

But in this instance, it's behaving in a way I don't understand.  I'm 
working with a Google font named Exo 
(https://fonts.google.com/specimen/Exo), which I've installed on my 
system.  QFontDatabase.styles('Exo') produces several (18, to be exact) 
styles.  Screenshot from Windows Font Settings below:


Now what I want to do is create a QFont object of the 'Bold' style, and 
then just make it Italic.  For example:

>font = QFontDatabase.font('Exo', 'Bold', 24)
>font.setItalic(True)

But after the .setItalic() call, the font object is no longer Bold 
anymore (it's Thin, the lightest weight of the Exo fonts).

Sample code is attached (I guess one would have to install the Exo font 
to test it).  Basically, I get the font with QFontDatabase.font(), get 
and display QFontInfo data for it, and it's what I expect.  Then I get 
the same font again, call .setItalic(True) on it, display QFontInfo, and 
it's not what I expect:


I do (sort of) understand that the object returned by QFont is 
requested, and QFontInfo tells you what you actually got.  Apparently I 
didn't get what I requested, but I'm not quite sure why.

As always, thanks in advance if you can shed any light on this!

/John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20250105/288408f0/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Exo fonts.png
Type: image/png
Size: 69551 bytes
Desc: not available
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20250105/288408f0/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sample code output.png
Type: image/png
Size: 32738 bytes
Desc: not available
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20250105/288408f0/attachment-0003.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sample.py
Type: text/x-python
Size: 2949 bytes
Desc: not available
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20250105/288408f0/attachment-0001.py>


More information about the PyQt mailing list