<html><head>

<style id="css_styles"> 
blockquote.cite { margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:0px; border-left: 1px solid #cccccc }
blockquote.cite2 {margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:0px; border-left: 1px solid #cccccc; margin-top: 3px; padding-top: 0px; }
a img { border: 0px; }
table { border-collapse: collapse; }
li[style='text-align: center;'], li[style='text-align: center; '], li[style='text-align: right;'], li[style='text-align: right; '] {  list-style-position: inside;}
body { font-family: 'Segoe UI'; font-size: 12pt; }
.quote { margin-left: 1em; margin-right: 1em; border-left: 5px #ebebeb solid; padding-left: 0.3em; }
a.em-mention[href] { text-decoration: none; color: inherit; border-radius: 3px; padding-left: 2px; padding-right: 2px; background-color: #e2e2e2; }

 </style>
</head>
<body>Hi again.<div><br /></div><div>Wondering if anyone can help me understand this behavior that, to me, is unexpected.</div><div><br /></div><div>I'm using <font face="Consolas">QFontDatabase</font> to manipulate system fonts.  Mostly it seems to work great, and behaves as I expect.  I especially like its handy <font face="Consolas" size="3" style="font-size: 16px;">.font()</font> method, that returns a <font face="Consolas"><font size="3" style="font-size: 16px;">Q</font>Font</font><font size="3" style="font-size: 16px;"> </font>object.</div><div><br /></div><div>But in this instance, it's behaving in a way I don't understand.  I'm working with a Google font named Exo (<a href="https://fonts.google.com/specimen/Exo" style="font-size: 12pt;">https://fonts.google.com/specimen/Exo</a>), which I've installed on my system.  <font face="Consolas" size="3" style="font-size: 16px;">QFontDatabase.styles('Exo')</font> produces several (18, to be exact) styles.  Screenshot from Windows Font Settings below:</div><div><br /></div><div style="text-align: center; "><img src="cid:emc5ed2208-0769-4eb2-b3ec-624a7359850d@ea2f0bb8.com" border="0" width="374" height="480" style="width: 474px; height: 608px;" /></div><div><br /></div><div>Now what I want to do is create a <font face="Consolas" size="3" style="font-size: 16px;">QFont</font> object of the 'Bold' style, and then just make it Italic.  For example:</div><div><br /></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><font face="Consolas" size="3" style="font-size: 16px;">font = QFontDatabase.font('Exo', 'Bold', 24)</font></div><div><font face="Consolas" size="3" style="font-size: 16px;">font.setItalic(True)</font></div></blockquote><div><br /></div><div>But after the <font face="Consolas" size="3" style="font-size: 16px;">.setItalic()</font> call, the font object is no longer Bold anymore (it's Thin, the lightest weight of the Exo fonts).</div><div><br /></div><div>Sample code is attached (I guess one would have to install the Exo font to test it).  Basically, I get the font with <font face="Consolas" size="3" style="font-size: 16px;">QFontDatabase.font()</font>, get and display <font face="Consolas" size="3" style="font-size: 16px;">QFontInfo</font> data for it, and it's what I expect.  Then I get the same font again, call <font face="Consolas" size="3" style="font-size: 16px;">.setItalic(True)</font> on it, display <font face="Consolas" size="3" style="font-size: 16px;">QFontInfo</font>, and it's <i>not</i> what I expect:</div><div><br /></div><div style="text-align: center; "><img src="cid:em5d5e482d-e2fc-4db9-aa70-65118dc0dc41@ea2f0bb8.com" border="0" width="640" height="245" style="width: 530px; height: 203px;" /></div><div><br /></div><div>I do (sort of) understand that the object returned by <font face="Consolas" size="3" style="font-size: 16px;">QFont</font> is <i>requested, </i>and <font face="Consolas" size="3" style="font-size: 16px;">QFontInfo</font> tells you what you actually got.  Apparently I didn't get what I requested, but I'm not quite sure why.</div><div><br /></div><div>As always, thanks in advance if you can shed any light on this!</div><div><br /></div><div>/John</div></body></html>