Char开发日志:1月19日

Char 是一个我的摸鱼游戏。

有一个冷门的需求,我需要把一个字体的 ttf 文件里的每个英文字母都导出成为一个单独的图片。依然是使用 Python 写了个程序解决:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from PIL import Image, ImageDraw, ImageFont
from fontTools.ttLib import TTFont
import os
import string

def extract_and_save_characters_from_ttf(ttf_path, output_folder):
# 加载字体文件
font = TTFont(ttf_path)
ttf = ImageFont.truetype(ttf_path, 40)

# 创建输出文件夹,如果它不存在的话
if not os.path.exists(output_folder):
os.makedirs(output_folder)

# 定义一个函数来清理文件名
def clean_filename(char, char_code):
valid_chars = f"-_.() {string.ascii_letters}{string.digits}"
cleaned = ''.join(c for c in char if c in valid_chars)
# 在文件名中加入字符的Unicode编码
return f"{cleaned}_{char_code}"

# 遍历字体文件中的每个字符
for table in font['cmap'].tables:
for char_code in table.cmap:
char = chr(char_code)
image = Image.new('RGBA', (50, 50), (255, 255, 255, 0)) # 创建带有透明背景的图片
draw = ImageDraw.Draw(image)
draw.text((10, 5), char, font=ttf, fill=(255, 255, 255, 255)) # 使用白色绘制文字

# 清理字符名称,用于文件名
cleaned_char = clean_filename(char, char_code)

# 保存字符的图片文件
image.save(os.path.join(output_folder, f'{cleaned_char}.png'))

extract_and_save_characters_from_ttf(r'文件地址.ttf', 'output_folder')