UNPKG

cn-font-split

Version:

划时代的字体切割工具,CJK与任何字符!支持 otf、ttf、woff2 字体多线程切割,完美地细颗粒度地进行包大小控制。A revolutionary font subetter that supports CJK and any characters! It enables multi-threaded subset of otf, ttf, and woff2 fonts, allowing for precise control over package size.

3 lines (2 loc) 1.19 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./gen/index.js"),f=require("fs-extra"),b=require("path"),h=async e=>{const t={};return typeof e.input=="string"?t.input=await f.readFile(e.input):t.input=e.input,Array.isArray(e.subsets)&&(t.subsets=e.subsets.map(a=>new Uint8Array(new Uint32Array(a).buffer))),{...e,...t}},w=(e,t,a)=>async function(r){const p=await h(r),s=n.api_interface.InputTemplate.fromObject(p);if(!s.outDir)throw new Error("cn-font-split need outDir");const c=Math.random().toString().slice(2,5);console.time("cn-font-split "+c);let l=[];return new Promise(o=>{const u=s.serialize(),m=y=>{let i=n.api_interface.EventMessage.deserialize(y);switch(i.event){case n.api_interface.EventName.END:o();break;case n.api_interface.EventName.OUTPUT_DATA:!r.silent&&console.log(i.message);let d=(r.outputFile||f.outputFile)(b.join(s.outDir,i.message),i.data);l.push(d);break}};e(u,u.length,t(m))}).then(async o=>(await Promise.all(l),o)).finally(()=>{console.timeEnd("cn-font-split "+c),a?.()})};Object.defineProperty(exports,"proto",{enumerable:!0,get:()=>n.api_interface});exports.createAPI=w; //# sourceMappingURL=createAPI.js.map