Safari 16.2 中的 WebKit 功能

今天,我们很高兴宣布 Safari 16.2 正式发布。此次更新重点在于提高与其他浏览器的互操作性,这是 WebKit 对 2022 年 Interop 项目的贡献之一。

Interop 2022

一年前,来自 Apple、Bocoup、Google、Igalia、Microsoft 和 Mozilla 的代表齐聚一堂,共同致力于改善浏览器之间的互操作性。该组织选择了 15 个对 Web 开发影响最大的重点领域,并将此项目命名为 Interop 2022。该项目针对 一组特定的 Web 技术 运行自动化测试,并鼓励浏览器遵循这些技术的 Web 标准

截至今天,Safari 技术预览版 159 通过了 Interop 2022 测试的 98.5%。(这使得 Interop 仪表盘 上的分数为“94”,该分数是在减去因小组调查项目进展滞后而扣除的 3.8 分并从 94.7 四舍五入向下取整后得出的。)

A line graph showing improvements to Interop 2022 scores across the year. Safari started at 59%, now at 94.7%. Firefox started at 70%, now at 89.1%. Chrome started at 60.7%, now at 89%. All three browsers were about even in the spring. Firefox and Safari pulled ahead for most of the summer. Then Safari pulled into first place in the fall.

正如 Safari 技术预览版的结果所示,WebKit 在提高 Interop 2022 测试通过率方面取得了稳步进展。更多详细信息请访问 wpt.fyi/interop-2022

在 WebKit 发布新功能的激动人心的一年之后,我们还有两个待完成的任务来进一步提高我们的 Interop 2022 分数。

字体特性

Safari 16.2 为 font-variant-alternates 属性添加了额外值的支持:annotation(), character-variant(), ornaments(), styleset(), stylistic(), swash(), 以及相关的 @font-feature-values at-rule。

这些额外的值完善了 Safari 对 font-variant-alternates 的支持,它是创建出色排版的强大工具。它为开发者提供了一种方法来指定激活网络字体的哪些特性——修改一段文本以使用字体的历史形式,或者添加花饰、装饰或其他更多。具体来说,font-variant-alternates 的功能取决于每个网络字体包含的特性。

希望,一旦 所有浏览器都支持 font-variant-alternates(由于 Interop 2022 的倡导),Web 开发者和设计师将开始更频繁地使用字体特性。

最后基线

CSS 对齐 允许 Web 开发者描述在 Flexbox 和 Grid 格式化上下文中,项目周围或项目之间应如何分配空间。它包含多个属性,例如 justify-content, align-items, 和 place-self。这些属性支持许多值,其中包括三个用于 基线对齐 的值:baseline, first baseline, 和 last baseline。Safari 自实现 CSS 对齐支持以来,一直支持前两个值。

Safari 16.2 添加了对 last baseline 的支持,从而可以在 Flexbox 和 Grid 项目中沿着其包含的最后一行文本的基线对齐。这意味着现在支持以下规则

align-items: last baseline;
align-content: last baseline;
align-self: last baseline;
justify-items: last baseline;
justify-self: last baseline;
place-items: last baseline normal;
place-self: last baseline normal;

修复和优化

Safari 16.2 还包含改进互操作性的 Bug 修复。

CSS

  • 修复了具有 fixed 附件的背景在变换元素内部表现得像 scroll 的问题。
  • 修复了计算内联 min-content 大小时包含 aspect-ratio 并添加 min-content 块计算的问题。
  • 修复了在某些 flexbox 情况下,边框和内边距被重复添加到计算出的最小和最大尺寸的问题。
  • 修复了 flex base size 宽度计算不考虑最小和最大尺寸的问题。
  • 修复了焦点行为在检查可见性时不考虑滚动外边距的问题。
  • 修复了布局 containment 不将强制换行传播给父级的问题。
  • 修复了 perspective: 0 的行为问题。
  • 修复了基于百分比的变换在 SVG <text> 元素上不工作的问题。
  • 修复了在必要时重新吸附以跟随滚动吸附目标的问题。
  • 修复了在各轴上的目标不可见时,滚动吸附选择最接近的吸附目标的问题。
  • 修复了根元素尺寸更改时,SVG 图形和组上的变换问题。
  • 修复了文本字符串同时包含常规文本和上标或下标时,上标和下标的 text-decoration 位置问题。
  • 修复了内容被截断时,text-decoration 像素对齐问题。
  • 修复了 text-decoration-thickness 属性不被继承的问题。
  • 修复了在指定 <input> 元素的宽度或高度时,移除固有外边距的问题。
  • 修复了 rgba() 通道的舍入问题。
  • 修复了 font-variant 简写属性解析以允许 font-variant-east-asian 属性出现在任何位置的问题。
  • 修复了在应用了 scroll-margin 的日期输入框上滚动吸附的问题。

渲染

  • 修复了变换更改后重新计算溢出的问题。
  • 修复了在 <canvas> 上绘图时应用 lineWidthstrokeStyle 的问题。
  • 修复了将 contain: content 应用于 body 时导致滚动中断的问题。
  • 修复了应用带有 z 轴分量的 transform-origin 的问题。
  • 修复了应用外边距时计算表格基线位置的问题。
  • 修复了对表格部分应用变换的问题:tbody, thead, 和 tfoot

媒体

  • 修复了使用 srcObject 时,更新媒体元素的 MediaSessionInfo 的问题。

Web API

  • 修复了 SharedWorker 尊重 Upgrade-Insecure-Request 的问题。

WebDriver

  • 修复了 Element Click 命令在 iOS 上失败的问题。
  • 修复:在 iOS 上启用了 touch 指针输入源子类型。

反馈

我们乐于听取您的意见。请在 Twitter 上发送推文至 @webkit 分享您对 Safari 16.2 的看法。您可以在 Mastodon 上找到我们:@jensimmons@front-end.social@jondavis@mastodon.social。如果您遇到任何问题,欢迎提供关于 Safari UI 的 反馈,或关于 Web 技术或 Web Inspector 的 WebKit Bug 报告。提交问题确实很有帮助。

下载最新的 Safari 技术预览版 以前沿使用 Web 平台并使用最新的 Web Inspector 功能。您还可以阅读 Safari 16.2 发布说明

更新到 Safari 16.2

Safari 16.2 可用于 macOS Ventura、macOS Monterey、macOS Big Sur、iPadOS 16iOS 16。在 macOS Monterey 或 macOS Big Sur 上,您可以通过前往“系统偏好设置”→“软件更新”→“更多详情”并选择更新 Safari 来更新到 Safari 16.2。要更新 macOS Ventura、iOS 或 iPadOS,请前往“设置”→“通用”→“软件更新”。