【发布时间】:2014-11-19 13:28:04
【问题描述】:
我正在本地开发一个网站,因此我在 Windows 8 上的 WAMP 服务器正在提供这些页面。该站点将托管在安全服务器上,因此出于安全原因,我不能在源代码中使用fonts.google.com CDN。我想使用 @font-face 指令将字体嵌入到 .css 文件中,但字体无法在任何浏览器中正确显示。如果我包含托管 CDN 链接,将显示字体。我已经阅读了几篇关于 SO 的帖子,但我没有阅读过任何一篇回答我的特定问题的帖子。以下是我的代码以及我为解决此问题所采取的步骤:
在 main.css
中定义@font-face {
font-family: 'Open Sans', sans-serif;
src: url('../csfonts/OpenSans.ttf') format('truetype');
}
@font-face {
font-family: 'Lato', sans-serif;
src: url('../csfonts/Lato.ttf') format('truetype');
}
在 custom.css 文件中的 CSS 中使用
body {
font-family: 'Open Sans', sans-serif;
}
在 Chrome 控制台中,main.css 和 custom.css 都在 Network 窗口中加载,但字体未显示。我检查了console Elements 窗口中应该使用 Open Sans 字体的元素,在 Styles 面板中显示 Open Sans 字体是覆盖helvetica 字体。然而,字体看起来像Helvetica,而不是 Open Sans。我还检查了我的 HTML 中链接文件的cascade 顺序以及它们的路径,main.css 是页面上最后一个链接样式表(在custom.css 下方),所以main.css 应该优先正确的?
我还检查了this SO thread,认为我可能必须create and edit an .htaccess file(youtube 视频),我做到了。在httpd.conf文件中找到了如下指令,但是我还没有修改过,也不知道要修改什么才能看懂。
#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ".ht*">
Require all denied
</Files>
在我创建的 .htaccess 文件中,我放置了以下内容 (taken from this SO thread):
<FilesMatch "\.(ttf|otf|eot)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>
我将此文件保存在WAMP 上的www 文件夹中。然后我从我的页面中删除了 CDN 链接,并刷新了浏览器。字体仍然不显示。它似乎默认为 helvetica 或一些无衬线字体。
谁能告诉我我做错了什么以及如何解决这个问题?谢谢。
【问题讨论】:
标签: html css .htaccess wamp font-face