使用@fontface 字体加载斜体

Posted

技术标签:

【中文标题】使用@fontface 字体加载斜体【英文标题】:Using @fontface fonts load italic 【发布时间】:2015-04-18 15:23:22 【问题描述】:

我有这样的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;

我班级的规则是这样的:

.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 类中使用 font-weight:normal,我得到了正常的显示重量,但 font-style:normal 不清除斜体。这是有道理的,因为在“资源”选项卡的(-webkit)“开发者工具”下,我只看到加载了black-italic 字体(在我的CSS 文件中是第二个)。字体已安装在我的计算机上,但我在服务器上重命名了文件。

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

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

【问题讨论】:

仅供参考,this similar question 似乎也需要答案。 在@Josiah 引用的帖子中,有一条评论可能对您有所帮助:***.com/questions/10609002/… 感谢@ala_747——但这不是我所拥有的吗?正常 -> 斜体 -> 粗体 -> 粗体斜体?这就是为什么我按这个顺序做的。 我不认为“黑色”意味着“正常”...也许您可以尝试更改文件名。 我确实找到了解决方案。我会尽快发布。 【参考方案1】:

正如David Stone's answer 对@fontface 问题的权威回答所述,this spec 表示oblique, italic 是有效的。

正如他所说,FF 3.6 不喜欢这两个值。埋在comments 中有更多关于二值无效的报告。

在深入研究webkit bug reports 时,我发现规范规定的font-style 的值从CSS2 更改为CSS3。根据later css3 spec,font-style 属性只允许一个值,而不是逗号分隔的列表。

所以现在,如果你传入一个逗号分隔的列表,渲染引擎会说“这不是一个有效的字体样式。它们一定是指normal。”并覆盖您之前的正常声明。

tl;dr:如果字体呈现所有斜体字体:

font-style: italic, oblique;

应该是

font-style: italic;

【讨论】:

以上是关于使用@fontface 字体加载斜体的主要内容,如果未能解决你的问题,请参考以下文章

浏览器使用 FontFace 延迟加载字体

Firefox 中的@fontface 问题[关闭]

使用@font face 时在 QtWebEngine 中忽略 Google 字体 (ttf)

@fontface - zen 购物车中的 403 禁止错误

有没有办法使用 JavaScript 找到字体中可用的所有功能

CEGUI字体加载优化