【问题标题】:Using @font-face src: local with fonts.com web fonts使用 @font-face src: local with fonts.com web fonts
【发布时间】:2012-12-13 00:24:25
【问题描述】:

正如 here 所讨论的,经济实惠的 fonts.com 网络字体计划不允许通过 @font-family 直接嵌入字体,或者看起来...

我想知道这是否可行:

@font-face {
    font-family: 'Main';
    src: local('FoobarBk'), local('FoobarBk Regular');
    font-weight: normal;
    font-style: normal;
}

@font-face {
    font-family: 'Main';
    src: local('FoobarMd'), local('FoobarMd Regular');
    font-weight: bold;
    font-style: normal;
}

@font-face {
    font-family: 'Main';
    src: local('FoobarIt'), local('FoobarIt Regular');
    font-weight: normal;
    font-style: italic;
}

@font-face {
    font-family: 'Main';
    src: local('FoobarMdIt'), local('FoobarMdIt Regular');
    font-weight: normal;
    font-style: normal;
}

这个想法是,一旦 fonts.com 提供的脚本完成了 FoobarBk、FoobarMd、FoobarIt 和 FoobarMdIt 字体的加载,它们将可以作为本地字体(无需额外的页面加载)和任何指定 Main 的 CSS 样式使用font-family 会立即使用它们。

我怀疑这只是一厢情愿,但我更希望有人以一种或另一种方式回答。

【问题讨论】:

  • 在使用local() 时请注意缺乏Android 支持(默认浏览器)。如果使用local(),Android 2.2 一直到 4.0(似乎)将无法加载字体。 caniuse.com/fontface

标签: css font-face webfonts


【解决方案1】:

根据我的经验,这里的“本地”一词意味着用户已将字体安装到他们的操作系统中,而不是只是浏览器中的本地缓存文件。

对于您网站的新用户,您希望能够保证他们获得您的字体,因此“本地”字体通常指向不存在的引用,因此他们必须从您的网络服务器下载。这是为了防止用户使用与您的名称相同的 naff 字体而设计看起来很糟糕。

参见smiley-face answer 也在 SO

如果您处于受控环境中,您知道您可以信任客户端安装的字体(即他们安装了所有 Foobar 变体),那么您的方法将有效。

【讨论】:

  • 谢谢,我想了很多。在达成普遍共识或其他情况之前,我将推迟接受,因为坦率地说,我懒得在这个凌晨进行测试。
  • 是的,+1;当写像src: local('FoobarBk'), local('FoobarBk Regular');这样的东西时,它的意思是:如果它安装在用户PC上,只包括字体FoobarBk,如果没有尝试找到FoobarBk Regular。但是,如果第二个字体也没有安装怎么办?您必须提供可下载字体文件的后备。 "src:远程字体文件位置的 URL,或用户计算机上的字体名称,格式为 local("Font Name")。"见:developer.mozilla.org/en-US/docs/CSS/@font-face#Values
  • local(...) 确实是指本地安装的字体,参见w3.org/TR/css3-fonts/#src-desc
  • 所以没有办法对家庭进行分组?
猜你喜欢
  • 2013-05-29
  • 2012-11-18
  • 2020-09-16
  • 2011-04-19
  • 1970-01-01
  • 2012-05-10
  • 2011-12-08
  • 2015-11-26
  • 1970-01-01
相关资源
最近更新 更多