- 세상의 모든 계산기 자유(질문) 게시판 팁 & 정보 ()
(프로그램) 계산기 폰트를 이미지로 저장하는 python 프로그램
import os
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageDraw, ImageFont
from fontTools.ttLib import TTFont
def create_character_images(font_path, output_folder, output_height=32):
# 폰트 파일 로드
font_size = output_height * 2 # 초기 폰트 크기를 출력 높이의 2배로 설정
font = ImageFont.truetype(font_path, font_size)
ttfont = TTFont(font_path)
# 출력 폴더 생성
os.makedirs(output_folder, exist_ok=True)
# 폰트에서 사용 가능한 모든 문자 추출
characters = set()
for table in ttfont['cmap'].tables:
for char_code, char_name in table.cmap.items():
if char_code < 0x10000: # Unicode 범위 내의 문자만 처리
characters.add(chr(char_code))
# 각 문자에 대해 이미지 생성
for char in characters:
# 문자의 크기 측정
left, top, right, bottom = font.getbbox(char)
width = max(1, right - left)
height = max(1, bottom - top)
# 여유 공간 추가
padding = font_size // 20 # 폰트 크기의 5%를 패딩으로 사용
width += padding * 2
height += padding * 2
# 이미지 생성
img = Image.new('RGBA', (width, height), (255, 255, 255, 0))
draw = ImageDraw.Draw(img)
# 문자 그리기
draw.text((padding - left, padding - top), char, font=font, fill=(0, 0, 0, 255))
# 여백 제거
bbox = img.getbbox()
if bbox:
img = img.crop(bbox)
else:
continue # 빈 이미지인 경우 건너뛰기
# 높이를 32픽셀로 조정하면서 비율 유지
if img.height > 0:
new_height = output_height
new_width = max(1, int(img.width * (new_height / img.height)))
img = img.resize((new_width, new_height), Image.LANCZOS)
else:
continue # 높이가 0인 경우 건너뛰기
# 이미지 저장
filename = f"{ord(char):04X}.png"
img.save(os.path.join(output_folder, filename))
print(f"{output_folder}에 생성된 이미지: {len(characters)}개")
# 파일 선택 대화상자 표시
root = tk.Tk()
root.withdraw() # 기본 창 숨기기
font_path = filedialog.askopenfilename(
title="폰트 파일 선택",
filetypes=[("TrueType Font", "*.ttf"), ("All Files", "*.*")]
)
if font_path:
# 출력 폴더 생성
font_dir = os.path.dirname(font_path)
font_name = os.path.splitext(os.path.basename(font_path))[0]
output_folder = os.path.join(font_dir, font_name)
create_character_images(font_path, output_folder, output_height=32)
else:
print("폰트 파일이 선택되지 않았습니다.")
1. 실행
2. .ttf 폰트 파일 선택
3. 선택한 폰트 파일이 있는 곳 아래에 폰트파일명의 폴더가 생성됨
4. 폰트 이미지가 png 파일로 저장됨 : 배경(background) 없음.
댓글4
-
세상의모든계산기

버튼 안쪽은 색이 칠해지는게 좋을 것 같기도 한데...
일단은 이걸로 만족합니다.
예전에 폰트 설치하고,
문서 보면서
-> 포토샵에서 키 하나씩 눌러가며 이미지 만들고
-> 크기 맞춰서 저장하고
-> 또 리사이즈하고
하나하나 삽질하면서 만들었던 기억이 나는데
인공지능 시대가 좋네요.
프로그램 찾는 것보다도 빠르게 맞춤형으로 만들어주니...
* 사이트에 올릴 때는 파일명 순서로 나와서,
계산기 버튼 배치에 맞게 파일명은 노가다로 수정해 주어야 합니다.
-

세상의모든계산기 님의 최근 댓글
2) 고정기준값 41에 대한 오차 제곱합 계산방법 이건 통계메뉴에서는 딱히 방법이 떠오르지 않네요. 질문하신 것과 같이 적은 갯수의 data라면 직접 입력하시는게 최선입니다. 하지만 DATA 갯수가 수십개 이상이라면? ㄴ 스프레드시트 기능을 이용하시는게 좋겠습니다. 【MENU】【8】 A열에 DATA 입력하고 B로 이동한 후 OPTN 【1】 Fill Formula 【ALPHA】키 방향키 숫자키 등을 이용해 수식 완성 C로 이동후 Formula 수식 입력 D의 빈공간으로 이동 후 OPTN 방향키 아래 누르다보면 Sum 보임 ALPHA 키 이용해서 수식 완성. : 기호는 MENU 버튼 바로 아래 있음 (ALPHA키로 입력) 【=】입력하면 최종결과 확인 * 주의 (B열, C열과 달리) D1 셀은 계산 결과인 951이 직접 입력된 상태이므로 DATA 수정후 recalculation 하여도 자동계산되지 않음. 자동계산을 위해서는 formula 형식으로 입력해야 함. 2026 10.27 1) 통계적 편차제곱합(평균 50.25기준) 입력 방법 【MENU】 【6】 【1】 로 1-var Stat 모드로 진입하여 【48】 【=】 【66】 【=】 【32】 【=】 【55】【=】 DATA 입력 【OPTN】 【3】 【▼】 【▼】 fx-570EX 기종에도 편차제곱합을 바로 보여주진 않습니다. 본문에 나온 것처럼 앞서 계산되어 저장된 각종 변수를 이용해 계산합니다. 【AC】【OPTN】【4】Statistics Calc 이 화면에서 다시 OPTN 하고 (메뉴가 3개로 줄어 있죠?) 여기서 화살표 아래를 내려보면 추가 메뉴가 있습니다. 4개 메뉴에는 각각 아래 하위 메뉴가 있습니다. 이 중에서 필요로 하는 것을 골라 계산하시면 되겠습니다. Variable 에 있는 값을 이용하면 다른 공식을 쓰셔도 됩니다. 2026 10.27 질문자님, 48,66,32,55 네 개 DATA 의 평균은 50.25라서 41은 평균이 아닙니다. 그래서 식을 두 가지로 나눠서 봐야 합니다. 1) 통계적 편차제곱합(평균 50.25기준)이면 답은 608.75 입니다. 2) 만약 41이라는 고정 기준값에 대한 제곱합을 구하시는 거면 식은 (48-41)²+... 이고 답은 951입니다. 원문에 +로 쓰신 건 -의 오타로 보입니다. 2026 10.27 본문의 변환 위젯에 사용된 전서체 폰트는 대만의 최고 학술 연구 기관인 중앙연구원(Academia Sinica)에서 제공하는 ‘숭희전체(崇羲篆體)’로 전통 한자 서체인 소전(小篆)을 현대 컴퓨터 폰트(글꼴)로 구축한 오픈소스 프로젝트로 개발되었습니다. https://xiaoxue.iis.sinica.edu.tw/chongxi/download.htm 2026 10.20 예제1) 예제2) 예제3) 추가옵션 2026 10.18