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';

//导入 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);

    //保存精简后的字体
    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.exist(outPath)){
    io.remove(outPath);
    if(io.exist(outPath)){
        error("请先退出 aardio 并删除字体文件:"+outPath);
    }
}

//精简字体
subsetFont(
    "~\lib\fonts\.res\FontAwesome.ttf", //原字体路径, 
    outPath, //输出路径
    fontAwesomeSub,
);

console.log("已输出精简字体:",outPath)
console.pause();
Markdown 格式