继 2014 年发布思源黑体后,Google 和 Adobe 再度联合开发制作了与思源黑体相对应的衬线字体——思源宋体,并于今年 4 月份发布。从网上看到这款字体的第一眼就喜欢上了,好看就是好看,无需过多的解释。除了美观,它还涵盖中日韩大多数字符,对于个人站点来说,除非极其特殊的情况,要不是不会出现豆腐块的,可以放心使用,它所囊括的字符已经超出很多我们平时所使用的中文字体了。

但是想在网站上使用中文字体,不是一件容易的事,有一个难点,因为不像英文字母就那几十个,汉字实在太多了,导致中文字体文件都特别的大,动辄几 M 几十 M,要让网站加载这么大的字体文件,在目前的网络状况下是无法想象的。目前还没有一种完美的解决方案,从思路上来说,可以有两种方式,但是两种方式都不是真正的解决这个难题的,只是一种迂回的方式。

第一种,精心设计字体,并把字体文件压缩的尽可能小,同时又包含尽可能用得到的字符。

第二种,使用类似字蛛的服务,把自己想使用的字体先做一个处理,也就是把网站页面用不到的那些字符全部删掉,只保留页面里面有的那些个字符,然后重新打包成字体文件,这样下来这个文件就非常小了。

可以看出,这两种方式并没有解决根本问题,或许这个根本问题压根也没法解决,除非将来网络带宽足够好,且服务器与带宽资源足够便宜,加载一个 20M 的文件跟现在加载几十 KB 的成本与时间一样或者更低,可以忽略不计。又或者将来发明出了压缩率极高的中文字体。总之,在发展到这种程度之前,汉字的 Web Fonts,真的只能迂回着实现了。

回到正题,我想在自己的页面上使用思源宋体,该怎么实现呢?类似前面提到的第二种思路,使用 Adobe 的 Typekit 服务,动态异步加载每个页面所需要的汉字的那部分字形,这样比使用字蛛预处理有一个优势,就是不用人管,纯自动的。想象一下,假若有几千个页面,每个页面用到的字体都不尽相同,而且页面还经常要变动,使用字蛛服务的话就太累了。

Typekit 的具体使用方式就不细说了,其官方介绍的非常详细,可以参考:https://helpx.adobe.com/typekit/using/add-fonts-website.html,概括起来就三步:1、选择字体;2、创建 kit 并进行一些自定义设置;3、把网站给出的 JS 代码嵌入到网站的 <head> 部分。其中 2、3 的顺序可以调换,每个 kit 后续也是可以更改的,注意更改之后记得点 Publish

因为思源宋体有中日韩等多个版本而且 Google 和 Adobe 的名称是不一样的(Google 叫 Noto Serif CJK,Adobe 叫 Source Han Serif),而 Typekit 线上加载的思源宋体的名称叫 source-han-serif-sc,所以 CSS 里面的写法还是需要注意一下,下面是一个比较典型的写法(注:仅仅是思源宋体,没有搭配上其他字体),可参考:

font-family: 'Noto Serif CJK SC', 'Noto Serif CJK', 'Source Han Serif SC', 'Source Han Serif', 'source-han-serif-sc', serif;

另外,使用 Typekit 之前需要先注册 Adobe 账号,登录后才能使用,Typekit 服务有免费套餐,对于个人小站来说免费套餐就足够了。