【问题标题】:Fonts not rendering uniformly in browsers字体在浏览器中呈现不均匀
【发布时间】:2012-08-08 13:26:17
【问题描述】:

我正在尝试在我的网站和 css 中使用自定义字体,我有以下代码:

@font-face {
    font-family: 'Sketch';
    src: url('../fonts/Sketch.eot');
    src: url('../fonts/Sketch.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}
ul#holder {font-family:'Sketch'}

字体确实在 Firefox 中出现。在 chrome 中,字体似乎没有平滑渲染,并且看起来不如 firefox(我应该放弃在侧边栏中使用字体的想法并使用显示平滑文本的图像吗?;-/)

在 IE 中,字体根本不显示。应该怎么做才能在 Chrome 中正确平滑这些字体并让它们在 IE 中正常工作?

【问题讨论】:

  • 即使您设法为每个浏览器导入正确的字体格式,您也永远无法在任何地方获得完全相同的渲染,因此您最好习惯它+您无法控制用户的字体设置。无论如何,它仍然比使用图像作为文本要好。
  • 如果你使用 url-rewrite 或者字体放在不同的 sundomain 中,输入完整的字体 url,并检查是否允许跨域访问“*”,My Reghards :)跨度>

标签: html css fonts


【解决方案1】:

不同的浏览器支持不同的字体格式:

因此,您需要创建所有格式的字体。您可以使用Font Squirrel(谢谢,effectica)。

然后,您可以像这样导入它们:

@font-face {
    font-family: 'Comfortaa Regular';
    src: url('Comfortaa.eot');
    src: local('Comfortaa Regular'), 
         local('Comfortaa'), 
         url('Comfortaa.ttf') format('truetype'),
         url('Comfortaa.svg#font') format('svg'); 
}

这不是唯一可能的方法。您可以在 Paul Irish 的博客上找到有关此问题的 more complete information

而且,无论如何,它们的外观在不同的浏览器中可能会略有不同。

【讨论】:

  • 兼容性图表+1。不过,我可能会建议您查看Paul Irish's article,了解不同@font-face 语法和最简洁选项的优缺点。
  • @EdwardRuchevits:谢谢。我使用 fontsquirrel 下载所有格式的字体。 Firefox 和 IE 现在都运行良好,但 chrome 仍然看起来很糟糕而且参差不齐。 :-(
【解决方案2】:

所有主要浏览器的字体渲染引擎/技术略有不同,渲染输出质量也不同。因此,您的字体在各种浏览器之间不太可能是“像素完美”的,并且会出现一些质量差异。哪个最终看起来最好取决于字体。我有一个字形字体,在 Chrome 和 IE 上看起来很棒,但在 Firefox 上看起来有点褪色......

无论如何,有一个小技巧可以帮助您让字体在 IE 上工作,请参阅第二个 src 行。这是必要的,因为虽然添加额外的字体格式可以确保对每个浏览器的支持,但不幸的是它会导致 IE9 之前的 IE 版本出现问题。那些较旧的浏览器将第一个 url(' 和最后一个 ') 之间的所有内容视为单个 URL 请求,因此将无法加载字体。这个 hack 让浏览器认为 src 属性的其余部分是该查询字符串的参数,因此它会寻找正确的 URL 并加载字体:

@font-face {
    font-family: 'Sketch';
    src: url('../fonts/SketchRockwell.eot');
    src: url('../fonts/SketchRockwell.eot?#iefix') format('embedded-opentype'),
         url('../fonts/SketchRockwell.woff') format('woff'),
         url('../fonts/SketchRockwell.ttf') format('truetype'),
         url('../fonts/SketchRockwell.svg#countersoftfontRegular') format('svg');
    font-weight: normal;
    font-style: normal;
}

以上内容来自 Font Squirrel 的 @font-face 工具包生成器,可通过 http://www.fontsquirrel.com/fontface/generator 访问。在那里,您可以上传您的字体并将其转换为您希望的任何格式。您还可以控制它输出的 CSS 语法,对字符进行子集化以减小文件大小,并使用更多选项来微调字体

此外,如果您要在文本上使用粗体或斜体,那么您需要包含相应更改每个组合的字体粗细和字体样式的规则版本,以便浏览器知道在使用什么字体时遇到带有粗体的 CSS 规则。

每种字体通常都有一个设计目的,并且是为特定的工作而创建的。大多数商业字体并非设计用于在屏幕上以小尺寸查看,因此在许多情况下,将这些 @font-face 保留为标题并继续使用网络安全字体(如 Georgia 和 Lucida)作为正文是最有意义的。

字体的另一个影响易读性的方面是它们是如何消除锯齿和提示的。现在,网络字体的边缘通常比传统字体更锯齿,即使在抗锯齿的情况下也是如此,通常是因为大多数字体不是为在屏幕上查看而设计的。更高质量的字体,以及为网络设计的字体,具有更好的提示,

【讨论】:

  • 谢谢。我使用 fontsquirrel 下载所有格式的字体。 Firefox 和 IE 现在都运行良好,但 chrome 仍然看起来很糟糕和锯齿状。 :-(
  • 您可以尝试查看 chrome 商店中的抗锯齿插件。它可能会让你的事情变得更好 - 但当然它不会帮助其他人chrome.google.com/webstore/detail/…
【解决方案3】:

这是创建可嵌入字体包的绝佳 URL:

http://fontface.codeandmore.com/

上传您的 TTF 或 OTF 字体,它会为您创建完整的字体套件,包括 实现 HTML 和 CSS 示例。

干杯!

【讨论】:

  • 如果您要使用字体包,我实际上会推荐Font Squirrel,因为您对工具包有很多控制权。他们也提供许多预制的
  • Font Squirrel 很好,但有一些字体他们不会为它们制作工具包(我遇到过这种带有 Helvetica 系列字体等...)。链接@codeandmore.com 还没有让我失望。
【解决方案4】:

爱德华都说了。 Chrome 曾经因为它显示某些字体的方式让我发疯。

如果您有字体文件,您可以使用font squirrel 生成代码以及所有浏览器所需的所有字体文件。

【讨论】:

  • 谢谢。我使用 fontsquirrel 下载所有格式的字体。 Firefox 和 IE 现在都运行良好,但 chrome 仍然看起来很糟糕和锯齿状。 :-(
猜你喜欢
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多