谷歌提出新的字体调用方案帮助提高中文字体的加载速度

谷歌提出新的字体调用方案帮助提高中文字体的加载速度

大家好,又见面了,我是全栈君。

谷歌旗下的网页字体调用Google Fonts API旨在帮助用户加载不同网站时复用资源达到提高加速速度的目的。目前该公司提出了新的解决方案用来提高中文字体的加载速度, 该方案主要利用机器学习对字符集进行排序。我们知道拉丁语系的网络字体通常大小只有 100~400KB,其他写作系统的字体大小通常只在200~600KB间。

 

但是中文系列的字体文件则需完整包含 44,683 个字符,这致使整个字体文件的大小介于15MB~20MB 之间。因此中文网站在调用网络字体时会占用服务器带宽资源, 同时用户也需消耗更多的时间去加载网络字体文件。

437dde096013d66.jpg

 

谷歌新的解决方案:

本次谷歌提出的新方案时按照机器学习对中文网页进行扫描,然后再统计哪些字符可能会共同出现在网页上。最终按照机器学习结果将44,683 个字符排列成102个切片,在浏览网页时浏览器会按照顺序加载需要的字体。

谷歌本次切片和测试的字体为 Noto Sans SC 切片版,使用切片版字体进行调用时可以极大地降低延迟时间。而谷歌Google Fonts API本身支持跨网站缓存,因此越多的网站使用切片字体用户加载的时间就会越来越短。本次新增的切片版字体为Noto Sans SC Sliced字体文件,Noto Sans SC版不支持切片但拥有更多字体样式。

切片字体调用说明:

@import url(//fonts.proxy.ustclug.org/earlyaccess/notosansscsliced.css);font-family: ‘Noto Sans SC Sliced’, sans-serif;

目前谷歌字体调用国内解析地址已经为谷歌中国BGP服务器,如果你觉得加载缓慢还可使用中科大反向代理。地址:fonts.gstatic.com—>fonts-gstatic.proxy.ustclug.org  ||  fonts.proxy.ustclug.org—>fonts.proxy.ustclug.org (均支持HTTPS)

更多具体细节请访问:https://fonts.google.com/earlyaccess#Noto+Sans+SC+Sliced

测试计划:

谷歌邀请准备测试和使用切片字体的网站帮助改善切片字体技术,使CJK网页字体的加载速度可以继续提高。如果您的网站准备使用切片字体可以在网站头部附加小型js库向谷歌发送切片字体的加载以及网页加载时间。

该库只收集以下内容:1、下载切片字体的时间;2、下载 Google Fonts CSS 时间;3、网页整体加载时间。如果您愿意帮助谷歌改进中文切片字体技术那么请在网页头部添加以下代码:(未使用切片字体无需添加)

<script src=”//fonts.gstatic.com/ea/timing/v1/mlfont.js” async></script>

 

转载于:https://www.cnblogs.com/fonts/p/7442369.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108204.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • android IPC 通信(上)-sharedUserId&&Messenger「建议收藏」

    android IPC 通信(上)-sharedUserId&&Messenger

  • python爬虫—–request模块学习及案例

    python爬虫—–request模块学习及案例

  • for遍历list Python_不属于python循环语句的是

    for遍历list Python_不属于python循环语句的是for循环是最常用的循环语句,在各种高级编程语言中都会被频繁使用,在python中也不例外,除了常规的for循环或者嵌套的for循环语法以外,python还有一种精巧的list内的for循环语句的语法,如果能熟练掌握这种语法对提高编程的效率有很大的帮助,今天我给大家我给大家分享一些我收集的关于list内使用for循环的小技巧,希望对大家有所帮助:1.简单替换for循环它的主要语法结构如下:my_list=[表达式for循环项in循环体(if条件)]这里表达式可以为循环项,

  • c++中constexpr_define和const定义常量的区别

    c++中constexpr_define和const定义常量的区别常量表达式是指值不会改变且在编译过程中就能够得到计算结果的表达式,能在编译时求值的表达式。例1:#include&lt;iostream&gt;usingnamespacestd;intmain(){ constinta1=10;//a1是常量表达式。 constinta2=a1+20;//a2是常量表达…

  • JMH 性能测试分析工具

    JMH 性能测试分析工具一什么是JMHJMH是在method层面上的benchmark,精度可以精确到微秒级,是对热点函数进行优化时,对优化结果进行定量分析的工具。二JMH的应用场景典型场景:想定量地知道某个函数需要执行多长时间,以及执行时间和输入n的相关性。 一个函数有多种不同的实现,针对多种不同的实现,需要定量分析出那种实现性能更好。三JMH的使用3.1引入依赖<properties><jmh.version>1.14.1&…

  • 面向对象与面向过程的本质的区别

    面向对象与面向过程的本质的区别前言:如果你很想搞明白面向对象是什么,面向过程是什么,或者说二者之间的区别是什么,那么就花费一点时间来研读一下这篇博客,你一定会有很大的收获的!一、面向对象与面向过程的区别面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号