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.

1 lines 2.13 kB
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/node/index.ts"],"sourcesContent":["import path from 'path';\nimport { FontSplitProps } from '../interface.js';\nimport { getBinName, matchPlatform } from '../load.js';\nimport { isMusl } from './isMusl.js';\nexport * from '../interface.js';\nexport * from '../createAPI.js';\n// @ts-ignore\nimport { dlopen, Callback } from '@xan105/ffi/koffi';\nimport koffi from 'koffi';\nimport { fileURLToPath } from 'url';\nimport { dirname } from 'path';\nimport { createAPI } from '../createAPI.js';\n\n// @ts-ignore 获取当前模块的 URL\nconst __filename = fileURLToPath(import.meta.url);\n\n// 获取当前模块所在的目录\nconst __dirname = dirname(__filename);\n\nlet binPath = process.env.CN_FONT_SPLIT_BIN;\nif (!binPath) {\n binPath = path.resolve(\n __dirname,\n '../' +\n getBinName(matchPlatform(process.platform, process.arch, isMusl)),\n );\n // throw new Error('CN_FONT_SPLIT_BIN is undefined!');\n}\nconst dylib = dlopen(binPath, {\n font_split: {\n parameters: ['pointer', 'usize', 'function'],\n result: 'void',\n },\n});\nconst createCallback = (cb: (data: Uint8Array) => void) =>\n new Callback(\n {\n parameters: ['pointer', 'usize'],\n result: 'void',\n },\n (ptr: any, length: number) => {\n const data = koffi.decode(\n ptr,\n koffi.array('uint8_t', length, 'Array'),\n );\n cb(new Uint8Array(data));\n },\n ).pointer;\n\nexport const fontSplit = createAPI(dylib.font_split, createCallback);\n"],"mappings":";;;;;;;;;;;;AAiBA,IAAM,IAAY,EAHC,EAAc,OAAO,KAAK,GAGnB,CAAU,GAEhC,IAAU,QAAQ,IAAI;AAC1B,AACI,MAAU,EAAK,QACX,GACA,QACI,EAAW,EAAc,QAAQ,UAAU,QAAQ,MAAM,CAAM,CAAC,CACxE;AAwBJ,IAAa,IAAY,EArBX,EAAO,GAAS,EAC1B,YAAY;CACR,YAAY;EAAC;EAAW;EAAS;CAAU;CAC3C,QAAQ;AACZ,EACJ,CAgBmC,EAAM,aAfjB,MACpB,IAAI,EACA;CACI,YAAY,CAAC,WAAW,OAAO;CAC/B,QAAQ;AACZ,IACC,GAAU,MAAmB;CAC1B,IAAM,IAAO,EAAM,OACf,GACA,EAAM,MAAM,WAAW,GAAQ,OAAO,CAC1C;CACA,EAAG,IAAI,WAAW,CAAI,CAAC;AAC3B,CACJ,EAAE,OAE6D"}