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

  • 就是文件里面多了"'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/73974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用大语言模型生成的合成数据训练YOLOv12:提升商业果园苹果检测的精度与效率

之前小编分享过关于《YOLO11-CBAM集成:提升商业苹果园树干与树枝分割的精准度》,改进YOLO11算法后,进行苹果树的实例分割。本期文章我们将分享关于最新的YOLO12算法改进的苹果目标检测。 论文题目:Improved YOLOv12 with LLM-Gen…

设计模式 二、创建型设计模式

GoF是 “Gang of Four”(四人帮)的简称,它们是指4位著名的计算机科学家:Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides。他们合作编写了一本非常著名的关于设计模式的书籍《Design Patterns: Elements of Reusable…

redis,tar.gz安装后,接入systemctl报错解决

1. WARNING Memory overcommit must be enabled! 这种报错,有两种解决方法 1.1 修改系统参数 编辑 /etc/sysctl.conf 文件,设置 overcommit_memory 为 1 vm.overcommit_memory 11.2 修改redis的最大使用内存 修改配置文件 redis.conf maxmemory 1g…

Python绘图技巧,主流绘图库

一、主流绘图库概览 1. 核心工具对比 库名称特点适用场景Matplotlib基础绘图库,高度可定制科学绘图、论文图表Seaborn基于Matplotlib,统计图表优化数据分布、关系可视化Plotly交互式可视化,支持网页输出仪表盘、动态数据展示Pandas内置简易…

网络安全之前端学习(HTML篇)

前言:网络安全中有一个漏洞叫xss漏洞,就是利用网页引发弹窗,这就要求我们看得懂源码,所以我会持续更新前端学习,可以不精通,但是一定要会,主要掌握HTML,css,js这三项技术…

Qt 多线程设计:死循环与信号槽的权衡

在开发音视频播放器时,多线程设计是不可避免的挑战。音频和视频的解码、播放需要高效运行,同时还要与主线程或其他线程同步,例如通过信号通知播放进度。本文基于一个实际案例,分析了两种线程设计在死循环和信号槽使用中的表现&…

knowledge-微前端(多个前端应用聚合的一个应用架构体系,每个小的应用可独立运行,独立开发,独立部署上线)

1.前言 微前端,将一个大的前端应用拆分为多个小型的,独立开发的前端应用,每一个小型的应用都可以单独的开发,部署和运行。这种结构允许不同的团队使用不同的技术栈来开发应用的不同部分,提高开发的效率与灵活性。 2.实…

工厂函数详解:概念、目的与作用

一、什么是工厂函数? 工厂函数(Factory Function)是一种设计模式,其核心是通过一个函数来 创建并返回对象,而不是直接使用 new 或构造函数实例化对象。它封装了对象的创建过程,使代码更灵活、可维护。 二、…

旋转位置编码(Rotary Positional Encoding, RoPE):中文公式详解与代码实现

旋转位置编码(Rotary Positional Encoding, RoPE):中文公式详解与代码实现 在序列模型中,位置信息对于任务的理解至关重要。传统的绝对和相对位置编码各有优缺点,而RoPE作为一种创新的位置编码方法,展现了…

C语言-指针变量和变量指针

指针 预备知识 内存地址 字节:字节是内存的容量单位,英文名Byte,1Byte8bits 地址:系统为了便于区分每一个字节面对它们的逐一进行编号(编号是唯一的),称为内存地址,简称地址。int…

unityAB包(1/2)

unityAB包学习 1.AB包的导出扩展BuildAssetBundleOptions无特殊选项压缩相关选项 2.AB包资源管理3.Resource和AssetBundle加载方式的区别4.预设体5.Unity Asset Bundle Browser 工具5为什么要勾选拷贝到StreamingAsset里面。6.AB包的加载 1.AB包的导出 首先在Project窗口&…

算法——广度优先搜索——跨步迷宫

原题链接 思路:找出最短路径,然后判断是否存在连续三个点是横纵坐标相等的,如果有就步数减1 但是有两个样例过不了 错误原因:在错误的测试案例中,最短路径可能有多条,而我刚好选了一条比较曲折的&#x…

某酒企数字化转型及电商规划项目启动会暨培训会v(60页PPT)(文末有下载方式)

详细资料请看本解读文章的最后内容。 在当今数字化浪潮席卷之下,企业的发展面临着前所未有的机遇与挑战。对于某酒企而言,数字化转型和电商规划已成为其实现 “二次腾飞”、迈向世界级酒企的关键战略举措。本次启动会暨培训会,为该酒企的转型…

NET6 WebApi第5讲:中间件(源码理解,俄罗斯套娃怎么来的?);Web 服务器 (Nginx / IIS / Kestrel)、WSL、SSL/TSL

一、NET6的启动流程 区别: .NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】_vscode webapi-CSDN博客 2、WebApplicationBuilder:是NET6引入的一个类,是建造者模式的典型应用 1>建造者模式的…

vue中根据html动态渲染内容

需求&#xff1a;根据数据中的html&#xff0c;因为我是在做填空&#xff0c;所以是需要将html中的_____替换成input&#xff0c;由于具体需求我使用的是元素contenteditable代替的可编辑的input html部分 <div class"wrap"><component :is"rendered…

【AI】AI编程助手:Cursor、Codeium、GitHub Copilot、Roo Cline、Tabnine

文章目录 一、基本特性对比二、收费标准三、私有部署能力1、Tabnine2、Roo Code 三、代码补全与自然语言生成代码四、安装独立的IDE安装插件安装 五、基本使用&#xff08;一&#xff09;Cursor&#xff08;二&#xff09;GitHub Copilot1、获取代码建议2.聊天1&#xff09;上下…

三轴云台之角速度信号篇

三轴云台的角速度信号主要通过其内置的传感器&#xff08;如陀螺仪&#xff09;来感知和测量。 一、角速度信号的感知与测量 在三轴云台中&#xff0c;陀螺仪是测量角速度的关键组件。它通常安装在三个互相垂直的轴上&#xff08;通常为X、Y、Z轴&#xff09;&#xff0c;能够…

Grid 布局实现三栏布局

使用 CSS Grid 布局实现三栏布局(左右固定 100px,中间自适应)的核心原理是通过网格模板精确控制列宽分配。以下是具体实现方法及优化技巧: 一、基础实现 ​父容器设置 为外层容器添加 display: grid 使其成为网格容器,并通过 grid-template-columns 定义列宽 css .contain…

绿盟春招实习一面

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…

进制转换(R转十)(1290. 二进制转换十进制、1292. 十六进制转十进制、1291. 八进制转十进制、1405. 小丽找潜在的素数)

题单地址&#xff1a;题单中心-东方博宜OJ 这里以二进制转十进制为例&#xff08;按位加权求和法&#xff09; 1290. 二进制转换十进制 问题描述 请将一个 25 位以内的 2 进制正整数转换为 1010 进制&#xff01; 输入 一个 25 位以内的二进制正整数。 输出 该数对应的…