使用 CSS 对 font-feature-settings 进行动画处理在 Safari 中不起作用

Animating font-feature-settings with CSS not working in Safari

提问人:kaktus 提问时间:11/16/2022 最后编辑:kaktus 更新时间:11/19/2022 访问量:53

问:

我想使用 CSS 关键帧更改具有不同样式集的字体的字体功能设置。我在同一网页上的动画之外使用不同的字体功能设置,这在 Chrome 和 Safari 中都适用。我还使用CSS关键帧动画,这在Safari中也可以正常工作。但是,当我尝试对 font-feature-settings 进行动画处理时,Safari 让我失望了。

这是我的CSS:

.animate {
  animation: animateFont 2s linear infinite;
}

@keyframes animateFont {
  0% {
    font-feature-settings: "ss01" 1;
    -webkit-font-feature-settings: "ss01" 1;
    -moz-font-feature-settings:    "ss01" 1;
    -ms-font-feature-settings:     "ss01" 1;
    color: white;
  }
  50% {
    font-feature-settings: "ss02" 1;
    -webkit-font-feature-settings: "ss02" 1;
    -moz-font-feature-settings:    "ss02" 1;
    -ms-font-feature-settings:     "ss02" 1;
    color: red;
  }
  100% {
    font-feature-settings: "ss01" 1;
    -webkit-font-feature-settings: "ss01" 1;
    -moz-font-feature-settings:    "ss01" 1;
    -ms-font-feature-settings:     "ss01" 1;
    color: white;
  }
}

我发现很多关于动画的东西通常在 Safari 中不起作用,但没有专门针对字体功能设置的东西。有谁知道CSS方法可以使它工作?

编辑:这是一个连字动画的例子,它在Chrome中有效,但在Safari中无效。

.animate-font {
  animation: animateFont 2s linear infinite;
  font-size: 100px;
}

@keyframes animateFont {
  0% {
    font-feature-settings: "smcp" 1;
    -webkit-font-feature-settings: "smcp" 1;
    -moz-font-feature-settings: "smcp" 1;
    -ms-font-feature-settings: "smcp" 1;
  }
  50% {
    font-feature-settings: "liga" 0;
    -webkit-font-feature-settings: "liga" 0;
    -moz-font-feature-settings: "liga" 0;
    -ms-font-feature-settings: "liga" 0;
  }
  100% {
    font-feature-settings: "ss01" 1;
    -webkit-font-feature-settings: "ss01" 1;
    -moz-font-feature-settings: "ss01" 1;
    -ms-font-feature-settings: "ss01" 1;
  }
}
<div class="animate-font">
  fi
</div>

css css-animations 字体-功能设置

评论

0赞 Franco Gabriel 11/16/2022
它适用于 Chrome 吗?你能附上一个工作片段吗?
0赞 kaktus 11/17/2022
它确实可以在 Chrome 中使用!所以上面的代码是 chrome 的工作片段,但不是 safari 的代码段:)
0赞 Franco Gabriel 11/18/2022
如果没有 HTML,我们无法测试您的开发环境以成功重现您的问题。请参阅以下内容以更好地了解堆栈溢出中的代码片段:meta.stackoverflow.com/questions/358992/...
0赞 kaktus 11/19/2022
你是对的,我虽然一个实际的例子在不发布字体的情况下是行不通的,但它确实可以使用标准的 css font-feature-settings。我编辑了这篇文章。谢谢你的建议!
0赞 Franco Gabriel 11/19/2022
我看到它在 Chrome 和 Safari 中都可以使用,我的 Safari 版本是(版本 16.0 (17614.1.25.9.10、17614)),我在装有 macOS Monterey 12.6 的 Macbook Pro 上,也许此信息可以帮助您调试问题,但对我来说可以在这两种浏览器上运行。

答: 暂无答案