当前位置: 首页 > 面试题库 >

带有本地文件的Firefox @ font-face-可下载字体:下载失败

陆啸
2023-03-14
问题内容

我在使用通过相对URL访问的字体时遇到问题。

@font-face {
    font-family: 'ElegantIcons';
    src:url('../src_main/fonts/ElegantIcons.eot');
    src:url('../src_main/fonts/ElegantIcons.ttf') format('truetype'),
        url('../src_main/fonts/ElegantIcons.svg#ElegantIcons') format('svg'),
        url('../src_main/fonts/ElegantIcons.woff') format('woff'),
        url('../src_main/fonts/ElegantIcons.eot?#iefix') format('embedded-opentype');
    font-weight: normal;
    font-style: normal;
}

当我访问网页时,字体不起作用,在控制台中,我得到以下信息:

downloadable font: download failed (font-family: "ElegantIcons" style:normal weight:normal stretch:normal src index:1): status=2147500037
source: file:///...snipped.../src_main/fonts/ElegantIcons.woff @ file:///...snipped.../src_poke/fonts-style.css

通过将URL复制/粘贴到浏览器地址栏中来访问文件,这表明它是正确的URL,因为我可以下载字体。


问题答案:

乔纳森·邱(Jonathan Kew)对有关MozillaBugzilla条目的回应的提示:

我相信这是按设计工作的。AIUI,这里的问题是,对于从file://
URI加载的页面,只有文件系统相同目录中(或以下)的文件才被视为“相同来源”,因此将字体放在不同的子树中(../font/)表示它将被安全策略限制所阻止。

您可以通过在about:config中将security.fileuri.strict_origin_policy设置为false来放松这一点,但是由于这使页面可以访问整个本地文件系统,因此请谨慎使用。

概括来说,“修复”无需重新排列文件:

  • 打开about:config
  • 设为security.fileuri.strict_origin_policy
  • 当心安全隐患

但是,最好的方法是确保可访问任何资源,而无需先备份文件系统

注意: 来源政策是根据html而不是css文件计算的!因此,除CSS文件外的字体文件可能无法工作,这非常令人困惑。
(至少我认为这是Firefox的情况!)

跟进:

埃德曼评论:

这是另一回事:相对路径是相对于CSS文件的

克莱里斯回应:

您可能会认为,但是Firefox中的实际代码似乎并不相同。



 类似资料:
  • 问题内容: 是否可以在页面加载之前预加载或以其他方式缓存@ font-face字体(最有可能使用javascript),以便在页面最终加载时不会出现难看的跳转? 问题答案: 我目前尚无任何避免字体加载时出现闪烁的技术,但是您可以通过为字体发送适当的缓存头并确保该请求尽快通过来最大程度地减少闪烁。

  • 问题内容: 我正在尝试使用CSS文件加载字体,但是字体从未加载。这是我的目录结构。 然后在我有加载程序来获取字体。 在我的CSS文件中,我有以下内容: 最后,我使用以下命令调用我的CSS文件: 一切正常,但字体永远不会加载。 问题答案: 在尝试了很多东西之后,下一个装载机完成了工作。我使用url-loader代替了文件加载器。您需要安装url-loader。

  • 我决定在我的项目中使用可下载字体。我实现了指南中建议的所有内容。 下一步,当我尝试从ResourcesCompat获取字体时,出现了以下问题: 在那之后,我总是得到这样的体验: 如何解决这个问题? PS: support-compat库v27 min sdk 16 通过ResourcesCompat解决方案。FontCallback在我的情况下不是一个好方法 问题发生在有和没有Google Pla

  • 我正在使用@font-face/loadDataSusBaseURL在WebView中使用我自己的字体。它可以工作,但我面临一个性能问题。每次我用“loadDataSusBaseURL”更改WebView的内容时,它都会重新加载字体,并且需要几秒钟。 禁用@字体,性能完美。 TTF放在资产中,css/html每次都从String加载在一起。 尝试使用缓存,但它似乎使用存储内存中的文件,所以可能没有

  • 我有一个证书文件“cert. p12”和这个证书的密码“yxc123yxc”。有了这个,我可以对网站进行身份验证,下载一个xml文件。 我如何在php中做到这一点?尝试过这样做,但“$响应”是错误的。

  • 问题内容: 我将字体和CSS托管在pagodabox.com服务器上,并在shopify上开发商店部分。我想使用来自pagodabox托管网站的相同样式表作为shopify网站。但是我的字体没有加载到Firefox 13.0.1版中 FF或我的语法有问题吗?谢谢!!! 问题答案: 您不能在Firefox中使用@ font-face,而将字体托管在其他域中如果要使用绝对URL为@ font- fac