使用 ttc 文件的 Css font-face

11

这是我第一次使用 font-face,对我来说确实很难真正渲染出完全相同的字体,特别是涉及到 *.ttc 文件时。

目前为止,我已经做了以下工作:

@font-face {
    font-family: 'FontName';
    src: url('../fonts/font.ttc') format('truetype');
    font-weight: normal;
}


.header {
    font-family: 'FontName;
}

当我在Chrome检查器的网络选项卡中检查时,我可以看到字体已经成功加载,但结果文本仍然使用另一种字体。

我做错了什么?请帮我解决这个问题。非常感谢您的帮助。

更新

我发现还有一件事。当我使用内联样式时,字体被正确渲染。

    <p style="font-family:'FontName'">test 2</p>

加载有延迟或类似情况吗?


在 font-face 声明之前,您忘记了 @import。 - JoelBonetR
1个回答

14

在CSS @font-face声明中,您不能使用字体集合,因为这种语法的目的是要明确地指定浏览器在您的实际页面CSS中指定某些特定的字体-{族、重量、风格等}组合时必须使用哪个单一的字体资源。

指定字体集合将使这成为不可能:没有语法可以指定需要该集合中的哪种字体,因此ttc是没有设计支持的。提取您需要的单独字体资产(如果被授权!),然后显式说明您需要哪个单一字体适用于哪个单一的@font-face声明。

请记住,这是可能的:

@font-face {
  font-family: myfont;
  font-weight: normal;
  src: url('that-font-I-like-Regular.woff') format('WOFF');
}

@font-face {
  font-family: myfont;
  font-weight: bold;
  src: url('that-font-I-like-Regular.woff') format('WOFF');
}

...

:root {
  font-family: myfont;
}   

h1 {
  font-weight: normal; /* will use that-font-I-like-Regular.woff */
  ...
}

p {
  font-weight: bold; /* will _also_ use that-font-I-like-Regular.woff */
  ...
}

如果 font-weight: bold 确实使用的是 that-font-I-like-Regular.woff,那么最好提供一些解释。如果这是一个打字错误,请进行更正。 - mxcl
因此得到了修正。 - Mike 'Pomax' Kamermans
MDN文档@font-face指出,您可以使用片段标识符来表示容器中的单个字体:如果字体文件是多个字体的容器,则包括片段标识符以指示应使用哪个子字体,如下所示,其中片段标识符是字体的PostScript名称。这似乎与您声称没有语法可用于从集合中选择单个字体的说法相矛盾。 - Martijn Pieters
这并不意味着浏览器支持集合;Firefox肯定还没有,而且我不确定Chrome是否有(但我还找不到官方参考资料)。 - Martijn Pieters
我们看的是同一页吗?那个 MDN 页面上根本没有出现过“container”或“multiple”这些词汇。(它有一个指向 @container 的链接,但那完全不相关) - Mike 'Pomax' Kamermans
CSS4的字体模块草案中有相关文本,可以在https://w3c.github.io/csswg-drafts/css-fonts/#font-face-src-loading上找到,但是W3C的草案没有任何权威性,可能会随时被撤回。因此,如果该草案未成为TR,则官方上没有办法在CSS中使用TrueType和OpenType集合。 - Mike 'Pomax' Kamermans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接