<html><head><style id="css_styles" type="text/css"><!--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><div>I did actually delve into that a little bit.  It seemed to be unrewarding.  My experience was as follows:</div><div><br /></div><div>For all the fonts (that I looked) on my system, <font face="Consolas">.variableAxisTags()</font> initially returns an empty list when a font object is created, both for fonts that the Win font dialog reports as variable and ones that it doesn't report as variable.  For example, in both these cases:</div><div><br /></div><div><font face="Consolas" size="3" style="font-size: 16px;">    f = QFontDatabase.font('Arial', 'Regular', 24)</font></div><div><font face="Consolas" size="3" style="font-size: 16px;">    print(f.variableAxisTags())<span></span></font></div><div><font face="Consolas" size="3" style="font-size: 16px;"><br /></font></div><div><font face="Consolas" size="3" style="font-size: 16px;">    f = QFontDatabase.font('Exo', 'Thin', 24)</font></div><div><font face="Consolas" size="3" style="font-size: 16px;">    print(f.variableAxisTags())</font></div><div style="font-size: 16px;"><br /></div><div>the <font face="Consolas" size="3" style="font-size: 16px;">print()</font> displays an empty list.  Arial isn't variable, so I wouldn't expect anything there.  But Exo is, and the value for the <font face="Consolas" size="3" style="font-size: 16px;">'wght'</font> axis for the font created should be 100 ('Thin').  But that doesn't affect the list that <font face="Consolas" size="3" style="font-size: 16px;">.variableAxisTags()</font> returns.  So Qt doesn't seem to fill that list; only user code apparently.</div><div><br /></div><div>Setting the <font face="Consolas" size="3" style="font-size: 16px;">'wght'</font> variable axis with <font face="Consolas" size="3" style="font-size: 16px;">.setVariableAxis()</font> does indeed seem to work for Exo.  This:</div><div><br /></div><div><div id="x77c724c6f2cb45b7a9827704620e482d"><div><font face="Consolas" size="3" style="font-size: 16px;">    f = QFontDatabase.font('Exo', 'Regular', 24)</font></div><div></div></div></div><div><font face="Consolas" size="3" style="font-size: 16px;"><span></span>    f.setVariableAxis(QtGui.QFont.Tag('wght'), 800)
</font></div><div><div id="x06449b69a7254f5e8f26781596d6bbe5"><div><div id="x71b7b0bc566344b8806407fceadea36b"><div><font face="Consolas">    print(f.variableAxisTags())</font></div></div></div><div></div></div></div><div style="font-size: 16px;"><br /></div><div>does display Exo ExtraBold.  And the <font face="Consolas" size="3" style="font-size: 16px;">print()</font> statement now shows a Tag object in the list.  (Oddly, though setting the <font face="Consolas" size="3" style="font-size: 16px;">'wght</font>' axis in this manner worked as I expected, I couldn't get setting the <font face="Consolas" size="3" style="font-size: 16px;">'ital'</font> axis to cause italic to be displayed ...)</div><div><br /></div><div>Setting these axes for a font that is (according to Win settings) not variable also adds an item to the variable axis tags list.  This code runs:</div><div><br /></div><div><div id="x71b7b0bc566344b8806407fceadea36b"><div><div id="x77c724c6f2cb45b7a9827704620e482d"><div><font face="Consolas" size="3" style="font-size: 16px;"> </font><font face="Consolas"><font size="3" style="font-size: 16px;">  </font> f = QFontDatabase.font('Arial', 'Regular', 24)</font></div><div></div></div></div><div><font face="Consolas" size="3" style="font-size: 16px;">    f.setVariableAxis(QtGui.QFont.Tag('wght'), 800) </font></div><div><font face="Consolas" size="3" style="font-size: 16px;">    print(f.variableAxisTags())</font><span></span></div></div></div><div><br /></div>
<div>Here also, the <font face="Consolas" size="3" style="font-size: 16px;">print()</font> statement displays a Tag item in the list.  It doesn't generate any sort of error, and by all appearances seems to 'succeed'.  Of course, it doesn't change the font that's displayed, because Arial isn't variable.</div><div><br /></div><div>As far as I could tell, the only thing in the picture that would clue me in that Exo is variable and Arial is not is that the <font face="Consolas" size="3" style="font-size: 16px;">.setVariableAxis()</font> call didn't change the appearance of the displayed font.  But nothing programmatically.  It would be lovely if <font face="Consolas" size="3" style="font-size: 16px;">QFontDatabase</font> or <font face="Consolas" size="3" style="font-size: 16px;">QFont</font> had something like <font face="Consolas" size="3" style="font-size: 16px;">.isVariable()</font>, or some such.  But evidently not ...</div><div><br /></div><div>/John</div>
<div x-em-replyforwardheader=""><br /></div>
<div>
<div>------ Original Message ------</div>
<div>From "Maurizio Berti" <<a href="mailto:maurizio.berti@gmail.com">maurizio.berti@gmail.com</a>></div>
<div>To "John Sturtz" <<a href="mailto:john@sturtz.org">john@sturtz.org</a>></div>
<div>Cc "Charles" <<a href="mailto:peacech@gmail.com">peacech@gmail.com</a>>; <a href="mailto:pyqt@riverbankcomputing.com">pyqt@riverbankcomputing.com</a></div>
<div>Date 1/11/2025 9:33:18 AM</div>
<div>Subject Re: Re[6]: QFontDatabase/QFont question</div></div><div x-em-quote=""><br /></div>
<div id="xc0570d41badc44e"><blockquote cite="CAPn+-XS3SJD8Rk_s2Sg_AOgCmUgk4nyM-AwX+8eW8XWKka4wzg@mail.gmail.com" type="cite" class="cite2">
<div dir="ltr"><div>I've not used variable fonts yet, but you should probably start by inspecting the QFont instance using the related "variable" and "tag" functions introduced in 6.7, such as <a href="https://doc.qt.io/qt-6/qfont.html#variableAxisTags">https://doc.qt.io/qt-6/qfont.html#variableAxisTags</a></div><div>Maybe you can create a small program that lists all fonts and the results of those functions, then compare it with the Windows font dialog.</div><div><br /></div><div>Cheers,<br /></div><div>MaurizioB<br /></div></div><div dir="ltr" class="gmail_signature"><br /></div>
</blockquote></div>
</body></html>