《ttf字体瘦身/裁剪/删减 》 适合微信小游戏/小程序/游戏开发

您所在的位置:网站首页 微信字体太大了怎么办 《ttf字体瘦身/裁剪/删减 》 适合微信小游戏/小程序/游戏开发

《ttf字体瘦身/裁剪/删减 》 适合微信小游戏/小程序/游戏开发

2024-07-11 18:33| 来源: 网络整理| 查看: 265

游戏开发过程中经常会碰到美术给的ttf字体太大,他们又不会压缩和裁剪,而我们客户端对资源的大小非常敏感。尤其是发布小游戏的时候,一个ttf大小10M 你敢想象?

为此我开发了一个小小的工具,专门处理这种问题

giteed地址:gitee地址

就一个简单的js脚本,希望能帮到需要的人

const fs = require('fs'); const Fontmin = require('fontmin'); const path = require('path'); //输入目录,支持多个 const inputdir = "font" //输出目录 const outputdir = "out" //保留的字符目录, 支持多个txt文件 const includeddir = "included" function start() { //递归查找所有待瘦身的ttf字体 let ttfs = findFileSync(inputdir, '.ttf'); //递归查找所有配置的保留字符 let included_texts = findFileSync(includeddir, '.txt'); //合并字符 let chars = ""; included_texts.forEach(file => { const str = fs.readFileSync(file, 'utf-8'); chars += str; }); //开始处理ttf字体 for (let i = 0; i < ttfs.length; i++) { let f_name = path.basename(ttfs[i]) new Fontmin() .src(ttfs[i]) .use(Fontmin.glyph({ text: chars })) // 子集化字体 .dest(outputdir) .run((err,files)=>{ if(err == null){ console.log("success = > " + f_name) }else{ console.error(err); } }) } } start(); function findFileSync(directoryPath, suffix) { const _files = []; try { const files = fs.readdirSync(directoryPath); files.forEach(file => { const filePath = path.join(directoryPath, file); const stats = fs.statSync(filePath); if (stats.isFile() && path.extname(filePath).toLowerCase() === suffix) { _files.push(filePath); } else if (stats.isDirectory()) { const subTTFFiles = findFileSync(filePath, suffix); _files.push(...subTTFFiles); } }); } catch (error) { console.error('Error reading directory:', error); } return _files; }

运行环境准备:

1.安装node

2.安装node库, fs,fontmin,path

3.运行 node ./handler.js  即可

注意:

1.需要保留的字符以txt的形式放在 included文件夹中即可。这里我在网上找了3000个常用的中文汉字和字母数字常用符号等。希望压缩的更小的话可以自行配置

如果帮到你了,辛苦点个赞



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3