• SEARCH

    통합검색
세모계
    • Dark Mode
    • GNB Always Open
    • GNB Height Maximize
    • Color
    • Brightness
    • SINCE 2015.01.19.
    • 세모계 세모계
    •   SEARCH
    • 세상의 모든 계산기
      • 자유(질문) 게시판
      • 계산기 뉴스/정보
      • 수학, 과학, 공학 이야기
      • 세모계 : 공지 게시판
        • 구글 맞춤검색
    • TI
    • CASIO
    • HP
    • SHARP
    • 일반(쌀집) 계산기
    • 기타계산기
    • by OrangeDay
  • 세상의 모든 계산기 자유(질문) 게시판
    • 세상의 모든 계산기 자유(질문) 게시판 팁 & 정보 ()
    • (프로그램) 계산기 폰트를 이미지로 저장하는 python 프로그램

    • Profile
      • 세상의모든계산기
      • 2024.06.28 - 17:19 2024.06.26 - 08:43 11114 4
    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) 없음.

     

    Attached file
    image.png 2.1KB 58
    이 게시물을..
    N
    0
    0
    • 세상의모든계산기 25
      세상의모든계산기

      계산기는 거들 뿐
      혹은
      계산기를 거들 뿐

    세상의모든계산기 님의 최근 글

    ban 설정 강화 73537 1 2026 05.09 정적분 구간에 미지수가 있고, solve 를 사용할 수 없을 때 그 값을 확인하려면? 2682 4 2026 04.10 높아질수록 좁아지는 시야에 대하여 - written by ChatGPT 12358 2026 02.12 내가 올해 몇살이더라? (내 나이 계산기) 9889 2026 02.11 AGI 자기 거버넌스 구조와 인간-AGI 관계 모델 (written by GEMINI & GPT) 12837 1 2026 01.30

    세상의모든계산기 님의 최근 댓글

    본문의 변환 위젯에 사용된 전서체 폰트는 대만의 최고 학술 연구 기관인 중앙연구원(Academia Sinica)에서 제공하는 ‘숭희전체(崇羲篆體)’로 전통 한자 서체인 소전(小篆)을 현대 컴퓨터 폰트(글꼴)로 구축한 오픈소스 프로젝트로 개발되었습니다. https://xiaoxue.iis.sinica.edu.tw/chongxi/download.htm 2026 10.20 예제1)      예제2)       예제3)      추가옵션    2026 10.18 PC 소프트웨어에서 script Editor 로 소스코드를 쉽게 복사 -> AI에게 문의/개선요청 할 수 있습니다. 잘 되거나, 잘 안되는 부분이 있으면 대댓글 남겨주세요. 2026 10.16 AI로 딸깍하니까, lua 프로그램으로 바꿔주네요. 세상 참... 본문의 ti-basic 기반으로 만들었고, 서로 문제를 일으킬 수 있을 듯 하여 별개의 파일로 작성하였습니다.  1.1 Page : 설명 1.2 Page : 그래프  1.3 Page : Calculator     사용법  Root Locus 1+K*N/D=0    EX: (6s^2+5s+2)/(6s^3(s^2+7s+16)) INPUT (Calculator page 1.3 ):    rl_num:={6,5,2}    rl_den:={6,42,96,0,0,0}  or    num(6s^2+5s+2)    den(6s^3(s^2+7s+16))    optional:   rl_T:=10  rl_D:=1  Coeffs are descending powers of s.  Back on graph page it refreshes itself,  else press [r] or [enter].  KEYS: [+] [-] Kmax zoom, [0] reset, [r] reload  MARKS: x=pole, o=zero, red line=real axis,  gray dash=asymptote, box=break pt, diamond=j-cross  VARS: rl_Kmax rl_sigma rl_r rl_JK rl_Jw    첨부파일 rlocus_lua.tns   2026 10.16 링크가 깨졌다고 하시니   404 에러가 나는 아래 링크를 말씀하시는 것 같은데  https://digilander.libero.it/fpirozzi/fourier.zip 이것은 TI-89 / TI-92 용 파일이며    [TI-92][TI-89] Fourier Transform Library https://allcalc.org/52455 링크의 Attached files + 안에 있습니다.  2026 09.11
    글쓴이의 서명작성글 감추기 

    댓글4

    • Profile 0
      세상의모든계산기
      2024.06.26 - 08:50 2024.06.26 - 08:46 #42867

      image.png

       

      버튼 안쪽은 색이 칠해지는게 좋을 것 같기도 한데...

      일단은 이걸로 만족합니다. 

       

      예전에 폰트 설치하고,

      문서 보면서

      -> 포토샵에서 키 하나씩 눌러가며 이미지 만들고 

      -> 크기 맞춰서 저장하고

      -> 또 리사이즈하고

      하나하나 삽질하면서 만들었던 기억이 나는데 

       

      인공지능 시대가 좋네요. 

      프로그램 찾는 것보다도 빠르게 맞춤형으로 만들어주니...

       

      * 사이트에 올릴 때는 파일명 순서로 나와서,

      계산기 버튼 배치에 맞게 파일명은 노가다로 수정해 주어야 합니다. 

      Attached file
      image.png 124.8KB 41
      댓글
    • Profile 0
      세상의모든계산기
      2024.06.26 - 09:22 2024.06.26 - 09:21 #42871

      image.png

      기타 버튼들도 추가

       

      Attached file
      image.png 87.5KB 38
      댓글
    • Profile 0
      세상의모든계산기
      2024.06.26 - 09:46 #42894

      카시오 폰트 

      https://allcalc.org/board_casio/3663

      댓글
    • Profile 0
      세상의모든계산기
      2024.06.29 - 08:20 2024.06.28 - 17:19 #43105

      test 

      테스트

      볼드
      bold eng

      댓글
    • 댓글 입력
    • 에디터 전환
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • 목록
      view_headline
    4
    × CLOSE
    전체 일반 389 질문 509 웃김 2 팁 & 정보 16 퀴즈 2 리뷰 11 퍼옴 & 링크 6 공지 1
    기본 (0) 제목 날짜 수정 조회 댓글 추천 비추
    분류 정렬 검색
    등록된 글이 없습니다.
    • 글쓰기
    • 세상의 모든 계산기 자유(질문) 게시판
    • 세상의모든계산기
    • 사업자등록번호 703-91-02181
    • 세모계 all rights reserved.