我有一种字体,它在一个系列中具有多种字体粗细(超轻、轻、常规、半粗体、粗体、黑色)。在这个例子中,我使用了免费的 Google Webfont Source Sans Pro,但是对于任何具有多个权重的字体(例如 Avenir Next,Mac OS 10.8 中的系统字体),我都遇到了同样的问题。在 Qt 样式表中,如果我指定:
QLabel
{
font-family: Source Sans Pro;
font-size: 24px;
}
我得到了字体的“常规”样式。如果我指定:
QLabel
{
font-family: Source Sans Pro;
font-weight: bold;
font-size: 24px;
}
我得到了字体的粗体版本。除了常规或粗体之外,我想不出任何组合可以给我任何东西。我尝试将权重直接放在字体系列中(例如,字体系列:Source Sans Pro Light;),我尝试在字体重量:说明符中使用 Light、Semibold 等,我还尝试使用数字等价物(Qt 文档说它们应该是从 0 到 99 的值,而不是 CSS x00 编号)。没有任何效果。
编辑:我只是尝试编写一个快速程序来为 font-weight 属性添加 0 到 999 之间的数字。有趣的是,如果我输入 0 到 399 之间的任何值,我就能得到“光”。400 到 407 给了我“常规”,408 到 599 又给了我光,然后 600 或更高给了我半粗体。这看起来很奇怪,因为现在使用数字我至少可以访问“light”和“semibold”。我仍然找不到任何方法来获得“Extra Light”或“Black”权重。
我唯一的问题是,如果不求助于自定义代码,这是不可能的吗?我可以通过创建一个 QFont 来获得我想要的确切字体,如下所示:
QFontDatabase db;
QFont = db.font("Source Sans Pro", "Semibold", 24 );
但显然这意味着我不能使用样式表(或者更糟的是,我必须编写自己的样式表解析器或包装现有的 Qt 或其他东西)。这似乎有点难以置信,这对于样式表是不可能的。Qt 对多粗细字体的支持很差吗?