15

当我们定义 @font-face 样式时,我们可以定义引用的文件是用于字体的粗体、斜体还是粗斜体版本,如这个 SO 问题中所述:

如何为同一种字体添加多个字体文件?

例子:

@font-face {
    font-family: 'FontinSans';
    src: local('☺'), url('fontin_sans_regular.woff') format('woff');
    font-weight: normal;
    font-style: normal;
}

@font-face {
    font-family: 'FontinSans';
    src: local('☺'), url('fontin_sans_bold.woff') format('woff');
    font-weight: bold;
    font-style: normal;
}

但是,Font Squirrel 不会以这种方式生成 @font-face 套件。他们改为这样做:

@font-face {
    font-family: 'FontinSans';
    src: local('☺'), url('fontin_sans_regular.woff') format('woff');
    font-weight: normal;
    font-style: normal;
}

@font-face {
    font-family: 'FontinSansBold';
    src: local('☺'), url('fontin_sans_bold.woff') format('woff');
    font-weight: normal;
    font-style: normal;
}

这意味着在我们的 CSS 文件中,我们必须这样做:

h2 {
    font-family: 'FontinSansBold', Verdana, sans-serif;
    font-weight: normal;
}

为什么 Font Squirrel 不使用 font-weight 和 font-style 声明来区分粗体和斜体变体?为什么要使用单独的字体系列?他们是否知道某些浏览器对此功能的(缺乏)支持?

4

4 回答 4

17

默认情况下,Font-Squirrel 这样做是为了增加对不遵循规范的用户代理(那些忽略font-weightfont-style)的支持。

如果您不关心那些过时的用户代理,您可以启用@font-face套件生成器专家部分中提供的“样式链接”选项。请注意,IE8 及以下版本会忽略编号font-weight值,仅支持normalbold(以及相应400700权重值)。

于 2010-09-25T21:28:46.750 回答
9

它确实涉及在字体内部四处寻找以确定字体是粗体还是斜体。并且必须在字体内设置某些位,以便 IE 获取样式链接。大多数粗体/斜体字体都设置了这些位,但不是全部。我们正在努力使这更加自动化。

于 2011-04-14T00:34:39.650 回答
3

似乎 Internet Explorer 8 可能是那些不支持字体粗细和字体样式的“旧”用户代理之一

我正在尝试使用@font-face 和 font-family 使粗体/斜体/粗体自动。

到目前为止,我的尝试一无所获。这是一个演示问题的页面。

http://clearimageonline.com/apps/playground/fonts/test_IE.html

这里的任何人都遇到过这个问题并有一个适用于 IE8 的解决方案?


我本周大部分时间都在搜索和摆弄这个问题的答案。看来IE8不会让我这样做。

这是一个建议的解决方法(非常丑陋的解决方法)......

http://clearimageonline.com/apps/playground/fonts/proposed_IE.html

这些测试页面仅适用于 Internet Explorer。此测试仅限于 IE。跨浏览器功能显然将成为最终解决方案的一部分。

于 2011-03-25T19:05:11.930 回答
0

使用默认 FontSquirrel 方法的问题是,如果加载备用字体,所有权重都将丢失,因为它们都设置为正常。我认为样式链接是最好的方法。

如果您担心 IE8 用户,您可以使用条件 CSS。

于 2015-01-24T13:58:53.090 回答