我尝试在Laravel项目中使用.ttc
字体集合。我是这样使用它的。
@font-face {
font-family: Avenir Next;
src: url('{{ asset("fonts/Avenir Next.ttc") }}');
}
但是Firefox不会加载字体,而是在控制台中显示错误:downloadable font: rejected by sanitizer (font-family: "Avenir Next" style:normal weight:400 stretch:100 src index:0) source: http://localhost:8000/fonts/Avenir%20Next.ttc
或者,作为图像:
为了解决这个问题,我把字体转换成了ttf或者oft,但是转换后的字体和原来的字体不一样。
2条答案
按热度按时间xqk2d5yq1#
Firefox拒绝了您的字体文件,因为它无法识别TTC字体集合格式。它显示为Firefox doesn't yet support font collections in
@font-face
。对于支持集合的浏览器,你需要使用一个片段标识符来从TTC集合中选择一个特定的字体。CSS3字体规范规定片段标识符应该是PostScript名称;使用
fontconfig
包中的fc-scan
命令行工具从TTC文件中获取postscript名称:fontconfig
是Open Source software from freedesktop.org,请在Linux软件包管理器中找到它,或者在MacOS上使用homebrew安装它。你可以在URL后面加上
format(collection)
来告诉浏览器该URL指向一个字体集合,在这种情况下,Firefox甚至不会下载该文件,因为它知道,如果不下载,它将无法使用该集合中的字体。因此,对于支持TTC文件中字体集合的任何浏览器,语法为:
由于Firefox还不支持这种功能,所以最好将TTC集合转换为单独的字体;最好是WOFF和WOFF 2,以获得最广泛的支持。有一些在线工具可以为你做到这一点;你应该得到 * 多 * 字体,你需要选择一个与正确的重量从这使用。
src:
属性是一个选项列表,浏览器会选择第一个支持的选项,所以你可以为支持集合的浏览器保留TTC文件;这些将下载可在@font-face
定义之间共享的单个集合,然后列出WOFF 2和WOFF URL:如果有支持字体集合的浏览器,使用TTF集合的好处是可以限制支持多种字体所需的请求数量,而且如果组合字体共享字形信息,则可以更有效地存储组合字体。
最后的警告是,我不知道哪些浏览器支持这个;caniuseidercomm上没有这方面的信息,我有suggested CanIUse could provide this info。
7rfyedvj2#
文件
.ttc
是一个字体集合,而@font-face
用于指定浏览器应该使用的一种字体。您需要从该集合中提取一种字体资产,然后在@font-face
中使用该字体。例如: