# aardio 范例: 精简字体



```aardio
import console;
import py3;

//精简 FontAwesome 字体需要保留的字符，生成新的 fonts.fontAwesomeSub 库
var fontAwesomeSub = '\uF254\uF251\uF252\uF253\uF250\uE8CE\uF0F6\uF007\uF0C8\uF14a\uF019\uF0E2\uF0E2\uF013\uF014\uF0AA\uF067\uF1F8\uF044\uF21B\uF007';

//导入 Python 模块 fontTools.ttLib
var ttLib = py3.import("fontTools.ttLib");
if(!ttLib){
	import py3.pip;
	py3.pip.setIndexUrl("aliyun"); 
	py3.pip("install","fonttools"); 
	
	ttLib = py3.import("fontTools.ttLib");	
}

//精简 TTF 字体文件
var subsetFont = function(srcPath, dstPath, text){
    var font = ttLib.TTFont(io.fullpath(srcPath));
    
    //拆分为字符数组
    var textArray = string.split(text);
    
    //转换为 Python 集合对象
    pySetUnicodes = py3.builtin.set( unicodes )
    
    //创建子集
    var subsetter = py3.import("fontTools.subset").Subsetter();
    subsetter.$populate( text = text );
    
    //字体子集化
    subsetter.subset(font);
    
/***
	//修改 TTF 字体名
    var nameBytes = raw.buffer( string.fromto("fontAwesomeSub",65001,1201/*UTF-16 BE*/) );
	for( record in font['name'].names.each() ){  
		select( tonumber(record.nameID) ){ 
			case 1,4,6 {
				record.string = nameBytes 
			} 
		} 
	}
***/
    
    //保存精简后的字体
    font.save(io.fullpath(dstPath));
}

import ide;
var projDir = ide.getProjectDir();
if(!#projDir){
	error("请先打开工程文件");
}

//生成导入精简字体的 aardio 库文件
var code = /*****
import fsys;
import fonts;

namespace fonts.fontAwesomeSub{
    
    family = ..fonts.addFamily($"/lib/fonts/.res/fontAwesomeSub.ttf","FontAwesome")
}
 
/**intellisense()
fonts.fontAwesomeSub = 导入FontAwesome 图标字体用于支持GDI/GDI+，控件/plus控件等,\n所有图标请参考aardio工具->文本文件->图标字体
fonts.fontAwesomeSub.family = GDI+字体家族,可用于plus控件,gdip等库函数,\n!gdipfamily.
end intellisense**/
*****/
string.save(io.joinpath(projDir,"/lib/fonts/fontAwesomeSub.aardio"),code);

var outPath = io.joinpath(projDir,"\lib\fonts\.res\fontAwesomeSub.ttf"); 
if(io.exists(outPath)){
	io.remove(outPath);
	if(io.exists(outPath)){
		error("请先退出 aardio 并删除字体文件："+outPath);
	}
}

//精简字体
subsetFont(
	"~\lib\fonts\.res\FontAwesome.ttf", //原字体路径, 
	outPath, //输出路径
	fontAwesomeSub,
);

console.log("已输出精简字体：",outPath)
console.pause();
```

