aliceblue11 commited on
Commit
7df49bf
·
verified ·
1 Parent(s): 9ef6aff

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -174
app.py CHANGED
@@ -558,50 +558,16 @@ def process_font_file(file):
558
  def create_app():
559
  with gr.Blocks(
560
  title="한국어 폰트 라이선스 분석기",
561
- theme=gr.themes.Soft(),
562
- css="""
563
- .main-header {
564
- text-align: center;
565
- background: linear-gradient(90deg, #667eea 0%, #764ba2 100%);
566
- color: white;
567
- padding: 2rem;
568
- border-radius: 10px;
569
- margin-bottom: 2rem;
570
- }
571
- .upload-area {
572
- border: 2px dashed #4CAF50;
573
- border-radius: 10px;
574
- padding: 20px;
575
- text-align: center;
576
- margin: 10px 0;
577
- background: #f8f9fa;
578
- }
579
- .result-summary {
580
- background: #e8f5e8;
581
- border-left: 4px solid #28a745;
582
- padding: 15px;
583
- margin: 10px 0;
584
- border-radius: 5px;
585
- }
586
- .cmd-example {
587
- background: #2d3748;
588
- color: #e2e8f0;
589
- padding: 15px;
590
- border-radius: 5px;
591
- font-family: 'Courier New', monospace;
592
- margin: 10px 0;
593
- }
594
- """
595
  ) as app:
596
 
597
- with gr.Column(elem_classes=["main-header"]):
598
- gr.Markdown("""
599
- # 🔍 한국어 폰트 라이선스 분석기
600
-
601
- **CMD로 추출한 폰트 목록을 업로드하면 라이선스 정보를 분석하여 엑셀로 제공합니다!**
602
-
603
- 💼 상업적 사용 가능 여부 | 📄 출처 표시 필요 여부 | ✏️ 수정/재배포 가능 여부 | 🔗 공식 다운로드 링크
604
- """)
605
 
606
  with gr.Row():
607
  with gr.Column(scale=1):
@@ -609,8 +575,7 @@ def create_app():
609
 
610
  file_input = gr.File(
611
  label="폰트 목록 텍스트 파일 (.txt)",
612
- file_types=[".txt"],
613
- elem_classes=["upload-area"]
614
  )
615
 
616
  analyze_btn = gr.Button(
@@ -619,149 +584,38 @@ def create_app():
619
  size="lg"
620
  )
621
 
622
- with gr.Accordion("💡 CMD 명령어 사용법", open=True):
623
  gr.Markdown("""
624
- ### 1단계: 폰트 폴더 준비
625
- - 제어판 → 글꼴에서 원하는 폰트들을 선택
626
- - 새 폴더를 만들어 복사하여 저장 (예: C:\\MyFonts)
627
 
628
- ### 2단계: CMD로 폰트 목록 추출
629
- """)
 
630
 
631
- with gr.Code(language="bash", elem_classes=["cmd-example"]):
632
- gr.Markdown("""```bash
633
- dir "C:\\MyFonts" /b > font_list.txt
634
- dir "폰트폴더경로" /b > 파일명.txt
635
- ```""")
636
 
637
- gr.Markdown("""
638
- ### 3단계: 생성된 txt 파일 업로드
639
- - 위에서 생성된 font_list.txt 파일을 업로드하세요
640
 
641
  **📝 지원 파일 형식:**
642
  - 한 줄에 하나의 폰트 파일명
643
  - TTF, OTF, TTC 확장자 자동 인식
644
  - UTF-8, CP949, EUC-KR 인코딩 지원
 
 
 
 
 
 
 
 
645
  """)
646
 
647
  with gr.Column(scale=2):
648
  gr.Markdown("## 📊 분석 결과")
649
 
650
- summary_output = gr.Markdown(
651
- "파일을 업로드하고 '분석 시작' 버튼을 클릭하세요.",
652
- elem_classes=["result-summary"]
653
- )
654
 
655
  result_table = gr.Dataframe(
656
- headers=["원본 파일명", "폰트명", "라이선스", "상업적 사용", "출처 표시", "수정 가능", "제공처", "제공처 URL", "비고"],
657
- label="폰트 라이선스 상세 정보",
658
- wrap=True,
659
- interactive=False,
660
- height=400
661
- )
662
-
663
- excel_download = gr.File(
664
- label="📥 엑셀 파일 다운로드",
665
- visible=False
666
- )
667
-
668
- # 샘플 데이터 및 추가 정보
669
- with gr.Accordion("📋 샘플 결과 미리보기", open=False):
670
- sample_data = [
671
- ["NanumGothic.ttf", "나눔고딕", "SIL OFL 1.1", "✅ 가능", "불필요", "가능", "네이버", "https://hangeul.naver.com/2017/nanum", "웹폰트 사용 가능"],
672
- ["Pretendard-Regular.otf", "Pretendard", "SIL OFL 1.1", "✅ 가능", "불필요", "가능", "Kil Hyung-jin", "https://github.com/orioncactus/pretendard", "시스템 UI 최적화 폰트"],
673
- ["YoonGothic.ttf", "윤고딕", "상업적 라이선스 필요", "❌ 유료", "해당없음", "라이선스에 따라", "윤디자인그룹", "https://www.yoondesign.com", "개인 사용만 무료"],
674
- ["BMDOHYEON_ttf.ttf", "배달의민족 도현", "커스텀 무료", "✅ 가능", "불필요", "불가능", "배달의민족", "https://www.woowahan.com/fonts", "BI 제작 시 사용 금지"]
675
- ]
676
-
677
- gr.Dataframe(
678
- value=sample_data,
679
- headers=["원본 파일명", "폰트명", "라이선스", "상업적 사용", "출처 표시", "수정 가능", "제공처", "제공처 URL", "비고"],
680
- label="결과 예시"
681
- )
682
-
683
- with gr.Accordion("ℹ️ 라이선스 유형 설명", open=False):
684
- gr.Markdown("""
685
- ### 주요 라이선스 유형
686
-
687
- **✅ SIL OFL 1.1 (Open Font License)**
688
- - 상업적 사용: 완전 자유
689
- - 출처 표시: 불필요
690
- - 수정/재배포: 가능
691
- - 웹폰트 사용: 가능
692
-
693
- **✅ 커스텀 무료 라이선스**
694
- - 각 제작사별 고유 조건
695
- - 대부분 상업적 사용 가능
696
- - 일부 제한사항 존재 (BI 사용 금지 등)
697
-
698
- **✅ 공공누리 제1유형**
699
- - 공공기관에서 제작한 폰트
700
- - 출처 표시 없이 자유 이용 가능
701
- - 상업적 사용 가능
702
-
703
- **❌ 상업적 라이선스 필요**
704
- - 개인 사용: 무료
705
- - 상업적 사용: 유료 라이선스 구매 필요
706
- - 주로 전문 폰트 제작사 폰트들
707
-
708
- **❓ 확인 필요**
709
- - 데이터베이스에 정보가 없는 폰트
710
- - 제작사 공식 사이트에서 직접 확인 필요
711
- """)
712
-
713
- gr.Markdown("""
714
- ---
715
-
716
- ### ⚠️ 중요 안내사항
717
-
718
- - 이 도구는 참고용으로 제공되며, **법적 책임을 지지 않습니다**
719
- - 상업적 프로젝트에 사용하기 전에는 **반드시 제작사 공식 사이트에서 최종 확인**하세요
720
- - 폰트 라이선스는 **변경될 수 있으니** 정기적으로 확인하시기 바랍니다
721
- - 문제가 있거나 추가하고 싶은 폰트 정보가 있으시면 이슈를 남겨주세요
722
-
723
- ### 📞 도움이 필요하시면
724
- - GitHub Issues를 통해 문의해주세요
725
- - 새로운 폰트 정보 제보도 환영합니다!
726
- """)
727
-
728
- # 이벤트 핸들러
729
- def handle_analysis(file):
730
- if file is None:
731
- return "📁 파일을 업로드해주세요.", None, gr.File(visible=False)
732
-
733
- df, summary, excel_file = process_font_file(file)
734
-
735
- if df is None:
736
- return summary, None, gr.File(visible=False)
737
-
738
- if excel_file:
739
- return summary, df, gr.File(value=excel_file, visible=True)
740
- else:
741
- return summary, df, gr.File(visible=False)
742
-
743
- # 버튼 클릭 이벤트
744
- analyze_btn.click(
745
- fn=handle_analysis,
746
- inputs=file_input,
747
- outputs=[summary_output, result_table, excel_download]
748
- )
749
-
750
- # 파일 업로드 시 자동 분석
751
- file_input.change(
752
- fn=handle_analysis,
753
- inputs=file_input,
754
- outputs=[summary_output, result_table, excel_download]
755
- )
756
-
757
- return app
758
-
759
- # 앱 실행
760
- if __name__ == "__main__":
761
- app = create_app()
762
- app.launch(
763
- server_name="0.0.0.0",
764
- server_port=7860,
765
- share=False,
766
- show_error=True
767
- )
 
558
  def create_app():
559
  with gr.Blocks(
560
  title="한국어 폰트 라이선스 분석기",
561
+ theme=gr.themes.Soft()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
562
  ) as app:
563
 
564
+ gr.Markdown("""
565
+ # 🔍 한국어 폰트 라이선스 분석기
566
+
567
+ **폰트 목록을 업로드하면 라이선스 정보를 분석하여 엑셀로 제공합니다!**
568
+
569
+ 💼 상업적 사용 가능 여부 | 📄 출처 표시 필요 여부 | ✏️ 수정/재배포 가능 여부 | 🔗 공식 다운로드 링크
570
+ """)
 
571
 
572
  with gr.Row():
573
  with gr.Column(scale=1):
 
575
 
576
  file_input = gr.File(
577
  label="폰트 목록 텍스트 파일 (.txt)",
578
+ file_types=[".txt"]
 
579
  )
580
 
581
  analyze_btn = gr.Button(
 
584
  size="lg"
585
  )
586
 
587
+ with gr.Accordion("💡 사용 방법", open=True):
588
  gr.Markdown("""
589
+ ### 📝 간단한 사용법
 
 
590
 
591
+ 1. **폰트 목록 텍스트 파일 준비**
592
+ - 메모장에서 폰트 파일명을 한 줄에 하나씩 입력
593
+ - 예시: `NanumGothic.ttf`, `Pretendard-Regular.otf`
594
 
595
+ 2. **파일 업로드**
596
+ - 위에서 만든 txt 파일을 업로드
 
 
 
597
 
598
+ 3. **결과 확인 및 다운로드**
599
+ - 분석 결과를 확인하고 엑셀 파일 다운로드
 
600
 
601
  **📝 지원 파일 형식:**
602
  - 한 줄에 하나의 폰트 파일명
603
  - TTF, OTF, TTC 확장자 자동 인식
604
  - UTF-8, CP949, EUC-KR 인코딩 지원
605
+
606
+ **✨ 예시 파일 내용:**
607
+ ```
608
+ NanumGothic.ttf
609
+ Pretendard-Regular.otf
610
+ BMDOHYEON_ttf.ttf
611
+ SeoulNamsan-Medium.ttf
612
+ ```
613
  """)
614
 
615
  with gr.Column(scale=2):
616
  gr.Markdown("## 📊 분석 결과")
617
 
618
+ summary_output = gr.Markdown("파일을 업로드하고 '��석 시작' 버튼을 클릭하세요.")
 
 
 
619
 
620
  result_table = gr.Dataframe(
621
+ headers=["원본 파일명", "폰트명", "라이선스", "상업적 사용", "출처 표시", "수정 가능",