我知道使用@font-face 允许浏览器下载自定义字体并在网页中使用它,就像任何系统字体一样。
我想知道的是浏览器是对字体进行编码还是在不暴露的情况下使用它?
谢谢
我知道使用@font-face 允许浏览器下载自定义字体并在网页中使用它,就像任何系统字体一样。
我想知道的是浏览器是对字体进行编码还是在不暴露的情况下使用它?
谢谢
浏览器无法保护字体的来源。一旦浏览器接收到信息,您就可以放心地假设用户将拥有对您发送的任何内容的完全访问权限。
因此,保持字体安全的问题要么在法律层面(通过选择允许嵌入的字体)上完成,要么通过服务器端混淆方案完成。例如,查看通过 TypeKit 嵌入的字体:
@font-face {
font-family:"rosewood-std-fill-1";
src:url(data:font/opentype;base64,d09GRgABAAAAAEa4ABMAAAAA2XwA.....);
font-style:normal;
font-weight:400;
}
字体通过 base64 编码过程进行了模糊处理。此外,字体分为两部分,字形的数量仅限于网站所需的字形。
另一方面,查看 FontSquirrel 和 Google Font API@font-face
套件,您可以看到字体的实际来源已发送给用户 - 无需混淆。此外,字体所有者可能会要求某种形式的归属,例如
如果字体是免费字体(0.00 美元许可费),您可以使用此字体嵌入字体,但前提是您在页面上放置 www.exljbris.nl 的链接和/或放置此通知
/* A font by Jos Buivenga (exljbris) -> www.exljbris.com */
在您的 CSS 文件中,尽可能靠近声明该字体的 Font-Face 嵌入的代码段。
在这个许可证中看到。因此,从所有这些中,我们可以有把握地得出结论,字体安全问题并没有发生在客户端,而是落在了开发者的肩上,因此浏览器不能也不做任何事情来阻止用户访问。到这些字体。
@font-face
告诉您的浏览器在哪里下载实际字体。
例如,当使用Google 的网络字体时,它们会给你这样的 CSS:
@font-face {
font-family: 'Cantarell';
font-style: normal;
font-weight: normal;
src: local('Cantarell'), url('http://themes.googleusercontent.com/font?kit=p5ydP_uWQ5lsFzcP_XVMEw') format('truetype');
}
如果您打开网址 ( http://themes.googleusercontent.com/font?kit=p5ydP_uWQ5lsFzcP_XVMEw ),您的浏览器将下载实际的 true type 字体文件。
我已经使用这种方法下载了谷歌的字体(所以我的 Photoshop 模型有正确的字体)。
在大多数情况下,字体文件是公开的,因为它直接从您的 CSS 文件链接,因此任何足够聪明的人都可以下载字体并将其安装在他们的机器上。这就是为什么大多数商业字体许可证禁止在带有@font-face
. 但是有一些技术可以限制这一点。例如,查看 Font Squirrel 的 @font-face 生成器上的“仅限 Web”选项。