有没有一种方法可以在网站上添加自定义字体,而不使用图片、Flash或其他图形技术?
例如,我正在制作一个婚礼网站,发现有很多适合这个主题的漂亮字体。但是我找不到正确的方法将该字体添加到服务器上。那么如何通过CSS将该字体包含在HTML中呢?是否可以在不使用图形技术的情况下完成这项操作?
<style type="text/css">
@font-face {
font-family: "My Custom Font";
src: url(http://www.example.org/mycustomfont.ttf) format("truetype");
}
p.customfont {
font-family: "My Custom Font", Verdana, Tahoma;
}
</style>
<p class="customfont">Hello world!</p>
如果您使用TrueType字体(TTF)、Web开放字体格式(WOFF)或嵌入式Opentype(EOT),则它支持所有常规浏览器。
您可以通过 Google Web Fonts 添加一些字体。
从技术上讲,这些字体托管在 Google 上,您需要在 HTML 标头中链接它们。然后,您可以在 CSS 中自由地使用它们,使用 @font-face
(了解更多)。
例如:
在 <head>
部分中:
<link href=' http://fonts.googleapis.com/css?family=Droid+Sans' rel='stylesheet' type='text/css'>
然后在CSS中:
h1 { font-family: 'Droid Sans', arial, serif; }
这个解决方案看起来相当可靠(甚至Smashing Magazine也将其用作文章标题。)。然而,到目前为止Google Font Directory中可用的字体并不是很多。
推荐的方法是使用@font-face CSS声明,它允许作者指定在线字体以在其网页上显示文本。通过允许作者提供自己的字体,@font-face消除了依赖用户计算机上安装的有限字体数量的需要。
请看下表:
如您所见,由于跨浏览器兼容性问题,您需要了解几种格式。移动设备的情况也不太不同。
1 - 完全的浏览器兼容性
这是目前具有最深支持的方法:
@font-face {
font-family: 'MyWebFont';
src: url('webfont.eot'); /* IE9 Compat Modes */
src: url('webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('webfont.woff') format('woff'), /* Modern Browsers */
url('webfont.ttf') format('truetype'), /* Safari, Android, iOS */
url('webfont.svg#svgFontName') format('svg'); /* Legacy iOS */
}
2 - 大多数浏览器
事实上,许多浏览器正在转向使用 WOFF 格式,因此您可能可以采取以下方式:
@font-face {
font-family: 'MyWebFont';
src: url('myfont.woff') format('woff'), /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
url('myfont.ttf') format('truetype'); /* Chrome 4+, Firefox 3.5, Opera 10+, Safari 3—5 */
}
3 - 仅适用于最新的浏览器
甚至只需要WOFF格式。
使用方法如下:
body {
font-family: 'MyWebFont', Fallback, sans-serif;
}
这基本上就是你需要了解有关实现此功能的内容。如果您想进一步研究此主题,我鼓励您查看以下资源。我在这里列出的大部分内容都摘自以下材料
svgFontName
是什么意思?我应该将其更改为我的字体系列名称还是保留原样? - Gherman如果你所说的非标准字体指的是标准格式的自定义字体,那么这是我处理它的方式,并且在迄今为止所有我检查过的浏览器中都有效:
@font-face {
font-family: TempestaSevenCondensed;
src: url("../fonts/pf_tempesta_seven_condensed.eot") /* EOT file for IE */
}
@font-face {
font-family: TempestaSevenCondensed;
src: url("../fonts/pf_tempesta_seven_condensed.ttf") /* TTF file for CSS3 browsers */
}
所以,您需要同时拥有ttf和eot字体。一些在线工具可以进行转换。
但是,如果您想使用非标准格式(如位图等)的字体,则我无法提供帮助。
我发现在网站上使用非标准字体最简单的方法是使用sIFR。
它涉及使用包含字体的Flash对象,但如果没有安装Flash,则会优雅地退化为标准文本/字体。
样式设置在CSS中,JavaScript为您的文本设置Flash替代。
编辑:(我仍然建议使用图像来表示非标准字体,因为sIFR会增加项目时间并需要维护)。
这篇文章 Font-face在IE中:使Web字体工作 表示它可以在所有三个主要的浏览器中使用。
这是我成功运行的一个示例:http://brendanjerwin.com/test_font.html
更多讨论请参见 嵌入字体。
Typeface.js和Cufon是另外两个有趣的选择。它们是JavaScript组件,可以通过新的<canvas>元素在除Internet Explorer之外的所有更新的浏览器中以JSON格式呈现特殊字体数据(您可以从它们的网站上将其转换为TrueType或OpenType格式),并通过VML在Internet Explorer中呈现。
两者的主要问题(至少目前)是无法选择文本,或者只能相当笨拙地选择。
尽管如此,它非常适合用于标题。正文...我不知道。
而且速度惊人地快。
Safari和Internet Explorer都支持CSS @font-face规则,但它们支持两种不同的嵌入式字体类型。Firefox计划很快支持与苹果相同的类型。SVG可以嵌入字体,但目前尚未得到广泛支持(没有插件)。
我认为最可移植的解决方案是使用JavaScript函数替换标题等内容为在服务器上生成并缓存的所选字体的图像 - 这样您只需更新文本而不必在Photoshop中处理。
@font-face
得到了广泛支持并建议进行一般使用。你只需要知道IE需要不同格式的字体才能与其他浏览器兼容。请参见https://dev59.com/AXE95IYBdhLWcg3wp_kg。 - David Johnstone