|
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") |
|
|