2012-02-23 63 views
10

我使用谷歌从字体的字体Ubuntu的:本地安装TTF覆盖谷歌字体

<link href='http://fonts.googleapis.com/css?family=Ubuntu:300,400,300italic,400italic,500,500italic,700,700italic' rel='stylesheet' type='text/css' /> 

我的样式表:

body { 
    font-family: 'ubuntu',arial; 
} 

它的工作原理,但如果安装具有相同名称的字体( Ubuntu),它会覆盖Google Fonts中的一个。

是否可以强制浏览器使用Google字体中的一个?

回答

11

答案不在于你的代码,而在于Google的。

这里有您所请求的CSS的一部分:它会询问是否可以加载本地文件在这里

@font-face { 
    font-family: 'Ubuntu'; 
    font-style: normal; 
    font-weight: bold; 
    src: local('Ubuntu Bold'), local('Ubuntu-Bold'), url('http://themes.googleusercontent.com/static/fonts/ubuntu/v4/0ihfXUL2emPh0ROJezvraLO3LdcAZYWl9Si6vvxL-qU.woff') format('woff'); 
} 

重点线为local('Ubuntu Bold')。 最简单的解决方案是复制Google的所有CSS,将其粘贴到您自己的CSS中,并将其名称修改为local('Ubuntu Bold NonExisting Name or Something Else')。这种字体不存在,不会替代CSS加载的字体。

P.S.我没有自己测试过。如果0ihfXUL2emPh0ROJezvraLO3LdcAZYWl9Si6vvxL-qU.woff的URL即将过期,那么您处于困境。尝试查看字体的许可证,并考虑自己托管字体,如果防止本地覆盖是一个优先事项。

+3

为什么把它改成'local('Something Nonexistant')'?为什么不只是删除当地人,所以它只是'url('whatever')'? – 2012-02-23 20:05:25

+3

这种技术(指定不存在的字体名称)是“笑脸”方法的基础。后来,UTF-8字符的用法引起了Android的一些错误,所以这个方法不再被推荐。但我认为,这是有原因的。可能有些浏览器试图检测并加载本地字体。 但是,尝试不使用'local()'并查看它是否适用于每个浏览器都是一个好主意。它可能。 – 2012-02-23 20:12:39

+0

谢谢。它似乎工作。我明天会做更多的测试并更新这个问题。我忽略了Matt的建议。 – Martin 2012-02-23 20:18:58