使用@fontface 字体加载斜体

Using @fontface fonts load italic

我有 css 像这样:

@font-face {
    font-family: 'alegreya';
    src:url('fonts/AlegreyaBold.ttf');
    font-weight:normal;
    font-style: normal;
}
@font-face {
    font-family: 'alegreya';
    src:url('fonts/AlegreyaBoldItalic.ttf');
    font-weight:normal;
    font-style: italic, oblique;
}
@font-face {
    font-family: 'alegreya';
    src:url('fonts/AlegreyaBlack.ttf');
    font-weight:bold;
    font-style: normal;
}
@font-face {
    font-family: 'alegreya';
    src:url('fonts/AlegreyaBlackItalic.ttf');
    font-weight:bold;
    font-style: italic, oblique;
}

我的 class 规则如下:

.font-alegreya {
    font-family:alegreya;
}

最后 HTML:

<li class="font-alegreya" data-styles="bold, italic, extrabold">
    Alegreya - Some sample words.
</li>

现在,我已经阅读了 here on metaltoad 和 SO 上的其他地方,使用单一字体系列是使用自定义字体的首选方式,并且您必须将粗斜体放在最后。

问题是字体显示为斜体。通过在 css class 中使用 font-weight:normal,我得到了正常的显示重量,但 font-style:normal 没有清除斜体。这是有道理的,因为在 "resources" 选项卡中的 (-webkit) "developer tools" 下,我只看到加载了 black-italic 字体(我的 CSS 文件中的第二个)。字体安装在我的电脑上,但我在服务器上重命名了文件。

我在 Opera (webkit) 和 IE11 中观察到这个,所以这是我的代码。

编辑:如评论中所述,我将粗体和黑色倒置。这就是大胆的原因。但是斜体仍然是个问题。

正如 David Stone's answer on the authoritative answer to @fontface questions states, this spec 所说 oblique, italic 是有效的。

正如他所说,FF 3.6 不喜欢这两个值。隐藏在 comments 中的是更多有关双值不起作用的报告。

在深入研究 webkit bug reports, I discovered that the value for font-style as prescribed by the spec changed from CSS2 to CSS3. According the later css3 spec 时,font-style 属性 只允许使用一个值,而不是逗号分隔的列表。

所以现在,如果你传入一个逗号分隔的列表,渲染引擎会说 "that's not a valid font-style. They must have meant normal." 并覆盖你之前的正常声明。

tl;dr:如果字体显示所有斜体字体:

font-style: italic, oblique;

应该是

font-style: italic;