我在我的网站上使用Google Webfonts服务并严重依赖它。它在大多数浏览器上呈现得很好,但在Windows上的Chrome中它呈现得特别糟糕。非常不稳定和像素化。
到目前为止,我发现Chrome需要首先加载.svg格式字体。我使用的字体,称为Asap,仅在.woff中可用。我使用免费在线服务将其转换为.svg,但当我将其添加到我的样式表(在.woff之前)时,它没有改变任何内容。
我也试过了:
-webkit-font-smoothing: antialiased;
text-shadow: 0px 0px 0px;
希望这两种方法能够帮助文本呈现更加流畅。
现在我的想法已经用完了,我不想改变字体。有谁知道我怎么能解决这个问题?我一直在使用Adobe Browserlab来测试渲染,看看我只拥有一台mac。该网站的链接是:www.symvoli.nl/about
提前致谢!
编辑2013年4月11日:
Chrome 35 Beta似乎终于解决了这个问题:
答案 0 :(得分:66)
谷歌终于在Chrome 37中修复了这个问题!但由于历史原因,我不会删除这个答案。
创建该问题是因为 chrome实际上无法呈现具有正确消除锯齿功能的TrueType字体。但是,chrome仍然可以很好地呈现SVG文件。如果您使用woff上方的语法移动svg文件的调用,chrome将下载svg并使用它而不是woff文件。像你这样的一些技巧建议工作得很好,但仅限于某些字体大小。
但是这个错误对于Chrome开发团队来说是众所周知的,并且自2012年7月以来一直在修复。请参阅此处的官方错误报告主题:https://code.google.com/p/chromium/issues/detail?id=137692
显然某些网站在渲染svg 时可能会遇到间歇性间距问题。所以有一个better way来剥皮。如果您使用特定于Chrome的媒体查询来调用svg,则间距问题会消失:
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: 'MyWebFont';
src: url('webfont.svg#svgFontName') format('svg');
}
}
Fontspring防弹语法被修改为首先服务于svg:
@font-face {
font-family: 'MyWebFont';
src: url('webfont.eot');
src: url('webfont.eot?#iefix') format('embedded-opentype'),
url('webfont.svg#svgFontName') format('svg'),
url('webfont.woff') format('woff'),
url('webfont.ttf') format('truetype');
}
答案 1 :(得分:18)
-webkit-text-stroke: 0.5px;
仅在大文字上使用它,因为它会影响您的网页效果。
答案 2 :(得分:8)
此处通过首先调用.svg文件http://www.adtrak.co.uk/blog/font-face-chrome-rendering/
建议修复答案 3 :(得分:4)
我尝试了很多解决方案,最后提出了一个适用于较新版本Chrome的解决方案,这些解决方案不适用于更改文件的顺序:
基本上,我将TTF文件移动到特定于Mozilla的部分。
@font-face {
font-family: 'MyWebFont';
src: url('webfont.eot');
src: url('webfont.eot?#iefix') format('embedded-opentype'),
url('webfont.svg#svgFontName') format('svg'),
url('webfont.woff') format('woff');
}
@-moz-font-face {
font-family: 'MyWebFont';
src: url('webfont.ttf') format('truetype');
}
答案 4 :(得分:2)
Tom& font-spring因某些原因没有为我做这件事。 Sam Goddard的此修复虽然做到了:
在尝试自己之后,我偶然发现了这个问题似乎是一个体面的,非常简单的解决方案。看来Chrome使用@ font-face工具包中的.svg文件,并且不喜欢最后调用。以下是使用CSS的@ font-face的标准调用:
// font-face inclusion
@font-face {
font-family: 'font-name';
src: url('path-to-font/font-name.eot');
src: url('path-to-font/font-name.eot?#iefix') format('eot'),
url('path-to-font/font-name.woff') format('woff'),
url('path-to-font/font-name.ttf') format('truetype'),
url('path-to-font/font-name.svg') format('svg');
font-weight: normal;
font-style: normal;
}
从示例中可以看出,.svg文件位于被叫URL列表的最后。如果我们修改代码以定位webkit浏览器,那么告诉他们仅使用.svg文件。
// Usage
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: ‘font-name';
src: url(‘path-to-font/font-name.svg’) format(‘svg’);
}
}
答案 5 :(得分:1)
它可能只是你使用“asap”在某些尺寸下不能很好地渲染的字体。我将h1
的尺寸从3.5em
更改为50px
,看起来好一点。可能不是完美的解决方案,但我注意到很多谷歌网页字体可能无法预测
答案 6 :(得分:0)
我在Firefox中开发。我的经验是FF在没有任何额外规则的情况下显示ttf字体(超出@ font-face调用字体文件的url)。然而,Chrome是另一回事。即使使用-webkit-font-smoothing:antialiased;规则它仍然显示任何字体相当粗糙。 Safari似乎没有那个问题,所以它本身并不是Webkit,它不能干净地呈现字体,这是一个Chrome问题。
我没有尝试添加-webkit-text-stroke:0.5px;规则,但会。
在上面的答案中,我真的很喜欢Tom Sarduy的答案。除了对问题的良好描述外,他还提供了一个很棒的@ font-face堆栈来覆盖所有主流浏览器。
答案 7 :(得分:0)
Chrome中的Web字体呈现的另一个链接参考 -
http://www.fontspring.com/blog/smoother-web-font-rendering-chrome
答案 8 :(得分:0)
有同样的事情。除了Chrome之外的所有浏览器都很好 - 甚至IE10和9都很好。 Dreamwaeevr CS6也使用了类似版本的fontsprings代码,但最后有svg。在woff和ttf之前改变它的SVG并且世界上所有的都是好的。汤姆在那里与你的例子打成一片,实际上已经过了你的代码并映射到你需要的字体的路径,你就是在做生意!
答案 9 :(得分:0)
似乎Google可能根据浏览器和操作系统提供不同的woff文件。
我发现,如果我从IE下载字体,它比Mac上针对特定字体在Safari上做的大10k左右。 43k vs 33k。此外,IE版似乎在Mac上看起来很好,但Mac版似乎在PC上运行不正常。 Mac版本在PC上的Mozilla Firefox中看起来最差。
试试这个: http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,600,400italic,600italic
SourceSansPro-Regular.woff PC版本27k
SourceSansPro-Regular.woff Apple版24k
答案 10 :(得分:0)
我尝试了很多方法: 用font-face加载svg -webkit-字体平滑 ...
后
-webkit-transform: rotate(-4.7deg) translate3d( 0, 0, 0);
旋转更顺畅但主要问题还没有消失。
对我来说,解决方案是添加:
-webkit-text-stroke: 0.5px;
答案 11 :(得分:0)
https://www.gettingthingstech.com/how-to-fix-jagged-font-rendering-in-google-chrome/
这篇文章解释了一些关于谷歌chromes实验功能。显然启用" DisableWrite"选项修复了锯齿状字体。这显然是修复PER机器而不是全面的。