CSS @ font-face-“ src:local('☺')”是什么意思?


133

我是@font-face第一次使用,并从fontsquirrel下载了一个字体工具包

他们建议插入我的CSS中的代码是:

@font-face {
    font-family: 'junctionregularRegular';
    src: url('Junction-webfont.eot');
    src: local('☺'), 
        url('Junction-webfont.woff') format('woff'), 
        url('Junction-webfont.ttf') format('truetype'), 
        url('Junction-webfont.svg#webfontoNEpZXy2') format('svg');
}

现在,笑脸让我难过。但是src中的url数量也是如此-为什么它们建议这么多文件,并且在呈现页面时会将它们全部发送到浏览器?删除.ttf以外的所有内容是否有害?

Answers:


94

如果您在font-squirrel的font-face生成器中阅读了注释,您会发现这是paul irish的陷阱。

这是他博客文章的摘录:


和..关于@font-face语法

我现在建议在原始防弹语法上使用防弹笑脸版本。

@font-face {
  font-family: 'Graublau Web';
  src: url('GraublauWeb.eot');
  src: local('☺'),
       url('GraublauWeb.woff') format('woff'), url('GraublauWeb.ttf') format('truetype');
}

从防弹柱:

是的,这是一张笑脸。OpenType规范指出,任何两字节的unicode字符在Mac上都根本无法使用字体名称,因此可以降低有人实际发布具有该名称的字体的可能性。

笑脸是更好的解决方案有以下几个原因:

  • Webkit + Font Management软件可以弄乱本地引用,例如将字形转换为A块。

  • 在OS X上,当尝试访问在Library / Fonts之外可以访问的local()字体时,字体管理软件可能会更改系统设置以显示对话框。有关我的防弹帖子的更多详细信息。字体浏览器X还可以使Firefox中的其他内容混乱。

  • 尽管不太可能,但您可以引用与您认为的字体完全不同的local()字体。(使用不同字体,相同名称的Typophile帖子)至少有风险,并且您将对类型的控制权移交给了浏览器和主机。这种风险可能不值得避免字体下载。

这些都是非常好的案例问题,但是值得考虑。


12
非常感谢☺现在很明显-我刚刚在nicewebtype.com上找到了这篇文章,它也回答了我所有其他问题
stephenmurdoch 2010年

9
因此,从本质上讲,该代码的本地部分显示为“该字体在本地称为X”,并且我们使用笑脸符号来防止浏览器使用名称错误的字体(出于上述原因)。不错:)
abelito 2012年

3
您实际上需要local()声明吗?有多余吗?如果没有浏览器,浏览器不应该使用url()它吗?
西蒙东

当我在chrome开发工具中查看我的CSS源代码时,笑脸像这样:–正确吗?
安东尼

1
@Simon:本地声明在那里支持IE6-8(请参阅链接的博客文章),因此,除非您不关心这些浏览器,否则就需要它。
Stijn de Witt 2014年

34

local(☺︎)是一个CSS hack,可将IE6-8转移为下载无法使用的字体(它只能使用EOT格式的字体)。

解释:最后一个src属性在CSS级联中优先,这意味着CSS将从下到上进行解析。local(☺︎)将使IE跳过底部的src,而不会浪费带宽下载它无法使用的字体,而是直接.eot使用它将要使用的格式(在问题的上一行中定义)的字体。笑脸只是为了确保不会有带有该名称的本地字体(字符组合)。

在此处阅读更多信息:http : //nicewebtype.com/notes/2009/10/30/how-to-use-css-font-face/


-3

@ font-face最后的src属性在CSS级联中优先,这意味着CSS将从下至上进行解析。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.