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