Php 如何防止Google字体请求本地字体?

Php 如何防止Google字体请求本地字体?,php,font-face,google-font-api,Php,Font Face,Google Font Api,我一直在尝试使用谷歌字体API为我的网站使用Ubuntu字体,但我遇到了一个问题,因为谷歌的Ubuntu字体和我机器上安装的本地Ubuntu字体之间存在冲突。最终的结果是我不能使用字体重量为400的Ubuntu字体;我的字号限制为300和500。主站点的字体是300,但我希望用400来强调我的标题 我想通过编辑谷歌字体用来删除对本地字体的所有引用的CSS来避免这种情况。我已经手动尝试过了,效果很好。问题是谷歌提供的CSS是针对浏览器定制的,因此编辑我看到的CSS并将其存储在本地将导致字体只适用于

我一直在尝试使用谷歌字体API为我的网站使用Ubuntu字体,但我遇到了一个问题,因为谷歌的Ubuntu字体和我机器上安装的本地Ubuntu字体之间存在冲突。最终的结果是我不能使用字体重量为400的Ubuntu字体;我的字号限制为300和500。主站点的字体是300,但我希望用400来强调我的标题

我想通过编辑谷歌字体用来删除对本地字体的所有引用的CSS来避免这种情况。我已经手动尝试过了,效果很好。问题是谷歌提供的CSS是针对浏览器定制的,因此编辑我看到的CSS并将其存储在本地将导致字体只适用于与我使用相同浏览器的用户

那么,是否可以动态编辑CSS以删除对本地字体的引用


我有一个粗略的解决方案的想法,但我没有受过足够的教育,不知道它是否真的可以实现。基本上,最终用户可以通过PHP脚本进行请求。这个PHP文件读取用户的HTTP请求,包括有关浏览器的信息,然后使用完全相同的HTTP信息向Google Fonts API发出请求。谷歌字体提供了我们用户需要的CSS。剩下的就是字符串操作。这行得通吗?

然后您必须手动请求字体。所以,你可能会要求http://fonts.googleapis.com/css?family=Ubuntu. 在不同的浏览器中访问-它为每个浏览器提供请求并复制代码。我现在只使用它在Chrome中提供给我的内容,但是你会想要包括不同的字体格式。它说:

@font-face {
  font-family: 'Ubuntu';
  font-style: normal;
  font-weight: 400;
  src: local('Ubuntu'), url(http://themes.googleusercontent.com/static/fonts/ubuntu/v4/_xyN3apAT_yRRDeqB3sPRg.woff) format('woff');
}
将其复制到本地CSS,删除源参数中的本地CSS。然后,只需将字体族名称更改为类似

@font-face {
  font-family: 'Webuntu';
  font-style: normal;
  font-weight: 400;
  src: url(http://themes.googleusercontent.com/static/fonts/ubuntu/v4/_xyN3apAT_yRRDeqB3sPRg.woff) format('woff');
}
最后,更新字体引用以使用新名称:

p { font-family:'Webuntu', sans-serif; }

无需PHP:

此解决方案存在一个问题,即我们无法使用谷歌提供的特定于浏览器的目标定位。据我所见,没有类似display=swap的querystring参数允许我们告诉谷歌不要包含本地引用,这是一个遗憾,因为fonts.googleapis.com很容易实现local=false或类似。我们遇到了一个问题,即我们的设计师在他们的Windows 10设备上有一个本地蒙特塞拉特字体,如果卸载,它会神奇地重新安装,但重量都不同。遗憾的是,我们不能要求跳过本地参考资料