File size: 1,566 Bytes
c929237
 
 
 
 
 
 
 
 
 
 
 
a0c8e19
c929237
 
 
 
 
 
 
 
 
a0c8e19
 
 
c929237
a0c8e19
c929237
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
37
38
39
40
41
42
43
44
45
import os
from PIL import Image, ImageDraw, ImageFont
from typing import List
from font_dataset.font import load_fonts, DSFont
from tqdm import tqdm

os.makedirs("./demo_fonts", exist_ok=True)

font_list, exclusion_rule = load_fonts()
font_list: List[DSFont] = list(filter(lambda x: not exclusion_rule(x), font_list))
font_list.sort(key=lambda x: x.path)

width = 320
height = 150
font_size = 32


def sample_text(font: DSFont) -> str:
    if font.language == "ja":
        return "こんにちは、世界\nフォント識別\nHello, world"
    if font.language == "ko":
        return "안녕하세요, 세계\n글꼴 인식하기\nHello, world"
    if font.language == "zh":
        return "你好,世界\n字体识别 字型辨識\nHello, world"
    if str(font.language).startswith("zh-Hans"):
        return "你好,世界\n字体识别\nHello, world"
    if str(font.language).startswith("zh-Hant"):
        return "你好,世界\n字型辨識\nHello, world"
    return "CJK字体\nCJKフォント\nCJK 글꼴"


for i, font in tqdm(enumerate(font_list)):
    img = Image.new("RGB", (width, height), (255, 255, 255))
    font_obj = ImageFont.truetype(font.path, font_size)
    draw = ImageDraw.Draw(img)
    text_width, text_height = draw.textsize(
        sample_text(font),
        font=font_obj,
        language=None if font.language == "CJK" else font.language,
    )
    x = (width - text_width) // 2
    y = (height - text_height) // 2
    draw.text((x, y), sample_text(font), font=font_obj, fill=(0, 0, 0))
    img.save(f"./demo_fonts/{i}.jpg")