当前位置: 首页 > news >正文

fontTools工具的使用介绍

前言

  • python工具库fontTools,我是用来压缩前端字体的,优化前端请求速度的;
  • 使用的过程中,遇到了不少的坑,把这个过程记录下来,防止再犯。

安装

# fontTools 4.56.0
pip install fontTools

提取子字体集

方法一:–text 参数

  • 很多资料里面都是介绍使用–text,可是它不会把"加入到子集中,反而报错;
  • 这个坑死我了,一旦–text中存在"的时候,则会一直报错或者提前中断。
import os
# 定义需要保留的字符
string = "1234567890"
# 模拟执行pyftsubset命令生成字体子集
os.system('pyftsubset ./x1.ttf --text="{}" --output-file=./x2.ttf'.format(string)
)

方法二:–text-file 参数

  • 该方法一直找不到,还是官网查找的,使用起来很方便;
  • 该方法就是需要.txt文件,作为中间产物进行操作。
import os
# 模拟执行pyftsubset命令生成字体子集
os.system('pyftsubset ./x1.ttf --text-file=./x.txt --output-file=./x2.ttf'
)

方法三:代码形式

  • 该方法就把上面的方法一与方法二的痛点都解决了。
from fontTools import subset# 字符去重
support = set()
# 读入目标文本内容
with open('./x.txt', encoding='utf-8') as t:support = set(t.read())# 嵌入代码中,实现生成字体子集
options = subset.Options()
# 加载字体
font = subset.load_font('./x1.ttf', options)
subsetter = subset.Subsetter(options=options)
subsetter.populate(text=str(support))
subsetter.subset(font)
subset.save_font(font, './x2.ttf', options)

问题

xxx…is not recognized as an internal or external command,operable program or batch file

  • 就是文件里面多了"'

功能实现

  • 实现前端.ttf字体包的压缩

参考资料

  • github仓库fonttools
  • fonttools官方文档

http://www.mrgr.cn/news/95307.html

相关文章:

  • 算法刷题记录——LeetCode篇(6) [第501~600题](持续更新)
  • Powershell WSL部署ubuntu22.04.5子系统
  • The Illustrated Stable Diffusion
  • A l密码学(Deepseek)
  • 内网渗透(CSMSF) 构建内网代理的全面指南:Cobalt Strike 与 Metasploit Framework 深度解析
  • 增加对路由参数的支持
  • 单台openEuler24.03 LTS下的开源大数据环境搭建
  • 2025年优化算法:龙卷风优化算法(Tornado optimizer with Coriolis force,TOC)
  • 高级java每日一道面试题-2025年3月07日-微服务篇[Eureka篇]-Eureka Server和Eureka Client关系?
  • Docker和Dify学习笔记
  • 详细介绍VUE,带你了解VUE!!!
  • AI对话框实现
  • HarmonyOS开发,A持有B,B引用A的场景会不会导致内存泄漏,看这里!
  • 电机控制常见面试问题(十四)
  • 软件设计师笔记持续更新-看学以致知视频笔记
  • 前后端项目
  • Django之旅:第三节--templates模版的使用
  • 在 Spring Boot 中调用 AnythingLLM 的发消息接口
  • Kafka自定义分区机制
  • Java后端开发技术详解