iTakeo

Fontmin,让加载中文字体成为可能。

浏览器的季风已撩拨起 webfont 的热浪,中文字体却依旧寂寞如雪。与英文26个字母不同的是,中文字符集过多,导致字体文件过大,少则2M、3M多则7M、8M,还要加载不同格式的字体,基本上不用想,只能使用图片代替。

有些地方使用图片并不方便,如下图所示:

上面图里,中文字体之间夹着特殊字体,并且数字会改变,只能通过切除图片0-9每个数字一张图片。然后再通过js拼接到一起。
下面两个按钮也是特殊的字体,如果这样的按钮有很多,岂不是每个都得切一张图。

现在通过Fontmin(是一个纯 JavaScript 实现的字体子集化方案),就可以做到把你想要的特殊字体提取出来,从而不用去加载庞大的字体了。


Fontmin官方网站
Fontmin官方GitHub

首先我们要有node环境,然后安装fontmin。

  1. npm install –save fontmin  

如果你需要重新命名字体名字,还需要安装gulp-rename。

  1. npm install gulp-rename  

node模块

  1. var Fontmin = require(‘fontmin’);  
  2. var fontmin = new Fontmin()  
  3.     .src(‘new.TTF’)               // 转换文字路径  
  4.     .use(Fontmin.glyph({        // 字型提取插件  
  5.         text: ‘中国123’              // 所需文字  
  6.     }))  
  7.     .use(Fontmin.ttf2eot())     // eot 转换插件  
  8.     .use(Fontmin.ttf2woff())    // woff 转换插件       
  9.     .use(Fontmin.ttf2svg())     // svg 转换插件  
  10.     .dest(‘fonts’);            // 输出配置  
  11. // 执行  
  12. fontmin.run(function (err, files, stream) {  
  13.     if (err) {                  // 异常捕捉  
  14.         console.error(err);  
  15.     }  
  16.     console.log(‘done’);        // 成功  
  17. });  

如果需要输出css文件。可以使用.css的API。

  1. .use(Fontmin.css({  
  2.     fontPath: ‘./’,          
  3.     base64: true,            
  4.     glyph: true,             
  5.     iconPrefix: ‘my-icon’,   
  6.     fontFamily: ‘myfont’,    
  7.     asFileName: false        
  8. }))  

官方提供了很多Api,可以根据自己的需求来配置,具体点击这里

中国123

我们要实现上面的特殊字体,正常情况下,引入字体文件,可以看到仅仅字体文件就已经达到了13M。

然后我们来使用fontmin提取字体。结果只有11K。

并且自动创建每种字体格式。

另外官方还提供了客户端,不会写代码也没关系。

2015/11/17 0 / /
标签:  暂无标签

验证码: 5 + 8 =

回到顶部