装修小支线:拆分字体合集为单独字体文件。
我博客的字体用的源云明体,一个比较难受的是,在其他网站上找到的单独的 ttf 文件字库缺非常非常多的字,猫啃网的源云明体字体字库倒是全,但它是几个字体压在一起做成的 ttc 文件,我这里单独处理字体字库不是很方便,所以我需要想办法把 ttc 拆成 ttf。
互联网上其实有很多 ttc 转 ttf 的工具,我本来以为不太需要费功夫,但是可能是因为中文字体文件比较大?加上源云明体本身文件大小也比较大,所以我尝试的每一个在线工具都拆分失败了。我又不想单独为这个下载软件,正好搜到了 python 可以用 fonttools 工具来做拆分,调试后成功了,在这里分享一下。
首先电脑需要装 Python,之后要装上 fonttools 这个库,我之前做字体文件压缩处理的时候装过。这里列一下,我的 Python 版本是 3.12.3
,fonttools 版本是 4.51.0
。
然后是 python 代码。这个代码本来是抄的网页上的某个代码(具体网址我忘了),但是因为 fonttools 的版本似乎不太一样,有一些具体处理的问题,比如 ttc 作为一个合集文件不能直接用一些 ttf 的处理方法,中间翻了几次文档,修改重写了几次,就不把原代码和过程放出来了(因为我忘了)。最后我跑出来没问题的代码如下。
1from fontTools.ttLib import ttCollection
2import os
3
4def convert_ttc_to_ttf(ttc_file_path, output_dir):
5
6 # 打开 TTC 文件
7 collection = ttCollection.TTCollection(ttc_file_path)
8
9 # 确保输出目录存在
10 if not os.path.exists(output_dir):
11 os.makedirs(output_dir)
12
13 fonts = collection.fonts
14
15 # 遍历每个字体并将其保存为 TTF 文件
16 for index, font in enumerate(fonts):
17 ttf_file_name = os.path.join(output_dir, f"font_{index}.ttf")
18 font.save(ttf_file_name)
19 print(f"Font saved as {ttf_file_name}")
20
21# 使用示例
22ttc_file_path = "F:/blogtools/fontprocess/GenWanMin2-R.ttc" # 替换为你的 TTC 文件路径
23output_dir = "F:/blogtools/fontprocess" # 替换为你希望保存 TTF 文件的目录
24
25convert_ttc_to_ttf(ttc_file_path, output_dir)
我把这段代码命名为 ttctottf.py
,存在名叫 fontprocess 文件夹下面,运行的时候直接在文件夹下面右键 git bash 以后在命令行里输入 python ttctottf.py
就可以拆分 ttc 文件了,拆出来的 ttf 的文件名出来好像是带数字的,1234,不过可以打开 ttf 文件自己看 ttf 文件的名字,小问题,能用就行!
感觉未必有人需要,但总之万一呢?随手记一下。