首页 文章

Chrome更新突然中断@ font-face

提问于
浏览
0

我正在尝试使用@ font-face来替换字体的实例 . 这通常对我有用:

@font-face {
    font-family: 'Arial';
    font-weight: bold;
    font-style: italic;
    src: local('Times New Roman');
}

@font-face {
    font-family: 'Arial';
    font-weight: bold;
    src: local('Times New Roman');
}

@font-face {
    font-family: 'Arial';
    font-style: italic;
    src: local('Times New Roman');
}

@font-face {
    font-family: 'Arial';
    src: local('Times New Roman');
}

最终结果是Arial的实例被Times New Roman取代 . 实际上,这适用于运行Windows 10和Chrome 61.0.3163.100的单独计算机 .

然而,在最近更新到62.0.3202.62之后,Arial仍然被Times New Roman取代,但粗体和斜体不再起作用 . 试图引用像"Times New Roman Bold"这样的东西不起作用,只是默认返回Arial . 在粗体和斜体src线之后放置 !important 给出了人造粗体和虚假斜体 .

旧的行为是错的吗?如果可能的话,通过CSS替换字体的正确方法是什么?

2 回答

  • 0

    我们不能引用像“Times New Roman Bold”或“Arial Bold”之类的东西,看起来像是Chrome的一个bug,请阅读下文 .

    我们的本地匹配被破坏并使用姓氏进行匹配,而不是使用postscript名称--drott

    • Here drott表示,之前的解决方法打破了Google Fonts对Android Chrome的期望 .

    这个改变实际上使得src:local()处理更加正确,通过将样式排除在外,但确实打破了Google Fonts的期望 . 有两个问题:我们的src:local()匹配被破坏,与完整的字体名称或postscript字体名称不匹配,这就是问题627143.我们做了什么,我们匹配src:local()与字体系列名称,加上我们采取考虑到拉伸,样式,重量要求(来自CSS样式,存储在FontDescription中)并将其输入到族匹配中 . 通过这种破坏的local()匹配,Google字体的CSS设法使用本地(“sans-serif”)加上font-weight:bold和font-weight:100或300来匹配本地机器人变体 . 我要去部分恢复上面的CL并恢复bug,直到我以更持久的方式修复local()匹配 . --drott

  • 2

    首先,你为什么要那样做?你不能只使用

    font-family: "Times New Roman";
    

    在身体元素?

相关问题