如何在网站上添加一些非标准字体?

时间:2008-09-20 11:26:52

标签: html css fonts font-face

有没有办法在不使用图片Flash或其他图片的情况下在网站上添加一些自定义字体?

例如,我正在一些婚礼网站上工作,我找到了很多适合该主题的好字体,但我找不到在服务器上添加该字体的正确方法,我该如何包含CSS中的字体加入HTML?这可能没有图形吗?

22 个答案:

答案 0 :(得分:472)

这可以通过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>

如果您使用TrueType字体(TTF)或Web开放字体格式(WOFF),则为supported for all of the regular browsers

答案 1 :(得分:113)

您可以通过Google Web Fonts添加一些字体。

从技术上讲,字体是在Google上托管的,您可以在HTML标题中链接它们。然后,您可以使用@font-faceread about it)在CSS中自由使用它们。

例如:

<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 uses it for an article title.)。但是,到目前为止Google Font Directory中没有那么多字体可供使用。

答案 2 :(得分:70)

可行的方法是使用@ font-face CSS声明,该声明允许作者指定在线字体以在其网页上显示文本。通过允许作者提供自己的字体,@ font-face无需依赖用户在其计算机上安装的有限数量的字体。

看一下下表:

enter image description here

如您所见,主要由于跨浏览器兼容性,您需要了解几种格式。移动设备中的场景并没有太大差异。

解决方案:

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 - 大多数浏览器

事情是shifting heavily toward 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;
}

参考文献和进一步阅读:

这主要是您需要了解的有关实现此功能的内容。如果您想更多地研究这个主题,我将鼓励您查看以下资源。我在这里提出的大部分内容摘自以下

答案 3 :(得分:16)

如果使用非标准字体,则表示标准格式的自定义字体,这是我的工作方式,它适用于我目前检查过的所有浏览器:

@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字体。在线提供的一些工具可以进行转换。

但是如果你想以非标准格式(位图等)附加字体,我无法帮助你。

答案 4 :(得分:11)

我发现在网站上使用非标准字体的最简单方法是使用 sIFR

它确实涉及使用包含字体的Flash对象,但如果未安装Flash,它会很好地降级为标准文本/字体。

样式在CSS中设置,JavaScript为您的文本设置Flash替换。

编辑:(我仍然建议将图像用于非标准字体,因为sIFR会增加项目时间并需要维护)。

答案 5 :(得分:10)

Typeface.jsCufon是另外两个有趣的选项。它们是JavaScript组件,可以通过新的&lt; canvas&gt;呈现JSON格式的特殊字体数据(您可以在其网站上从TrueTypeOpenType格式转换)。所有较新的浏览器中的元素,除了Internet Explorer和Internet Explorer中的VML

两者(截至目前)的主要问题是选择文本不起作用或至少只是非常笨拙。

不过,对于头条新闻来说,这是非常好的。正文...我不知道。

而且速度惊人。

答案 6 :(得分:10)

文章 Font-face in IE: Making Web Fonts Work 表示它适用于所有三种主流浏览器。

以下是我工作的示例:http://brendanjerwin.com/test_font.html

更多讨论在 Embedding Fonts

答案 7 :(得分:8)

或者您可以尝试sIFR。我知道它使用Flash,但仅限于可用。如果Flash不可用,它将以原始(CSS)字体显示原始文本。

答案 8 :(得分:5)

  

有没有办法在网站上添加一些自定义字体而不使用... Flash?

当然,请使用Silverlight

答案 9 :(得分:4)

如果您使用ASP.NET,那么生成基于图像的字体非常容易,而无需实际使用以下命令安装(如添加到已安装的字体库中)字体:

PrivateFontCollection pfont = new PrivateFontCollection();
pfont.AddFontFile(filename);
FontFamily ff = pfont.Families[0];

然后使用该字体绘制到Graphics

答案 10 :(得分:4)

Safari和Internet Explorer都支持CSS @ font-face规则,但它们支持两种不同的嵌入字体类型。 Firefox计划很快支持与Apple相同的类型。 SVG可以嵌入字体,但尚未广泛支持(没有插件)。

我认为我见过的最便携的解决方案是使用JavaScript函数替换标题等,使用您选择的字体生成并缓存在服务器上的图像 - 这样您只需更新文本即可不得不在Photoshop中填充。

答案 11 :(得分:4)

W3C推荐的技术称为“嵌入”,这里有三篇文章对其进行了详细描述:Embedding Fonts。在我有限的实验中,我发现这个过程容易出错,并且在使其在多浏览器环境中运行方面取得了有限的成功。

答案 12 :(得分:3)

我做了一些研究并挖出了 Dynamic Text Replacement (2004-06-15发表)。

这种技术使用图像,但似乎是“免提”。您编写了自己的文本,并且让一些自动脚本在运行时为您自动在页面上进行查找和替换。

它有一些限制,但它可能是比我见过的所有其他更容易的选择(和更多浏览器兼容)。

答案 13 :(得分:3)

它看起来只适用于Internet Explorer,但Google快速搜索“html embed fonts”会产生http://www.spoono.com/html/tutorials/tutorial.php?id=19

如果你想保持与平台无关(你应该!)你将不得不使用图像,或者只是使用标准字体。

答案 14 :(得分:3)

也可以使用WOFF字体 - 例如here

@font-face {
font-family: 'Plakat Fraktur';
src: url('/resources/fonts/plakat-fraktur-black-modified.woff') format('woff');
font-weight: bold;
font-style: normal;
 }

答案 15 :(得分:3)

只需提供这样的实际字体链接,您就可以了

<!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>

答案 16 :(得分:2)

有关替代方法,请参阅文章 50 Useful Design Tools For Beautiful Web Typography

我只使用了Cufon。我发现它可靠且易于使用,所以我坚持使用它。

答案 17 :(得分:2)

Typeface.js JavaScript方式:

  

使用typeface.js,您可以嵌入自定义   您的网页中的字体,所以你不这样做   必须将文字渲染到图像

     

而不是创建图像或使用   flash只是为了显示您网站的图片   您想要的字体中的文字,您可以使用   typeface.js并用纯HTML编写   和CSS,就像你的访客一样   本地安装的字体。

http://typeface.neocracy.org/

答案 18 :(得分:2)

Monotype最近发布了很多字体以及在您的网页上使用它们的新系统:http://www.webfonts.fonts.com/

答案 19 :(得分:2)

如果您有自己的字体文件,则需要为其他浏览器添加该字体的更多格式。

为此,我使用像Fontsquirrel这样的字体生成器,它提供了所有的字体格式和放大器。它的@ font-face CSS,你只需要拖动&amp;将其放入CSS文件中。

答案 20 :(得分:1)

在这种情况下,我担心图形是你唯一的选择。

答案 21 :(得分:0)

@font-face {
font-family: "CustomFont";
src: url("CustomFont.eot");
src: url("CustomFont.woff") format("woff"),
url("CustomFont.otf") format("opentype"),
url("CustomFont.svg#filename") format("svg");
}