使用@font-face
的正确方法是什么,以便浏览器在用户已经拥有该字体时不会下载该字体?
我正在使用@ font-face来定义DejaVu,它已经安装在我的系统(linux)上。 Firefox没有下载字体,但Chromium每次都下载它!
基于font squirrel和that question的CSS代码如下所示:
@font-face {
font-family: 'DejaVu Serif';
src: url('DejaVuSerif-webfont.eot');
src: local('DejaVu Serif'), url('DejaVuSerif-webfont.woff') format('woff'), url('DejaVuSerif-webfont.ttf') format('truetype'), url('DejaVuSerif-webfont.svg#webfontCFu7RF0I') format('svg');
font-weight: normal;
font-style: normal;
}
/* ... @font-face definitions for italic and bold omitted ... */
@font-face {
font-family: 'DejaVu Serif';
src: url('DejaVuSerif-BoldItalic-webfont.eot');
src: local('DejaVu Serif Bold Italic'), url('DejaVuSerif-BoldItalic-webfont.woff') format('woff'), url('DejaVuSerif-BoldItalic-webfont.ttf') format('truetype'), url('DejaVuSerif-BoldItalic-webfont.svg#webfontQAewh7pf') format('svg');
font-weight: bold;
font-style: italic;
}
答案 0 :(得分:76)
如果要先检查本地文件,请执行以下操作:
@font-face {
font-family: 'Green Sans Web';
src:
local('Green Web'),
local('GreenWeb-Regular'),
url('GreenWeb.ttf');
}
有更精细的描述of what to do here。
答案 1 :(得分:-3)
我实际上并没有对font-face
做过任何事情,所以请注意这一点,但我不认为浏览器有任何办法明确告诉用户是否安装了给定的网络字体机器与否。
例如,用户可以在其计算机上安装具有相同名称的不同字体。明确告诉的唯一方法是比较字体文件,看它们是否相同。如果不首先下载您的网络字体,浏览器就无法做到这一点。
当您在font
声明中实际使用该字体时,Firefox是否会下载该字体? (例如h1 { font: 'DejaVu Serif';
)?