有没有一种方法可以在网站上添加一些自定义字体而不使用图像,Flash或其他图形?
例如,当我在一个婚礼网站上工作时,我发现了很多适合该主题的字体。但是我找不到在服务器上添加该字体的正确方法。以及如何在CSS中将该字体与CSS结合在一起?没有图形就可以做到吗?
有没有一种方法可以在网站上添加一些自定义字体而不使用图像,Flash或其他图形?
例如,当我在一个婚礼网站上工作时,我发现了很多适合该主题的字体。但是我找不到在服务器上添加该字体的正确方法。以及如何在CSS中将该字体与CSS结合在一起?没有图形就可以做到吗?
Answers:
这可以通过CSS完成:
<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>
您可以通过Google网络字体添加一些字体。
从技术上讲,这些字体托管在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-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
?我应该将其更改为字体家族名称还是保留原样?
如果使用非标准字体,则表示标准格式的自定义字体,这是我的操作方法,它适用于到目前为止我检查过的所有浏览器:
@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中的Font-face文章:使Web字体可用表示该方法可与所有三种主要浏览器一起使用。
这是我工作的示例:http : //brendanjerwin.com/test_font.html
有关嵌入字体的更多讨论。
Typeface.js和Cufon是另外两个有趣的选项。他们是渲染JSON格式的特殊字体数据(你可以从转换JavaScript组件的TrueType或OpenType字体通过新的<canvas>元素中除了IE,并通过所有新的浏览器格式在其网站上)VML在Internet Explorer中。
两者的主要问题(到目前为止)是选择文本不起作用,或者至少只能非常笨拙地起作用。
尽管如此,对于头条新闻还是很好的。正文...我不知道。
而且速度惊人。
Safari和Internet Explorer都支持CSS @ font-face规则,但是它们支持两种不同的嵌入式字体类型。Firefox计划不久后支持与Apple相同的类型。SVG可以嵌入字体,但尚不被广泛支持(没有插件)。
我认为我见过的最可移植的解决方案是使用JavaScript函数用您选择的字体将标题等替换为在服务器上生成并缓存的图像-这样,您只需更新文本即可,而不必在Photoshop中的东西。
如果使用ASP.NET,生成基于图像的字体真的很容易,而无需实际使用以下方法在服务器上安装(如添加到已安装的字体库中)字体:
PrivateFontCollection pfont = new PrivateFontCollection();
pfont.AddFontFile(filename);
FontFamily ff = pfont.Families[0];
然后以该字体绘制到上Graphics
。
看起来它只能在Internet Explorer中使用,但是Google对“ html embed fonts”的快速搜索会产生http://www.spoono.com/html/tutorials/tutorial.php?id=19
如果要保持平台无关性(并且应该!),则必须使用图像,否则仅使用标准字体。
我做了一些研究,并研究了“ 动态文本替换”(发布于2004-06-15)。
该技术使用图像,但看起来是“免提”的。您编写文本,然后让一些自动化脚本在页面上为您即时进行自动查找和替换。
它有一些局限性,但它可能是我所见过的所有其他选择中较容易的选择之一(并且与浏览器更兼容)。
只需提供这样的实际字体链接,您就可以轻松开始了
<!DOCTYPE html>
<html>
<head>
<link href='https://fonts.googleapis.com/css?family=Montserrat' rel='stylesheet'>
<style>
body {
font-family: 'Montserrat';font-size: 22px;
}
</style>
</head>
<body>
<h1>Montserrat</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
</body>
</html>
Typeface.js JavaScript方式:
使用typeface.js,您可以在网页中嵌入自定义字体,从而不必将文本呈现为图像
您可以使用typeface.js并以纯HTML和CSS编写内容,就像访问者已在本地安装字体一样,而不必创建图像或仅使用Flash来以所需字体显示网站的图形文本。
有关替代方法,请参见文章50个有用的漂亮Web排版设计工具。
我只用过Cufon。我发现它可靠且非常易于使用,因此我坚持使用它。
如果您有一个字体文件,则需要为其他浏览器添加该字体的更多格式。
为此,我使用诸如Fontsquirrel之类的字体生成器,它提供了所有字体格式及其@ font-face CSS,您只需要将其拖放到CSS文件中即可。
@font-face
它得到了越来越广泛的支持,推荐用于一般用途。您只需要知道IE需要与其他浏览器使用不同格式的字体。参见stackoverflow.com/questions/2219916/is-font-face-usable-now