福利来了 -- 压缩字体包工具

news/2024/10/17 12:22:15/

网上关于压缩字体包的工具和教程都太麻烦了,使用gulp-font-spider还有一大堆设置,今天分享一个压缩字体包的工具,自己写的python脚本,配合sfnttool.jar包做字体压缩。很简单的。
1、先来解析一下代码,谁想拿去用的自己根据提示改一下代码就可以了。

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import os
import codecs
import argparse
import sys
reload(sys)
sys.setdefaultencoding('utf8')
# 读取文件里使用到的字体
def readFile(path): fd = open(path)line = fd.readline()string = ""while line:s = line.find(':')e = line.find(',')if s != -1: if e == -1: e = len(line)sub = line[s + 1:e]chinaCode = sub.encode('utf8').decode('unicode_escape')for char in chinaCode: if (string.find(char) == -1 and char != '"' and char != ' '):string = string + charline = fd.readline()fd.close()return string# 添加英文字和特殊字符
def addChar(string): string = string + "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM:,./?%"return string# 导出字体命令
def exportFont(string, originFont, outFont):cmdStr = 'java -jar sfnttool.jar -s "%s" %s %s' % (string, originFont, outFont)os.system(cmdStr)print("export " + outFont + " font complete")# 将原路径下的所有字体全部压缩成新字体
def run(filePaths, originPath, outPath):string = ""for filePath in filePaths:string = string + readFile(filePath)string = addChar(string)fonts = os.listdir(originPath)for font in fonts: if(font.find('.ttf') != -1 or font.find('.OTF') != -1):# 字体print(font)oldFont = os.path.join(originPath, font)outFont = os.path.join(outPath, font)exportFont(string, oldFont, outFont)if __name__=='__main__':filePathCn = "../../../game/resource/assets/config/zhcnTxt.json"		#这里是你想获取的原字的文件地址,填写你自己的文件地址就可以了# filePathTw = "../../../game/resource/assets/config/zhtwTxt.json"filePaths = [filePathCn]    # 这里是可以做多个文件同时更换originPath = "./origin_fonts"    #这里存放的是你想压缩的原字体库文件夹outPath = "./output_fonts"    #这里是你想转换后的文件路径run(filePaths, originPath, outPath)

看着上面的注释,将对应的地方改过来,就可以了。

上面是代码,你拷过去的时候一定要注意python的格式对不对,在sublime中打开,每行前面是…这种就是对的,是——就是格式有问题,你直接在前面打空格就可以了
在这里插入图片描述

2、在终端中执行python exportFont.py就可以了
使用示例和demo我已经放到资源了,自己去下就好了,使用不明白的直接问。


http://www.ppmy.cn/news/248387.html

相关文章

字库font使用

windows字体位置 C:\Windows\Fonts linux字体位置 /usr/share/fonts/DroidSansFallback.ttf 库文件libfont.a 链接:https://pan.baidu.com/s/1BYamH8s_v54IlSrvQe21hg?pwdmft7 提取码:mft7 font.h #ifndef __font_h__ #define __font_h__#…

CSS font-family字体大合集

以下为font-family常用合集以及一部分文字效果: windows常见内置中文字体 宋体 SimSun 黑体 SimHei 微软雅黑 Microsoft YaHei 微软正黑体 Microsoft JhengHei 新宋体 NSimSun 新细明体 PMingLiU 细明体 MingLiU 标楷体 DFKai-SB 仿宋 FangSong 楷体 Kai…

黑客学习-xss漏洞总结

1、什么是xss 先来看案例 在一个输入框中,输入js代码,存放alter()其弹窗,结果可以看到,代码成功执行。这个就是xss漏洞 XSS攻击全称跨站脚本攻击,是一种在Web应用中常见的安全漏洞,它允许用户将恶意代码植入到Web页面…

TTF字体包瘦身

需求 客户要求首页使用字体,分别为中文和英文格式 首页是基于H5的一个公众号 问题 客户给的字体较大,有两个格式的,分别是中文和英文的.单个都超过了10M, 如果未压缩,因为在首页,访问的次数多,会造成服务器资源紧张, 准备工作 下载好完整版客户提供的的.ttf文件。 下载好…

CSS字体样式属性调试

恶魔 不能# CSS字体样式属性调试 1.font-size font-size属性用于设置字号 p { font-size:20px;2.font-family font-family用于设置字体 p { font-family:"Mirsoft YaHei"; }网页中常用字体有宋体,微软雅黑,黑体等 可以同时指定…

【数据结构】常见排序算法——常见排序介绍、选择排序(直接选择排序、堆排序)交换排序(冒泡排序)

文章目录 1.常见排序2.选择排序2.1直接选择排序2.2堆排序 3.交换排序3.1冒泡排序 1.常见排序 2.选择排序 选择排序是一种简单但不高效的排序算法,其基本思想是从待排序的数据中选择最小(或最大)的元素放到已排序的数据末尾。具体操作步骤如下…

Netty的bytebuf详解

ByteBuf ByteBuf是对nio中ByteBuffer的增强。主要的增强点就是ByteBuf它可以动态调整容量大小,当要存储的数据超过了当前容量的上限就会进行扩容,扩容的上限是多少?扩容机制是什么?请跟着本文往下看。对了,还有一个增强…

Linux命令su、sudo、sudo su、sudo -i使用和区别

sudo 与 su 两个命令的最大区别是: sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码。另外一个区别是其默认行为,sudo 命令只允许使用提升的权限运行单个命令,而 su 命令会启动一个新的 shell,同时…