从 Firebase 加载字体
Loading a font from Firebase
在我的网络应用程序中,我想使用 Futura Bold 字体。我购买了整个系列并将 Futura Bold.ttf 文件上传到 Firebase Storage。我用访问令牌复制了它的 link,并在样式标签中添加了以下内容:
@font-face {
font-family: Futura;
src: url(https://firebasestorage.googleapis.com/v0/b/my-project-name.appspot.com/o/Futura%20Bold%20font.ttf?alt=media&token=mytokenhere) format("truetype");
font-weight: bold;
}
但是它不会更改默认字体,并且在控制台中出现以下错误:
我该如何解决这个问题?在 Firebase 存储中存储字体是一种糟糕的方式吗?
通常情况下,最好使用传统的托管解决方案来托管字体文件(例如,您用来托管网站的 HTML),因为它们专为此类用例而设计,并且会执行缓存等操作使字体加载更有效(这是可能的,但在 firebase 存储上更难)。
也就是说,如果您想在 firebase 上托管它,您可以:
Firebase 存储默认启用 CORS 限制,这意味着它会默认阻止其他网站(任何不是用户直接在地址栏中输入 URL 的网站)加载文件。
对于您的用例,您可能希望 configure your firebase storage bucket to accept all requests 通过创建包含以下内容的临时 cors.json
文件:
[
{
"origin": ["*"],
"method": ["GET"],
"maxAgeSeconds": 3600
}
]
然后,按照these instructions和运行安装gsutil
:
gsutil cors set cors.json gs://your-storage-bucket.appspot.com
确保将 your-storage-bucket.appspot.com
替换为您自己的存储桶,您可以在您的 firebase 配置对象中找到它。
在我的网络应用程序中,我想使用 Futura Bold 字体。我购买了整个系列并将 Futura Bold.ttf 文件上传到 Firebase Storage。我用访问令牌复制了它的 link,并在样式标签中添加了以下内容:
@font-face {
font-family: Futura;
src: url(https://firebasestorage.googleapis.com/v0/b/my-project-name.appspot.com/o/Futura%20Bold%20font.ttf?alt=media&token=mytokenhere) format("truetype");
font-weight: bold;
}
但是它不会更改默认字体,并且在控制台中出现以下错误:
我该如何解决这个问题?在 Firebase 存储中存储字体是一种糟糕的方式吗?
通常情况下,最好使用传统的托管解决方案来托管字体文件(例如,您用来托管网站的 HTML),因为它们专为此类用例而设计,并且会执行缓存等操作使字体加载更有效(这是可能的,但在 firebase 存储上更难)。
也就是说,如果您想在 firebase 上托管它,您可以:
Firebase 存储默认启用 CORS 限制,这意味着它会默认阻止其他网站(任何不是用户直接在地址栏中输入 URL 的网站)加载文件。
对于您的用例,您可能希望 configure your firebase storage bucket to accept all requests 通过创建包含以下内容的临时 cors.json
文件:
[
{
"origin": ["*"],
"method": ["GET"],
"maxAgeSeconds": 3600
}
]
然后,按照these instructions和运行安装gsutil
:
gsutil cors set cors.json gs://your-storage-bucket.appspot.com
确保将 your-storage-bucket.appspot.com
替换为您自己的存储桶,您可以在您的 firebase 配置对象中找到它。