覆盖@ font-face src URL?

时间:2013-06-03 16:31:24

标签: css font-awesome

我们正在使用FontAwesome和Bootstrap。但是,当我们尝试将FA与自定义minifier一起使用时,它会尝试从相对路径加载字体,这会返回404,这是由于设置了缩小的URL结构的方式。

因此我们认为解决此问题的最佳方法是在我们的minify列表中添加一个额外的CSS文件,该文件将覆盖FontAwesome字体使用的@ font-face src URL。我们基本上只是从FontAwesome复制了@ font-face定义,并指定了绝对URL位置。

但是,现在发生的情况是我们正确的URL加载字体并尝试从FontAwesome CSS中最初指定的URL(导致与以前相同的404错误)。

我们做错了什么,或者是否真的无法覆盖@ font-face src网址,以便完全忽略'上游'定义?

2 个答案:

答案 0 :(得分:12)

简单覆盖基本CSS类的font-family:

.fa {
  font-family: 'FontAwesome2' !important;
}

然后,粘贴/包含并编辑字体定义:

@font-face {
  font-family: 'FontAwesome2';
  src: url('//host.domain/yourpath/fontawesome-webfont.eot?v=3.1.0');
  ...
  font-style: normal;
}

答案 1 :(得分:2)

更新:下面的“解决方案”实际上并没有起作用......事实上我们确实有一个错字,但在随后的测试中,这仍然不是根本原因,我们仍然面临着这个问题。 /强>

在覆盖@ font-face时,解决方案非常小心,确保提供原始@ font-face中使用的所有相同格式。否则,浏览器会将其视为不同的定义,并尝试下载两者中引用的文件,而不是覆盖它。

所以这里是FontAwesome的CSS中的定义,首先引用它。

@font-face {
  font-family: 'FontAwesome';
  src: url('../font/fontawesome-webfont.eot?v=3.1.0');
  src: url('../font/fontawesome-webfont.eot?#iefix&v=3.1.0') format('embedded-opentype'), 
    url('../font/fontawesome-webfont.woff?v=3.1.0') format('woff'), 
    url('../font/fontawesome-webfont.ttf?v=3.1.0') format('truetype'), 
    url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.1.0') format('svg');
  font-weight: normal;
  font-style: normal;
}

当我们试图覆盖时,我们意外地删除了“format('svg')”定义:

@font-face {
  font-family: 'FontAwesome';
  src: url('//ourdomain.com/includes/font-awesome-3.1.x/font/fontawesome-webfont.eot?v=3.0.1');
  src: url('//ourdomain.com/includes/font-awesome-3.1.x/font/fontawesome-webfont.eot?#iefix&v=3.0.1') format('embedded-opentype'),
    url('//ourdomain.com/includes/font-awesome-3.1.x/font/fontawesome-webfont.woff?v=3.0.1') format('woff'),
    url('//ourdomain.com/includes/font-awesome-3.1.x/font/fontawesome-webfont.ttf?v=3.0.1') format('truetype');
  font-weight: normal;
  font-style: normal;
}

我们添加format('truetype')定义后,我们不再遇到导致404的其他点击。