KR0172581B1 - 단계적 표현 가능형 폰트 그 변환 방법 및 렌더링 방법 - Google Patents

단계적 표현 가능형 폰트 그 변환 방법 및 렌더링 방법 Download PDF

Info

Publication number
KR0172581B1
KR0172581B1 KR1019960009927A KR19960009927A KR0172581B1 KR 0172581 B1 KR0172581 B1 KR 0172581B1 KR 1019960009927 A KR1019960009927 A KR 1019960009927A KR 19960009927 A KR19960009927 A KR 19960009927A KR 0172581 B1 KR0172581 B1 KR 0172581B1
Authority
KR
South Korea
Prior art keywords
font
information
point
level
letter
Prior art date
Application number
KR1019960009927A
Other languages
English (en)
Other versions
KR970071228A (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 KR1019960009927A priority Critical patent/KR0172581B1/ko
Priority to US08/828,553 priority patent/US6232987B1/en
Priority to CN97103763A priority patent/CN1126051C/zh
Priority to FR9704008A priority patent/FR2747209B1/fr
Priority to DE19713654A priority patent/DE19713654B4/de
Priority to JP08419397A priority patent/JP3168170B2/ja
Priority to GB9706677A priority patent/GB2313277B/en
Priority to TW086104526A priority patent/TW359782B/zh
Publication of KR970071228A publication Critical patent/KR970071228A/ko
Application granted granted Critical
Publication of KR0172581B1 publication Critical patent/KR0172581B1/ko

Links

Classifications

    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0002Handling the output data
    • G06K2215/004Generic data transformation
    • G06K2215/0042Rasterisation
    • G06K2215/0045Converting outline to bitmap

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Dot-Matrix Printers And Others (AREA)

Abstract

본 발명은 아우트라인 폰트에 관한 것으로서, 특히 단계적으로 렌더링 할 수 있는 아우트라인 폰트, 그 변환 방법 및 렌더링 방법에 관한 것으로, 폰트를 구성하고 있는 데이터 량을 필요에 따라 가변할 수 있는 단계적 표현 가능형 폰트를 제공함에 그 목적이 있다. 상기 단계적 표현 가능형 폰트는 환경과 목적에 따라 폰트 디스플레이의 속도와 폰트의 품위(Quality)를 적절히 상호 조절할 수 있는 기능을 가지고 있다. 예를 들어, 하드웨어의 속도가 상대적으로 느리고 폰트의 높은 품위가 요구되지 않는 경우 폰트의 데이터 중 일부만을 전송하여 디스플레이하고, 하드웨어의 속도가 상대적으로 빠르거나 고품위의 폰트가 요구될수록 점진적으로 많은 데이터를 전송하여 디스플레이한다. 따라서 환경이 허락하지 않는 경우 품위를 희생하는 대신 최소한의 데이터 전송으로 폰트를 디스플레이할 수 있으며, 환경이 허락하면 모든 데이터를 전송하여 기존의 모든 데이터가 가지고 있는 폰트의 품위를 그대로 구현할 수 있다.

Description

단계적 표현 가능형 폰트(Progressively Renderable Font), 그 변환 방법 및 렌더링 방법
제1도는 아우트라인 폰트의 일반적인 데이터 구조도.
제2a도는 종래의 글자별 글리프 정보의 데이터 구조도.
제2b도는 종래의 글리프정보의 일예시도.
제3a도는 PR 폰트의 글자별 글리프 정보의 데이터 구조도.
제3b도는 본 발명에 따른 PR 폰트중 글자 'ㅂ'의 글리프 정보의 일예시도.
제4도는 종래의 아우트라인 폰트를 PR 폰트로 변환하는 방법에 대한 흐름도.
제5도는 제2b도를 디스플레이한 결과도.
제6a도는 인덱스 배정에 대한 일반적인 알고리즘 예시도.
제6b도는 PR 폰트의 전송 및 렌더링 과정의 예시도.
제7도는 제1포인트의 연결 상태도.
제8도는 제1, 2포인트의 연결 상태도.
제9도는 제1, 2, 3포인트의 연결 상태도.
제10도는 제1, 2, 3, 4포인트의 연결 상태도.
제11도는 제1, 2, 3, 4, 5포인트의 연결 상태도.
제12도는 제1, 2, 3, 4, 5, 6포인트의 연결 상태도.
제13도는 제1, 2, 3, 4, 5, 6, 7포인트의 연결 상태도.
제14도는 제1레벨내의 포인트들의 연결 상태도.
제15도는 제1레벨까지의 디스플레이 결과도.
제16도는 제2레벨까지의 디스플레이 결과도.
제17도는 제3레벨까지의 디스플레이 결과도.
제18도는 제4레벨까지의 디스플레이 결과도.
제19도는 제5레벨까지의 디스플레이 결과도.
제20도는 제6레벨까지의 디스플레이 결과도.
제21도는 제7레벨까지의 디스플레이 결과도.
제22도는 국소적 라스터라이징의 설명을 위한 제1예시도.
제23도는 국소적 라스터라이징의 설명을 위한 제2예시도.
본 발명은 아우트라인 폰트에 관한 것으로서, 특히 단계적으로 렌더링 할 수 있는 아우트라인 폰트, 그 변환 방법 및 랜더링 방법에 관한 것이다.
현재 널리 사용되고 있는 컴퓨터 운영체제, 예를 들어 윈도우 3.1, 윈도우 95, 윈도우 NT, OS/2, 유닉스(UNIX) X 윈도우, 매킨토시(macintosh) 시스템 7, 디스플레이 포스트스크립트(Display Postscript) 등은 자체적으로 폰트를 내장하고 있으며, 이를 자신의 자원(resource)으로 사용하여 CRT 등 출력장치에 이 내장된 폰트를 디스플레이(display) 하고 있다.
아우트라인(outline) 폰트로서 가장 많이 보급된 것으로는 아도비(Adobe)사의 포스트스크립트(postscript) 폰트와 마이크로소프트(Micorsoft)사나 애플(Apple)사의 트루타입(True Type) 폰트가 있다.
일반적으로 아우트라인 폰트는 각 폰트에 할당된 코드 맵(code map)에 관한 정보와 콘트롤 포인트(control point)의 연결관계로 폰트의 모양을 나타내는 글리프(glyph)에 관한 정보 및 기타 폰트의 라스터라이즈에 필요한 제어정보로 구성된다. 상기 정보들은 한 벌의 폰트를 구성하기 위해 한 파일에 저장되어 있다.
한편 대략 한벌의 한글 및 한자 폰트를 구성하는 데이터 크기는 1-10 메가 바이트(MB)정도 된다. 이로인해 네트웍 환경에서 폰트를 전송하기 위해서는 많은 양의 데이터를 전송해야만 했다.
일반적으로 폰트를 사용자의 컴퓨터 화면에 디스플레이 하기 위해서는 먼저 상기 사용자 컴퓨터의 라스터라이저가 필요한 폰트파일을 읽어와야 하며, 이 때 데이터 전송은 한 컴퓨터 내에서는 컴퓨터 내의 버스를 통하고, 네트웍 컴퓨터(여기서 기존의 컴퓨터일지라도 네트웍 환경에서 작동하는 컴퓨터의 총칭을 네트웍 컴퓨터라 부른다)의 경우는 네트웍을 통하여 이루어진다. 상기 어느 경우이건 하드웨어가 지원할 수 있는 속도보다 빠른 데이터 전송이 필요할 경우 종래의 방법은 문제가 있다.
예를 들어 네트웍 컴퓨터의 경우, 상기 폰트 파일과 라스터라이저등이 네트웍 상에서 서로 다른 장소에 분산되어 있을 수 있다. 이러한 경우, 사용자 컴퓨터의 라스터라이저가 필요한 폰트 파일을 먼저 네트웍을 통해 전송받아야만 하므로 디스플레이하는 속도가 느려져 현실적인 사용에 있어서 문제점을 야기할 수 있다.
또 다른 예를 들어 인터넷(internet) 환경에서 미국에 있는 사용자가 한국의 웰사이트(web site)의 데이터를 브라우징(browsing)하고자 할 때, 상기 데이터가 한글일 경우에는 미국의 사용자가 한국의 웹사이트에서 제공하는 데이터를 디스플레이 하기 위해서는 한글 폰트에 대한 정보를 가지고 있어야 한다. 만약 한글 폰트정보가 없으면 한국의 웹사이트로부터 한글폰트 정보를 먼저 전송받고나서 원하는 한국 웹사이트의 데이터를 전송받아야 디스플레이 할 수 있다. 이렇게 할 때 한글 폰트의 데이터 크기가 클 경우 데이터 전송에 요구되는 시간이 너무 많아 실시간 디스플레이에 많은 문제점을 야기할 수 있다.
또 다른 예를 들면, 한 컴퓨터 내에서 버스를 통하여 폰트 데이터가 전송될 경우, 텍스트 파일을 빠르게 브라우징하고자 하려면 종래에는 하나의 폰트에 대해 해당 글리프 정보를 모두 읽고 난 후에야 폰트를 랜더링할 수 있었으므로, 상기 폰트의 해당 글리프 정보의 데이터량이 많을 경우 이를 빠른 시간에 디스플레이하기가 어렵다. 즉 책장을 넘기는 속도 정보로 브라우징을 하면서 대략적인 정보만 얻고자 할 경우에는 브라우징의 속도에 문제가 생길 수 있다.
종래에는 상기의 예들에서 공통적으로 폰트 디스플레이에 폰트 캐싱 등의 속도 향상 방법을 이용하고 있다. 그러나 이러한 방법들은 폰트의 종류가 다양하거나 하여 캐시의 범위를 넘는 경우 역시 디스플레이 속도상의 문제가 여전히 남아 있다.
따라서 본 발명은 상술한 문제점을 해결하기 위해 창출된 것으로서, 폰트를 구성하고 있는 데이터 량을 필요에 따라 가변할 수 있는 단계적 표현 가능형 폰트를 제공함에 그 목적이 있다. 상기 단계적 표현 가능형 폰트는 환경과 목적에 따라 폰트 디스플레이의 속도와 폰트의 품위(Quality)를 적절히 상호 조절할 수 있는 기능을 가지고 있다. 예를 들어, 하드웨어의 속도가 상대적으로 느리고 폰트의 높은 품위가 요구되지 않는 경우 폰트의 데이터중 일부만을 전송하여 대스플레이하고, 하드웨어의 속도가 상대적으로 빠르거나 고품위의 폰트가 요구될수록 점진적으로 많은 데이터를 전송하여 디스플레이한다. 따라서 환경이 허락하지 않는 경우 품위를 희생하는 대신 최소한의 데이터 전송으로 폰트를 디스플레이할 수 있으며, 환경이 허락하면 모든 데이터를 전송하여 기존의 모든 데이터가 가지고 있는 폰트의 품위를 그대로 구현할 수 있다.
상기의 목적을 달성하기 위하여 본 발명은, 각 글자의 글리프 정보를 포함하는 아우트라인 폰트에 있어서, 상기 각 글자에 대한 글리프 정보는 상기 글자를 형성하는 콘트롤 포인트들의 좌표; 상기 글자를 단계적으로 전송하거나 렌더링 가능하게 하며, 상기 글자를 단계적으로 전송하거나 렌더링할 때의 상기 콘트롤 포인트 각각의 포함순서를 나타내는 레벨 정보; 및 상기 글자를 단계적으로 렌더링할 때 상기 콘트롤 포인트들 간의 단계적 연결 관계를 동적으로 표현가능하게 하는 인덱싱 방식을 포함하는 것을 특징으로 한다.
이하에서 첨부된 도면을 참조하여 본 발명을 상세히 설명한다.
제1도는 아우트라인 폰트의 일반적인 데이터 구조를 도시한 것으로서, 아우트라인 폰트는 각 글자에 할당된 코드 정보를 나타내는 코드 맵, 상기 아우트라인 폰트를 구성하고 있는 글자에 대해 글자별로 가지고 있는 글리프 정보들, 기타 제어정보로 이루어져 있다.
제2a도는 종래의 글자별 글리프 정보의 데이터 구조를 도시한 것으로서, 상기 종래의 글자별 글리프 정보는 각 글자마다 글자를 구성하는 데 필요한 폐곡선의 개수, 글자의 박스지정 정보, 콘트롤 포인트의 온/오프 정보, 콘트롤 포인트들의 좌표, 콘트롤 포인트간의 연결정보, 힌팅을 포함한 기타 제어 정보로 이루어진다. 제2b도는 상기 종래의 아우트라인 폰트 중 트루타입 폰트의 글자 'ㅂ'의 글리프 정보 중 기타 제어 정보를 제외한 일예를 도시한 것으로서, 참조번호 250은 폐곡선 개수, 252는 박스 정보, 254는 각 폐곡선의 끝에 있는 콘트롤 포인트의 번호, 256은 온/오프 정보, 258은 콘트롤 포인트의 좌표를 나타내면, 상기 온/오프 정보(250)과 콘트롤 포인트의 좌표(258)의 나열 순서는 연결정보를 나타낸다.
여기에서 일반적으로 글자를 이루는 폐곡선 중 바깥쪽 폐곡선에서는 시계 반대 방향을 정방향, 시계 방향을 부방향이라 부르기로 하고, 안쪽 폐곡선에서는 시계 방향을 정방향, 시계 반대 방향을 부방향이라 부르기도 한다. 즉 이에 따르면 제 0 폐곡선에서는 시계 반대 방향이 정방향, 시계 방향이 부방향이 되고, 제 1 폐곡선에서는 시계 방향이 정방향, 시계 반대 방향이 부방향이 된다.
본 발명에 따른 PR 폰트는 각 글자의 코드 맵, 각 글자의 글리프 정보, 힌팅 등의 기타 제어정보를 포함하는 아우트라인 폰트이다. 제3a도는 PR 폰트의 글자별 글리프 정보의 데이터 구조를 도시한 것으로서, 상기 각 글자에 대한 글리프 정보는 각 글자마다 글자를 구성하는 데 필요한 폐곡선의 수, 상기 글자를 형성하는 콘트롤 포인트들의 좌표, 상기 글자를 단계적으로 렌더링할 때 상기 콘트롤 포인트 각각의 순서를 나타내는 레벨 정보, 상기 글자를 단계적으로 렌더링할 때 상기 콘트롤 포인트들 간의 폐곡선 상에서의 연결 관계를 나타내는 인덱스 정보 및 힌팅 등을 포함한 기타 제어 정보로 이루어진다. 제3b도는 본 발명에 따른 PR 폰트 중 글자 'ㅂ'의 글리프 정보(기타 제어 정보를 제외한)의 일예를 도시한 것으로서, 여기에서는 트루 타입 폰트의 기본 그래픽 프리미티브 (Graphic Primitive)인 2차 곡선(Quadratic Bezier-Bernstein 곡선)을 사용하고 있으나 포스트스크립트(Postscript) 폰트의 기본 그래픽 프리미티브(Graphic Primitive)인 3차 곡선(Cubic Bezier-Bernstein 곡선)을 사용하여도 본 발명의 범위에서 벗어나지 않는다.
참조번호 350은 폐곡선의 수, 352는 각 폐곡선의 시작 포인트의 번호, 354는 레벨의 개수, 356은 각 레벨의 끝 포인트들의 번호, 358은 콘트롤 포인트의 좌표를 나타낸다. 360은 각 콘트롤 포인트에서의 곡선의 정방향과 부방향의 방향 벡터를 나타내는 것으로서 만일 정방향과 부방향의 방향 벡터가 평행하면 하나만 표시하였다. 362는 인덱스 정보를 나타낸다. 여기에서 항목 360은 각 해당 포인트의 정방향과 부방향의 오프 포인트들로 대치될 수 있다. 이는 특히 예를 들어 포스트스크립트와 같이 3차 곡선(Cubic Bezier-Bernstein 곡선)을 이용한 PR 폰트의 경우 적용될 수 있다.
상기 본 발명에 따른 PR 폰트는 환경과 목적에 따라 전송 속도와 폰트의 품위를 임의로 결정할 수 있는 장점을 가지고 있다. 그러나 상술한 바와 같이 PR 폰트의 형식은 기존의 아우트라인 폰트와 상이하므로, 기존의 아우트라인 폰트가 PR 폰트의 기능을 가지게 하려면 먼저 상기 기존의 아우트라인 폰트의 데이터를 PR 폰트 형식의 데이터로 변환하는 과정이 요구된다. 따라서 아래에서는 기존의 아우트라인 폰트의 데이터를 PR 폰트 형식의 데이터로 변환하는 과정에 대하여 상세히 설명하기로 한다. (이 과정은 대체로 오프라인 프로세스(Off-line Process)로 처리된다.)
본 발명의 특징 중의 하나는 기존의 아우트라인 폰트에서 몇가지 레벨 정보만을 추가함으로써 용이하게 PR 폰트로 변환할 수 있다는 것이다.
제4도는 기존의 아우트라인 폰트를 PR 폰트로 변환하는 방법에 대한 흐름도를 도시한 것으로서, 이에 대한 설명은 다음과 같다.
먼저 400단계에서는 기존의 아우트라인 폰트 데이터를 받아들인다. 여기서 기존의 폰트는 제1도에 도시된 바와 같이 코드 맵, 글리프 정보, 헌팅을 포함한 기타 제어정보 등을 포함한다.
다음 410단계에서는 아우트라인 폰트 데이터를 받아 들인 후, 상기 기존의 아우트라인 폰트를 구성하는 각 글자에 대해 글자별로 해당 글리프 정보를 추출한다. 여기서 상기 각 글자별 글리프 정보는 제2a도에 도시된 바와 같이 각 글자마다 글자를 구성하는 데 필요한 폐곡선의 수, 글자의 박스지정 정보, 콘트롤 포인트의 온/오프 정보, 콘트롤 포인트들의 좌표, 콘트롤 포인트간의 연결정보, 힌팅 등 기타 제어 정보 등을 가지고 있다. 제2b도는 이에 대한 하나의 예이다.
다음 420단계에서는 상기 추출된 각 글자의 글리프 정보를 각 글자별로 제3a도에 도시된 바와 같은 PR 폰트의 레벨 정보와 인덱스 정보를 포함한 글리프 정보로 변환한다. 이에 대한 예를 들면, 상기 제2b도에 도시된 글리프 정보가 상기 420단계를 통한 결과는 제3b도와 같다.
다음에는 제2a도에 있는 콘트롤 포인트 중 온 포인트(이하 포인트라 부름)들의 순서를 정하여 그 순서에 따라 각 포인트에 번호를 붙이고 이 순서에 의거하여 레벨 정보 즉 레벨의 개수, 각 레벨이 포함하는 포인트의 개수들을 지정하는데, 이때 이 레벨 정보는 PR 폰트의 각 레벨별 전송 속도, 각 레벨에서 실현되어야 할 폰트의 미적 표현 정도 등을 고려하여 사용자가 구체적으로 지정하거나 소정의 알고리즘에 따라 자동적으로 지정할 수 있다.
상기에서 정하여진 정보를 가지고 제3a도의 폐곡선의 개수, 콘트롤 포인트들의 좌표, 레벨 정보를 완성한다.
이상의 과정을 제2b도에 적용한 예를 들면 다음과 같다. 제5도는 제2b도를 디스플레이한 결과이다. 여기에서 표시된 31개의 점들은 제2b도의 온 포인트들이며, 각 온 포인트에는 상기에서 정해진 순서에 따라 1에서 31까지의 번호가 각각 주어져 있다. 이 번호의 순서에 따라 제3b도의 항목 358을 완성한다. 즉 제2b도의 온 포인트들만의 x 좌표와 y 좌표를 상기에서 정해진 번호의 순서대로 나열한다. 여기에서 레벨의 개수는 제1레벨에서 제7레벨까지의 7개로 정하였고, 이정 보가 제3b도의 항목 354가 된다. 또한 제1레벨은 제1포인트부터 제8포인트, 제2레벨은 제9포인트부터 제10포인트, 제3레벨은 제11포인트부터 제14포인트, 제4레벨은 제15포인트부터 제17포인트, 제5레벨은 제18포인트부터 제20포인트, 제6레벨은 제21포인트부터 제24포인트 들, 제7레벨은 제25포인트 부터 제31포인트들을 각각 포함하고 있다고 가정하여 각 레벨의 마지막 포인트들의 번호들로 제3b도의 항목 356을 완성한다.
제3b도의 항목 350에는 글자 'ㅂ'을 이루는 폐곡선의 개수를 기록하며, 이는 제2b도로부터 얻어질 수 있다. 360은 각 콘트롤 포인트에서의 곡선의 정방향과 부방향의 방향 벡터를 나타내는 것으로서 만일 정방향과 부방향의 방향 벡터가 평행하면 하나만 표시하였고, 이는 제2b도의 오프 포인트들의 좌표들로부터 계산된다.
다음에는 글자를 구성하는 각 폐곡선 상에서 포인트들의 연결 상태를 이용하여 제3a도의 인덱스 정보를 완성한다. 이를 제3b도를 예로 들어 설명하면 다음과 같다.
먼저 제1포인트를 포함하는 폐곡선을 제1폐곡선이라 칭한다. 따라서 제5도의 바깥쪽 폐곡선이 제1폐곡선이 된다. 다음에는 제1포인트 이후의 포인트들 중 제1폐곡선 위에 있지 않은 포인트들 가운데 번호가 가장 작은 포인트를 찾으며, 이 예에서는 제5포인트가 된다. 제5포인트를 포함하는 폐곡선을 제2폐곡선이라고 부른다. 즉 제5도의 안쪽 폐곡선이 제2폐곡선이 된다. 상기의 결과를 제3b도의 항목 352에 기록한다. 즉 제3b도의 항목 352는 각 폐곡선의 시작 포인트의 번호가 폐곡선들의 번호 순서대로 기록된다.
다음에는 각 포인트에 각 포인트들 간의 간 폐곡선 상에서의 단계적 연결상태를 나타내는 인덱스를 배정하는데, 이에 대한 일반적인 알고리즘을 기술하면 다음과 같다.
[일반적인 Indexing Algorithm]
먼저 기존의 아우트라인 폰트의 하나의 글리프 정보로서 t개의 폐곡선을 가지고 있고(각각 제1폐곡선, 제2폐곡선, …, 제t폐곡선이라 부르기로 한다)
일반적으로 제s(1≤s≤t) 폐곡선은 점 PNs-1+1, PNs-1+2,…, PNs의 온포인트로 이루어져 있다고 가정하자.
단, 여기에서 설명의 편이상 N0= 0이라 놓는다.
결과적으로 Nt가 전체 온포인트의 개수가 되고 제s(1≤s≤t) 폐곡선은 Ns- Ns-1개의온포인트들을 포함하고 있다.
여기서, 또한P1, …,PNt들의 폐곡선상에서의 연결상태를 나타내는 함수 NEXT : {1, 2, …, Nt}→ {1, 2,…,Nt}가 다음과 같이 주어졌다고 가정하자. 즉 1≤n≤Nt인 어떤 n에 대하여 NEXT(n)이란, Pn으로 부터 정방향으로 폐곡선을 따라갔을 때 처음 만나는 점이 PNEXT(n)이 되도록 정의되며, 이를 공식으로 표현하면 다음과 같다.
또한, 함수 PREV : {1, 2, …, Nt} → {1, 2,…,Nt}는 NEXT의 역함수로 정의되며, 이를 공식으로 표현하면 다음과 같다.
상기 함수 NEXT와 PREV는 변환되기 전의 글리프 정보가 가지고 있는 정보이다.
다음에는 점 Q1, Q2, …, QNt를 사용자가 P1, P2, … PNt들을 레벨을 정하기 위해 정한 순서대로 나열한 것이라 가정하자.
이 정보는 다음과 같은 1-1 대응관계를 주는 함수 Φ : {1, 2, …, Nt} → {1, 2,…,Nt}로 표현되며, Φ는 다음과 같은 조건을 만족하도록 하는 함수이다.
즉, 사용자가 n번째로 정한 Qn점 은 원래의 글리프정보에서 Φ(n)번째인 점 PΦ(n)이 된다.
상기의 Φ는 사용자가 정한 정보가 된다.
다음에는 함수 NEXT와 PREV로 주어진 원래의 글리프정보와 함수 Φ로 주어진 사용자가 정한 정보를 사용하여 점 Q1, …, QNt들에 대해 각각 해당 인덱스를 결정하는 과정을 설명하기로 한다.
점 Qn(1≤n≤Nt)에 주어진 해당 인덱스를 INDEX(n)이라하면, 점Q1, Q2, …, QNt에 각각 변환된 글리프 정보에 들어갈 해당 인덱스 정보를 결정하는 것은 함수 INDEX : {1, 2, …, Nt} → {1, 2,…,Nt}를 결정하는 것과 같다.
예를 들면 제3b도의 항목 380에서 4번째 줄에 있는 숫자들이 점Q4에 관한 정보들이며, 그중 항목 362에 속하는 '3'이 점Q4의 해당 인덱스가 된다. 즉, INDEX(4)=3이다.
여기서, INDEX(n)(1≤n≤Nt)은 Q1, Q2, …, Qn-1,Qn들이폐곡선에서 연결되어 있는 상태를 보았을 때, Q1, Q2, …, Qn-1,Qn중 Qn로 부터 시작하여 부방향으로 폐곡선을 따라 갔을 때 가장 먼저 만나게 되는 점의 번호 (Q의 번호)로 정의되며, INDEX(n)을 구하는 Algorithm을 흐름도로 표현하면 제6a도와 같다.
상기의 일반적인 알고리즘을 이용하여 제3b도의 항목 362를 완성하는 예를 제5도를 사용하여 설명하면 다음과 같다. 제1포인트는 그것을 포함하는 제1폐곡선 위에 이전의 포인트가 제1포인트 자신밖에 없으므로 자기자신의 번호인 1을 인덱스로 가진다. 제2포인트는 제1폐곡선에 속하는 포인트이고 현재까지 제1폐곡선에 속하는 포인트는 제1,2 포인트들밖에 없으므로 제2포인트의 인덱스는 제1포인트를 가리키는 1이된다. 제3포인트는 제1폐곡선에 속하고 제5도의 콘트롤 포인트 나열순서로부터 제1,2,3 포인트 중 부방향으로 제2포인트에 가장 가깝게 연결되어 있음을 알 수 있으므로 제3포인트의 인덱스는 제2포인트를 가리키는 2가 된다. 제4포인트는 제1폐곡선에 속하고 제5도의 콘트롤 포인트 나열순서로부터 제1,2,3,4 포인트 중 부방향으로 제3포인트에 가장 가깝게 연결되어 있음을 알 수 있으므로 제4포인트의 인덱스는 제3포인트를 가리키는 3이 된다.
다음 제5포인트는 항목 352에서 나타내고 있듯이 제1포인트가 있는 제1폐곡선과는 다른 제2폐곡선의 시작점이므로 제1포인트와는 연결되어 있지 않다. 동시에 제5포인트가 들어있는 제2폐곡선의 포인트는 아직 제5포인트 자신밖에 없으므로 제5포인트의 인덱스는 자기자신을 가리키는 5가 된다. 제6포인트는 제2폐곡선에 속하는 포인트이고 현재까지 제2폐곡선에 속하는 포인트는 제5,6 포인트들밖에 없으므로 제6포인트의 인덱스는 제5포인트를 가리키는 5가 된다. 제7포인트는 제2페곡선에 속하고 제5도의 콘트를 포인트 나열순서로부터 제 1,2,3,4,5,6,7 포인트 중 부방향으로 제6포인트에 가장 가깝게 연결되어 있음을 알 수 있으므로 제7포인트의 인덱스는 제6포인트를 가리키는 6이 된다. 제8포인트는 제2폐곡선에 속하고 제5도의 콘트롤 포인트 나열순서로부터 제 1,2,3,4,5,6,7,8 포인트 중 부방향으로 제7포인트에 가장 가깝게 연결되어 있음을 알 수 있으므로 제8포인트의 인덱스는 제7포인트를 가리키는 7이 된다. 상기와 같은 방법으로 각 온포인트들마다 인덱스를 배정하여 항목 362를 완성한다.
이상의 방법으로 제2b도를 제3b도로 변환하며, 아우트라인 폰트중 포스트스크립트 등과 같이 3차 곡선 (Cubic Bezier-Bernstein 곡선)을 사용한 폰트의 글리프 정보도 상기와 같은 방법으로 PR 폰트 형식의 글리프 정보로 변환할 수 있다. 단 이 때에는 재3b도의 항목 360에 기록된 방향 벡터들 대신 각 포인트(즉 온 포인트)의 폐곡선상의 정방향과 부방향으로 인접한 오프 포인트들, 혹은 어떤 방향으로 폐곡선이 직선인 경우 그 사실을 나타내는 정보들이 들어가게 된다. 또한 이 때 각 레벨마다의 단계적 렌더링에서 오프 포인트들의 위치 결정에 필요한 근사상수들도 변환된 PR 폰트의 글리프 정보에 포함된다. 상기의 근사상수들은 해당 레벨에서 폰트를 렌더링했을 때의 폰트의 아우트라인이 원래의 폰트의 아우트라인을 가장 근사시키도록 결정된다. 이 때 근사의 방법으로는 두 곡선 사이의 L2-norm, Hausdorff Distance 등 여러 가지를 사용할 수 있다.
제2a도의 기타 제어 정보를 제3a도의 기타 제어 정보로 변환할 때 특히 힌팅 정보가 중요한데, 이 힌팅 정보를 변환하는 방법에는 크게 나누어 정해진 각 레벨마다 해당 힌팅 정보들을 가지고 있도록 하는 방법과, 레벨 정보에 관계 없이 원래의 힌팅 정보를 그대로 이용하여 PR 폰트 렌더링의 최종 단계에서만 힌팅을 적용하도록 하는 방법의 두가지가 있다. 전자의 방법은 PR 폰트를 레벨에 따라 단계적으로 렌더링할 때 각각의 단계에서의 힌팅을 가능하게 하며, 후자의 방법은 PR 폰트의 전송 속도, 디스플레이 속도 등의 문제 때문에 중간 단계에서의 힌팅이 필요치 않거나 무의미할 때 사용한다. 여기서 전자에서의 각 레벨별 힌팅 정보를 부가하는 방법은 사용 목적과 환경 등에 의해 가변할 수 있다.
상기와 같은 방법으로 제2a도로 나타내어지는 종래의 한 글자의 글리프 정보를 제3a도로 나타내어지는 PR 폰트 형식의 글리프 정보로 변환할 수 있다.
다음 430단계에서는 상기 기존의 아우트라인 폰트 데이터 파일 중에서 글리프 정보를 제외한 데이터에 상기 변환된 전체 글리프 정보를 부가하여 PR 폰트 파일을 생성한다.
다음에서는 상술된 PR 폰트 데이터를 가지고 폰트를 단계적으로 전송하고 렌더링하는 방법에 대해 상세히 기술하기로 한다. 제6b도는 이 과정의 흐름도를 도시한 것이다. 여기서 데이터의 전송은 항상 하위 레벨의 글리프 정보부터 전송된다. 즉 예를 들면 제3b도의 항목 380, 382, 384, 386, 388, 390, 392 순으로 전송되며 한 번에 하나 이상의 상기 항목들을 전송할 수도 있다.
단계 610에서는 사용자의 요구 혹은 전송 환경 등에 의해 전송 레벨이 결정되며, 이미 전송된 레벨들을 제외한 레벨들에 속하는 데이터를 결정한다. 예를들어 제3b도의 데이터 중 이미 전송된 것이 제1,2 레벨 즉 제3b도의 항목380, 382이고, 레벨 5까지의 데이터가 전송되어야 할 경우 실제 전송되어야 할 데이터는 제 3,4,5 레벨, 즉 제3b도의 항목 384, 386, 388이 된다.
다음 단계 620에서는 PR 폰트 형식의 데이터를 소정의 레벨까지 전송받았을 때 이 데이터만을 이용하여 폰트의 아우트라인을 계산한다. 이를 상세히 설명하면 다음과 같다. 먼저 전송받은 레벨까지의 포인트의 좌표, 곡선의 방향 벡터, 인덱스 정보, 폐곡선의 개수, 레벨 정보를 가지고 렌더링해야 할 폐곡선의 개수, 각 폐곡선 상에서의 전송 받은 레벨까지의 포인트들의 연결상태를 결정한다.
여기에서 각 폐곡선 상에서의 전송받은 레벨까지의 포인트들의 연결상태를 결정하는 과정을 일반적으로 설명하면 다음과 같다.
[연결상태의 일반적인 결정방법]
여기서는 앞의 일반적인 Indexing Algorithm에서 사용한 용어와 수식들을 그대로 사용하기로 하자.
또한 Q1, Q2, …, Qm즉, 처음부터 m개의 점들에 대한 인덱스정보를 가지고 있다고 가정하자.
따라서 INDEX(n) (1≤n≤m)이 주어져 있다.
여기에서 FOWARDr : {1, 2, …, r} → {1, 2,…,r}, 1≤r≤Nt 을 다음과 같이 정의한다. 즉 FOWARDr(n), 1≤r≤Nt, 1≤n≤r)이란 Q1, Q2, 1W1W1 W, Qr의 점들중 Qn을 출발하여 Qn이 들어있는 폐곡선의 정방향을 따라 갈 때 가장 먼저 만나는 점의 번호를 말한다. 따라서 FOWARDr이란 함수는 Q1, Q2, …, Qr들의 폐곡선상에서의 연결상태를 나타내는 정보이며, 이 과정의 목적은 Qm이 포함되기전 Q1, Q2, …, Qm-1들의 폐곡선상의 연결상태를 나타내는 함수 FOWARDm-1과 INDEX(n)(1≤n≤m)을 가지고 함수 FOWARDm을 구하는 것이며, 함수 FOWARDm은 다음과 같은 공식으로 구해진다.
상기의 연결 상태의 일반적인 결정 방법을 제3b도의 예를 들어 설명하면 다음과 같다. 예를 들어 제3b도의 데이터 중 제1레벨 즉 항목 380을 전송받았다고 가정하면, 이 때 렌더링해야 할 폐곡선의 수는 두 개, 즉 제1,2폐곡선이 되고, 제1포인트부터 제8포인트까지의 8개의 포인트들 즉 제3b도의 항목 380에 해당하는 포인트들이 이 두 폐곡선 위에 있게 된다.
제7도는 제1포인트만을 가지고 각 폐곡선상의 포인트들의 연결 상태를 도시한 것으로서, 이는 폐곡선 상에서 제1포인트에 각각 부 방향으로 가장 인접한 포인트가 현재까지 제1포인트 자신이라는 사실을 나타내는 인덱스 정보로부터 결정된 것이다.
제8도는 제1,2포인트만을 가지고 각 폐곡선상의 포인트들의 연결 상태를 도시한 것으로서, 이는 제2포인트의 인덱스가 1 즉 제1포인트가 제2포인트에 부방향으로 가장 인접한 포인트라는 정보로부터 얻어진다.
제9도는 제1,2,3포인트만을 가지고 각 폐곡선상의 포인트들의 연결 상태를 도시한 것으로서, 이는 제3포인트의 인덱스가 2 즉 제2포인트가 제3포인트에 부방향으로 가장 인접한 포인트라는 정보로부터 얻어진다.
제10도는 제1,2,3,4포인트만을 가지고 각 폐곡선상의 포인트들의 연결 상태를 도시한 것으로서, 이는 제4포인트의 인덱스가 3 즉 제3포인트가 제4포인트에 부방향으로 가장 인접한 포인트라는 정보로부터 얻어진다.
제11도는 제1,2,3,4,5포인트만을 가지고 각 폐곡선상의 포인트들의 연결 상태를 도시한 것으로서, 이는 제5포인트의 인덱스가 5 즉 제5포인트 자신이 제5포인트에 부방향으로 가장 인접한 포인트라는 정보로부터 얻어진다.
제12도는 제1,2,3,4,5,6포인트만을 가지고 각 폐곡선상의 포인트들의 연결 상태를 도시한 것으로서, 이는 제6포인트의 인덱스가 5 즉 제5포인트가 제6포인트에 부방향으로 가장 인접한 포인트라는 정보로부터 얻어진다.
제13도는 제1,2,3,4,5,6,7포인트만을 가지고 각 폐곡선상의 포인트들의 연결 상태를 도시한 것으로서, 이는 제7포인트의 인덱스가 6 즉 제6포인트가 제7포인트에 부방향으로 가장 인접한 포인트라는 정보로부터 얻어진다.
이와 같은 방법으로 제1레벨까지의 포인트들의 폐곡선 상에서의 연결 상태를 결정하면 제14도와 같이 된다.
상기 예와 같이 일반적으로 소정 번호까지의 포인트들의 연결 상태를 알고 있는 상황에서 다음 번호의 포인트가 추가되면 추가된 포인트의 인덱스를 이용하여 그 포인트까지의 연결 상태를 알아낼 수 있다. 이 방법은 각 포인트가 변하지 않는 인덱스를 파일 내에 가지고 있어 PR 폰트 파일의 크기를 줄일 수 있음과 동시에, 각 포인트가 폐곡선에 추가될 때마다 포인트들의 연결 상태를 동적으로 알아내어 메모리 상에 저장할 수 있다는 장점을 가지고 있다.
다음에는 PR 폰트의 아우트라인의 표현에 2차 곡선(Quadratic Bezier-Bernstein)을 이용하는 경우는 각 폐곡선마다 그 위의 각 인접한 두 온 포인트들 사이를 두 온 포인트의 좌표, 곡선의 방향 벡터를 이용하여 2차 곡선으로 잇는다. 여기서 일반적으로 P1, P2의 두 점이 있고 각 점에서 곡선의 방향벡터가 각각 v1,v2라 할 때, P1, P2를 잇는 2차 곡선 c(t)는 다음과 같다.
c(t)=(1-t)2P1+2(1-t)tP+t2P2, 0≤t≤1.
단, 여기서 P는 점P1을 지나고 방향이 v1인 직선과 점P2을 지나고 방향이 v2인 직선의 교점이다. 만일 P1, P2에서의 곡선의 방향 벡터 대신 해당 오프 포인트 Q를 알고 있다면 P1, P2를 잇는 2차 곡선 c(t)는 다음과 같다.
c(t)=(1-t)2P1+2(1-t)tQ+t2P2, 0≤t≤1.
PR 폰트의 아우트라인의 표현에 3차 곡선(Cubic Bezier-Bernstein)을 이용하는 경우는 각 폐곡선마다 그 위의 각 인접한 두 온 포인트들 사이를, 두 온 포인트의 좌표, 해당 오프 포인트들의 좌표, 해당 근사 상수들을 이용하여 3차 곡선으로 잇는다. 여기에서 P1, P2를 잇는 3차 곡선 c(t)는 다음과 같다.
c(t)=(1-t)3P1+3(1-t)2tR1+3(1-t)t2R2+t3P2,0≤t≤1.
단 여기서 R1=a(Q1-P1), R2=b(Q2-P2)이며, Q1, Q2는 P1,P2에 각각 해당하는 오프 포인트들이며, a,b는 상기의 식으로 표현되는 3차 곡선이 PR 폰트의 최종 단계에서 렌더링되는 폰트의 아우트라인을 근사하도록 L2-norm, Hausdorff Distance 등 소정의 근사 규칙에 따라 결정된 근사상수들이다.
상기와 같은 방법으로 이미 전송된 레벨까지의 데이터를 가지고 폰트의 아우트라인을 만들어 낼수 있다. 제15, 16, 17, 18, 19, 20, 21도는 각각 제3b도의 제1, 2, 3, 4, 5, 6, 7 레벨 까지의 데이터 만을 가지고 계산된 글자 'ㅂ'의 아우트라인을 도시한 것이다.
상기와 같이 아우트라인이 완성되면 단계 430에서는 힌팅 등의 기타 정보를 이용하여 라스터라이즈하여 디스플레이한다.
이때 사용 목적과 환경 등에 의해 레벨에 따라 단계적으로 렌더링할 때 각각의 단계에서의 힌팅 정보를 이용하여 단계별로 힌팅을 하거나, PR 폰트의 전송 속도, 디스플레이 속도 등의 문제 때문에 중간 단계에서의 힌팅이 필요치 않거나 무의미할 때에는 PR 폰트 렌더링의 최종 단계에서만 힌팅을 적용한다.
본 발명의 상기 방식은 폰트의 글자를 주어진 레벨정보에 의해 단계적으로 표현가능하게 해주지만 한가지 결점이 있다. 즉 한 레벨에서 라스터라이즈된 글자를 다음 단계에서 더 정밀하게 표현하려면 전에 계산된 라스터 빗맵(Raster Bitmap) 이미지를 버리고, 새로 계산을 하여 새로운 빗맵을 만들어내어야 한다는 것이다. 왜냐하면 새로운 레벨의 추가된 정보로부터 얻어진 빗맵의 패턴이 전 레벨과 어떤 관계에 있는지 알고리즘으로 빨리 규명하기가 불분명하다. 이에 따른 재계산은 전체적으로 걸리는 시간을 증가시킨다. 상기 방식의 장점은 기존의 서체를 하나도 변형시키지 않고 주어진 콘트롤 포인트에 레벨 정보만 부여한 것이기 때문에 PR 폰트로 만들기 용이한 장점이 있는 반면 라스터라이즈(rasterize) 시에 속도의 감소를 초래할 수 있다.
이러한 약점을 극복할 수 있는 방법이 중심축변환(Medial Axis Transform)이다. 중심축변환에서 평면상의 도형은 그에 최대로 내접하는 원들의 집합으로 표현되고 재구성될 수 있다. 이때 이러한 최대 내접원의 중심의 모임을 중심축(Medial Axis)이라 하고, 각 중심축의 점을 중심으로 하는 최대 내접원의 반지름 정보를 추가하여 생각하는 것을 중심축변환(Medial Axis Transform)이라 부른다. 중심축변환은 Blum이 최초로 제안한 이래 활발히 연구되어 왔고, D.T.Lee, R.L.Drysdale, M.Held, V.Srinivasan, L.R.Nackman, C.K.Yap 등에 의해 중심축변환을 구하는 방법이 제시되어 있다. 그러나 이 경우 경계를 이루는 곡선(Boundary Curve)은 직선 선분(Line Segment)이나 원호(Circular Arc)에 한정되어 있고, 이것이 일반적 곡선의 형태를 가진 경우에 대해서는 본 발명자들에 연구되고 해결되었다.
제23도는 글자 'ㅈ'의 모양과 중심축(2370)을 도시한 것이다. 일반적으로 중심축의 점을 중심으로 하는 최대 내접원이 도형의 경계곡선(Boundary Curve)과 만나는 점을 접점이라고 하는데 참조번호 2350은 중심축의 점을 나타내고, 2352는 2350을 중심으로 하는 최대 내접원이고, 2354는 두 접점을 나타낸다.
제23도의 2312로 표시된 최대 내접원과 2314로 표시된 최대 내접원의 사이에 위치한 도형의 부분을 2316으로 표시하였다.
여기서 제22도에서는 2210으로 표시된 최대 내접원(따라서 그에 대응하는 접점)이 레벨로 선택되지 않은 경우의 경계곡선을 도시하였고, 제23도에서는 2310으로 표시된 최대 내접원(따라서 그에 대응하는 접점)이 레벨로 선택된 경우의 경계곡선을 도시하였다. 제22도에서 제23도로 변하는 과정에서 볼 수 있는 바와 같이 2310이 레벨로 선택된 결과는 도형에 있어 2312와 2314사이에 위치한 도형의 부분(즉 2316)만이 영향을 받고 나머지 부분은 전혀 영향을 받지 않음을 알수 있다. 제22도에서 제23도로 진행하는 과정은 2310, 2320, 2330이 추가된 것이고 그 효과도 해당되는 부분에만 영향을 미침을 볼 수 있다.
이와 같이 하면 제22도에서 라스터라이즈한 빗맵은 대부분 그대로 쓸 수 있으며 레벨 정보의 추가는 해당된 부분에만 국소적으로 미침을 알 수 있다. 이를 우리는 국소적 라스터라이징(localized Rasterizing) 방식이라 부른다.
이러한 국소적 라스터라이징 방식은 중심축변환에 입각한 데이터를 가지고 구성된 자소에 특히 쉽게 적용되며, 이를 통해 본 발명은 그의 속도와 질의 균형적 적용을 용이하게 이룰수 있게 된다.
본 발명은 상기와 같이 구성되어 폰트를 구성하고 있는 데이터 량을 필요에 따라 가변할 수 있는 단계적 표현 가능형 폰트의 형성을 가능하게 하였고, 상기 단계적 표현 가능형 폰트는 환경과 목적에 따라 폰트 디스플레이의 속도와 폰트의 품위를 적절히 상호 조절 할 수 있는 기능을 가지고 있다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로, 전술한 실시예 및 첨부된 도면에 한정되는 것이 아니다.

Claims (9)

  1. 각 글자의 글리프 정보를 포함하는 아우트라인 폰트에 있어서, 상기 각 글자에 대한 글리프 정보는 상기 글자를 형성하는 콘트롤 포인트들의 좌표; 상기 글자를 단계적으로 전송하거나 렌더링 가능하게 하며, 상기 글자를 단계적으로 전송하거나 렌더링할 때의 상기 콘트롤 포인트 각각의 포함순서를 나타내는 레벨 정보; 및 상기 글자를 단계적으로 렌더링할 때 상기 콘트롤 포인트들 간의 단계적 연결 관계를 동적으로 표현가능하게 하는 인덱싱 방식을 포함함을 특징으로 하는 단계적 표현 가능형 폰트.
  2. 제1항에 있어서, 상기 각 글자에 대한 글리프 정보는 힌팅 등 기타 제어 정보를 포함하고 있는 것을 특징으로 하는 단계적 표현 가능형 폰트.
  3. 제2항에 있어서, 상기 힌팅 등 기타 제어 정보를 각 레벨마다 단계적으로 포함하고 있는 것을 특징으로 하는 단계적 표현 가능형 폰트.
  4. 제3항에 있어서, 상기 각 글자에 대한 글리프 정보는 상기 각 콘트롤 포인트에서의 곡선의 방향 백터에 대한 정보를 포함하고 있는 것을 특징으로 하는 단계적 표현 가능형 폰트.
  5. 제1항에 있어서, 상기 콘트롤 포인트는 중심축 점에 대응하는 최대 내접원의 접점으로 형성되는 것을 특징으로 하는 단계적 표현 가능형 폰트.
  6. 각 글자의 글리프 정보를 포함하는 아우트라인 폰트에 있어서, 상기 각 글자에 대한 글리프 정보는 상기 글자를 형성하기 위해 콘트롤 포인트를 접점으로 갖는 소정의 최대 내접원 정보; 상기 글자를 단계적으로 전송하거나 렌더링 가능하게 하며, 상기 글자를 단계적으로 전송하거나 렌더링할 때의 상기 소정의 최대 내접원 각각의 포함순서를 나타내는 레벨 정보; 및 상기 글자를 단계적으로 렌더링할 때 상기 소정의 최대 내접원들 간의 단계적 연결 관계를 동적으로 표현가능하게 하는 인덱싱 방식을 포함함을 특징으로 하는 단계적 표현 가능형 폰트.
  7. 제5또는 제6항에 있어서, 상기 최대 내접원 정보를 이용하여 국소적 라스터라이징을 가능하게 하는 것을 특징으로 하는 단계적 표현 가능형 폰트.
  8. 소정의 아우트라인 폰트 파일의 글리프 데이터로 부터 상기 소정의 아우트라인 폰트를 구성하는 각 글자에 대해 글자별로 해당 글리프 정보를 추출하는 제1단계, 상기 추출된 각 글자의 글리프 정보를 상기 글자를 단계적으로 전송하거나 렌더링 가능하게 하기 위한 레벨정보 및 인덱스 정보를 포함한 글리프 정보로 변환하는 제2단계, 및 상기 소정의 아우트라인 폰트 데이터 파일 중에서 글리프 정보를 제외한 데이터에 상기 변환된 글리프 정보를 부가하여 단계적 표현 가능형 폰트 파일을 생성하는 제3단계를 포함하고 있는 것을 특징으로 하는 단계적 표현 가능형 폰트 변환 방법.
  9. 사용자의 요구 또는 사용환경에 따라 렌더링할 레벨을 결정하고 상기 결정된 레벨까지의 렌더링에 필요한 정보 중 이미 저장하고 있는 정보를 제외한 추가 데이터만 출력장치로 전송하는 제1단계; 상기 전송된 레벨까지의 데이터만을 이용하여 글자의 각 레벨마다의 아우트라인을 계산하는 제2단계; 및 힌팅 등의 기타 제어 정보를 이용하여 각 레벨마다 폰트를 렌더링하여 글자를 단계적으로 표현하는 제3단계를 포함함을 특징으로 하는 단계적 표현 가능형 폰트의 단계적 렌더링 방법.
KR1019960009927A 1996-04-02 1996-04-02 단계적 표현 가능형 폰트 그 변환 방법 및 렌더링 방법 KR0172581B1 (ko)

Priority Applications (8)

Application Number Priority Date Filing Date Title
KR1019960009927A KR0172581B1 (ko) 1996-04-02 1996-04-02 단계적 표현 가능형 폰트 그 변환 방법 및 렌더링 방법
US08/828,553 US6232987B1 (en) 1996-04-02 1997-03-31 Progressively renderable outline font and methods of generating, transmitting and rendering the same
CN97103763A CN1126051C (zh) 1996-04-02 1997-04-02 可阶段式表现的字体数据的处理方法及其变化和表现方法
FR9704008A FR2747209B1 (fr) 1996-04-02 1997-04-02 Police de lettres creuses a restitution progressive et ses procedes de creation, transmission et restitution
DE19713654A DE19713654B4 (de) 1996-04-02 1997-04-02 Progressiv darstellbare Umrissschrift und Verfahren zum Erzeugen, Übertragen und Darstellen derselben
JP08419397A JP3168170B2 (ja) 1996-04-02 1997-04-02 段階的表現可能フォント、その変換方法およびレンダリング方法
GB9706677A GB2313277B (en) 1996-04-02 1997-04-02 A progressively renderable outline font and methods of generating, transmitting and rendering the same
TW086104526A TW359782B (en) 1996-04-02 1997-04-09 A progressively renderable outline font and methods of generating, transmitting and rendering the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960009927A KR0172581B1 (ko) 1996-04-02 1996-04-02 단계적 표현 가능형 폰트 그 변환 방법 및 렌더링 방법

Publications (2)

Publication Number Publication Date
KR970071228A KR970071228A (ko) 1997-11-07
KR0172581B1 true KR0172581B1 (ko) 1999-03-30

Family

ID=19454915

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960009927A KR0172581B1 (ko) 1996-04-02 1996-04-02 단계적 표현 가능형 폰트 그 변환 방법 및 렌더링 방법

Country Status (8)

Country Link
US (1) US6232987B1 (ko)
JP (1) JP3168170B2 (ko)
KR (1) KR0172581B1 (ko)
CN (1) CN1126051C (ko)
DE (1) DE19713654B4 (ko)
FR (1) FR2747209B1 (ko)
GB (1) GB2313277B (ko)
TW (1) TW359782B (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6501475B1 (en) * 1999-10-22 2002-12-31 Dynalab Inc. Glyph-based outline font generation independent of resolution
US6992671B1 (en) * 1999-12-09 2006-01-31 Monotype Imaging, Inc. Method and apparatus for compressing Bezier descriptions of letterforms in outline fonts using vector quantization techniques
US6911980B1 (en) * 1999-12-10 2005-06-28 Adobe Systems Incorporated Manipulation of curves and surfaces
US6781600B2 (en) 2000-04-14 2004-08-24 Picsel Technologies Limited Shape processor
US7009626B2 (en) * 2000-04-14 2006-03-07 Picsel Technologies Limited Systems and methods for generating visual representations of graphical data and digital document processing
US7576730B2 (en) 2000-04-14 2009-08-18 Picsel (Research) Limited User interface systems and methods for viewing and manipulating digital documents
US7055095B1 (en) 2000-04-14 2006-05-30 Picsel Research Limited Systems and methods for digital document processing
JP2002162958A (ja) * 2000-11-28 2002-06-07 Pioneer Electronic Corp 画像表示方法および装置
US7239318B2 (en) * 2001-03-23 2007-07-03 Rise Kabushikikaisha Method and computer software program product for processing characters based on outline font
US7385612B1 (en) 2002-05-30 2008-06-10 Adobe Systems Incorporated Distortion of raster and vector artwork
DE10260135B4 (de) * 2002-12-20 2006-11-09 OCé PRINTING SYSTEMS GMBH Verfahren, Computerprogrammprodukt und Dokumentenausgabesystem zur Verarbeitung eines Dokumentendatenstroms
FI20035250A (fi) * 2003-12-31 2005-07-01 Nokia Corp Fonttien skaalauksen järjestäminen
US7710422B2 (en) * 2004-07-26 2010-05-04 Microsoft Corporation Font representations
JP5017031B2 (ja) * 2007-09-13 2012-09-05 キヤノン株式会社 画像処理装置、画像処理方法、画像処理プログラム、並びに、記憶媒体
TWI409800B (zh) * 2008-10-13 2013-09-21 Dynacomware Taiwan Inc 根據筆劃基礎字型資料產生低解像度中文小字品質顯示的方法和裝置
CN101814189B (zh) * 2009-02-19 2011-08-17 中国科学院微电子研究所 一种图形挖空方法
US8947438B2 (en) 2011-08-01 2015-02-03 Microsoft Corporation Reducing font instructions
US9245361B2 (en) 2011-09-01 2016-01-26 Microsoft Technology Licensing, Llc Consolidating glyphs of a font
WO2014205632A1 (en) * 2013-06-24 2014-12-31 Adobe Systems Incorporated Gravity point drawing method
WO2015141260A1 (ja) * 2014-03-17 2015-09-24 株式会社河合楽器製作所 手書き音楽記号認識装置およびプログラム
KR20150145774A (ko) * 2014-06-19 2015-12-31 삼성전자주식회사 필기 애니메이션을 제공하는 전자장치 및 방법
CN113515919B (zh) * 2021-09-14 2022-01-07 北京江融信科技有限公司 一种生成中文TrueType字体的方法及系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4620287A (en) * 1983-01-20 1986-10-28 Dicomed Corporation Method and apparatus for representation of a curve of uniform width
JPS6364090A (ja) 1986-09-05 1988-03-22 松下電器産業株式会社 2値文字パタ−ンのベクトル化における線幅指定方法
JP2642363B2 (ja) 1987-11-26 1997-08-20 富士通株式会社 図形データ転送方法
US5562350A (en) * 1988-04-18 1996-10-08 Canon Kabushiki Kaisha Output apparatus that selects a vector font based on character size
AU629210B2 (en) * 1988-10-26 1992-10-01 Sun Microsystems, Inc. Method and apparatus for minimizing the visual degradation of digital typefaces
JP3013089B2 (ja) 1990-05-24 2000-02-28 富士通株式会社 自然画表現方式
GB2245739B (en) 1990-07-03 1994-05-11 Roke Manor Research Character encoding systems
EP0481787B1 (en) * 1990-10-19 1997-01-15 Canon Kabushiki Kaisha Output method and apparatus
US5301267A (en) 1991-09-27 1994-04-05 Adobe Systems Incorporated Intelligent font rendering co-processor
US5448686A (en) 1992-01-02 1995-09-05 International Business Machines Corporation Multi-resolution graphic representation employing at least one simplified model for interactive visualization applications
JP3391822B2 (ja) 1992-05-08 2003-03-31 株式会社リコー アウトラインフォントファイル圧縮方法
JP3224142B2 (ja) 1992-05-20 2001-10-29 株式会社リコー ヒンティング処理方法
US5526477A (en) 1994-01-04 1996-06-11 Digital Equipment Corporation System and method for generating glyphs of unknown characters
EP0672982B1 (en) 1994-03-18 2002-07-31 Hewlett-Packard Company, A Delaware Corporation Printer system with compressed font procedure that enables memory conservation
US5734388A (en) * 1994-05-16 1998-03-31 Agfa Division, Bayer Corporation Method and apparatus for data compression of digital data to produce a scaleable font database
US5781714A (en) * 1994-05-27 1998-07-14 Bitstream Inc. Apparatus and methods for creating and using portable fonts
JPH08146936A (ja) * 1994-11-21 1996-06-07 Fujitsu Ltd アウトラインフォントデータの処理方法および装置
JPH09134157A (ja) * 1995-11-09 1997-05-20 Fujitsu Ltd ヒント付け方法及びフォントファイル構成方法
KR100219072B1 (ko) 1996-04-02 1999-09-01 김영환 중심축 변환을 이용한 폰트 및 그 폰트 서체의 변형 및 라스터라이징 방식
US5852448A (en) * 1996-09-20 1998-12-22 Dynalab Inc. Stroke-based font generation independent of resolution

Also Published As

Publication number Publication date
CN1126051C (zh) 2003-10-29
JPH1031472A (ja) 1998-02-03
TW359782B (en) 1999-06-01
JP3168170B2 (ja) 2001-05-21
GB2313277A (en) 1997-11-19
FR2747209B1 (fr) 1999-04-16
FR2747209A1 (fr) 1997-10-10
KR970071228A (ko) 1997-11-07
CN1172991A (zh) 1998-02-11
GB9706677D0 (en) 1997-05-21
GB2313277B (en) 2000-06-21
US6232987B1 (en) 2001-05-15
DE19713654B4 (de) 2008-02-28
DE19713654A1 (de) 1997-10-30

Similar Documents

Publication Publication Date Title
KR0172581B1 (ko) 단계적 표현 가능형 폰트 그 변환 방법 및 렌더링 방법
KR100597879B1 (ko) 비트맵데이터라인세그먼트를검색하는구분적인-선형직접메모리억세스어드레싱모드를사용하여,프린트될비트맵데이터의래스터화된라인을구성하는방법및장치
JP2925587B2 (ja) ラスタ化方法
CA2811138A1 (en) Generating, storing, and displaying graphics using sub-pixel bitmaps
JP2006521629A (ja) オブジェクトを表現する2次元距離フィールドの領域をアンチエイリアスする方法及び装置
JP2003531446A (ja) 形状プロセッサ
US5966136A (en) Efficient method for clipping numerous objects against an arbitrary clipping path
US7190367B2 (en) Method, apparatus, and system for rendering using a progressive cache
JP2006521582A (ja) オブジェクトを表現する2次元距離フィールドからピクセルのコンポーネントのアンチエイリアス強度を求める方法及び装置
US5489920A (en) Method for determining the optimum angle for displaying a line on raster output devices
KR970008546B1 (ko) 문자 또는 도형의 처리방법
JP3145509B2 (ja) 文字生成方法及びその装置
JPH0664444B2 (ja) 文字クリップ方法
KR20080094850A (ko) 폰트들의 스케일링 장치
US5734748A (en) Character pattern generation apparatus and method
JPH08146936A (ja) アウトラインフォントデータの処理方法および装置
US5068803A (en) Method and apparatus for filling contours in digital typefaces
US5293472A (en) Method of generating lines and curves of user specified thicknesses on a raster device
US12026809B2 (en) Systems for generating anti-aliased vector objects
US7123271B2 (en) Method and apparatus for antialiasing a set of objects represented as a set of two-dimensional distance fields in image-order
JPH0554149A (ja) エツジリスト作成装置
JPH11213128A (ja) ベクトル地図表示システム
JPH09171564A (ja) 描画装置
JP2006521625A (ja) 2次元距離フィールドを境界デスクリプタの集合に変換する方法
JP3146771B2 (ja) フォントラスタライズ装置およびその方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130925

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20140923

Year of fee payment: 17

FPAY Annual fee payment

Payment date: 20150921

Year of fee payment: 18

EXPY Expiration of term