是否有可能创建一个Mac OS特定的CSS来修复字体差异?

时间:2011-01-15 22:00:22

标签: css macos font-face

我正在与设计师合作开展一个项目,他坚持在页面中使用一些特定字体作为标题和各种元素。所以我们使用字体工具包嵌入@ font-face。

它在PC(Firefox,IE 7和8,Chrome,Safari)上运行良好,但在Mac OS(Safari和Firefox)上,字体不会以相同的方式垂直对齐。在浏览网页后,我没有找到任何解决方案,除了“浏览器和平台之间始终存在差异,与之共存”。

我知道跨平台的字体永远不会呈现完全相同,但这次它不像字体看起来更粗体或类似的东西。字体看起来好像它的基线在Windows和Mac OS X之间完全不同。在Mac OS上,字体大小为16px,比PC上高3px。

所以我正在寻找一个备份解决方案:有没有办法专门为Mac OS用户创建一个CSS?我不想只针对Safari,因为Safari PC没问题,Firefox Mac也不行。

或者,如果您有解决方案来修复不需要特定CSS文件的基线差异,我会很高兴听到它。

谢谢!

5 个答案:

答案 0 :(得分:13)

我担心浏览器/操作系统嗅探是你唯一的选择。 CSS本身不知道操作系统,也没有听说过专门针对osx的css hack。

这是我检测OSX并将OSX类添加到文档正文的最简单方法,因此您可以专门为OSX覆盖css样式。

if(navigator.platform.match('Mac') !== null) {
    document.body.setAttribute('class', 'OSX');
}

答案 1 :(得分:0)

如果设置显式行高不能解决问题,您可以使用后端为每个浏览器提供不同的样式表,并在应用程序中检测操作系统(通过用户代理)。你也可以在JS做同样的事情,但是当JS加载相关的样式时,可能会有一个FOUC。

答案 2 :(得分:0)

有一种更简单的方法。 http://rafael.adm.br/css_browser_selector/

它检测浏览器和操作系统,并允许您指定特定于它的类。

答案 3 :(得分:0)

如果你想要接近完美和无痛,你将不得不使用来自在线服务的常见字体或字体,如谷歌的免费字体库或其中一个付费字体库。这些字体经过设计和测试,可在网络上使用。

尝试并包含用户浏览器下载并尝试正确显示的字体很好,但不是完美的,也不会轻松。此外,请严格遵守许可限制 - 确保您的设计人员想要使用的字体已获得适当许可,以便在客户的网站上使用。

如果你必须进行浏览器嗅探并提供多个样式表,那么我会说你的设计已经坏了,需要修改。向您的设计师展示https://fonts.google.com,看看他是否喜欢这些 - 他们在所有现代浏览器中跨平台工作,有些非常灵活。编辑:哦,他们可以免费使用,无需担心许可。

答案 4 :(得分:0)

与@ChrisR答案一样,这是我检测MAC并将MAC类添加到文档主体的最简单方法,因此您可以专门为MAC覆盖CSS样式。

此外,这将保留当前的Body Class,仅保留ADDS Mac

if(navigator.platform.match('Mac') !== null) {
 document.body.setAttribute('class', document.body.className +' MAC');
}