<div dir="ltr"><div>First of all, this almost certainly is a Qt issue, not a PyQt one.</div><div>Then, you have to consider at least the following aspects:</div><div><br></div><div><div>- font management and rendering is a quite complex aspect, and its results may change <b>a lot</b> depending on the platform;</div>- fonts are not always consistent, depending on many aspects;</div><div>- font matching follows arbitrary rules (some of which are based on text matching of families or properties);<br></div><div>- the [infamous] 6.7 version introduced many changes and related bugs/inconsistencies, including font management, which got important changes (see <a href="https://www.qt.io/blog/text-improvements-in-qt-6.7">this related post</a>);</div><div>- if you have many fonts installed, the font matching algorithm may have issues especially if you installed different versions of the "same" font (start by checking how many fonts you've installed that match the "exo" family name); using installed fonts along with ones added through QFontDatabase may further complicate things;<br></div><div><br></div><div>My suggestion is to check again with a *clean* setup (possibly through multiple VMs, OSs and configurations) and eventually consider filing a detailed report on <a href="https://bugreports.qt.io">https://bugreports.qt.io</a>.</div><div><br></div><div>Regards,</div><div>MaurizioB<br></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">Il giorno lun 6 gen 2025 alle ore 00:09 John Sturtz <<a href="mailto:john@sturtz.org">john@sturtz.org</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="msg7154922257956199094">



<div>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 style="font-size:16px" size="3" face="Consolas">.font()</font> method, that returns a <font face="Consolas"><font style="font-size:16px" size="3">Q</font>Font</font><font style="font-size:16px" size="3"> </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" target="_blank">https://fonts.google.com/specimen/Exo</a>), which I've installed on my system.  <font style="font-size:16px" size="3" face="Consolas">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:ii_19439be45f5a21f621b1" style="width: 474px; height: 608px;" width="374" height="480" border="0"></div><div><br></div><div>Now what I want to do is create a <font style="font-size:16px" size="3" face="Consolas">QFont</font> object of the 'Bold' style, and then just make it Italic.  For example:</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><div><font style="font-size:16px" size="3" face="Consolas">font = QFontDatabase.font('Exo', 'Bold', 24)</font></div><div><font style="font-size:16px" size="3" face="Consolas">font.setItalic(True)</font></div></blockquote><div><br></div><div>But after the <font style="font-size:16px" size="3" face="Consolas">.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 style="font-size:16px" size="3" face="Consolas">QFontDatabase.font()</font>, get and display <font style="font-size:16px" size="3" face="Consolas">QFontInfo</font> data for it, and it's what I expect.  Then I get the same font again, call <font style="font-size:16px" size="3" face="Consolas">.setItalic(True)</font> on it, display <font style="font-size:16px" size="3" face="Consolas">QFontInfo</font>, and it's <i>not</i> what I expect:</div><div><br></div><div style="text-align:center"><img src="cid:ii_19439be45f7f5278d592" style="width: 530px; height: 203px;" width="640" height="245" border="0"></div><div><br></div><div>I do (sort of) understand that the object returned by <font style="font-size:16px" size="3" face="Consolas">QFont</font> is <i>requested, </i>and <font style="font-size:16px" size="3" face="Consolas">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></div></div></blockquote></div><div><br clear="all"></div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature">È difficile avere una convinzione precisa quando si parla delle ragioni del cuore. - "Sostiene Pereira", Antonio Tabucchi<br><a href="http://www.jidesk.net" target="_blank">http://www.jidesk.net</a></div>