【问题标题】:Why is Safari’s default font tracking/letter-spacing different than other browsers?为什么 Safari 的默认字体跟踪/字母间距与其他浏览器不同?
【发布时间】:2019-09-27 15:00:13
【问题描述】:

我在使用 Safari 时遇到问题,其中使用 webfonts 的文本块(不确定 webfonts 是否存在问题)在 Safari 中的换行方式与在任何其他浏览器中的换行方式不同。在这个特定的例子中,我们将这些块设计为看起来,就像它们设置为text-align: justify;,但实际上它们设置为text-align: left;text-align: justify; 在此设置中是不受欢迎的,因为它在计算单词之间的空间方面做得很差。

需要了解的重要事项:

  • 正如我所提到的,布局使用网络字体。哪种网络字体都没有关系(我已经审查了数百个,而且所有人都会遇到这种情况)。
  • 整个页面,包括内边距和字体大小,都使用视口宽度 (vw)。这里的想法是文本块在所有浏览器大小上均等地缩放并保留其布局,包括碎布。

视觉辅助:


有关布局和尺寸的详细信息:

  • 第 1 帧:Safari 桌面。
  • 第 2 帧:Chrome 桌面。
  • 第 3 帧:Chrome 在 Safari 上的 50% 不透明度。
  • 此屏幕截图中的窗口宽度为1220px
  • 左/右填充为padding: 0 calc(129 / 1220 * 100vw);,计算结果为129px
  • 剩下962px 的可用内容空间。
  • 对于所有内容,letter-spacing 默认设置为 0。

那么,任何人都知道为什么 Safari 似乎有夸大的跟踪/字母间距?



编辑

我们刚刚启动了相关网站,因此您可以在此处查看实际问题:https://www.typography.com/fonts/hoefler-text/overview

【问题讨论】:

  • 顺便说一句,GIF 是说明问题的绝佳方式。我希望以这种方式提出更多问题!
  • 谢谢。 :) 我花了 20 分钟把它放在一起,用 1 分钟写这篇文章。但我希望它可以帮助其他人节省时间来弄清楚我到底在做什么。
  • 不得不说,如果没有跨浏览器比较,该网站看起来确实不错。这是一个很好的提醒,当涉及到字体系列时,“一分钱一分货”......

标签: css google-chrome safari webfonts typography


【解决方案1】:

嗯,有很多东西在起作用。

首先,Chrome 和 Safari 使用不同的默认值来渲染文本,但除此之外,由于系统字体渲染的工作方式,不同版本的 MacOS 或 Windows 上的 Chrome 也会以不同的方式渲染文本。

您通常可以通过将文本 CSS 设置为:

让 Safari 和 Chrome(在同一系统上)感觉更接近:

text-rendering: optimizeLegibility 因为这是 Chrome 上的默认设置,但 Safari 默认设置为 optimizeSpeed

明确设置:font-feature-settings: "kern";font-smoothing: antialiased 也可能是明智的(注意它们都需要供应商前缀)

接下来,确保指定数字字体粗细。例如:font-weight: 400 表示“常规”。 (浏览器可能不会为普通/粗体关键字选择相同的权重)

最后,确保您提供最优化的网络字体版本(Typekit 和 Google 通常会为您执行此操作,但如果您是自行托管字体,则会出现问题)


编辑:

强制 Chrome 和 Safari 创建一个“合成层”(基本上意味着它的 GPU 加速)可能是值得的。你可以通过backface-visibility: hidden 做到这一点。尽管我怀疑这是 MacOS 特有的事情,并且浏览器中可能没有解决方案。

【讨论】:

  • 见鬼,如果我还没有尝试过。 :/ 我再试一次,让你知道。
  • 希望对您有所帮助。我还添加了一些其他的东西来尝试。
  • 是的,没有骰子。这是有问题的网站:typography.com/fonts/hoefler-text/overview
  • 无赖,除了里面的其他东西之外,您还尝试过吗?看起来 MacOS 在系统级别(Safari 使用)更改了文本渲染。 Chrome 是完全独立的,因此不会受到同样的影响。
  • 我们将所有的网络字体拆分为不同的样式,因此您不必指定font-weight。总是font-weight: normal;
【解决方案2】:

font-feature-settings: "kern"; 添加到字体元素解决了我的Safari 无法正确呈现字母间距的问题。

【讨论】:

  • 谢谢!这解决了text-anchor:middle 在计算 SVG 中文本的宽度时不考虑字符对的字距调整的问题。默认情况下,Chrome 会这样做。这使得 Safari 文本完美匹配。
  • 我很高兴,@D.McG.! Safari 的问题让我发疯了。很高兴对您有所帮助!干杯!
【解决方案3】:

我在使用 .woff 字体构建 html 横幅时遇到了类似的问题:Safari 正在应用夸张的跟踪/字母间距。 Bryce 建议使用font-weight: 400; 解决了问题

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多