最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 记录一次特殊字体加载的问题

    正文概述 掘金(你期待的花开)   2021-03-30   707

    前几天在做一个图表项目时,遇到这样一个问题:

    现象

    表面上看是引入的特殊数字字体在 safari 浏览器没有效果。

    排查过程

    1. 查看字体是否加载成功

    检查 -> network -> font

    记录一次特殊字体加载的问题

    发现需要的字体文件是 404

    2. 查看字体加载不成功的原因

    具体的字体加载的路径是 https://xxx/Lato-Regular.ttf ,据分析这个路径不会有这个文件的,因为字体没有做单独的打包,所以不是浏览器的问题,应该是谷歌浏览器也会有这个问题的,只是谷歌浏览器和Safari 浏览器由于字体没有生效,展示的都是浏览器的默认字体。

    3. 尝试使用 base-64 的方式打包字体

    修改 webpack 对 .ttf 的打包,没有效果(其实设置了 url-loader 打包就可以了,不需要加其他额外的配置了)

    module.exports = {
      module: {
        rules: [
          {
            test: /\.(png|jpg|gif|ttf)$/,
            use: [
              {
                loader: 'url-loader',
                options: {
                  limit: 8192
                }
              }
            ]
          }
        ]
      }
    }
    

    4. 修改字体的引入路径

    经过 wenpack 打包的配置的修改无效后,尝试修改字体的引入路径,发现字体的引入路径出现了问题,需要将原有的绝对路径引入方式修改为相对路径的引入方式,字体才能引入成功。

    @font-face
      font-family 'Lato-Regular'
      // src url('/src/font/Lato-Regular.ttf') format('woff')  修改前
      src url('../../font/Lato-Regular.ttf') format('woff') 修改后
    

    修改后:

    记录一次特殊字体加载的问题

    最终解决方法

    修改字体的引入路径为相对路径。

    总结

    当我们处理css中的图片、字体等资源文件时,常用的两种loader是 file-loader或者url-loader,两者的主要差异在于,url-loader可以设置图片、字体等文件的大小限制,当文件的大小超过限制时,其表现行为等同于 file-loader,而当文件不超过限制时,则会将文件以base64的形式打包,以减少请求次数。有时会出现因为地址错误导致引用失效情况,可以查看是否是以上的情况。

    为什么本地开发引入的字体可以正确的显示,部署到服务器却不生效了呢?

    1. webpack 本地开发中使用的是 webpack-dev-server,实时编译后的文件都保存到了内存当中,引用字体包的时候使用的是绝对路径,因此在本地开发时引入的字体生效;
    2. 使用webpack打包后的 dist 目录,字体包的实际存储路径与 http 请求字体包的路径不一致,所以字体没有生效;

    起源地下载网 » 记录一次特殊字体加载的问题

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元