KR101905300B1 - 외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법 - Google Patents

외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법 Download PDF

Info

Publication number
KR101905300B1
KR101905300B1 KR1020170012703A KR20170012703A KR101905300B1 KR 101905300 B1 KR101905300 B1 KR 101905300B1 KR 1020170012703 A KR1020170012703 A KR 1020170012703A KR 20170012703 A KR20170012703 A KR 20170012703A KR 101905300 B1 KR101905300 B1 KR 101905300B1
Authority
KR
South Korea
Prior art keywords
font
metafont
points
attribute
outline
Prior art date
Application number
KR1020170012703A
Other languages
English (en)
Other versions
KR20180088087A (ko
Inventor
최재영
권경재
손민주
정근호
Original Assignee
숭실대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 숭실대학교산학협력단 filed Critical 숭실대학교산학협력단
Priority to KR1020170012703A priority Critical patent/KR101905300B1/ko
Priority to PCT/KR2017/002365 priority patent/WO2018139700A1/ko
Priority to JP2019521360A priority patent/JP2019528485A/ja
Priority to US16/305,486 priority patent/US11036917B2/en
Priority to CN201780042717.4A priority patent/CN109478200B/zh
Publication of KR20180088087A publication Critical patent/KR20180088087A/ko
Application granted granted Critical
Publication of KR101905300B1 publication Critical patent/KR101905300B1/ko

Links

Images

Classifications

    • G06F17/214
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/109Font handling; Temporal or kinetic typography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • G06F17/2217
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/126Character encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/20Function-generator circuits, e.g. circle generators line or curve smoothing circuits
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/22Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
    • G09G5/24Generation of individual character patterns
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/22Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
    • G09G5/24Generation of individual character patterns
    • G09G5/28Generation of individual character patterns for enhancement of character form, e.g. smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Operations Research (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

외곽선 폰트를 이용하여 METAFONT에 의한 폰트를 생성하는 장치 및 방법이 개시된다. 개시된 폰트 생성 장치는 프로세서가 포함된 장치에서 수행되는 METAFONT에 의한 폰트를 생성하는 방법에 있어서, XML로 기술된 외곽선 폰트의 코드에 상기 METAFONT를 위한 속성을 추가하여 중간 코드를 생성하는 단계 (a); 및 상기 중간 코드를 파싱하여 획득한 점들의 정보를 이용하여 상기 METAFONT에 의한 폰트를 생성하는 단계 (b);를 포함한다.

Description

외곽선 폰트를 이용하여 METAFONT에 의한 폰트를 생성하는 장치 및 방법{Apparatus and method for generating fonts by METAFONT using outline fonts}
본 발명의 실시예들은 METAFONT에 의한 폰트를 생성하는 장치 및 방법에 관한 것으로서, 보다 상세하게는 외곽선 폰트의 편집 방식을 이용함으로써 새로운 폰트를 실시간으로 생성하며 새로운 폰트 생성 시 외곽선 편집 방식으로 폰트를 작성할 때 보다 시간 및 비용을 줄일 수 있으며, METAFONT를 학습하지 않더라도 폰트를 생성할 수 있는 장치 및 방법에 관한 것이다.
글(text)은 정보를 기록하고 전달하는 효과적인 방법이다. 스마트 기기가 보편화되면서 사용자는 핸드라이팅(handwriting)과 같은 아날로그 폰트보다는 디지털 기기에 글자 표현하는 디지털 폰트를 더 많이 사용한다. 이러한 환경 속에서 다양한 스타일의 디지털 폰트들이 제작되고 있다.
일반적으로 사용되는 디지털 폰트는 비트맵 폰트 타입과 외곽선 폰트 타입이 있다. 비트맵 폰트는 각각의 글자를 모두 비트맵 이미지로 작성하며, 글씨의 크기를 지원하기 위해 각 크기에 대한 별도의 파일이 준비되어야 한다. 외곽선 폰트는 글자의 모양을 그리는 방법을 함수로 작성한 폰트 타입으로서, 직선과 곡선을 사용하여 폰트의 외곽선을 그린 후, 내부 영역을 채우는 방식으로 동작한다. 외곽선 폰트는 외곽선 정보를 계산하여 글자의 크기 조절이 자유롭기 때문에 크기에 상관없이 폰트를 사용할 수 있으며 고품질의 출력이 가능하다. 하지만, 비트맵 폰트 및 외곽선 폰트의 경우, 기존에 완성된 폰트의 획의 굵기, 모양과 같은 스타일의 변화를 주기 위해서는 일일이 수정해야 하는 단점이 있다.
보다 상세하게, 비트맵 폰트는 고정된 이미지 폰트이므로, 폰트의 크기에 따라 새로운 폰트를 제작해야 한다. 따라서, 요구되는 글자 크기에 따라 폰트를 제작하는데 소요되는 시간이 많으며, 폰트 데이터의 저장 용량이 매우 커지는 단점이 있다.
이러한 단점을 개선할 수 있는 외곽선 폰트는 글자의 크기 조절이 자유롭기 때문에 모든 크기의 글자를 가지고 있으므로, 저장 용량이 큰 비트맵 폰트에 비해 하나의 폰트 데이터만 필요하므로 저장 용량이 작아지는 장점이 있다. 하지만, 복잡한 수학적 처리 과정인 레스터 과정을 거치므로 시스템의 부하가 크며, 점(point)과 선(line)의 수가 많으면 많을수록 부하가 더욱 커지는 단점이 있다. 또한, 외곽선 폰트는 글자를 표현하기 위하여 글자의 기준점과 조절점 정보만 가지고 있을 뿐이며, 획에 대한 정보를 가지고 있지 않다. 따라서 폰트 디자이너가 기존에 완성된 폰트의 획의 굵기, 모양과 같은 스타일의 변화를 주기 위해서는 기준 점과 조절 점을 일일이 수정해야 하는 단점이 있다.
이러한 비트맵, 외곽선 폰트와는 다르게 글자의 획과 펜의 모양을 사용하는 METAFONT가 연구되었다. METAFONT는 폰트를 표현하는 프로그래밍 언어로써, 코드에 명시된 값에 따라 다양한 글자를 표현할 수 있다. 따라서, 코드를 작성할 때 변화가 가능한 스타일을 매개변수로 만들고, 매개변수의 값을 변화시킴으로써 다양한 스타일의 폰트를 쉽게 생성할 수 있다.
하지만, METAFONT는 출력을 위한 이미지가 아니라 텍스트 형식의 프로그래밍 언어이므로 프로그래밍에 익숙하지 않은 폰트 디자이너가 직접 사용하기 어렵다. 또한, 디자인에 익숙하지 않은 METAFONT 개발자가 폰트를 제작하는 경우, 그래픽 도구가 아닌 METAFONT 프로그래밍 개발 툴로 작성해야 하기 때문에 METAFONT를 이용한 폰트 개발은 많은 비용과 시간이 소요된다.
상기한 바와 같은 종래기술의 문제점을 해결하기 위해, 본 발명에서는 외곽선 폰트의 편집 방식을 이용함으로써 새로운 폰트를 실시간으로 생성하며 새로운 폰트 생성 시 외곽선 편집 방식으로 폰트를 작성할 때 보다 시간 및 비용을 줄일 수 있으며, METAFONT를 학습하지 않더라도 폰트를 생성할 수 있는 장치 및 방법을 제안하고자 한다.
본 발명의 다른 목적들은 하기의 실시예를 통해 당업자에 의해 도출될 수 있을 것이다.
상기한 목적을 달성하기 위해 본 발명의 바람직한 일 실시예에 따르면, 프로세서가 포함된 장치에서 수행되는 METAFONT에 의한 폰트를 생성하는 방법에 있어서, XML로 기술된 외곽선 폰트의 코드에 상기 METAFONT를 위한 속성을 추가하여 중간 코드를 생성하는 단계 (a); 및 상기 중간 코드를 파싱하여 획득한 점들의 정보를 이용하여 상기 METAFONT에 의한 폰트를 생성하는 단계 (b);를 포함하는 것을 특징으로 하는 폰트 생성 방법이 제공된다.
상기 METAFONT를 위한 속성은, 외곽선을 구성하기 위한 상기 점들 중 2개의 점을 쌍으로 지정하기 위한 제1 속성, 외곽선의 내부 영역을 채우는지 여부를 지정하기 위한 제2 속성을 포함할 수 있다.
상기 METAFONT를 위한 속성은, 미리 위치 좌표가 설정된 점 A의 위치 좌표에 의존하여 점 B의 위치 좌표를 변화시키기 위한 제3 속성 및 점의 세리프를 설정하기 위한 제4 속성 중 적어도 하나를 더 포함할 수 있다.
상기 외곽선 폰트는 UFO(Unified Font Object) 형식이며, 이고, 상기 METAFONT를 위한 속성은 상기 UFO의 코드 내의 'point' 태그 내에 포함될 수 있다.
상기 외곽선 폰트의 코드 및 상기 중간 코드는 4개의 점으로 구성되는 Cubic 곡선 및 3개의 점으로 구성되는 Quadratic 곡선을 표현할 수 있으나, 상기 METAFONT의 코드는 상기 Cubic 곡선만을 표현할 수 있으며, 상기 단계 (b)는, 아래의 수학식을 이용하여 상기 중간 코드에서의 Quadratic 곡선을 상기 METAFONT에서의 Cubic 곡선으로 변환할 수 있다.
Figure 112017009514832-pat00001
여기서, CP0 및 CP3는 상기 4개의 점 중 2개의 기준점, CP1 및 CP 2는 상기 4개의 점 중 2개의 조절점, QP0 및 QP2는 상기 3개의 점 중 2개의 기준점, QP1는 상기 3개의 점 중 1개의 조절점을 각각 의미한다.
또한, 본 발명의 다른 실시예에 따르면, METAFONT에 의한 폰트를 생성하는 장치에 있어서, XML로 기술된 외곽선 폰트의 코드에 상기 METAFONT를 위한 속성을 추가하여 중간 코드를 생성하는 중간 코드 생성부; 및 상기 중간 코드를 파싱하여 획득한 점들의 정보를 이용하여 상기 METAFONT에 의한 폰트를 생성하는 출력 폰트 생성부;를 포함하는 것을 특징으로 하는 폰트 생성 장치가 제공된다.
본 발명에 따르면, 새로운 폰트를 실시간으로 생성하며 새로운 폰트 생성 시 외곽선 편집 방식으로 폰트를 작성할 때 보다 시간 및 비용을 줄일 수 있으며, METAFONT를 학습하지 않더라도 폰트를 생성할 수 있는 장점이 있다.
또한, 본 발명의 효과는 상기한 효과로 한정되는 것은 아니며, 본 발명의 상세한 설명 또는 특허청구범위에 기재된 발명의 구성으로부터 추론 가능한 모든 효과를 포함하는 것으로 이해되어야 한다.
도 1은 METAFONT에서, 4개의 점을 이용하여 곡선을 표현하는 일례를 도시한 도면이다.
도 2는 알파벳 글자 'B'를 METAFONT로 프로그래밍한 코드의 일례를 도시한 도면이다.
도 3은 변수 변경을 통해 글자의 스타일이 변형되는 METAFONT의 일례를 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 폰트 생성 장치의 개략적인 구성을 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따른 폰트 생성 방법의 흐름도를 도시한 순서도이다.
도 6은 본 발명의 실시를 위한 시스템의 상세한 구조를 도식화한 대표 도면이다.
도 7은 종래의 UFO의 코드를 도시한 도면이다.
도 8은 본 발명의 일 실시예에 따른 중간 코드의 일례를 도시한 도면이다.
도 9은 본 발명의 일 실시예에 따른 곡선 표현 방식을 설명하기 위한 도면이다.
본 명세서에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "구성된다" 또는 "포함한다" 등의 용어는 명세서상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
이하, 본 발명의 다양한 실시예들을 첨부된 도면을 참조하여 상술한다.
먼저, 본 명세서에는 본 발명의 기초가 되는 METAFONT의 개념에 대해 설명하기로 한다.
METAFONT는 TeX에서 사용하는 글꼴 공급 시스템이며, 모든 글자마다 그리는 방법을 표현한 '글자 그리기 함수'와 글자를 꾸미는 '스타일 파라미터'로 구성된다. 즉, 글자를 그리는 방법은 정해져 있지만 스타일을 결정하는 파라미터(스타일 값)이 분리되어 있으므로, METAFONT는 스타일 파라미터를 변경하여 얼마든지 원하는 스타일의 폰트로 변형할 수 있다.
그리고, METAFONT에서는 Cubic 베지어 곡선을 이용하여 문자의 곡선을 표현하며, 이는 도 1에 도시된 바와 같다. 도 1을 참조하면, 곡선은 4개의 점(point, 점)으로 정의된다. 이 때, P0와 P3를 곡선의 기준점이고, P1과 P2는 방향을 제공하는 조절점이다. 곡선은 P0에서 P1 방향으로 시작되어서 P3에 P2 방향으로 도착해서 그려지며, 조절점의 이동으로 다양한 자유 곡선을 얻는다. 여기서, 조절 점 P1과 P2는 곡선 위를 통과하지 않으며, 단순히 방향 정보만 제공한다.
또한, METAFONT는 프로그래밍 언어이므로 코드를 작성할 때 변화가 가능한 스타일을 매개변수로 만들 수 있으며, 이 매개변수의 값을 변화시킴으로써 문자의 크기, 굵기, 그리고 펜의 모양 등을 자유롭게 변경하여 다양한 폰트를 생성할 수 있다.
일례로, 도 2에서는 알파벳 글자 'B'를 표현하기 위한 METAFONT의 소스코드를 도시하고 있으며, 도 3의 (a)는 도 2의 소스코드를 실행하여 생성된 결과물을 도시하고 있다. 소스코드 2번째 줄에 정의되어 있는 stem 변수는 문자의 굵기에 영향을 주는 변수이며, stem 값을 변화시키면 문자의 굵기가 전체적으로 변화하게 되며, 이는 도 3의 (b)에서 확인할 수 있다.
도 4는 본 발명의 일 실시예에 따른 폰트 생성 장치의 개략적인 구성을 도시한 도면이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 폰트 생성 장치(400)는 METAFONT에 의한 폰트를 생성하는 장치로서, 입력부(410), 중간 코드 생성부(420) 및 출력 폰트 생성부(430)를 포함한다.
그리고, 도 5는 본 발명의 일 실시예에 따른 폰트 생성 방법의 흐름도를 도시한 순서도이다. 이 때, 상기 방법은 프로세서가 포함된 장치인 폰트 생성 장치(400)에서 수행될 수 있다.
그리고, 도 6은 본 발명의 실시를 위한 시스템의 상세한 구조를 도식화한 대표 도면이다.
이하, 도 4 내지 도 6를 참조하여 각 구성 요소 별 기능 및 각 단계 별로 수행되는 과정을 설명하기로 한다.
먼저, 단계(510)에서, 입력부(410)는 완성된 외곽선 폰트 내지 완성된 외관선 폰트의 코드를 입력받는다. 이 때, 완성된 외곽선 폰트는 XML로 기술된 폰트로서, 폰트 디자이너가 생성한 폰트일 수 있다.
다음으로, 단계(520)에서, 중간 코드 생성부(420)는 XML로 기술된 외곽선 폰트의 코드에 METAFONT의 속성을 추가하여 중간 코드를 생성한다.
계속하여, 단계(530)에서, 출력 폰트 생성부(430)는 중간 코드를 파싱하여 획득한 점들의 정보를 이용하여 METAFONT에 의한 폰트를 생성한다.
즉, 본 발명은 폰트 디자이너가 익숙한 외곽선 폰트 방식(XML로 기술됨)에 METAFONT에 필요한 속성과 METAFONT에서 사용하는 특수한 기능들을 지원하기 위한 속성을 추가하여 중간 코드 생성부(420)에서 중간 코드를 생성하며, 출력 폰트 생성부(430)는 중간 코드를 입력 파일로 받아 파싱하여 얻은 데이터를 계산하여 METAFONT 코드를 생성하며, 폰트 사용자는 생성된 METAFONT 코드에서 스타일을 변경할 수 있는 매개변수 값을 변경하여 다양한 스타일의 폰트를 생성할 수 있다.
본 발명의 세부적인 구성에 대해 살펴보면 다음과 같다.
본 발명의 일 실시예에 따르면, 외곽선 폰트는 UFO(Unified Font Object)에 따른 폰트일 수 있다.
UFO은 하나의 파일로 이루어진 일반적인 외곽선 폰트와는 다르게 디렉터리 구조로 되어 있다. 또한, 바이너리 형태로 이루어진 다른 외곽선 폰트와는 다르게 UFO은 폰트 데이터를 XML로 기술하여 사람과 기계 모두가 읽을 수 있는 형식을 갖도록 규정된다.
도 7은 종래의 UFO의 코드를 도시한 도면이다. 도 7을 참조하면, 'point' 태그는 직선 또는 곡선을 표현하기 위하여 'x'와 'y' 속성을 이용하여 점의 위치를 정의한다. 또한 'type' 속성에 'line', 'curve' 및 'qcurve' 등을 이용하여 선의 종류를 선택한다. 'line'일 경우, 이전 'point' 태그와 현재 'point' 태그의 점을 이어 직선을 표현한다. 그리고 'curve'와 'qcurve'는 곡선의 종류 중 Cubic 베지어 곡선과 Quadratic 베지어 곡선을 나타낸다. 곡선은 기준점과 조절점이 필요하므로 두 개의 기준점 사이에 'type' 속성이 없는 'point' 태그를 추가하여 조절점을 정의한다.
UFO의 가장 큰 특징은 정의되어 있지 않은 XML의 태그나 속성을 사용자가 정의할 수 있다. 이를 이용하여 상기한 단계(520) 및 단계(530)에서 시스템에 필요한 데이터를 UFO의 코드에 추가하고 파싱하여 사용할 수 있다.
이하, 설명의 편의를 위해, 외곽선 폰트를 UFO로 가정하여 설명하기로 한다. 그러나, 본 발명이 이에 한정되는 것은 아니다.
그리고, 본 발명의 일 실시예에 따르면, 단계(520)에서 추가되는 METAFONT를 위한 속성은 아래의 표 1과 같이 표현될 수 있으며, 이는 도 7에서 도시된 UFO 코드의 'point' 태그 내에 포함될 수 있다.
속성명 설명 필수 or 선택
penPair
(제1 속성)
두 개의 점을 한 쌍으로 지정한다. 필수
(모든 점)
innerType
(제2 속성)
외곽선 내부영역을 채우는지(fill), 비우는지(unfill) 지정한다. 필수
(시작 점)
dependX(Y)
(제3 속성)
X(Y) 좌표의 변화를 설정한 점에 의존한다. 선택
serif
(제4속성)
세리프를 설정한다. 선택
구체적으로, METAFONT는 외곽선 폰트와는 다르게 손으로 글자를 쓰듯이 글자의 뼈대를 그린 후 펜을 뼈대의 흐름에 따라 이동하면서 문자를 그리는 방식이다. 따라서, 외곽선 폰트에서 수정하기 힘든 문자의 굵기를 METAFONT에서는 뼈대를 채우는 펜의 굵기를 조절하는 함수를 이용하여 쉽게 변형할 수 있다. 이 때, 펜의 굵기를 조절하는 함수를 사용하기 위하여 펜의 양 끝점을 정의해야 한다. 즉, UFO에 존재하는 점들을 펜의 양 끝점에 맞게 쌍으로 묶어주는 작업이 필요하며, 이를 위해 제1 속성(penPair)이 사용된다. 제1 속성(penPair)은 외곽선을 구성하기 위한 점들 중 2개의 점을 쌍으로 지정하기 위한 속성으로서, 필수적으로 추가되는 속성이다. 여기서, 기존에 UFO에 존재하는 태그인 'point'에 'penPair'라는 속성을 추가하여 두 개의 점이 한 쌍이라는 정보를 얻어 굵기를 조절할 수 있다.
그리고, METAFONT는 외곽선을 이어 생긴 내부 영역을 채우거나 비울 때 사용하는 함수가 다르며, 이를 위하여 제2 속성(innerType)이 사용된다. 즉, 제2 속성(innerType)은 외곽선의 시작점에 명시되며, 외곽선의 내부 영역을 채우는지 여부를 지정하기 위한 속성으로서, 이는 필수적으로 포함되는 속성이다.
또한, 제3 속성(dependX(Y))는 미리 위치 좌표가 설정된 점 A의 위치 좌표에 의존하여 점 B의 위치 좌표를 변화시키기 위한 속성이고, 제4 속성(serif)은 점의 세리프를 설정하기 위한 속성으로서, 이는 선택적으로 포함되는 속성이다.
이외에도 본 발명은 사용자가 특정한 점의 위치들을 공통으로 변화시킬 수 있도록 할 수 있는 커스텀 매개변수 속성을 제공하며, 이를 이용하여 사용자는 자신이 원하는 부분을 매개변수화 할 수 있다.
이하, 도 8 및 도 9을 참조하여, METAFONT을 위한 속성을 상세하게 설명하기로 한다.
도 8은 본 발명에 따른 중간 코드(MetaUFO)의 일례를 도시한 도면이다. 즉, 도 8의 (a)에서는 자소 'ㅏ'를 표현하기 위하여 UFO에 METAFONT을 위한 속성이 추가된 중간 코드를 도시하고 있으며, 도 8의 (b)에서는 도 8의 (a)에 도시된 중간 코드를 그림으로 나타내고 있다. 그리고, 도 8의 (c)에서는 도 8의 (a) 및 (b)을 통해 생성된 METAFONT의 자소 'ㅏ'(세리프 포함)를 도시하고 있다.
도 8을 참조하면, UFO 코드 내의 'point' 태그에 'penPair'(제1 속성)이 추가된다. 여기서, 'zNl'과 'zNr'을 통해 2개의 점이 쌍으로 묶이는 것을 확인할 수 있다. 이 때, 'l'은 왼쪽 점을, 'r'은 오른쪽 점을 표현하는 기호이며, 'zN'에서 N의 숫자 값을 이용하여 두 점을 한 쌍으로 연결한다. 즉, 'z1l'와 'z1r'이 하나의 상으로 묶이며, 'z2l'와 'z2r'이 하나의 상으로 묶이며, 'z3l'와 'z3r'이 하나의 상으로 묶이며, 'z4l'와 'z4r'이 하나의 상으로 묶인다.
또한, UFO 코드 내의 'point' 태그에 'innerType'(제2 속성)이 추가된다. 이 때, 자소 'ㅏ'의 외곽선의 내부영역을 채우는 것이므로, 첫번째 'point' 태그 내에 'innerType'가 'fill'로 설정된다.
그리고, UFO 코드 내의 'point' 태그에 ' dependX'(제3 속성)이 추가된다. 일례로, 네번째 'point' 태그에서는 'z3r'가 정의되되, 'z3r'는 미리 위치 좌표가 설정된 점인 'z2r'의 x축 좌표인 'x2r'에 의존하여 그 점의 굵기 변화량만큼 자신의 위치를 옮긴다. 다른 일례로, 일곱번째 'point' 태그에서는 'z3l'이 정의되되, 'z3l'는 미리 위치 좌표가 설정된 점인 'z1r'의 x축 좌표인 'x1r'에 의존하여 그 점의 굵기 변화량만큼 자신의 위치를 옮긴다. 즉, 'z3l'과 'z3r'은 각각 'z1r'과 'z2r'의 x축 좌표에 의존하여 'z1r'과 'z2r'의 x좌표의 변화량만큼 같이 움직여서 직선이 일자 형태를 유지하도록 설정한다.
또한, UFO 코드 내의 'point' 태그에 'serif''(제4 속성)이 추가된다. 즉, 세로획의 양 끝(z1l, z2l)에 세리프를 추가한다. 이 때, 세리프는 출력 폰트 생성부(430)에 생성되는 METAFONT에 의한 폰트의 해당 위치에서 세리프가 표현된다.
한편, 본 발명의 일 실시예에 따르면, 출력 폰트 생성부(430)는 앞서 설명한 바와 같이 중간 코드(MetaUFO)를 파싱하여 획득한 점들의 정보를 이용하여 METAFONT에 의한 폰트를 생성한다. 이 때, 출력 폰트 생성부(430)는 파이썬으로 구현될 수 있으며, 파이썬에서 제공하는 라이브러리인 XML Parser를 이용하여 중간 코드(MetaUFO)를 파싱할 수 있다. 그리고, 출력 폰트 생성부(430)는 파싱을 통해 얻은 데이터를 METAFONT에서 필요한 데이터로 계산하여 METAFONT 코드를 작성한다. 또한, 사용자가 추가한 METAFONT의 속성에 해당하는 함수를 호출하여 추가 처리한다. 그리고 사용자에게 문자의 스타일 변화를 위하여 제공하는 14개의 매개변수를 적용하여 METAFONT 코드를 생성한다. 이 매개변수는 필요에 따라 추가 또는 삭제될 수 있다.
또한, 한글은 로마자와 달리 음절의 구성에 따라 나눠지는 초성, 중성, 그리고 종성을 조합하여 표현된다. 따라서, 출력 폰트 생성부(430)는 파일로 저장된 초성, 중성, 종성에 대해 필요한 자소를 호출하여 문자를 생성할 수 있다. 이를 위해, 출력 폰트 생성부(430)는 파싱을 통해 얻은 데이터를 이용하여, 현재 처리하는 파일이 자소 혹은 자소를 호출하는 문자인지를 판별하고, 그에 따라 해당하는 루틴을 실행할 수 있다.
이 때, 현재 처리하는 파일이 자소를 호출하는 조합형 문자일 경우, 출력 폰트 생성부(430)는 참조하는 자소를 판별하여 해당하는 자소를 호출하는 METAFONT 함수와 함께 각각의 자소에만 적용되는 매개변수를 함께 생성한다. 또한, 출력 폰트 생성부(430)는 문자의 전체 스타일에 영향을 주는 문자의 넓이, 높이, 그리고 기울기 매개변수를 적용하여 코드를 생성한다.
또한, 현재 처리하는 파일이 자소일 경우, 출력 폰트 생성부(430)는 파싱하여 얻은 점의 정보들을 이용하여 문자를 METAFONT로 표현한다. METAFONT로 문자를 표현하기 위하여, 출력 폰트 생성부(430)는 먼저 기준점을 정의하고, 두 개의 점을 묶어놓은 한 쌍에 대해서 굵기를 정한 후, 조절점을 정의한 후 곡선을 그리는 함수를 사용하여 문자를 표현한다. 따라서, 이와 같은 방식으로 파싱하여 얻은 데이터를 이용하여 출력 폰트 생성부(430)는 코드를 작성하고 문자의 영향을 주는 다양한 매개변수를 적용한다.
그리고, 상기에서 언급한 바와 같이, UFO은 문자의 외곽선을 세 가지 방식, 즉 직선, 4개의 점으로 구성되는 Cubic 곡선 및 3개의 점으로 구성되는 Quadratic 곡선으로 표현한다. 이 때, UFO의 코드 및 중간 코드(MeatUFO)는 Cubic 곡선 및 Quadratic 곡선을 모두 표현할 수 있지만, METAFONT의 코드는 Cubic 곡선만을 표현할 수 있다. 따라서, 본 발명의 출력 폰트 생성부(430)는 아래의 수학식 1을 이용하여 중간 코드(MeatUFO)에서의 Quadratic 곡선을 METAFONT에서의 Cubic 곡선으로 변환하는 코드를 생성할 수 있다.
Figure 112017009514832-pat00002
여기서, CP0 및 CP3는 Cubic 곡선을 위한 4개의 점 중 2개의 기준점, CP1 및 CP 2는 Cubic 곡선을 위한 4개의 점 중 2개의 조절점, QP0 및 QP2는 Quadratic 곡선을 위한 3개의 점 중 2개의 기준점, QP1는 Quadratic 곡선을 위한 3개의 점 중 1개의 조절점을 각각 의미한다.
그리고, Quadratic 베지어 곡선은 2차식이므로, 도 9의 (a)에 도시된 바와 같이 시작점 P0과 끝점 P2, 그리고 하나의 조절점인 P1이 필요하다. 더욱 복잡한 곡선은 도 9의 (b)처럼 Quadratic 베지어 곡선 (P0, P1, P2)와 (P2, P3, P4)를 연결하듯이 여러 개의 곡선을 연결하여 표현한다. 또한, 대부분의 폰트 형식에서는 연결된 여러 개의 Quadratic 베지어 곡선을 하나의 곡선처럼 표현한다. 즉, 도 9의 (c) 처럼 연속된 곡선의 두 개의 조절점 사이에 있는 기준점은 생략하여 시작점, 끝점, 그리고 두 개의 조절점으로 표현할 수 있다. 연결된 곡선들은 하나의 기준점을 공유하므로 기준점에 대해 같은 접선의 기울기 값을 가지고 있으므로, 두 곡선을 미분하여 생성된 식에 P2값을 대입하면 같은 값을 가진다. 이 식을 계산하면 P2는 P1과 P3의 중간점임을 알 수 있다. 따라서 도 8의 (c)처럼 연속된 곡선의 두 개의 조절점 사이에 있는 기준점은 생략하여도 곡선을 표현할 수 있다.
본 발명에서는 Quadratic 곡선 방식과 Cubic 곡선 방식으로 표현된 외곽선 폰트의 곡선 표현을 METAFONT로 모두 표현할 수 있도록 Cubic 곡선으로 변환하는 기능을 포함한다. 이러한 동작은 출력 폰트 생성부에(430) 진행한다(단계(530)).
요컨대, 본 발명은 외곽선 폰트의 한 형식인 UFO에 METAFONT 속성을 적용하여 METAFONT 코드를 생성함으로써 새로운 폰트를 생성한다. 기존의 외곽선 폰트는 문자의 굵기나 스타일의 변화에 자유롭지 않으나 METAFONT는 매개변수를 이용하여 스타일을 자유롭게 변형시킬 수 있다. 따라서, 굵기와 같은 스타일의 변화에 따라 여러 벌로 제작되어 제공되어야 했던 외곽선 폰트의 '폰트 패밀리'가 없이도, 기본 외곽선 폰트 하나로 METAFONT 코드를 생성하여 사용자가 조절하는 매개변수에 맞추어 자유롭게 굵기를 조절할 수 있다. 또한 한글의 특성에 맞춰 제공하는 매개변수를 이용하여 다양한 모양의 문자를 생성할 수 있다.
또한, 본 발명의 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 일 실시예들의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.

Claims (7)

  1. 프로세서가 포함된 장치에서 수행되는 METAFONT에 의한 폰트를 생성하는 방법에 있어서,
    XML로 기술된 외곽선 폰트의 코드에 상기 METAFONT를 위한 속성을 추가하여 중간 코드를 생성하는 단계 (a); 및
    상기 중간 코드를 파싱하여 획득한 점들의 정보를 이용하여 상기 METAFONT에 의한 폰트를 생성하는 단계 (b);를 포함하되,
    상기 METAFONT를 위한 속성은, 외곽선을 구성하기 위한 상기 점들 중 2개의 점을 쌍으로 지정하기 위한 제1 속성, 외곽선의 내부 영역을 채우는지 여부를 지정하기 위한 제2 속성을 포함하는 것을 특징으로 하는 폰트 생성 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 METAFONT를 위한 속성은, 미리 위치 좌표가 설정된 점 A의 위치 좌표에 의존하여 점 B의 위치 좌표를 변화시키기 위한 제3 속성 및 점의 세리프를 설정하기 위한 제4 속성 중 적어도 하나를 더 포함하는 것을 특징으로 하는 폰트 생성 방법.
  4. 제3항에 있어서,
    상기 외곽선 폰트는 UFO(Unified Font Object)이고,
    상기 METAFONT를 위한 속성은 상기 UFO의 코드 내의 'point' 태그 내에 포함되는 것을 특징으로 하는 폰트 생성 방법.
  5. 제1항에 있어서,
    상기 외곽선 폰트의 코드 및 상기 중간 코드는 4개의 점으로 구성되는 Cubic 곡선 및 3개의 점으로 구성되는 Quadratic 곡선을 표현할 수 있고, 상기 METAFONT의 코드는 상기 Cubic 곡선만을 표현할 수 있으며,
    상기 단계 (b)는, 아래의 수학식을 이용하여 상기 중간 코드에서의 Quadratic 곡선을 상기 METAFONT에서의 Cubic 곡선으로 변환하는 것을 특징으로 하는 폰트 생성 방법.

    Figure 112017009514832-pat00003


    여기서, CP0 및 CP3는 상기 4개의 점 중 2개의 기준점, CP1 및 CP 2는 상기 4개의 점 중 2개의 조절점, QP0 및 QP2는 상기 3개의 점 중 2개의 기준점, QP1는 상기 3개의 점 중 1개의 조절점을 각각 의미함,
  6. 제1항, 제3항 내지 제5항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
  7. METAFONT에 의한 폰트를 생성하는 장치에 있어서,
    XML로 기술된 외곽선 폰트의 코드에 상기 METAFONT를 위한 속성을 추가하여 중간 코드를 생성하는 중간 코드 생성부; 및
    상기 중간 코드를 파싱하여 획득한 점들의 정보를 이용하여 상기 METAFONT에 의한 폰트를 생성하는 출력 폰트 생성부;를 포함하되,
    상기 METAFONT를 위한 속성은, 외곽선을 구성하기 위한 상기 점들 중 2개의 점을 쌍으로 지정하기 위한 제1 속성, 외곽선의 내부 영역을 채우는지 여부를 지정하기 위한 제2 속성을 포함하는 것을 특징으로 하는 폰트 생성 장치.
KR1020170012703A 2017-01-26 2017-01-26 외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법 KR101905300B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020170012703A KR101905300B1 (ko) 2017-01-26 2017-01-26 외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법
PCT/KR2017/002365 WO2018139700A1 (ko) 2017-01-26 2017-03-06 외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법
JP2019521360A JP2019528485A (ja) 2017-01-26 2017-03-06 フォントの生成方法及びその方法を記録した記録媒体並びにフォントの生成装置
US16/305,486 US11036917B2 (en) 2017-01-26 2017-03-06 Apparatus and method for generating font by means of metafont by using outline font
CN201780042717.4A CN109478200B (zh) 2017-01-26 2017-03-06 利用外廓线字体的通过元字形生成字体的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170012703A KR101905300B1 (ko) 2017-01-26 2017-01-26 외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180088087A KR20180088087A (ko) 2018-08-03
KR101905300B1 true KR101905300B1 (ko) 2018-10-05

Family

ID=62979363

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170012703A KR101905300B1 (ko) 2017-01-26 2017-01-26 외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법

Country Status (5)

Country Link
US (1) US11036917B2 (ko)
JP (1) JP2019528485A (ko)
KR (1) KR101905300B1 (ko)
CN (1) CN109478200B (ko)
WO (1) WO2018139700A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102329116B1 (ko) * 2019-12-09 2021-11-19 숭실대학교 산학협력단 부분 글자 스타일 변경이 가능한 폰트 생성 장치 및 방법
US11443466B2 (en) * 2020-08-05 2022-09-13 Kyocera Document Solutions Inc. Image forming apparatus that randomly processes outline data in association with a character code to render a character in different forms, image forming method including randomly processing outline data in association with a character code to render a character in different forms, and non-transitory computer readable recording medium that records an information processing program that realizes the image forming method including randomly processing outline data in association with a character code to render a character in different forms

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3021547B2 (ja) * 1989-09-29 2000-03-15 セイコーエプソン株式会社 文字パターン発生方法
KR100539056B1 (ko) 2001-07-12 2005-12-27 (주)네오퍼스 폰트의 손실 압축 및 저장 방법
KR100497390B1 (ko) 2003-04-01 2005-06-23 삼성전자주식회사 벡터 폰트 생성방법 및 장치
US7821515B2 (en) * 2007-06-27 2010-10-26 Monotype Imaging Inc. Method for automatic font character height restriction
JP2010111088A (ja) * 2008-11-10 2010-05-20 Seiko Epson Corp 画像形成装置
JP5335392B2 (ja) * 2008-12-05 2013-11-06 キヤノン株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
US20130155098A1 (en) * 2011-12-19 2013-06-20 Monotype Imaging Inc. Adjusting Fonts for Visual Consistency
US20140362104A1 (en) * 2013-06-11 2014-12-11 Microsoft Corporation Layered z-order and hinted color fonts with dynamic palettes
KR101342730B1 (ko) 2013-08-07 2013-12-19 (주)정글시스템 폰트의 굵기를 가변적으로 제어하는 시스템 및 방법
KR102099313B1 (ko) 2015-05-12 2020-05-15 주식회사 윤디자인그룹 아트 폰트를 생성하기 위한 방법, 장치 및 이를 수행하는 프로그램
US10019415B1 (en) * 2015-08-28 2018-07-10 Animoto Inc. System and method for consistent cross-platform text layout
US10347016B2 (en) * 2016-01-12 2019-07-09 Monotype Imaging Inc. Converting font contour curves

Also Published As

Publication number Publication date
CN109478200B (zh) 2023-08-04
WO2018139700A1 (ko) 2018-08-02
US11036917B2 (en) 2021-06-15
JP2019528485A (ja) 2019-10-10
CN109478200A (zh) 2019-03-15
KR20180088087A (ko) 2018-08-03
US20200327276A1 (en) 2020-10-15

Similar Documents

Publication Publication Date Title
CN103136769B (zh) 用户书写风格字体生成的方法和装置
US6952210B1 (en) Method of generating multiple master typefaces containing kanji characters
US6760029B1 (en) Generating a glyph
CN102339291B (zh) 一种列表生成方法及设备
CN102135873A (zh) 一种创建用户界面的方法和装置
KR101905300B1 (ko) 외곽선 폰트를 이용하여 metafont에 의한 폰트를 생성하는 장치 및 방법
CN111936966A (zh) 用于创建图形内容的设计系统
JP2005044279A (ja) 帳票処理方法、帳票処理プログラム、帳票処理装置
JP6298422B2 (ja) マンマシンインターフェースのグラフィック表示用の文字列の処理技術
CN105474198A (zh) 具有动态调色板的分层z顺序和微调颜色字体
US10061752B2 (en) Method and apparatus for generating a font of which style is changeable
CN103365894B (zh) 一种字体格式转换方法和装置
US20040004625A1 (en) Selecting elements from an electronic document
CN111507064A (zh) 一种基于计算机的字库设计方法
CN102024077A (zh) 一种工程图纸处理方法
KR102329116B1 (ko) 부분 글자 스타일 변경이 가능한 폰트 생성 장치 및 방법
CN106776527A (zh) 电子书数据的显示方法、装置及终端设备
CN111782158A (zh) 一种喷码设备点阵字体的生成方法及打印设备
CN102754145B (zh) 文字生成方法、文字生成装置以及字体数据
US20240054713A1 (en) Apparatus and method to generate an animated graphical object
US11170156B1 (en) Drop word tool for digital typesetting
KR20190058005A (ko) Svg 포맷의 편집 방법, 시스템 및 컴퓨터 판독 가능한 기록매체
KR20040075466A (ko) 구조적 단계를 통한 한글 폰트를 만드는 방법
JP2000242260A (ja) フォントの形成方法
JP3528620B2 (ja) 文字描画装置及び文字描画方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right