KR100209455B1 - 문자 생성 방법 및 그 장치 - Google Patents

문자 생성 방법 및 그 장치 Download PDF

Info

Publication number
KR100209455B1
KR100209455B1 KR1019970015855A KR19970015855A KR100209455B1 KR 100209455 B1 KR100209455 B1 KR 100209455B1 KR 1019970015855 A KR1019970015855 A KR 1019970015855A KR 19970015855 A KR19970015855 A KR 19970015855A KR 100209455 B1 KR100209455 B1 KR 100209455B1
Authority
KR
South Korea
Prior art keywords
stroke
character
interval
magnification
strokes
Prior art date
Application number
KR1019970015855A
Other languages
English (en)
Other versions
KR19980078335A (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
Priority claimed from JP4326656A external-priority patent/JP3034140B2/ja
Priority claimed from JP4326657A external-priority patent/JP3034141B2/ja
Application filed by 아끼구사 나오유끼, 후지쓰 가부시끼가이샤 filed Critical 아끼구사 나오유끼
Publication of KR19980078335A publication Critical patent/KR19980078335A/ko
Application granted granted Critical
Publication of KR100209455B1 publication Critical patent/KR100209455B1/ko

Links

Images

Classifications

    • 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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B41PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
    • B41JTYPEWRITERS; SELECTIVE PRINTING MECHANISMS, i.e. MECHANISMS PRINTING OTHERWISE THAN FROM A FORME; CORRECTION OF TYPOGRAPHICAL ERRORS
    • B41J2/00Typewriters or selective printing mechanisms characterised by the printing or marking process for which they are designed
    • B41J2/485Typewriters or selective printing mechanisms characterised by the printing or marking process for which they are designed characterised by the process of building-up characters or image elements applicable to two or more kinds of printing or marking processes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S345/00Computer graphics processing and selective visual display systems
    • Y10S345/948Alteration of stored fonts to maintain feature consistency throughout scaled font

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

아웃라인 폰트 데이터에서 가독성을 개선한 작은 문자를 생성하기 위한 문자생성 방법 및 그 장치가 개시된다. 이 문자 생성 방법은 아웃라인 폰트 데이타를 지정된 사이즈의 좌표계의 좌표치로 변환하는 단계와, 힌트 처리에 의하여 정수 좌표치를 조정하는 단계와, 상기 조정된 좌표치를 전개하여 비트 멥 이미지를 생성하는 단계를 포함한다. 또, 힌트 처리는 상기 라운딩 처리전의 각 스트로크간의 간격과 상기 라운딩 처리후의 각 스트로크간의 간격에서 각 간격의 변환 배율을 산출하는 단계와, 상기 복수의 변환 배율중 최대의 변환 배율과 최소의 변환 배율과의 차를 산출하는 단계와, 상기 차가 작아지는 방향으로 상기 복수의 스트로크중 소망하는 스트로크의 상기 정수 좌표치를 이동시키는 단계를 포함한다. 또 문자생성 장치는 각 문자의 상기 아웃라인 폰트 데이터를 저장하는 폰트 메모리와, 상기 폰트 메모리에서 판독한 지정된 문자의 아웃라인 폰트 데이터를 지정된 사이즈의 좌표계의 좌표치로 변환한 후에, 정수 좌표치로 라운딩 처리하고, 그 후 라운딩 처리전과 라운딩 처리후 스트로크 간격의 변환 배율의 최대와 최소의 차가 작아지도록 상기 정수 좌표치를 변경하여 상기 비트 맵 이미지를 생성하는 문자 전개회로를 구비한다.

Description

문자 생성 방법 및 그 장치
본 발명은 논리 좌표계로 표현된 아웃라인(out line)문자를 정수치로 표현된 물리 좌표상에 전개시키기 위한 문자 생성 방법 및 그 장치에 관한 것이다.
프린터 장치, 디스플레이 장치등에 있어서는 문자를 인쇄 내지 표시하기 위해 문자 패턴의 생성이 필요하다. 이 문자 패턴의 생성에 있어서, 최근에 동일 문자에 있어서고 여러 가지 문자 사이즈의 문자가 요구되고 있다. 이로인해 동일한 문자에 대하여 비트 패턴에 의해 각종 문자 사이즈의 문자가 주어질 경우 메모리 용량이 커진다. 특히, 한자와 같이 다수의 문자 종류를 갖는 문자는 큰 메모리 용량이 필요하다.
이러한 문제점을 해결하기 위하여, 아웃라인 폰트에 의한 문자 생성 방법이 알려져 있다.
이 방법은 문자의 윤곽을 실수 표현으로 또한 논리 좌표계로 표현한 문자 패턴 데이터를 가지고, 이 데이터를 지정된 문자 사이즈 좌표계로 변환하여 문자를 정수로 표현되는 비트 맵 이미지로 전개하는 것이다.
종래에 도형이나 아웃라인 폰트와 같은 실소 표현의 논리 좌표 데이타를 정수로 표현된 비트 맵 이미지로 전개할 경우, 문자 데이터가 프린터나 디스플레이의 픽셀 단위로 표현될 수 있도록 그 문자 데이터의 소수 부분이 라운딩 처리된다. 통상적인 라운딩 처리로서는 좌표 데이터가 가장 가까운 픽셀로 표현되도록 하기 위하여 사사오입이 일반적이다.
예를들어 제1도의 도시와 같이 아웃라인 형식으로 표현된 한자 車 의 문자를 구성하는 각각의 점(윤곽점)은 1000
Figure kpo00006
1000 등과 같은 정수 논리 좌표로 보존되어 있다.
이 논리 좌표상의 문자 아웃라인 데이터는 필요한 문자 사이즈로 변환되어서 소수점을 포함한 좌표치로 변환된다. 이것을 물리 좌표에 의해 좌표치로 표현할수 있도록 모든 점을 정수로 라운딩 처리하면 모든 점이 가장 가까운 정수로 라운딩 처리된다. 예를들어, 24×24 도트의 문자 사이즈로 변환할 경우에는, 좌표 변환 처리와 라운딩 처리에 의하여 제1도에 도시된 한자인 車 라는 문자는 제2a도에 도시된 것과 같게 된다. 이 예에서는 원래의 문자가 굵게 디자인된 문자이기 때문에 생성된 문자 비트 맵 이미지도 두 픽셀의 폭을 갖는다.
이같은 문자를 이번에는 종횡 16 도트(16
Figure kpo00007
16 도트)의 비트 맵 이미지가 되도록 변환하면 제2b도의 도시와 같아지고 중앙의 인접하는 2 개의 횡 스트로크가 서로 접촉하게 된다.
이와 동일하게, 제3도의 도시와 같은 1000
Figure kpo00008
1000 의 논리 좌표로 아웃라인 형식으로 표현된 한자
Figure kpo00009
라는 문자를 16
Figure kpo00010
16 도트의 문자 사이즈로 변환하면 제4a도에 도시된 것처럼 된다.
한자
Figure kpo00011
라는 문자는 이 한자를 구성하는 2 개의 白 의 부분에 포함되는 3 개의 횡 스트로크와 머리부분에 하나의 횡 스트로크 및 하부에 하나의 횡 스트로크가 있다. 따라서, 합계 8 개의 횡 스트로크가 포함되어 있다. 8 개의 횡 스트로크를 표현하기 위해서는 횡 스트로크간의 휜 부분도 포함하여 16 도트가 필요하다. 따라서, 16×16 도트의 비트맵 이미지가 정확히 표현 가능한 최소의 크기이다.
한자가 12×12 도트의 물리좌표로 축소처리되면, 제4b도의 도시와 같이 횡 스트로크간의 흰 여백을 표현하는 도트가 없으므로 횡 스트로크가 서로 접촉하게 된다.
한자가 12×12 도트의 물리좌표로 축소처리되면, 제4b도의 도시와 같이 횡 스트로크간의 휜 여백을 표현하는 도트가 없으므로 횡 스트로크가 서로 접촉하게 된다.
이로인해, 제2b도의 도시와 같이 고딕체등의 선폭이 굵은 디자인의 문자를 작게 축소하면, 횡 스트로크끼리 접촉되어 이로인해 그 접촉된 부분이 검게 얼룩이 저서 문자를 정확히 인식할 수 없고 가독성(可讀性)이 떨어진다.
이와 동일하게, 제4b도의 도시와 같이 선폭이 가늘어도 복잡한 디자인의 문자를 작게 축소하면 일부 횡 스트로크가 서로 접촉하게 된다. 이로인해, 그 접촉된 부분이 검게 얼룩진 것처럼 보이고 문자를 정확히 인식할 수가 없어 가독성이 떨어진다.
또한, 제5도의 도시와 같이 아웃라인 형식으로 표현된 한 目 의 문자를 구성하는 각각의 점(윤곽선)은 1000
Figure kpo00012
1000 등과 같은 정수 논리 좌표로 보존되고 있다. 예를들어, 이 한자를 12
Figure kpo00013
14 도트의 문자사이즈로 변환할 경우에는, 제6a도의 도시와 같이 좌표 변환 처리에 의하여 한자인 目 의 문자의 좌측 종 스트로크는 Ⅹ 좌표로 e=1.2 내지 e´=2.7 로 표현된다. 라운딩 처리에 의하여 제6b도의 도시와 같이 이 종 스트로크는 Ⅹ 좌표에서 1에서 3 까지의 두 픽셀폭을 갖는 비트맵 이미지가 되다.
또한, 한자 目 의 우측의 종 스트로크는 Ⅹ 좌표에서 f=7.7 내지 f′ =9.2로 표현된다. 그리고 라운딩 처리에 의해 제6b도의 도시와 같이 이 종 스트로크는 Ⅹ좌표에서 8 에서 9 까지의 1 픽셀폭을 갖는 비트 맵 이미지가 된다.
이러한 방식으로, 원래 같은 폭을 가진 종 스트로크에 있어서도, 라운딩 처리에 의하여 물리 좌표상의 폭이 좌측이 2 픽셀, 우측이 1 픽셀이 되어 상이한 폭이 된다.
이와 동일하게, 이 문자 目 의 4 개의 횡 스트로크는 제6a도의 도시와 같이 좌표 변환에 의하여 위에서부터 차례로 Y 좌표에서 d=11.5 내지 d′=12.7 , c=8.3 내지 c′=9.5 , b=4.5 내지 b′=5.7 및 a=0.3 내지 a′=1.5 가 된다. 그리고 도 6B의 도시와 같이 라운딩 처리에 의하여 상기 횡 스트로크들은 각각 d=12 내지 d′=13 , c=8 내지 c′=10 , b=5 내지 b′=6 및 a=0 내지 a′=2 가 된다. 즉, 각 횡 스트로크의 선폭은 각각 1 픽셀, 2 픽셀, 1 픽셀 및 2 픽셀이 된다.
이로인해서 횡 스트로크의 폭이 같은 1.2 인제도 불구하고, 라운딩 처리에 의하여 1 픽셀과 2 픽셀의 폭으로 처리되고 만다.
아웃라인 폰트로부터 전개된 비트 맵 폰트에서는 이 폭의 오차가 문자의 인상을 변경하기 때문에 가급적 이 오차를 작게 하는 것이 좋다.
이러한 문제점을 해결하기 위하여, 제7a도 및 제7b도의 도시와 같은 선폭 보존 라운딩 처리 방법이 제안되고 있다. 이 방법은 횡 스트로크의 상하 또는 종 스트로크의 좌우 중 어느 한쪽편의 윤곽선을 우선적으로 라운딩 처리한 다름 다른 한 쪽을 그 선폭을 유지한 채로 라운딩 처리하는 것이다.
제7a도의 좌표 변환 후의 한자 目 중 a,b,c,d,e 및 f 가 우선적으로 라운딩 처리될 윤곽선이고, a′,b′,c′,d′,e′및 f′ 가 선폭을 유지한 채로 라운딩 처리될 윤곽선이다. 우선 Y 좌표가 a 로 표현된 가장 아래의 횡 스트로크 윤곽선을 라운딩 처리하면 0.3 이 라운딩 처리에 의해 0 이된다.
다음에, 제일 아래의 횡 스트로크 Y 좌표가 a' 인 윤곽선을 라운딩 처리한다. 이 때 선폭을 보존하므로 a 가 0.3에서 0으로 라운딩 처리된 오차분인 -0.3 이 a' 의 Y좌표에 가해져서 a'=1.5-0.3=1.2 가 된다. 따라서, 라운딩 처리에 의하여 선폭은 1 픽셀이된다.
이와 동일하게, 제일 위의 횡 스트로크에서는 윤곽선 d 의 Y좌표가 11.5이고, 라운딩 처리에 의하여 12가 된다. 선폭 보존 처리에 따라서, 윤곽선 d'의 좌표는 12.7+0.5(오차분)=13.2 가 된다. 따라서, 라운딩 처리에 의하여 Y좌표는 13이 되고, 선폭은 1 픽셀이 된다. 제2의 횡 스트로크에서는, 윤곽선 C 의 Y 좌표가 8.3이고, 라운딩 처리에 의하여 8이 된다. 선폭 보존 처리에 따라서, 윤곽선 C'의 Y좌표는 9.5-0.3(오차분)=9.2 가 된다. 따라서 라운딩 처리에 의하여 Y좌표는 9가 되고 선폭은 1픽셀이 된다. 제3의 횡 스트로크에서는 윤곽선 b의 Y좌표가 4.5이고 라운딩 처리에 의하여 5가 된다. 선폭 보존 처리에 따라서, 윤곽선 b'의 Y좌표는 5.7+0.5(오차분)=6.2 가 된다. 따라서, 라운딩 처리에 의하여 Y 좌표는 6이고 선폭은 1 픽셀이 된다. 이와같이 하여, 제7b도의 도시와 같이 횡 스트로크의 선폭은 원래의 폭 1,2에 가장 가까운 1 픽셀에 모두 맞추어지고, 종 스트로크도 동일하게 선폭 2 픽셀에 맞추어진다.
이 방법에 있어서는, 횡 스트로크의 선폭은 동일하게 맞추어지나. 제7b도의 도시와 같이 횡 스트로크간의 간격은 3 픽셀, 2 픽셀 및 4 픽셀이 된다. 이 간격을 원래의 간격과 비교해보면, 제7a도의 도시와 같이 라운딩 처리전의 스트로크 간격은 위로부터 차례로 d-c' =11.5-9.5=2.0, c-b'=8.3-5.7=2.6 및 b-a'=4.5-1.5=3.0이 된다. 즉, 원래의 횡 스트로크의 간격은 위로부터 아래로 순차적으로 넓어지고 있으나 라운딩 처리 후에는 중,상,하의 순으로 넓어지고 있고, 간격의 역전이 생기고 있다.
특히, 위치 c'와 d의 간격은 원래 2.0인데, 3픽셀의 간격으로 재현된다.
반면에 위치 b' 와 c의 간격은 원래 2.6인데 2 픽셀의 간격으로 재현된다. 횡 스트로크나 종 스트로크가 많은 문자에 대해서는, 특히 선폭이나 스트로크의 간격을 논리 좌표로 표현된 문자에 충실히 재현하는 것이 문자 품질을 향상시키는데 있어서 중요하다. 그러나, 선폭은 개선되어도 간격 까지는 적절히 조정이 안된다.
본 발명의 제1목적은 아웃라인 데이터로부터 가독성을 개선한 작은 사이즈의 문자를 생성하기 위한 문자 생성방법 및 그 장치를 제공하는 것이다.
본 발명의 제2목적은 종 스트로크나 횡 스트로크가 복수개 가지런히 정렬되는 문자의 생성에 있어서 물리좌표로 생성되는 문자의 비트 맵 이미지가 인접한 스트로크끼리의 접촉에 의하여 그 일부분이 검게 얼룩지는 것이 방지하는 문자 생성 방법 및 그 장치를 제공하는 것이다.
본 발명의 제3목적은 스트로크간의 간격을 조정한 문자를 생성하기 위한 문자 생성 방법 및 그 장치를 제공하는 것이다.
본 발명의 제4목적은 종 스트로크나 횡 스트로크가 복수개 가지런히 정렬된 문자의 생성에 있어서 스트로크 간격이 원래 문자의 디자인에 따른 비트 맵 이미지를 생성하기 위한 문자 생성 방법 및 그 장치를 제공하는 것이다.
제1도는 종래 기술의 설명을 위해서 한자(漢字)를 도시한 도면.
제2a도는 제1도에 도시된 한자를 종래 기술에 의해 24
Figure kpo00002
24 도트로 전개시킨 도면.
제2b도는 제1도에 도시된 한자를 종래 기술에 의해 16
Figure kpo00003
16 도트로 전개시킨 도면.
제3도는 종래 기술의 설명을 위해서 또 다른 한자를 도시한 도면.
제4a도는 제3도에 도시된 한자를 종래 기술에 의해 16
Figure kpo00004
16도트로 전개시킨 도면.
제4b도는 제3도에 도시된 한자를 종래 기술에 의해 12
Figure kpo00005
12 도트로 전개시킨 도면.
제5도는 종래 기술의 설명을 위해서 또다른 한자를 도시한 도면.
제6a도는 제5도의 한자를 좌표 변환 처리한 후의 좌표를 패턴으로서 도시한 도면.
제6b도는 제5도의 한자를 라운딩(rounding) 처리한 후의 좌표를 패턴으로서 도시한 도면.
제7a도는 제5도의 한자를 좌표 변환 처리한 후의 좌표를 패턴으로서 도시한 도면.
제7b도는 제5도의 한자를 선폭 보존 라운딩 처리한 후의 좌표를 패턴으로서 도시한 도면.
제8도는 본 발명의 원리를 설명하기 위한 제1도면.
제9도는 본 발명의 원리를 설명하기 위한 제2도면.
제10도는 본 발명의 윈리를 설명하기 위한 제3도면.
제11도는 본 발명의 원리를 일 실시예의 블록도.
제12도는 본 발명의 제 1 실시예에 따른 문자 전개부의 블록도.
제13도는 제11도의 폰트 메모리(font memory)의 제 1 구성도.
제14도는 제11도의 폰트 메모리의 제 2 구성도.
제15도는 본 발명의 제 1 실시예에 따른 플로우챠트.
제16도는 본 발명의 제 1 실시예에 따른 문자 생성 동작을 설명하기 위한 제1도면.
제17도는 본 발명의 제 1 실시예에 따른 문자 생성 동작을 설명하기 위한 제2도면.
제18도는 제16도 및 제17도에 도시된 실시예에 사용되는 한자의 패턴을 도시한 도면.
제19도는 제15도에 도시된 실시예의 문자 전개 테이블을 설명하기 위한 도면.
제20도는 본 발명의 제 2 실시예에 따른 플로우챠트.
제21도는 본 발명의 제 2 실시예에 따른 문자 생성 동작을 설명하기 위한 제1도면.
제22도는 본 발명의 제 2 실시예에 따른 문자 생성 동작을 설명하기 위한 제 2 도면.
제23도는 제21도 및 제22도에 도시된 실시예에 사용되는 한자의 패턴을 도시한 도면.
제24도는 제20도에 도시된 실시예의 문자 전개 테이블을 설명하기 위한 도면.
제25도는 본 발명의 제 3 실시예에 따른 문자 전개부의 블록도.
제26도는 제25도에 도시된 실시예의 폰트 메모리의 제 1 구성도.
제27도는 제25도에 도시된 실시예의 폰트 메모리의 제 2 구성도.
제28도는 본 발명의 제 3 실시예에 따른 플로우 챠트.
제29도는 본 발명의 제 3 실시예에 따른 문자 생성 동작을 설명하기 위한 제1도면.
제30도는 본 발명의 제 3 실시예에 따른 문자 생성 동작을 설명하기 위한 제2도면.
제31도는 제29도 및 제30도에 도시된 실시예에 사용되는 한자의 패턴을 도시한 도면.
제32도는 제28도에 도시된 실시예의 문자 전개 테이블을 설명하기 위한 도면.
제33a도는 제3 실시예를 설명하기 위해서 라운딩 처리전의 좌표를 도시한 도면.
제33b도는 제3 실시예를 설명하기 위해서 라운딩을 처리후의 좌표를 도시한 도면.
제34도는 제 3 실시예의 동작을 설명하기 위한 도면.
* 도면의 주요부분에 대한 부호의 설명
1 : 수신회로 2 : 명령 분석기
3 : 문자 전개 회로 4 : 폰트 메모리
5 : 드로잉 회로 6 : 비트 맵 메모리
7 : 인쇄부 30 : 확대/축소 회로
31 : 힌트 처리기 32 : 스트로크 간격 연산기
33 : 비교기 34 : 판정 회로
35 : 필링 회로 36 : 변환 배율 연산기
37 : 시행기 38 : 최대/최소 변환 배율 검출기
본 발명의 제1양상에 따라서, 문자의 윤곽선을 좌표로 표현한 아웃라인 폰트 데이터로부터 비트 맵 이미지를 생성하는 문자 생성 방법이 제공되는데, 이 방법은 아웃라인 폰트 데이터를 지정된 사이즈의 좌표계의 좌표치로 변환하는 단계와, 상기 변환된 좌표치를 정수 좌표치로 라운딩 처리하는 단계와, 상기 라운딩 처리후의 좌표에 있어서 상기 동일 방향에 있는 복수의 스트로크간의 간격의 합계치를 산출하는 단계와, 상기 합계치를 대상이 되는 스트로크 수에서 1을 감산한 수와 비교하는 단계와, 상기 합계치가 상기 뺀 수보다 작을 경우에 상기 대상이 되는 스트로크중 소망하는 스트로크의 선폭을 조정하도록 상기 정수 좌표치를 변경하는 단계와, 상기 조정된 좌표치를 포함하는 상기 정수 좌표치를 전개하여 상기 비트 맵 이미지를 생성하는 단계를 포함한다.
본 발명의 제2양상에 따라서, 문자의 윤곽선을 좌표로 표현한 아웃라인 폰트 데이터로부터 비트 맵 이미지를 생성하는 문자 생성 장치가 제공되는데, 이 장치는 각 문자의 상기 아웃라인 폰트 데이터를 저장하는 폰트 메모리와, 상기 폰트 메모리에서 판독한 지정된 문자의 아웃라인 폰트 데이터를 지정된 사이즈의 좌표계의 좌표치로 변환한 후에 이 좌표치를 정수 좌표로 라운딩 처리하여 그 후 상기 라운딩 처리 후의 좌표로부터 문자의 스트로크 간의 접촉이 있는지를 검출하여 만일 그러한 접촉이 있을 경우 상기 정수 좌표치를 변경하여 상기 비트 맵 이미지를 생성하는 문자 전개 회로를 구비한다.
본 발명의 이러한 양상에 따라서, 라운딩 처리후의 정수 좌표치로부터 라운딩 처리후의 스트로크가 접촉하고 있는지를 판정한다. 이를 위해서는 우선 라운딩 처리 후의 스트로크간의 간격의 합계치를 산출한다. 한편 각 스트로크가 서로 접촉하지 않는 최저 조건은 임의의 간격이 스트로크 수에서 1을 뺀 수이므로 그 합계치와 그 뺀수를 비교한다. 그리고 합계치가 뺀 수보다 작을 때는 스트로크가 접촉하고 있는 것으로 판정하여 일부 스트로크의 선폭을 조정한다. 이 선폭을 조정하는 한방법은 선폭을 가늘게 하여 스트로크간의 접촉을 방지하여 문자의 일부가 검게 얼룩지는 것을 방지하는 것이다. 또 다른 조정 방법으로서, 일부의 스트로크를 삭제하여 스트로크간의 접촉을 방지하여 문자의 일부가 검게 얼룩지는 것을 방지한다.
본 발명의 제3양상에 따라서, 문자의 윤곽선을 좌표로 표현한 아웃라인 폰트데이타로부터 비트 맵 이미지를 생성하는 문자 생성 방법이 제공되는데, 이 방법은 상기 아웃라인 폰트 정보를 지정된 사이즈의 좌표계의 좌표로 변환하는 단계와, 상기 변환된 좌표치를 상기 정수 좌표치로 라운딩 처리하는 단계와, 상기 라운딩 처리전의 각 스트로크간의 간격과 상기 라운딩 처리후의 각 스트로크간의 간격으로부터 각 간격의 변환 배율(scaling factor)을 산출하는 단계와, 상기 변환 배율중 최대의 변환 배율의 간격과 최소 배율의 간격과의 차를 산출하는 단계와, 상기 차를 작게하는 방향으로 상기 스트로크중 소망하는 스트로크의 정수 좌표치를 이동하는 단계와, 상기 이동된 좌표치를 포함하는 상기 정수 좌표치를 전개하여 상기 비트 맵 이미지를 생성하는 단계를 포함한다.
본 발명의 제4양상에 따라서, 문자의 윤곽선을 좌표로 표현한 아웃라인 폰트 데이터로부터 비트 맵 이미지를 생성하는 문자 생성 장치가 제공되는데, 이 장치는 각 문자의 상기 아웃라인 폰트 데이터를 저장하는 폰트 메모리와, 상기 폰트 메모리에서 판독하는 지정된 문자의 아웃라인 폰트 데이터를 지정된 사이즈의 좌표의 좌표치로 변환한 후에 정수 좌표로 라운딩 처리하고, 그 후 상기 라운딩 처리전과 라운딩 처리 후의 스트로크 간격의 변환 배율의 최대와 최소와의 차가 작아지도록 상기 정수 좌표치를 변경하여 상기 비트 맵 이미지를 생성하는 문자 전개 회로를 구비한다.
본 발명의 이 두 양상에 따라서, 라운딩 처리 후의 스트로크 간격과 원래의 문자에서의 스트로크 간격과의 배율이 균등하면 라운딩 처리후의 스트로크 간격은 원래의 문자의 디자인을 재현하였다고 말할 수 있다. 이로 인해, 라운딩 처리전의 스트로크간의 간격과 라운딩 처리 후의 스트로크간의 간격에서 각 간격의 변환 배율을 산출하여 변환 배율중 최대의 배율과 최소의 배율과의 차가 작아지도록 복수의 스트로크 간격간의 스트로크의 좌표를 이동함으로써 스트로크 간격을 조정하는 것이다.
본 발명의 또 다른 특징 및 장점은 첨부된 도면과 관련하여 이하의 상세한 설명을 통해 명백하게 드러날 것이다.
첨부된 도면은 본 발명의 원리를 설명하기 위한 것으로 본 발명의 바람직한 실시예를 비롯하여 상술한 일반적인 설명을 위한 것이다.
제8도는 본 발명의 원리를 예시된 제1도면이다. 제8도에 도시된 바와같이, 1000
Figure kpo00014
1000 의 좌표계로 보존되는 아웃라인 좌표 ao 내지 co'를 지정 사이즈로 좌표 변환한다. 그리고 라운딩 처리하여 정수 좌표치를 얻는다. 예를 들어, 한자 車 를 16X16 도트의 사이즈로 변환하면 중간 스트로크의 하단 좌표 b1'와 아래 스트로크의 상단 좌표 c1 이 동일 좌표치가 되고, 이들 스트로크가 서로 접촉한다. 이 접촉을 검출하기 위해서 대상이 되는 스트로크 간격의 합계치를 연산하고, 대상 스트로크 수에서 1을 뺀수와 비교한다. 이 합계치가 대상 스트로크의 개수 -1 보다 작을 경우에는 세선화 처리(line-thinning process)를 실행한다.
즉, 대상 스트로크 중 외측의 스트로크를 제외하고 중앙의 스트로크의 선폭을 가늘게 한다. 이것으로 스트로크간의 접촉을 방지한다.
제9도는 본 발명의 원리를 예시한 제2도면이다. 제9도의 도시와 같이, 1000
Figure kpo00015
1000 의 좌표계로 보존되는 아웃라인 좌표 ao∼co'를 지정 사이즈로 좌표 변환한다. 그리고 라운딩 처리하여 정수 좌표치를 얻는다. 예를 들어, 한자
Figure kpo00016
는 12
Figure kpo00017
12 도트의 사이즈로 변환하면 위의 스트로크의 하단 좌표 a1' 와 중앙의 스트로크의 상단 좌표 b1 이 동일 좌표치가 되고, 중앙의 스트로크의 하단 좌표 b1' 과 아래의 스트로크의 상단 좌표 c1이 동일 좌표치가 된다. 따라서, 이들 스트로크가 서로 접촉한다. 이 접촉을 검출하기 위하여, 대상이 되는 스트로크 간격의 합계치를 연산하여 대상 스트로크의 개수 -1 과 비교한다. 이 합계치가 대상 스트로크의 개수 -1 보다 작을 경우에는 스트로크가 서로 접촉하고 있는 것으로 판정한다. 이 경우에, 스트로크 선폭이 1 픽셀 폭인 경우에는 스트로크 폭을 가늘게 하면 그 스트로크는 삭제된다. 따라서 소거 처리를 실시한다. 즉 대상 스트로크중에서 외측 스트로크 이외의 중앙 스트로크를 삭제한다. 이것에 의하여 스트로크간의 접촉을 방지한다.
제10도는 본 발명의 원리를 예시한 제3도면이다. 제10도의 도시와 같이, 아웃라인 좌표계로 보존되고 있는 아웃라인 좌표 a 내지 e를 지정 사이즈로 좌표 변환한다. 그리고 라운딩 처리하여 정수 좌표를 얻는다. 예를 들어, 한자 目 를 14
Figure kpo00018
12 도트의 사이즈로 변환하면, 스트로크 간격이 변화한다. 여기에서 이 스트로크 간격의 변화를 최소로 하기 위하여 라운딩 처리전의 스트로크 간격과 라운딩 처리 후의 스트로크 간격을 연산한다. 그리고 라운딩 처리 전의 스트로크 간격과 라운딩 처리 후의 스트로크 간격의 변환 배율을 산출한다. 다시 이 변환 배율 중 최대와 최소의 것을 추출한다. 그리고 이 최대 변환 배율과 최소 변환 배율과의 차가 작아지도록 스트로크를 이동한다. 이것에 의하여 스트로크 간격을 원래의 디자인에 맞추어서 조정할 수 있다.
제11도는 본 발명의 한 실시예의 블록도이다. 제12도는 본 발명의 제1의 실시예에 따른 문자 전개부의 블록도이고, 제13도 및 제14도는 본 발명의 한 실시예의 폰트 메모리의 구성을 도시한 제1 및 제2도면이다.
제11도의 도시와 같이, 수신회로(1)는 상위 장치(컴퓨터 등)로 부터의 인쇄 명령 및 인쇄 데이터를 수신한다. 이 수신회로(1)는 마이크로컴퓨터로 구성된다.
명령 분석기(2)는 수신회로(1)에서 수신된 인쇄 명령 등의 의미를 해석하여 문자와 도형으로 구분한다. 문자 전개회로(3)는 명령 분석기(2)에서 문자 코드, 문자 사이즈 및 문자 방향을 수신하여 폰트 저장 메모리(4)로부터 문자 데이터를 판독하여 관련 문자를 비트 맵 이미지로 전개한다. 이 문자 전개회로(3)는 제12도와 관련하여 나중에 상세히 설명될 것이다. 폰트 저장 메모리(4)는 문자 데이터를 아웃라인 형식으로 저장하는 것이다.
드로잉(drawing) 회로(5)는 도형 또는 이미지를 비트 맵 이미지로 전개 처리하는 동시에 비트 맵 이미지로 전개된 문자와 도형을 겹쳐서 비트 맵 메모리(6)에 기입한다. 비트 맵 메모리(6)는 드로잉 회로(5)에 의하여 문자 도형의 비트 맵 이미지가 기입된다. 인쇄 기구(7)는 비트 맵 메모리(6)중의 데이터를 용지에 인쇄한다. 명령 분석기(2), 문자 전개회로(3) 및 드로잉 회로(5)는 1개의 마이크로프로세서(8)로 구성된다.
이 마이크로프로세서(8)의 동작을 설명하면, 수신회로(1)에서 수신된 인쇄 명령 및 인쇄 데이터는 명령 분석기(2)에서 그 의미가 해석되어 문자와 도형으로 분리된다. 도형과 이미지는 드로잉 회로(5)에서 비트 맵 이미지로 전개 처리된다.
한편, 문자는 문자 전개회로(3)에서 폰트 메모리(4)의 아웃라인 폰트 정보를 이용하여 지정된 문자 사이즈의 비트 맵 이미지로 전개 처리된다.
드로잉 회로(5)는 비트 맵 이미지로 전개된 문자와 도형을 중첩하여 비트 맵 메모리(6)에 기입한다. 그리고 비트 맵 메모리(6)의 데이터는 인쇄 기구(7)에 의하여 용지에 인쇄된다.
제12도에 의하여 문자 전개 회로(3)의 상세를 블록화해서 설명한다. 확대/축소 연산기(30)는 폰트 메모리(4)로부터의 문자 코드에 대응하는 문자 아웃라인 정보를 지정된 문자 사이즈가 되도록 확대 또는 축소한다. 힌트 처리부(31)는 힌트 처리전의 데이터와 힌트 처리후의 데이터를 각 스트로크마다 보유한 문자 전개 테이블(나중에 제19도 및 제24도에서 설명한다)을 구비한다. 그리고 힌트 처리부(31)는 비트 맵의 문자 품질이 향상되도록 라운딩(힌트) 처리등을 실행하여 스트로크폭의 조정 또는 삭제를 실시한다.
스트로크 간격 연산기(32)는 힌트(라운딩) 처리 후의 횡 스트로크간 또는 종 스트로크간의 간격과 그 합계치를 연산한다. 비교기(33)는 연산된 스트로크 간격의 합계치와 검사의 대상이 되는 스트로크의 개수에서 1을 뺀 값을 비교한다. 판정회로(34)는 그 합계치가 그 뺀 값보다 작은 비교 결과가 얻어졌을 때에, 힌트 처리부(31)에 스트로크를 가늘게 하거나, 또는 스트로크를 삭제하라는 지시를 한다. 필링(filling) 회로(35)는 힌트 처리부(31)의 윤곽선 데이터에 따라 윤곽선의 내부를 빈틈없이 채워서 비트 맵 이미지를 완성한다.
또한, 문자 전개부(3)의 이들 블록(30 내지 35)은 프로세서(8)의 소프트웨어를 기능 블록화한 것이다.
이 블록의 동작에 대해 설명한다. 문자 전개 회로(3)는 지정된 문자의 아웃라인 정보를 폰트 메모리(4)에서 찾아내어 인출한다. 다음에, 이것을 지정된 사이즈가 되도록 확대/ 축소 회로(30)에서 확대 축소한다. 힌트 처리부(31)는 확대/축소 변환된 좌표 데이터를 문자 전개 테이블에 저장한 후 이 데이터를 라운딩 처리하여 힌트 처리 후의 좌표 데이터를 산출한다. 이 좌표 데이터는 문자 전개 테이블에 저장된다.
이 좌표 데이터는 스트로크 간격 연산기(32)에 주어진다. 스트로크 간격 연산기(32)는 힌트 처리후의 횡 스트로크간 또는 종 스트로크간의 간격을 연산하고, 또는 이들 간격의 합계치를 연산한다.
비교기(33)는 스트로크 간격 연산기(32)가 연산한 합계치와 검사될 스트로크의 개수에서 1를 뺀 수를 비교하여 그 비교 결과를 판정회로(34)에 부여한다. 판정회로(34)는 비교 결과에 따라 합계치가 뺀 값보다 작고 스트로크간에 흰 여백이 없다면 판단하면, 힌트 처리부(31)에 외측 스트로크 2개를 제외한 남은 스트로크중 1개의 선폭을 가늘게 하거나 삭제하도록 지시한다.
힌트 처리부(31)에서는 비교 결과에 따라 합계치가 뺀 값과 동일하거나 뺀 값이상의 경우에는 특별한 처리를 하지 않고 힌트 처리 후의 데이터를 필링 회로(35)에 건네준다. 한편 비교 결과에 따라 합계치가 뺀 값보다 작을 경우에는 외측 스트로크 2개를 제외한 나머지 스트로크중 1개의 선폭을 가늘게 하거나 삭제하도록 라운딩 처리후의 데이터를 변경한 힌트 처리후의 데이터를 작성하여 필링회로(35)에 건네준다. 마지막으로, 필링회로(35)는 수신된 데이터에 따라서 윤곽선의 내부를 완전히 채워 비트 맵 이미지를 완성한다.
제13도 및 제14도를 참조하여 폰트 메모리(4)의 구성에 대하여 설명한다. 여기에서는 문자를 구성하는 좌측 부수 및 우측 부수에 해당하는 엘레멘트, 붓의 운필에 해당하는 스트로크 및 입필부나 종필부에 해당하는 파트와 같이 계층 구조로 문자를 분석하는 방식으로 설명한다. 또한, 데이터량 삭감을 목적으로 문자의 계층구조와 특징 데이터를 저장한 제14도의 구조 데이터 메모리(4a)와, 스트로크 또는 파트로 분해된 문자의 윤곽선 데이터를 저장한 윤곽 데이터 메모리(4b)로 구성되는 것으로 설명한다.
구조 데이터 메모리(4a)는 제13도의 도시와 같이 문자 세트의 종류(명조체, 고딕체등)나 작성날짜 등의 공통 데이터를 저장하는 헤더 블록(40)과, 문자 코드로부터 대상 데이터를 찾아내는 문자 포인터 블록(41)과, 좌측 부수 및 우측 부수등으로 분해된 엘레멘트를 나타내는 엘레멘트 포인터 블록(42) 및 각 엘레멘트가 어떠한 구조를 갖는지를 기술한 엘레멘트 디렉토리 블록(43)으로 구성된다.
엘레멘트 디렉토리 블록(43)은 각 엘레멘트의 분류 코드와, 각 엘레멘트를 구성하는 스트로크의 상세한 데이터를 기술한 스트로크 블록(45)을 포함하는 엘레 멘트 블록(44)을 구비한다.
이 스트로크 블록(45)은 각 스트로크의 분류 코드와, 하나의 스트로크를 구성하는 파트 데이터(예를들어 각 파트의 문자 좌표계에서 바라본 원점 좌표등)를 기술한 파트 블록과, 흰 여백 블록을 갖는다. 이 흰 여백블록에 스트로크의 간격을 제어하기 위한 데이터가 저장되어 있다. 이 흰 여백 블록은 X 그룹 번호, Y 그룹번호, 세선화 부호 및 소거부호를 갖는다.
X 그룹 번호는 그 스트로크가 X 방향으로 보아서 다른 스트로크등과의 간격을 제어할 필요가 있는지의 여부를 표시하고 있다. 이 X 그룹 번호에는 간격 제어의 필요성이 없을때에는 0 이 기입되고, 그 필요성이 있을 때 스트로크 제어를 필요로 하는 스트로크 그룹의 그룹 번호가 기입된다. 예를 들어, 제1도에 도시한 상기의 한자 車의 문자에서는 종 스트로크가 3개 있다. 이것은 X 방향의 간격등의 제어가 필요하므로 같은 그룹 번호(예를들어 1)가 기입된다.
다음에, Y 그룹 번호는 그 스트로크가 Y 방향에서 보아서 다른 스트로크와 간격등의 제어가 필요한지 불필요한지를 표시하고 있다. 간격의 제어가 불필요할 때는 Y 그룹 번호 0이 기입되고, 반대로 필요할 때는 스트로크 제어가 필요한 스트로크 그룹의 그룹 번호가 Y 그룹 번호에 기입된다. 예를들어, 제1도에 도시한 한자 車의 문자에는 횡 스트로크가 5 개 있다. 이 중 3개는 Y 방향의 스트로크 제어가 필요하므로, 같은 그룹 번호(예를 들어 1)가 Y 그룹 번호에 기입된다.
세선화 부호는 굵게 디자인된 서체의 경우에 선과 선의 간격이 지나치게 적어져서 서로 접촉하는 것을 방지하기 위하여 이 부호가 1인 스트로크를 원래의 굵기보다 가늘게 하여 선의 간격을 유지한다.
다음의 소거부호는 문자를 상당히 작은 비트 맵으로 전개했을 때 인접한 스트로크가 서로 접촉하고 또한 선폭이 1픽셀밖에 안되기 때문에 가늘게 할 수 없는 경우에, 이 부호가 1인 스트로크를 소거하여 가독성을 향상시키는 것을 목적으로 제공한다.
지정된 문자가 조정이 필요한 스트로크를 가지고 있는지의 여부는 구조 데이터 메모리(4a)에서의 흰 여백 블록중의 X 그룹 번호와 Y 그룹 번호를 차례로 판독하여 조사하고, 0 이외의 번호가 기입되어 있으면 같은 그룹 번호를 가지는 스트로크 끼리에 대하여 선폭의 조정 또는 삭제를 실행한다.
다음에 윤곽 데이터 메모리(4b)는 문자가 여러 부분으로 분해되는 경우에 제14도의 도시와 같은 데이타 구조를 취한다. 특히, 윤곽 데이터 메모리(4b)는 문자 세트의 종류나 작성 날짜 등과 같은 공통 데이터를 저장한 헤더 블록(46)과, 문자 코드로부터 대상 데이터를 찾아내는 문자 포인터 블록(47)과, 지정된 문자를 구성하는 파트의 이미지를 찾아내는 파트 포인터 블록(48)과, 파트 이미지가 윤곽선으로 기술된 윤곽 정보 블록(49)으로 구성된다.
파트 포인터 블록(48)에는 각 스트로크의 순서대로 파트 포인터(1 내지 n)가 제공된다. 각 파트 포인터(1∼n)에는 스트로크의 종료를 표시하는 부호(flag)가 제공된다. 예를 들어 1개의 스트로크의 파트를 파트 포인터(1, 2)로 하면 파트 포인터(2)에 스트로크의 종료를 표시하는 부호가 설정되고, 각 스트로크가 어느 파트에 대응하는지를 알 수 있도록 구성된다.
이와같이 구성하면, 윤곽 정보 블록(49)의 각 파트의 윤곽 데이터는 문자마다에 파트 포인터 블록(48)을 제공하는 것만으로 다수의 문자로 공용할 수 있고, 폰트 메모리 용량의 삭감이 가능하다.
제15도는 본 발명의 제1의 실시예에 따른 플로챠트이고, 제16도 및 제17도는 본 발명의 제1의 실시예에 따른 문자 생성 동작을 설명하기 위한 제1 및 제2도면이며, 제18도는 본 실시예의 한자 패턴을 도시하는 도면이고, 제19도는 본 발명의 일실시예의 문자 전개 테이블의 설명도이다.
우선, 제18도에 도시한 고딕체 한자 車를 예로하여 제16도, 제17도 및 제19도를 참조하여 폰트 메모리(4)에서 문자를 생성하는 동작에 대하여 설명한다. 제16도의 도시와 같이, 폰트 메모리(4)의 구조 데이터 메모리(4a)의 문자 포인터 블록(41)으로 한자 車 의 문자 코드 8ED4에 따라서 엘레멘트에의 포인터가 얻어진다. 또한, 엘레멘트 포인터 블록(42)에서 구조 데이터가 저장되는 엘레멘트 블록(44)의 포인터를 얻는다.
제18도의 도시와 같이, 한자 車는 8개의 스트로크(S1∼S8)로 구성되어 있으므로 엘레멘트 블록(44)에서는 엘레멘트의 분류 코드 다음의 스트로크 블록(45)내에 한자 車를 구성하는 8개의 스트로크(S1∼S8)에 관한 데이터가 기재되어 있다. 여기에서는 문자의 스트로크 순서에 따라서 데이터가 정렬된 예를 도시한다.
최초의 스트로크(S1)은 횡선이므로, 횡선의 분류 코드 10를 가진다. 그리고 X 그룹 번호, Y 그룹 번호, 세선화 부호 및 소거부호의 순으로 정렬된 제어 부호란은 0 이다. 즉, Y 방향의 스트로크 제어의 그룹 번호가 0으로 설정되어 있고 세선화 부호 및 소거 부호0이다. 제2스트로크(S2)는 종선이므로 종선의 분류 코드1를 가진다. 그리고, X 방향의 그룹 번호가 1 로 설정되어 있다. 이와 동일하게 제3, 제5, 제6 및 제7의 스트로크(S3, S5, S6, S7)에 Y 방향의 그룹 번호가 1로 설정되어 있고 제4 스트로크(S4)에 X 방향에 그룹 번호가 1로 설정되어 있다.
따라서, 車 라는 문자에 대해서는 X 방향으로 3개의 조정 스트로크 그룹이 있고, Y 방향으로도 3개의 조정 스트로크 그룹이 있는 셈이다.
제5 스트로크(S5)는 세선화 부호가 1 이기 때문에 선폭이 굵은 서체등으로 비트 맵으로 전개했을 때 횡 스트로크가 서로 접촉하여 간격을 유지할 수가 없을 경우에는 이들의 선폭을 가늘게 하여 간격을 유지하도록 제어된다.
또한, 제5의 스트로크(S5)는 소거 부호가 1이고, 작은 비트 맵 이미지를 생성할 경우에는 횡 스트로크가 서로 인접되어 검게 얼룩이 질 때 이 횡 스트로크를 소거하여 스트로크간의 간격을 유지한다.
따라서, 구조 데이터 메모리(4a)에서는 문자 車 의 문자 코드에서 이에 대응하는 스트로크 블록(45)의 내용이 인출된다.
이와 유사하게, 제17도의 도시와 같이 한자 車의 문자 코드 8ED4 에 기초하여 문자 포인터 블록(47)에서 파트 포인터 블록(48)의 포인터를 구한다. 그리고 나서, 파트 포인터 블록(48)에서의 윤곽 데이터 블록(49)에서 대응되는 윤곽 정보를 인출한다.
제12도에서 도시하는 확대/축소 회로(30)는 이러한 파트의 윤곽 정보를 지정 문자 사이즈의 윤곽 정보로 확대 또는 축소한다. 예를 들어, 제8도에 도시하는 X 가 16 픽셀, Y 가 16 픽셀의 사이즈로 하기 위해서는 1000X1000 의 좌표계로 표현되는 문자의 윤곽 정보를 X 방향으로 16/1000 배하고, Y 방향으로도 16/1000 배한다.
이와같이 변환 연산된 윤곽 데이터는 스트로크 블록(45)의 데이터와 함께 제12도의 힌트 처리부(31)에 보내진다. 힌트 처리부(31)에서는 제19도의 문자 전개 테이블을 작성한다. 이 문자 전개 테이블은 제19도의 도시와 같이 문자를 구성하는 각 스트로크마다 스트로크 번호와, 라운딩 처리전의 스트로크의 좌표 (종 스트로크의 선폭 좌측의 X 좌표 X1, 종 스트로크의 선폭 우측의 X 좌표, Xr , 횡 스트로크의 선폭하측의 Y 좌표 Yb, 횡 스트로크의 선폭 상측의 Y 좌표 Yu)와, 라운딩 처리후의 스트로크의 좌표(종 스트로크의 선폭 좌측의 X 좌표 X1, 종스트로크의 선폭 우측의 X 좌표 Xr, 횡 스트로크의 선폭 하측의 Y 좌표 Yb, 횡 스트로크의 선폭 상측의 Y 좌표 Yu)와, 그룹 번호(X, Y), 세선화부호(X, Y), 소거부호(X, Y)와 그 스트로크의 윤곽 데이터를 저장한다.
따라서, 힌트 처리부(31)는 확대/축소 회로(30)에서 연산된 각 윤곽 데이터를 제19도에 도시하는 문자 전개 테이블에서 대응하는 스트로크의 윤곽 데이터란에 저장한다. 그리고나서, 힌트 처리부(31)는 스트로크의 구조 데이터를 각각 제어부호란(그룹 번호(X, Y), 세선화 부호(X, Y) 및 소거부호 (X,Y))에 저장한다. 또한, 이 윤곽 데이터와 종 스트로크인지 횡 스트로크 인지에 따라서 라운딩 처리전의 각 스트로크의 단부 좌표를 구하여 라운딩 전의 스트로크 좌표란에 저장한다. 또한, 힌트 처리부(31)는 이 라운딩 처리전의 스트로크 좌표에 대하여 선폭 보존 라운딩 처리를 실행한다. 그리고 라운딩 처리후의 스트로크 좌표를 구하여 문자 전개 테이블의 라운딩 처리후의 스트로크 좌표란에 저장한다.
이것을 제18도에서 도시한 문자 車에 대하여 제8도의 16X16 도트의 사이즈로 변환하는 예로 설명한다. 제18도의 도시와 같이, 제1 스트로크(S1)는 횡 스트로크이므로 좌표 변환한 윤곽 데이터에서 횡 스트로크의 선폭 하측의 Y 좌표 Yb와 횡 스트로크의 선폭 상측의 Y 좌표 Yu를 구한다. Yb 및 Yu 는 각각 13.4, 15.8 이 되고, 이것을 제19도의 도시와 같이 문자 전개 테이블의 라운딩 처리전의 스트로크란에 저장한다.
그리고, 이것을 선폭 보전 라운딩 처리하면, 제8도의 도시와 같이 횡 스트로크의 선폭 하측의 Y 좌표 Yb 는 13 이 되고, 횡 스트로크의 선폭 상측의 Y 좌표 Yu 는 15가 된다. 이것을 문자 전개 테이블의 라운딩 처리후의 스트로크란에 저장한다.
이와 동일하게, 제2 스트로크(S2), 제3 스트로크(S3), 제4 스트로크(S4), 제5 스트로크(S5), 제6 스트로크(S6), 제7 스트로크(S7) 및 제8 스트로크(S8)에 대하여 라운딩 처리전의 스트로크 좌표와 라운딩 처리후의 스트로크 좌표를 구하여 문자 전개 테이블에 저장한다 이와같이 하면, 라운딩 처리전의 문자 車 는 라운딩 처리에 의하여 제8도의 도시와 같게 된다.
이들의 데이터를 사용하여, 제11도의 스트로크 간격 연산기(32), 비교기(33) 및 판정회로(34)의 동작에 의하여 제15도의 선폭 조정 처리가 실행된다.
(1) 힌트 처리부(31)는 폰트 메모리(4)의 구조 데이터 메모리(4a)로부터 지정된 문자의 엘레멘트의 스트로크 블록을 판독한다. 그리고나서, 확대/축소 연산기(3)의 좌표 변환 후의 윤곽 데이터와 스트로크 블록의 내용을 제19도의 문자 전개 테이블에 저장한다.
(2) 힌트 처리부(31)는 문자 전개 테이블의 그룹 번호란을 판독하여 동일한 그룹 번호의 스트로크 그룹을 찾아낸다. 그리고 이들의 라운딩 처리 후의 스트로크 좌표를 판독하여 스트로크 간격 연산기(32)에 건네준다. 예를 들어, 상기의 한자 車의 예에서는 문자 전개 테이블에서 3개의 스트로크(S3, S5, S6)가 동일 그룹 스트로크로서 추출된다. 그리고나서, 라운딩 처리후의 스트로크 좌표가 인출된다.
(3) 스트로크 간격 연산기(32)는 라운딩 처리후의 스트로크 좌표로부터 힌트 처리후의 스트로크 간격 WS를 계산한다. 제19도의 예에서는, a1' -b1 및 b1' -cl의 2개의 스트로크 간격이 계산된다. a1'는 스트로크(S3)의 하측 Y 좌표 Yb(=10)이고, b1은 스트로크(S5)의 상측 Y 좌표 Yu(=9)이다. 또한, bl' 는 스트로크(S5)의 하측 Y 좌표 Yb(=7)이고, C1은 스트로크(S6)의 상측 Y 좌표 Yu(=7)이다. 따라서 힌트 처리후의 스트로크 간격 WS 는
Figure kpo00019
이 된다.
다음에, 이 스트로크 개수 N(=3)에서 1을 감산하여 N개의 스트로크에 필요한 흰 여백수를 구하면, N-1=2 로 된다.
(4) 비교기(33)는 이 (N-1)에서 스트로크 간격 WS를 빼고, 그 결과를 판정회로(34)에 통지한다. 판정회로(34)에서는 비교결과가 0 또는 정인가를 판정하여, 비교결과가 0 또는 정이라면 각 스트로크 사이에 여백이 있다는 것을 의미하므로 세선화처리는 필요없다. 이 때문에 단계(7)로 진행한다.
(5) 한편, 판정회로(34)는 비교 결과가 0 또는 정이 아니고 부라고 판정하면, 스트로크간에 충분한 공간이 없고 인접한 스트로크가 접촉하고 있음을 나타낸다. 이 때문에, 힌트 처리부(31)에 스트로크의 세선화 처리를 지시한다.
그 결과, 힌트 처리부(31)는 라운딩 처리후의 좌표치에서 대상이 되는 N 개의 스트로크의 선폭을 조사하고, 선폭이 2픽셀 이상은 스트로크를 추출한다. 그 결과 선폭이 2 픽셀 이상 있는 스트로크가 없다고 판단되면 세선화 처리를 할 수 없기 때문에 단계(7)로 나아간다.
힌트 처리부(31)는 선폭이 2픽셀 이상인 스트로크를 검출하면 문자 전개 테이블의 세선화 부호란을 조사하고, 그 스트로크에 세선화 부호가 설정되어 있는지를 조사한다. 선폭이 2 픽셀 이상인 스트로크 모두에 세선화 부호가 설정되어 있지 않으면 세선화 처리하지 않고 단계(7)로 나아간다.
(6) 힌트 처리부(31)는 선폭이 2 픽셀 이상이고, 또한 세선화 부호가 설정되어 있는 스트로크의 선폭에서 1을 감산한다. 즉, 문자 전개 테이블의 스트로크의 라운딩 처리후의 좌표를 선폭이 1 픽셀 만큼 작아지게끔 변경한다. 제18도의 예에서는 한자 車의 엘레멘트 曰의 중앙 스트로크(S5)가 2 픽셀 이상의 선폭을 가지며, 또한 세선화 부호가 설정되어 있다. 따라서, 이 스트로크(S5)의 문자 전개 테이블의 라운딩 처리후의 하측 Y 좌표 Yb 에 1을 부가하고, 8 로 하여 선폭이 1 픽셀 감소시킨다. 이와 같이 하면, 한자 車는 제8도와 같이 되어 문자 車 의 曰 부분이 얼룩지지 않아 외관상의 인상을 원래의 문자 이미지에 근접시킨다.
여기서 세선화처리를 하는 스트로크는 외측의 2개의 스트로크를 가장 많이 제거한 다른 스트로크로 하면 외관상의 인상이 원래 문자 이미지에 가깝다. 이 때문에 외측의 2개의 스트로크(여기서는 스트로크 S3, S6)를 제외한 다른 스트로크에 세선화 부호가 설정된다.
(7) 힌트 처리부(31)는 문자 전개 테이블의 그룹 번호란을 조사하고, 아직 미처리된 그룹 번호가 있는지를 조사하여, 만일 있으면 단계(2)로 되돌아 간다.
힌트 처리부(31)는 미처리된 그룹 번호가 없다고 판정되면 X 및 Y 방향에 대해서도 조정처리를 종료했는지를 조사하여, 종료되어 있지 않으면 단계(2)로 되돌아 간다. 반면에 만일 종료되어 있으면 상기 조정처리가 문자의 전체 엘레멘트에 대해 반복되었는지를 판정한다. 만일 조정 처리가 전체 엘레멘트에 대해 종료되어 있지 않으면 단계(1)로 되돌아가며, 종료되었으면 힌트 처리부(31)는 조정처리를 종료한다. 그리고 조정처리가 종료되면 문자 전개 회로(3)에서는 필링회로(35)문자 전개 테이블의 내용에 기초하여 선을 그려 비트 맵 이미지를 완성한다.
이와같이 해서 제8도에 도시한 것처럼 축소문자 車 에서도 스트로크 선폭을 조정함으로써, 원래 문자의 디자인에 가까운 비트 맵 이미지가 얻어진다.
제20도는 본 발명의 제2의 실시예에 따른 플로챠트이고, 제21도 및 제22도는 본 발명의 제2실시예에 따른 문자 생성 동작을 설명하기 위한 제1 및 제2도면이며 , 제23는 이 실시예의 문자 패턴을 나타낸 도면이고, 제24도는 본 발명의 일실시예에 따른 문자 전개 테이블 설명도이다.
먼저, 제23도에 도시한 한자
Figure kpo00020
를 예를 들어 제21도, 제22도 및 제24도를 참조하여 폰트 메모리(4)에서 문자를 생성하는 동작에 대해 설명한다.
제21도에 도시한 것처럼, 폰트 메모리(4)의 구조 데이터 메모리(4a)의 문자 포인터 블록(41)에서 한자
Figure kpo00021
의 문자 코드 8B54 에 기초하여 엘레멘트에 대한 포인터가 얻어진다, 또한 엘레멘트 포인터 블록(42)에서, 구조 데이터가 저장되어 있는 엘레멘트 블록(44)의 포인터를 얻는다. 제23도에 도시한 것처럼, 한자
Figure kpo00022
는 14개의 스트로크(S1∼S14)로 구성되어 있으므로, 엘레멘트 블록(44)에서는 엘레멘트의 분류 코드 다음의 스트로크 블록(45)내에 한자
Figure kpo00023
를 구성하는 14개의 스트로크(S1∼S14)에 관한 정보가 기술되어 있다. 여기서는 문자의 스트로크 순서에 따라 데이터가 배치된다.
최초의 스트로크(S1)는 사선이므로, 이 스트로크(S1)는 사선의 분류 코드를 가지며, X 그룹번호, Y 그릅번호, 세선화 부호 및 소거부호의 순으로 배열된 제어 부호란이 0이다, 즉, X 및 Y 방향의 스트로크 제어의 그룹 번호가 0으로 설정되어 있고, 세선화 부호 및 소거부호도 0 이다. 제2 스트로크(S2)는 횡선이므로, 이 스트로크는 횡선 분류 코드를 가지며, X 및 Y 방향에서의 스트로크 제어의 그룹 번호가 0으로 설정되어 있다. 그리고 세선화 부호 및 소거부호도 0 이다.
이처럼 이 문자
Figure kpo00024
에서는 제24도에 도시한 것처럼 스트로크(S9, S11, S14)가 X 방향의 스트로크 조정 그룹에, 스트로크(S5, S7, S8)가 Y 방향의 제 1 스트로크 조정 그룹에 스트로크(S10, S12, S13)가 Y방향의 제2의 스트로크 조정 그룹에 설정되어 있다.
또한, 제 7 스트로크(S7)와 제12 스트로크(S12)는 세선화 부호가 1이다. 따라서 상술한 제1의 실시예처럼, 문자를 선폭이 굵은 서체등으로 비트맵에 전개했을 때, 횡 스트로크가 서로 접촉하여 간격을 유지할 수 없을 경우에는 이들의 선폭을 가늘게 하여 간격을 유지하게끔 제어한다.
또한, 제7 스트로크(S7)와 제12 스트로크(S12)는 소거부호가 1이다. 이것에 의해 작은 비트 맵 이미지를 생성할 때 횡 스트로크가 서로 인접하게 되어 검게 얼룩지게 될 경우, 이 횡 스트로크를 소거하여 스트로크간의 간격을 유지한다.
따라서, 구조 데이터 메모리(4a)로부터 문자
Figure kpo00025
의 문자 코드에서 대응하는 관련 스트로크 블록(45)의 내용이 인출된다. 마찬가지로, 제22도에 도시한것처럼 한자
Figure kpo00026
의 문자코드 8B54 에 기초한 문자 포인터 블록(47)에서 파트 포인터 블록(48)의 포인터를 구한다. 그리고 파트 포인터 블록(48)에서 윤곽 정보 블록(49)내의 대응하는 윤곽 데이터를 인출한다.
제12도에서 설명한 확대/축소 회로(30)는 이러한 윤곽 데이터를 지정된 문자 사이즈의 윤곽 데이터로 확대 또는 축소한다. 예를 들면, 제9도에 도시한 X 가 12 픽셀, Y 가 12 픽셀의 사이즈로 하는 데는 1000
Figure kpo00027
1000 의 좌표계료 표현된 문자의 윤곽 데이터를 X 방향으로 12/1000 배 하고, Y 방향으로 12/1000 배한다.
이와 같이 해서 변환된 윤곽 데이터는 스트로크 블록(45)의 데이터와 함께 제12도의 힌트 처리부(31)에 보내진다. 힌트 처리부(31)에서는 제24도의 문자 전개 테이블을 작성한다.
이 문자 전개 테이블은 제24도에 도시한 것처럼 문자를 구성하는 각 스트로크마다 스트로크 번호와 라운딩 처리전의 스트로크의 좌표(종 스트로크의 선폭의 좌측의 X 좌표 X1, 종 스트로크의 선폭의 우측의 X 좌표 Xr, 횡 스트로크의 선폭의 아래쪽의 Y 좌표 Yb, 횡 스트로크의 선폭의 윗쪽의 Y 좌표 Yu)와, 라운딩 처리후의 스트로크의 좌표(종 스트로크의 선폭의 좌측 X 좌표 X1, 종 스트로크의 선폭의 우측의 X 좌표 Xr, 횡 스트로크의 선폭의 아래쪽에 Y 좌표 Yb, 횡 스트로크의 선폭의 윗쪽의 Y 좌표 Yu)와, 그룹번호(X,Y), 세선화 부호(X, Y), 소거부호(X, Y)와, 그 스트로크의 윤곽 데이터를 포함하고 있다.
따라서, 힌트 처리부(31)는 확대/축소 연산기(30)로 연산된 각 윤곽 데이터를 문자 전개 테이블에서의 대응하는 스트로크의 윤곽 데이터란에 저장한다. 또, 스트로크의 구조 정보를 각기 제어부호란(그룹 번호(X, Y), 세선화 부호(X, Y), 소거부호(X, Y))에 저장한다. 또한 이 윤곽 데이터와 스트로크가 종 스트로크냐 횡 스트로크냐에 따라 라운딩 처리전의 각 스트로크의 좌표를 구하고, 라운딩 처리전의 스트로크 좌표란에 좌표 데이터를 저장한다. 또한, 힌트 처리부(31)는 이 라운딩 처리전의 스트로크 좌표를 선폭 보존 라운딩 처리하여 라운딩 처리후의 스트로크 좌표를 구한다. 그리고 문자 전개 테이블의 라운등 처리후의 스트로크 좌표란에 이들 좌표를 저장한다.
이것은 제21도 및 제22도에서 도시한 문자
Figure kpo00028
가 제9도의 12
Figure kpo00029
12 도트의 사이즈로 변환되는 경우에 대해 설명한다. 제23도에 도시한 것처럼, 제2스트로크(S2)는 횡 스트로크이므로, 좌표 변환한 윤곽 정보에서 횡 스트로크의 선폭 아래쪽 Y 좌표 Yb 와, 횡 스트로크의 선폭 윗쪽 Y 좌표 Yu를 구한다. Y 좌표 Yb 와 Y 좌표 Yu 는 각기 11.5, 12.1 로 되고, 이 Y 좌표를 문자 전개 테이블에서의 라운딩 처리전의 스트로크란에 저장한다.
그리고서, 이 좌표를 선폭 보존 라운딩 처리하면, 제9도에 도시한 것처럼 제2 횡 스트로크(S2)의 선폭 아래쪽 Y 좌표 Yb 는 11로 되고, 그 선폭 윗쪽의 Y 좌표 Yu 는 12로 된다. 이 Y 좌표를 라운딩 처리후의 문자 전개 테이블의 스트로크란에 저장한다. 이하 역시 사선을 제외한 종 스트로크 및 횡 스트로크(S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14)에 대해, 라운딩 처리전의 스트로크 좌표와, 라운딩 처리후의 스트로크 좌표를 구하여 문자 전개 테이블에 저장한다. 이와 같이 하면, 라운딩 처리전의 문자
Figure kpo00030
는 라운딩 처리에 의해 제9도처럼 된다. 이들 데이터를 사용하여, 제12도의 스트로크 간격 연산기(32), 비교기(33), 판의 동작에 의해 제20도의 스트로크 삭제/조정처리가 행해진다.
(1) 힌트 처리부(31)는 폰트 메모리(4)의 구조 데이터 메모리(4a)로부터 지정된 문자의 엘레멘트의 스트로크 블록을 판독한다. 그리고, 확대/축소 회로(30)의 윤곽 데이터와 더불어, 제24도에 도시된 문자 전개 데이블에서의 스트로크 블록의 내용을 저장한다.
(2) 힌트 처리부(31)는 문자 전개 테이블의 그룹 번호란을 판독하여 동일한 그룹 번호를 갖는 스트로크 그룹을 찾아낸다. 힌트 처리부(31)는 이들의 라운딩 처리후의 스트로크 좌표를 판독하여 스트로크 간격 연산기(32)에 건네준다. 예를 들면, 제23도에 도시한 한자
Figure kpo00031
의 예에서는 문자 전개 테이블에서 스트로크(S5, S7, S8)의 3개의 스트로크가 동일한 그룹의 스트로크로서 추출된 다음 라운딩 처리후의 스트로크 좌표가 판독한다.
(3) 스트로크 간격 연산기(32)는 라운딩 처리후의 스트로크 좌표에서 힌트 처리후의 스트로크 간격 WS를 연산한다.
제24도의 예에서는, a1' -b1 및 b1' -cl 의 2개의 스트로크 간격이 계산된다. a1'는 스트로크(55)의 아래쪽 Y 좌표 Yb(=9)이고, b1은 스트로크(S7)의 윗쪽 Y 좌표 Yu(=9)이고, bl' 는 스트로크(S7)의 하측 Y 좌표 Yb(=8)이고, c1은 스트로크(S8)의 윗쪽 Y 좌표 Yu(=8)이다. 따라서 힌트 처리후의 스트로크 간격 WS 는
Figure kpo00032
으로 된다.
다음에, 이 스트로크 개수 N(=3)에서 1을 빼고, N개의 스트로크에 필요한 흰 여백수를 구하면, N-1=2 로 된다.
(4) 비교기(33)는 이 (N-1)에서 스트로크 간격 WS를 빼고, 그 결과를 판정회로(34)에 통지한다. 판정회로(34)에서는 비교결과가 0 또는 정인가를 판정하여, 비교결과가 0 또는 정이면, 각 스트로크 사이에 여백이 있음을 의미하므로 소거처리는 필요없다. 따라서 단계(7)로 나아간다.
(5) 한편, 판정회로(34)는 비교 결과가 0 또는 정이 아니고 부이라고 판정하면, 스트로크간에 충분한 공간이 없고 인접한 스트로크가 접촉하고 있는 것을 나타내므로 판정회로(34)는 힌트 처리부(31)에 스트로크의 삭제처리를 지시한다. 이것에 의해, 힌트 처리부(31)는 문자 전개 테이블의 소거 부호란을 조사하여 그 소거부호가 대상 스트로크에 설정되어 있는지를 조사한다. 모든 대상 스트로크에 소거부호가 설정되어 있지 않으면 소거처리하지 않고 단계(7)로 나아간다.
(6) 힌트 처리부(31)는 소거부호 세트를 갖는 스트로크를 검출하자마자 이 스트로크를 삭제한다. 즉, 문자 전개 테이블의 스트로크의 라운딩 처리후의 아래쪽과 윗쪽의 좌표를 Y 방향으로 서로 동일하게 한다. 제9도의 예에서는 문자
Figure kpo00033
의 윗쪽 엘레멘트 曰의 중앙 스트로크(S7)에 소거부호가 설정되어 있다. 따라서, 이 스트로크(S7)의 문자 전개 테이블의 라운딩 처리후의 하측 Y 좌표 Yb 에 1을 가산하여, 9 로 하여 선폭을 0으로하여 스트로크를 소거한다.
이와 같이 하면, 문자
Figure kpo00034
는 제9도와 같이 되어 문자
Figure kpo00035
의 윗쪽 엘레멘트인 曰의 부분이 얼룩지지 않아 외관상의 인상을 원래의 문자 이미지에 근접시킨다.
여기서 소거처리를 하는 스트로크는 바깥쪽의 2개의 스트로크를 제외한 다른 스트로크로 하면 그 문자의 외관상의 인상이 원래 문자의 이미지에 가깝게 된다. 이 때문에 외측의 2개의 스트로크(여기서는 스트로크 S5 및 S8)를 제외한 다른 스트로크에 소거부호가 설정해 둔다.
(7) 다음에, 힌트 처리부(31)는 문자 전개 테이블의 그룹 번호란을 조사하여, 아직 미처리 그룹 번호가 있는지를 조사하여, 만일 그러한 미처리 그룹 번호가 있다면 단계(2)로 되돌아 간다. 반대로 조정처리가 종료했으면, 문자의 전체 엘레멘트를 반복하였는지를 판정하여 전체 엘레멘트가 종료되지 않았으면 단계(1)로 되돌아가고, 종료되었으면 조정처리를 종료한다.
그리고, 조정처리가 종료되면, 문자 전개부(3)에서는 필링회로(35)가 문자 전개 테이블의 내용에 의거하여 선을 그려 비트 맵 이미지를 완성한다.
이와 같이 해서, 축소 문자
Figure kpo00036
에 대해서도 제9도와 같은 스트로크 선폭을 조정함으로써 원래의 문자 디자인에 가까운 비트 맵 이미지를 얻을 수 있다.
이들 실시예에 있어서, 일반적으로 문자는 가장 외측에 스트로크k 굵은 쪽이 가독성이 높기 때문에, 가장 외측의 스트로크는 가늘게 하지 않거나 삭제하지 않는다. 또한 1 픽셀 폭의 스트로크를 가늘게 하면 스트로크가 소거되기 때문에 2 픽셀 이상의 스트로크를 가늘게 하는 것이다.
또, 대상이 되는 스트로크를 가늘게 하기 위해, 비트 맵 이미지를 전개하기 전에 스트로크의 좌표를 변경함으로써 용이하게 스트로크를 가늘게 할 수 있다.
또한, 미리 선폭을 가늘게 하거나 또는 삭제할 스트로크를 설정해 둠으로써 문자 디자인상에서 가늘게 해도 가독성을 유지할 수 있는 스트로크를 지정할 수 있다.
또한, 용이하게 선폭을 가늘게 하는 스트로크를 인식할 수 있어서 원래의 문자 디자인에 맞는 스트로크의 조정이 가능해진다.
제1의 실시예에 있어서, 한자 車 에 대해 설명했지만 한자
Figure kpo00037
등의 횡 스트로크가 가지런히 정렬되어 있는 다른 한자에도 적용할 수 있다. 제2의 실시예에 있어서, 한자
Figure kpo00038
의 윗쪽 曰의 부분에서 설명했지만 아래쪽 曰 부분도 검증할 수 있으며, 이와 마찬가지로 한자 車등의 다른 종 스트로크 또는 횡 스트로크가 평행하게 정렬되어 있는 문자에도 적용할 수 있다. 또한, 제1의 실시예와 제2의 실시예를 조합하여 선폭이 2픽셀 이상이면 제1의 실시예의 세선화 처리를 하고, 선폭이 2 픽셀 미만이면 제2의 실시예의 소거처리를 하게끔 할 수도 있다. 윤곽 데이터로서 문자 좌표계로 표현된 파트의 원점을 설정하고, 이 원점으로부터의 상대 위치로 표현해도 된다. 폰트 메모리를 파트 분할 방식으로 설명했지만 스트로크 분할 방식 또한 가능하다.
다음에, 제3의 실시예에 대해 설명한다. 이 실시예에 따른 문자 생성 장치의 구성은 제11도에 도시한 것과 동일하다. 제25도는 문자 전개 회로(3)의 블록도이고, 제26도 및 제27도는 폰트 메모리의 구성을 도시한 제1 및 제2도면이다.
제25도는 문자 전개 회로(3)를 블록화해서 상세히 설명하고 있다. 확대/축소 연산기(30)는 폰트 메모리(4)로부터의 문자 코드에 대응하는 문자 아웃라인 데이터를 지정된 문자 사이즈가 되게끔 확대 또는 축소시킨다. 힌트 처리부(31)는 힌트 처리전의 데이터와 힌트 처리후의 데이터를 각 스트로크마다 보유하고 있는 테이블(나중에 32도에서 설명)을 가지며, 비트맵의 문자 품질이 향상하도록 라운딩(힌트)처리 등을 실행하여 선폭 또는 위치를 조정한다.
스트로크 간격 연산기(3)는 힌트(라운딩)처리 후의 횡 스트로크간의 간격 또는 종 스트로크간의 간격과, 힌트 처리전의 횡 스트로크 또는 종 스트로크간의 간격을 산출한다. 배율 연산기(36)는 힌트처리전의 스트로크 간격과 힌트 처리후의 스트로크 간격과의 변환 배율을 연산한다. 최대/최소 배율 검출기(37)는 변환 배율의 최대와 최소를 검출하여 그 차를 연산한다. 시행기(37)는 스트로크 간격 연산기(32)에 변환 배율이 최소로 되는 스트로크 간격의 힌트 처리후의 간격에 1 픽셀을 가산하고, 변환 배율이 최대로 되는 스트로크 간격의 힌트 처리후의 간격에 1 픽셀을 뺀 스트로크 간격의 연산을 지시한다. 판정회로(39)는 시행전의 최대 배율과 최소 배율과의 차와, 시행후의 최대 배율과 최소 배율과의 차를 비교하여, 시행에 의해 차가 작아졌으면 시행후의 연산결과를 그리고 시행에 의해 차가 작아지지 않았으면 시행전의 연산 결과를 힌트 처리부(31)에 제공한다. 필링회로(35)는 힌트 처리부(31)의 윤곽선 데이터에 따라 윤곽선의 내부를 채워 비트 맵 이미지를 완성한다.
그리고, 문자 전개 회로(3)는 프로세서로 구성되고, 이들 블록(30 내지 39)은 이 프로세서의 소프트웨어를 기능 블록화한 것이다.
이제 문자 전개 회로(3)의 동작에 대해 설명하기로 한다. 문자 전개 회로(3)에서는 지정된 문자 데이터(아웃라인 데이터)를 폰트 메모리(4)에 찾아 그 데이터를 지정된 사이즈가 되게끔 확대/축소 연산기(30)로 확대 또는 축소한다. 힌트 처리부(31)는 확대/축소 변환한 좌표 데이터를 테이블에 저장한 다음, 이것을 라운딩 처리하여 힌트 처리후의 좌표 데이터를 산출하여 테이블에 저장한다. 이 데이터는 스트로크 간격 연산기(32)에 주어진다. 스트로크 간격 연산기(32)는 힌트 처리후의 횡 스트로크의 간격 또는 종 스트로크간의 간격과, 힌트 처리전의 횡 스트로크간 또는 종 스트로크 간의 간격을 연산한다. 스트로크 간격 연산기(32)가 연산한 간격에 기초하여 배율 연산기(36)가 변환 배율을 연산한다. 최대/최소 배율 검출기(38)는 연산한 변환 배율의 최대의 배율과 최소의 배율을 검출한다. 그리고, 두 배율간의 차(제1의차)를 연산하여 판정회로(39)에 일시적으로 보유한다.
시행기(37)는 배율이 최소로 되는 스트로크 간격의 힌트 처리후의 간격에서 1픽셀을 가산하고, 배율이 최대로 되는 스트로크 간격의 힌트 처리후의 간격에서 1 픽셀을 빼는 시행을 스트로크 간격 연산기(32)에 지시한다. 스트로크 간격 연산기(32)는 이것에 따른 힌트 처리후의 스트로크 간격을 연산하여 배율 연산기(36)에 출력한다. 배율 연산기(36)는 힌트 처리후의 스트로크 간격이 수정된 변환 배율을 연산한다. 최대/최소 배율 검출기(38)는 이 최대의 배율과 최소의 배율의 차(제2의 차)를 연산하여 판정회로(39)에 출력한다.
판정 회로(39)는 앞서의 일시 보유한 제1의 차와, 시행후의 제2의 차를 비교하여, 시행에 의해 그 차가 축소되어 있으면 시행후의 결과를 , 그 차가 축소되어 있지 않으면 시행전의 결과를 힌트 처리부(31)에 제공한다. 힌트 처리부(31)에서는 시행이 성공하지 못했을 경우에는 특별한 처리를 하지 않고 힌트 처리후의 데이터를 필링회로(35)에 넘긴다. 시행이 성공했을 경우에는 최대 배율로 되는 스트로크 간격에서 최소 배율로 되는 스트로크 간격까지의 사이의 스트로크를 최대 배율로 되는 스트로크 간격쪽으로 1 픽셀만큼 이동시킨 힌트 처리후의 데이터를 작성하여 필링회로(35)에 넘긴다. 마지막으로 필링회로(35)는 접수한 윤곽선 데이터에 따라 윤곽선의 내부를 채워 비트 맵 이미지를 완성한다.
제26도 및 제27도를 참조하여 폰트 메모리(4)의 구성에 대해 설명한다. 여기서는 제13도 및 제14도와 같이, 문자를 구성하는 좌측 부수 및 우측 부수에 해당하는 엘레멘트, 붓의 운필에 해당하는 스트로크 및 입필부나 종필부에 해당하는 파트라고 하듯이 계층구조에 문자를 분해하는 저장 방식으로 설명한다. 또한, 데이터량 삭감을 목적으로 하여 폰트 메모리(4)는 문자의 계층 구조와 특징 데이터를 저장한 제26도의 구조 데이터 메모리(4a)와, 스트로크 또는 파트로 분해된 각 문자의 윤곽선 데이터를 저장한 윤곽 데이터 메모리(4b) 로 이루어지는 것으로 설명한다.
구조 데이터 메모리(4a)는 제26도에 도시한 것처럼 제13도의 구성과 동일하다. 지정된 문자가 간격을 조정을 필요로 하는 스트로크를 갖고 있는지의 여부는 구조 데이터 메모리(4a)내의 흰 여백 블록중 X 그룹 번호와 Y 그룹 번호를 순서대로 판독하여 조사하고 0 이외의 번호가 기입되어 있으면 같은 그룹 번호를 갖는 스트로크끼리에 대해 간격을 조정한다.
다음에, 윤곽 데이터 메모리(4b)는 문자가 파트까지 분해되어 있을 경우에는 제27도에 도시한 바와 같은 데이터 구조를 취한다. 이 구조는 제14도에 도시한 것과 동일하다.
제28도는 본 발명의 제3의 실시예에 따른 간격 제어를 위한 플로챠트이고, 제29도, 제30도는 본 발명의 일 실시예에 따른 문자 생성 동작을 설명하는 제1 및 제2도면이며, 제31도는 이 실시예의 문자 패턴을 나타낸 도면이고, 제32도는 본 발명의 제3의 실시예에 따른 문자 전개 테이블의 설명도이며, 제33a도, 제33b도 및 제34도는 본 발명의 제3의 실시예에 따른 동작을 설명하기 위한 제1 및 제2도면이다.
먼저, 제31도에 도시한 한자 目을 예로 해서, 제29도, 제30도 및 제32도에 의해 폰트 메모리(4)에서 문자를 생성하는 동작에 대해 설명한다. 제29도에 도시한 바와같이, 폰트 메모리(4)의 구조 데이터 메모리(4a)의 문자 포인터 블록(41)에서 한자 目 의 문자 코드 96DA 에 의거하여 엘레멘트에의 포인터가 얻어진다. 또한, 구조 데이터를 저장한 엘레멘트 블록(44)의 포인터는 엘레멘트 포인터 블록(42)에서 얻을 수 있다. 엘레멘트 블록(44)에서는 엘레멘트의 분류 코드 다음의 스트로크 블록(45)내에 한자 目를 구성하는 6개의 스트로크(S1∼S6)에 관한 정보가 기술되어 있다. 여기서는 문자의 스트로크 순서에 따라 배치된 데이터를 나타내고 있다.
최초의 스트로크(S1)는 종선이며, 종선의 분류 코드 1를 가지며, X 그룹 번호, Y 그룹 번호, 세선화 부호 및 소거 부호의 순으로 배열된 제어 부호란은 0이다. X,Y 방향 모두 간격 제어의 그룹 번호가 0으로 설정되어 있기 때문에 간격 제어는 필요 없으며, 세선화 부호 및 소거 부호도 0이다.
제2 스트로크(S2)는 횡선이며, 분류코드 10를 가지며, 이 스트로크는 1로 설정된 Y 그룹 번호를 가진다. 제 4, 제 5 및 제 6의 스트로크(S4, S5, S6)와 함께 이 스트로크(S2)는 Y방향의 간격 제어의 대상으로 되어 目이라고 하는 문자에 대해서는 Y 방향으로 4개의 간격 제어 그룹을 가진다.
제4 및 제5의 스트로크(S4, S5)는 세선화 부호가 1이다. 이 때문에 제1의 실시예에 나타낸 것처럼 고딕서체 등으로 비트 맵에 전개했을 때 횡 스트로크가 서로 접촉하여 간격을 유지할 수 없을 경우에는 이들 선폭을 가늘게 하여 간격을 유지하게끔 제어된다. 또한 제4 스트로크(S4)는 소거부호가 1 이다. 이 스트로크는 작은 비트 맵 이미지를 생성할 경우 횡 스트로크가 서로 인접하게 되어 검게 얼룩지게 되면 이 스트로크를 소거하여 스트로크간의 간격을 유지한다.
따라서, 구조 데이터 메모리(4a)에서는 문자 目 의 문자 코드에 기초하여 이에 대응하는 스트로크 블록(45)의 내용이 인출된다. 마찬가지로 제30도에 도시한 것처럼, 한자 目의 문자 코드 96DA 에 기초하여 문자 포인터 블록(47)에서 파트 포인터 블록(48)의 포인터를 구한다. 다음에, 파트 포인터 블록(48)에서 윤곽 정보 블록(49)에서 이미 대응하는 윤곽 데이터를 인출한다.
제25도에서 설명한 확대/축소 연산회로(30)는 이러한 윤곽 데이터를 지정 문자 사이즈의 윤곽 데이터에 확대 또는 축소한다. 예를 들어, 제33a도에 도시한 X 가 12 픽셀, Y 가 14 픽셀의 사이즈로 하는 데는 1000
Figure kpo00039
1000의 좌표계로 표현된 문자의 윤곽 데이터를 X 방향으로 12/1000 배하고, Y 방향으로 14/1000 배한다.
이와 같이 해서 변환 연산된 윤곽은 데이터는 스트로크 블록(45)의 정보와 함께 제25도의 힌트 처리부(31)에 보내지고, 힌트 처리부(31)에서는 제32도의 문자 전개 테이블을 작성한다.
이 문자 전개 테이블은 문자를 구성하는 각 스트로크마다 스트로크 번호와, 라운딩 처리전의 스트로크의 좌표(종 스트로크의 선폭 좌측의 X 좌표 X1, 종 스트로크의 선폭 우측의 X 좌표 Xr, 횡 스트로크의 선폭 아래의 Y 좌표 Yb, 횡 스트로크의 선폭 위쪽의 Y 좌표 Yu)와, 라운딩 처리후의 스트로크의 좌표 (종 스트로크의 선폭 좌측의 X 좌표 X1, 종 스트로크의 선폭 우측의 X 좌표 Xr, 횡 스트로크의 선폭 아래쪽의 Y 좌표 Yb, 횡 스트로크의 선폭 윗쪽의 Y 좌표 Yu)와, 그룹번호 (X, Y), 세선화 부호(X, Y), 소거부호(X, Y) 및 그 스트로크의 윤곽 데이터를 저장한다.
따라서, 힌트 처리부(31)는 확대/축소 회로(30)에서 연산된 각 윤곽 데이터를 문자 전개 테이블에서의 대응하는 스트로크의 윤곽 데이터란에 저장한다. 다음에 스트로크의 구조 데이터를 각기 제어 부호란(그룹 번호(X,Y), 세선화 부호(X,Y) 및 소거 부호(X,Y))에 저장한다. 그리고 이 윤곽 데이터와 종 스트로크나 횡 스트로크에 따라서, 라운딩 처리전의 스트로크의 좌표를 구하여 라운딩 처리전의 스트로크 좌표란에 저장한다. 또한, 힌트 처리부(31)는 이 라운딩 처리전의 스트로크 좌표를 상술한 선폭 보존 라운딩 처리를 하여, 라운딩 처리후의 스트로크 좌표를 구하고, 문자 전개 테이블의 라운딩 처리후의 스트로크 좌표란에 저장한다. 또한 힌트 처리부(31)는 이 라운딩 처리전의 스트로크 좌표를 상술한 선폭 보존 라운딩 처리를 하여, 라운딩 처리후의 스트로크 좌표를 구하고, 문자 전개 테이블의 라운딩 처리후의 스트로크 좌표란에 저장한다.
이것을 제29도 및 제30도에서 도시한 문자目에 대해 제33a도의 사이즈로 전환하는 예를 설명한다. 제31도에 도시한 것처럼, 제1 스트로크(S1)는 종 스트로크이므로 종 스트로크의 선폭 좌측의 X 좌표 X1 으로서 제33a도의 e'의 좌표인 1,3을 구하고, 좌표 변환후의 윤곽 데이터에서 종 스트로크의 선폭 우측의 X 좌표 Xr 으로서 2,7을 구하여 라운딩 처리전의 스트로크란에 저장한다. 그리고 이것을 선폭 보존 라운딩 처리하면 제33b도에 도시한 것처럼 제1 스트로크(S1)의 종 스트로크의 선폭 좌측의 X 좌표 X1은 1 로 되고, 종 스트로크의 선폭 우측의 X 좌표 Xr 은 3으로 된다. 이것을 라운딩 처리후의 스트로크란에 저장한다.
이와 마찬가지로, 제 2스트로크(S2), 제3 스트로크(S3), 제4 스트로크(S4), 제 5 스트로크(S5) 및 제6 스트로크(S6)에 대해, 라운딩 처리전의 스트로크 좌표와 라운딩 처리후의 스트로크 좌표를 구하여 문자 전개 테이블에 저장한다. 이와 같이 하면 , 라운딩 처리전의 문자 目 은 제33a도처럼 되고, 라운딩 처리후의 문자 目은 제33b도 처럼된다.
이들 데이터를 사용하여, 제24도의 스트로크 간격 연산기(32), 배율 연산기(36), 최대/최소 배율 검출기(38), 시행기(37) 및 판정회로(39)의 동작에 의해 제28도의 간격 제어 처리가 행해진다.
(1) 힌트 처리부(31)는 폰트 메모리(4)의 구조 데이터 메모리(4a)로부터 지정된 문자의 엘레멘트의 스트로크 블록을 판독하여 확대/축소 회로(30)의 윤곽 데이터와 함께, 제32도의 전개 테이블에 저장한다.
(2) 힌트 처리부(31)는 문자 전개 테이블의 그룹 번호란을 판독하여 동일한 그룹 번호를 갖는 스트로크 그룹을 찾아낸다. 그리고 이들 라운딩 처리전의 스트로크 좌표와 라운딩 처리후의 스트로크 좌표를 판독하여, 스트로크 간격 연산기(32)에 넘겨준다. 예를 들면, 제31도에 도시한 한자 目예에서는 문자 전개 테이블에서 4개의 스트로크(S2, S4, S5, S6)가 동일한 그룹의 스트로크로서 그 라운딩 처리전의 스트로크 좌표와 라운딩 처리후 스트로크 좌표가 추출된다.
(3) 스트로크 간격 연산기(32)는 라운딩 처리 전의 스트로크 좌표에서 원래 문자의 스트로크 간격을 계산하고, 다음에 라운딩 처리후의 스트로크 좌표에서 힌트 처리후의 스트로크 간격을 계산한다. 제32도, 제33a도 및 제33b도의 예에서는 제33a도의 3개의 스트로크 간격 wb1=d-c', wa2=c-b' 및 wa3=b-a' 가 원래 문자의 스트로크 간격으로 계산된다. 또한, 제33b도의 3개의 스트로크 간격 wb1=d0-c'0 wb2=c0-b'0 및 wb3=b0-a'0 가 힌트 처리후의 스트로크 간격으로 계산된다.
(4) 다음에, 배율 연산기(36)에 의해 힌트 처리후의 스트로크 간격을 원래 문자의 스트로크 간격으로 나누어서 각 스트로크 간격의 배율(비)이 계산된다.
제33a 및 제33b의 예에서는 각 스트로크 간격의 배율로서 wb1/wa1, wb2/wa2 및 wb3/wa3 가 계산된다. 그리고, 최대/최소 배율 검출기(38)는 계산한 배율을 서로 비교하여 배율의 최소와 최대를 검출한다. 또한, 검출기(38)는 최대(예를 들면 wb1/wa1)와 최소(예를 들면 wb2/wa2)와의 차(제1의 차)를 연산한다.
(5) 시행기(37)는 최대 배율의 분자(힌트 처리후의 스트로크 간격)에서 1을 빼고, 최소 배율의 분자(힌트 처리후의 스트로크 간격)에 1을 가산하도록 스트로크 간격 연산기(32)에 지시한다.
(6) 이것에 의해, 스트로크 간격 연산기(32)는 최대 배율의 분자(wa)에 1을 빼고, 최소 배율의 분자(wa2)에 1을 가산하는 연산을 한다. 또한, 배율 연산기(36)는 이 최대 배율의 스트로크 간격의 배율과 최소 배율의 스트로크 간격의 배율을 계산한다. 즉, 계산기(36)는 (wb1-1)/wa1와 (wb2+1)/wa2 계산한다. 다음에, 최대/최소 배율 검출기(38)은 이 차(제2의 차)를 계산한다.
(7) 판정회로(39)는 제1의 차와 제2의 차를 비교하여, 제2의 차가 제1의 차보다 작아져서 시행에 의해 그 차가 작아졌는지를 판정한다. 판정기(39)는 차가 작아지지 않으면 힌트 처리부(31)의 문자 전개 테이블을 변경하지 않는다. 반대로 차가 작아지면, 최대 배율의 스트로크 간격과 최소 배율의 스트로크 간격의 사이의 스트로크의 좌표에 1 픽셀을 가산 또는 감산하여 스트로크 이미지를 이동시키게끔 힌트 처리부(31)에 지시한다. 힌트 처리부(31)에서는 문자 전개 테이블의 라운딩 처리후의 해당 스트로크의 좌표치를 1 픽셀 만큼 변경한다.
여기서는 스트로크 간격(wb1)와 (wb2) 사이의 횡 스트로크(S4)의 선폭 아래쪽의 Y 좌표 Yb, 횡 스트로크의 선폭 윗쪽의 Y 좌표 Yu의 각각에 1을 가산하여 문자 전개 테이블을 변경한다. 따라서 이것에 의하여 생성되는 문자 目은 제34도와 같이 된다.
(8) 다음에 힌트 처리부(31)는 문자 전개 테이블의 그룹 번호란을 조사하고, 아직 미처리된 그룹 번호가 있는가를 조사하여 만일 있으면 스텝(2)로 되돌아 간다. 힌트 처리부(31)는 미처리된 그룹 번호가 없다고 판정하면 X, Y 방향 모두 간격 제어가 죵료하였는가를 조사한다. 종료하지 않았으면 스텝(2)로 되돌아가고, 종료하였다면 문자의 전체 엘레멘트에 대해 반복하였는가를 판정한다. 전체 엘레먼트를 종료하지 않았다면 스텝(1)에 복귀하고 종료하였다면 간격 제어 처리를 종료 한다.
또한, 간격 제어가 종료되면 문자 전개 회로(3)에서는 필링회로(35)가 문자 전개 테이블의 내용에 따라 드로잉을 행하여 비트 맵 이미지를 완성한다.
이것을 제32도, 제33a도, 제33b도 및 제34도의 한자 目를 예로 들어 구체적으로 설명한다. 단계(2)에 의하여 제32도의 문자 전개 테이블에서 스트로크(S2, S4, S5, S6)가 횡 스트로크의 동일 그룹으로서 추출되고, 그 라운딩 처리전의 스트로크 좌표와 라운딩 처리후의 스트로크 좌표가 판독된다. 다음에 단계(3)으로 각 스트로크 라운딩 처리전의 간격 wa1, wa2 및 wa3 이 다음과 같이 계산된다.
wa1= d(스트로크 S2의 Yb) - c'(스트로크 S4의 Yu) = 11.5 - 9.5 = 2.0
wa2= c(스트로크 S4의 Yb) - b'(스트로크 S5의 Yu) = 8.3 - 5.7 = 2.6
wa3= b(스트로크 S5의 Yb) - a'(스트로크 S6의 Yu) = 4.5 - 1.5 = 3.0
또한, 각 스트로크의 라운딩 처리후의 간격 wb1, wb2 및 wb3 은 다음과 같이 계산된다.
wb1= d0(스트로크 S2의 Yb) - c'0(스트로크 S4의 Yu) = 12 - 9 = 3
wb2= c0(스트로크 S4의 Yb) - b'0(스트로크 S5의 Yu) = 8 - 6 = 2
wb3= b0(스트로크 S5의 Yb) - a'0(스트로크 S6의 Yu) = 5 - 1 = 4
다음에 단계(4)에서 스트로크 간격의 배율 wb1/wa1, wa2/wa2 및 wb3/wa3 은 다음과 같이 계산된다.
wb1/wa1 = 3/2.0 = 1.5
wb2/wa1 = 2/2.6 = 0,77
wb3/wa3 = 4/3.0 = 1.33
여기서, 배율의 최대와 최소의 차 r1을 계산하면
r1 = wb1/wa1 - wb2/wa2 = 1.5 - 0.77 = 0.73
이 된다.
다음에 단계(5)에서 배율의 최소 스트로크 간격의 라운딩 처리후의 간격 wb2을 1만큼 크게하고, 배율의 최대 스트로크 간격의 라운딩 처리후의 간격 wb1을 1 만큼 작게 한다. 그리고 단계(6)에서 다시 한번 스트로크 간격의 배율 wb1/wa1, wb2/wa2 및 wb3/wa3을 계산하면
wb1/wa1 = 2/2.0 = 1.0
wb2/wa2 = 3/2.6 = 1.15
wb3/wa3 = 4/3.0 = 1.33
이 되고, 최대와 최소의 배율의 차 r2를 계산하면
r2 = wb3/wa3 - wb1/wa1 = 1.33 - 1.0 = 0.33
이 된다.
단계(7)에서, 스위칭 시행전의 차 r1과 시행후의 차 r2를 비교하면 시행후의 차 r2가 작고, 시행에 의하여 스트로크 간격의 확대 축소율(변환 배율)의 편차가 작아지고 있다.
이 배율의 가장 작은 스트로크 간격과 배율의 가장 큰 스트로크 간격 사이에 끼워지는 모든 스트로크를 1 픽셀 만큼 배율이 최대인 스트로크 간격의 쪽으로 이동시킨다. 여기서는 배율이 최소인 스트로크 간격은 c0-b'0 이고, 배울이 최대인 스트로크 간격은 d0-c'0 이므로 사이에 끼워지는 스트로크 위에서 두 번째의 횡 스트로크(S4)이므로 이것을 배율의 최대 스트로크 간격 방향으로 좌표 이동한다.
즉, 횡 스트로크(S4)의 문자 전개 테이블의 라운딩 처리후의 좌표를 1 픽셀 만큼 위로 이동한다. 이 횡 스트로크(S4)의 선폭 아래측의 Y 좌표 Yb 에 1을 가산하여 9에서 10으로 하고 횡 스트로크(S4)의 선폭 상측의 Y 좌표 Yu에 1을 가산하여 10에서 11 로한다.
이와 같이 하면, 제34도와 같은 원래의 한자 目의 디자인에 가까운 비트맵 이미지를 얻을 수 있다.
이와 같이 최대의 배율과 최소의 배율과의 차를 작게 하기 위하여 스트로크를 1 픽셀만큼 이동시킨 때의 이와같은 배율의 차를 구하고 이동전의 제 1의 차와 이동후의 제2의 차를 비교하여 그 차가 최소로 되는 스트로크 위치를 결정하도록 하였으므로 간단한 연산에 의하여 실현할 수 있다. 또 라운딩 처리전의 스트로크 좌표에서 라운딩 처리전의 스트로크 간격을 산출하기 위하여 용이하게 라운딩 처리전의 스트로크 간격을 연산할 수 있다. 또한 문자의 아웃라인 데이터와 함께 문자 스트로크 간격의 제어 대상을 쉽게 인식할 수 있고, 원래 문자의 디자인에 맞는 스트로크의 조정이 가능해진다. 또한, 문자의 아웃라인 데이터에서 변환에 의하여 구한 라운딩 처리전의 스트로크 데이터에서 라운딩 처리전의 스트로크 간격을 연산하므로 쉽게 라운딩 전의 스트로크 간격을 구할 수 있어 문자 생성 속도를 그다지 저하하지 않고도 실현할 수 있다.
이 실시예에서는 한자 目에 대하여 설명하였으나 다른 횡 스트로크가 평행하게 정렬되어 있는 한자나 종 스트로크가 나란히 있는 한자에도 적용할 수 있다. 라운딩 처리전의 스트로크 간격을 좌표 변환후의 좌표치에서 산출하고 있으나 폰트 메모리(4)의 본래의 윤곽 데이터로 부터도 산출할 수 있고, 이 간격을 폰트 메모리에 저장해 두어도 된다. 윤곽 데이터로서 문자 좌표계에서 파트의 원점을 설정하고 이 원점에서의 상대위치로 표현해도 된다. 폰트 메모리를 파트 분할 방식으로 설명하였으나 스트로크 분할 방식도 관계 없다.
이와같이 본 발명에서는 스트로크가 접촉을 하고 있는 것을 검출하여 라운딩 처리후의 스트로크의 선폭을 가늘게 하거나 스트로크를 소거하기 위하여 축소해도 검게 얼룩지는 것을 방지할 수 있고 본래의 문자 디자인을 재현한 비트 맵 이미지를 얻을 수 있다. 라운딩 처리후의 스트로크 사이의 간격의 합계치를 산출하여 스트로크의 총수에서 1을 뺀수와 비교하고, 합계치가 뺀 수보다 작을 때는 스트로크가 접촉하고 있다고 판정하여 일부의 스트로크의 선폭을 가늘게 하거나 소거하므로 간단한 연산으로 실현할 수 있고 문자 생성속도를 그다지 저하시키지 않고도 실현할 수 있다.
또한, 라운딩 처리후의 스트로크 간격을 조정하여 원래 문자에서의 스트로크 간격과 같게 함으로써 원래 문자의 디자인을 재현한 비트 맵 이미지를 얻을 수 있다. 라운딩 처리전의 스트로크 사이의 간격과 라운딩 처리후의 스트로크 사이의 간격에서 각 간격의 변환 배율을 산출하여 최대의 배율과 최소의 배율과의 차가 작아지도록 복수의 스트로크 간격 사이의 스트로크의 좌표를 이동함으로써 스트로크 간격을 조정하므로 간단한 연산으로 실현할 수 있고 문자 생성 속도를 그다지 저하하지 않고도 실현이 가능하다.

Claims (11)

  1. 문자의 윤곽선을 좌표로 표현한 아웃라인 폰트 데이터로부터 비트 맵 이미지를 생성하는 문자 생성 방법에 있어서, 상기 아웃라인 폰트 데이터를 지정된 사이즈의 좌표계의 좌표치로 변환하는 단계와; 상기 변환된 좌표를 정수 좌표에 라운딩 처리하는 단계와; 상기 라운딩 처리전의 각 스트로크 사이의 간격과 상기 라운딩 처리후의 각 스트로크 사이의 간격에서 각 간격의 변환 배율을 산출하는 단계와; 상기 복수의 변환 배율중 최대의 변환 배율과 최소의 변환 배율과의 차를 산출하는 단계와; 상기 차가 작아지는 방향으로 상기 복수의 스트로크중 소망하는 스트로크의 상기 정수 좌표치를 이동하는 단계와; 상기 이동된 좌표치를 포함하는 상기 정수 좌표치를 전개하여 상기 비트 맵 이미지를 생성하는 단계를 포함하는 것을 특징으로 하는 문자 생성 방법.
  2. 제1항에 있어서, 상기 정수 좌표치를 이동하는 단계는, 상기 최대의 변환 배율을 제공하는 상기 라운딩 처리후의 스트로크 간격에서 1을 뺀 제1의 배율과, 상기 최소의 변환 배율을 제공하는 상기 라운딩 처리후의 스트로크 간격에 1을 더한 제2의 배율을 산출하는 단계와; 상기 제1의 배율과 상기 제2의 배율과의 차를 연산하는 단계와; 상기 초기의 차를 상기 제1 및 제2배율간의 상기 차에 비교하는 단계와; 상기 제1 및 제2 배율간의 차가 상기 초기의 차보다도 작을 경우에 상기 최대가 되는 변환 배율의 스트로크 간격과 상기 최소가 되는 변환 배율의 스트로크 간격 사이의 스트로크를 상기 최대가 되는 변환 배율의 스트로크 간격 방향으로 1단위만큼 좌표 이동시키는 단계를 포함하는 것을 특징으로 하는 문자 생성 방법.
  3. 제1항에 있어서, 상기 변환 배율을 산출하는 단계는 지정된 복수의 스트로크에 대하여 상기 라운딩 처리전의 각 스트로크간의 간격과 상기 라운딩 처리 후의 각 스트로크간의 간격에서 각 간격의 변환 배율을 산출하는 것을 특징으로 하는 문자 생성방법.
  4. 제3항에 있어서, 상기 정수 좌표치를 이동하는 단계는 상기 차가 작아지는 방향으로 상기 복수의 스트로크중 지정된 스트로크의 상기 정수 좌표치를 이동하는 것을 특징으로 하는 문자 생성 방법.
  5. 제1항에 있어서, 상기 비트 맵 이미지를 생성하는 단계는 상기 각 스트로크를 구성하는 복수의 파트의 아웃라인 폰트 데이터를 전개하여 상기 문자의 비트맵 이미지를 생성하는 것을 특징으로 하는 문자 생성 방법.
  6. 문자의 윤곽선을 좌표로 표현한 아웃라인 폰트 데이터에서 비트 맵 이미지를 생성하는 문자 생성 장치에 있어, 각 문자의 상기 아웃라인 폰트 데이터를 저장하는 폰트 메모리와 상기 폰트 메모리에서 판독한 지정된 문자의 아웃라인 폰트 데이터를 지정된 사이즈의 좌표계의 좌표치로 변환한 다음, 정수 좌표치에 라운딩 처리한 후, 상기 라운딩 처리전과 라운딩 처리후의 스트로크 간격의 변환 배율의 최대와 최소의 차가 작아지도록 상기 정수 좌표치를 변경하여 상기 비트 맵 이미지를 생성하는 문자 전개 회로를 구비하는 것을 특징으로 하는 문자 생성 장치.
  7. 제6항에 있어서, 상기 문자 전개 회로는 상기 라운딩 처리전의 각 스트로크간의 간격과 상기 라운딩 처리후의 각 스트로크간의 간격의 변환 배율을 산출한후, 상기 복수의 변환 배율중 최대의 변환 배율과 최소의 변환 배율과의 차를 산출하고, 상기 차가 작아지는 방향으로 상기 복수의 스트로크중 소망하는 스트로크의 상기 정수 좌표치를 이동하여, 상기 이동된 좌표치를 포함하는 상기 정수 좌표치를 전개하여 상기 비트 맵 이미지를 생성하는 것을 특징으로 하는 문자 생성 장치.
  8. 제7항에 있어서, 상기 문자 전개 회로는 상기 정수 좌표치를 이동하기 위하여 상기 최대가 되는 변환 배율의 상기 라운딩 처리후의 스트로크 간격에서 1을 뺀 제1의 배율과 상기 최소가 되는 배율의 상기 라운딩 처리후의 스트로크 간격에서 1을 더한 제2의 배율을 산출한 후, 상기 제1의 배율과 상기 제2의 배율과의 차를 계산하고, 상기 초기의 차와 상기 계산한 차를 비교하고, 상기 계산한차가 상기 초기의 차 보다도 작을 경우에 상기 최대가 되는 변환 배율의 스트로크 간격에서 상기 최소가 되는 변환 배율의 스트로크 간격까지의 스트로크를 상기 최대가 되는 변환 배율의 스트로크 간격 방향으로 1단위 만큼 좌표 이동시키는 것을 특징으로 하는 문자 생성장치.
  9. 제7항에 있어서, 상기 폰트 메모리는 상기 문자에 대응하는 스트로크 데이터로서 상기 대상이 되는 스트로크를 지정하는 데이터를 저장하고; 상기 문자 전재 회로는 상기 지정된 복수의 스트로크간의 간격을 산출하는 것을 특징으로 하는 문자 생성장치.
  10. 제9항에 있어서, 상기 폰트 메모리는 상기 문자에 대응하는 스트로크 데이터로서 상기 이동될 스트로크 지정하는 데이터를 저장하고 상기 문자 전개 회로는 상기 지정된 복수의 스트로크중 지정된 스트로크를 이동하는 것을 특징으로 하는 문자 생성 장치.
  11. 제6항에 있어서, 상기 폰트 메모리는 상기 문자의 파트의 아웃라인 폰트 데이터와 각 문자의 파트 지정 데이터를 저장하고; 상기 문자 전개 회로는 지정된 문자의 파트 지정 데이터로 지정하는 아웃라인 폰트 데이터를 추출하고, 상기 각 스트로크를 구성하는 복수의 파트의 아웃라인 폰트 데이터를 전개하여 상기 문자의 비트 맵 이미지를 생성하는 것을 특징으로 하는 문자 생성 장치.
KR1019970015855A 1992-12-07 1997-04-28 문자 생성 방법 및 그 장치 KR100209455B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP92-326657 1992-12-07
JP4326656A JP3034140B2 (ja) 1992-12-07 1992-12-07 文字生成方法及びその装置
JP92-326656 1992-12-07
JP4326657A JP3034141B2 (ja) 1992-12-07 1992-12-07 文字生成方法及びその装置
KR1019930026683A KR0124961B1 (ko) 1992-12-07 1993-12-07 문자 생성 방법 및 그 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1019930026683A Division KR0124961B1 (ko) 1992-12-07 1993-12-07 문자 생성 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR19980078335A KR19980078335A (ko) 1998-11-16
KR100209455B1 true KR100209455B1 (ko) 1999-07-15

Family

ID=26572254

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1019930026683A KR0124961B1 (ko) 1992-12-07 1993-12-07 문자 생성 방법 및 그 장치
KR1019970015855A KR100209455B1 (ko) 1992-12-07 1997-04-28 문자 생성 방법 및 그 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1019930026683A KR0124961B1 (ko) 1992-12-07 1993-12-07 문자 생성 방법 및 그 장치

Country Status (3)

Country Link
US (1) US5526476A (ko)
KR (2) KR0124961B1 (ko)
CN (1) CN1045835C (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748798A (en) * 1993-12-28 1998-05-05 Matsushita Wlectric Ind. Method and system for adding effects to gray scale images
JPH0816144A (ja) * 1994-06-29 1996-01-19 Fujitsu Ltd アウトラインフォント展開方法およびアウトラインフォント展開装置
DE69516765T2 (de) * 1994-07-29 2000-11-02 Nippon Telegraph And Telephone Corp., Tokio/Tokyo Fernsehübermittlungsanlage mit Speichermöglichkeit
JP3238580B2 (ja) * 1994-09-14 2001-12-17 シャープ株式会社 太め細め文字生成装置
JPH08194459A (ja) * 1995-01-19 1996-07-30 Fujitsu Ltd アウトライン文字描画装置
JPH0916149A (ja) * 1995-04-28 1997-01-17 Canon Inc 文字処理装置、文字処理方法、及び、メモリ
JPH09134156A (ja) * 1995-11-09 1997-05-20 Fujitsu Ltd アウトラインフォントのストローク化及びパーツ化方法
JP3315861B2 (ja) * 1996-05-13 2002-08-19 シャープ株式会社 文字生成装置
JP3481136B2 (ja) * 1998-05-29 2003-12-22 シャープ株式会社 文字フォント生成方法およびそのための装置ならびに文字フォント生成プログラムを記録したコンピュータで読取可能な記録媒体
NZ505784A (en) * 2000-07-17 2003-04-29 Compudigm Int Ltd A data visualisation system producing a contoured graphical representation of call centre activity
US7239318B2 (en) * 2001-03-23 2007-07-03 Rise Kabushikikaisha Method and computer software program product for processing characters based on outline font
JP2004078070A (ja) * 2002-08-22 2004-03-11 Denso Corp ナビゲーション装置
JP4662412B2 (ja) * 2003-05-15 2011-03-30 シャープ株式会社 文字図形表示装置、文字図形表示方法、プログラムおよび記録媒体
US7289123B2 (en) * 2004-09-30 2007-10-30 Microsoft Corporation Simplifying complex characters to maintain legibility
JP3883554B2 (ja) * 2005-01-19 2007-02-21 シャープ株式会社 文字図形表示装置、プログラムおよび記録媒体
TWI274257B (en) * 2005-03-17 2007-02-21 Arphic Technology Co Ltd Method for generating a bitmap character by scaling strokes of the character
US7680333B2 (en) * 2005-04-21 2010-03-16 Microsoft Corporation System and method for binary persistence format for a recognition result lattice
JP4367511B2 (ja) * 2007-03-26 2009-11-18 セイコーエプソン株式会社 文字描画装置、表示装置及び印刷装置
US8102397B2 (en) * 2009-01-26 2012-01-24 Mitsubishi Electric Research Laboratories Inc. Method for improving uniform width character strokes using multiple alignment zones
JP5375577B2 (ja) * 2009-12-15 2013-12-25 富士通株式会社 字形要素判定装置及び字形要素判定方法
JP5519065B2 (ja) * 2012-09-27 2014-06-11 シャープ株式会社 輪郭線幅設定装置、輪郭階調数設定装置、輪郭線幅設定方法、及び輪郭階調数設定方法
JP5752157B2 (ja) 2013-01-31 2015-07-22 シャープ株式会社 文字表示装置及び文字表示方法
CN103862882B (zh) * 2014-02-24 2016-06-15 广东宝莱特医用科技股份有限公司 一种热敏打印机自适应纸张打印的方法及系统
CN104742534B (zh) * 2015-04-03 2017-01-11 江苏浩宇电子科技有限公司 一种写字机及其书写方法
JP7009316B2 (ja) * 2018-06-20 2022-01-25 キヤノン株式会社 画像形成装置及びその画像形成方法、並びにプログラム
CN111949156B (zh) * 2020-07-10 2024-03-29 广州视源电子科技股份有限公司 书写装置的汉字书写测试方法及系统、书写装置
US11842429B2 (en) 2021-11-12 2023-12-12 Rockwell Collins, Inc. System and method for machine code subroutine creation and execution with indeterminate addresses
US11915389B2 (en) 2021-11-12 2024-02-27 Rockwell Collins, Inc. System and method for recreating image with repeating patterns of graphical image file to reduce storage space
US12002369B2 (en) 2021-11-12 2024-06-04 Rockwell Collins, Inc. Graphical user interface (GUI) for selection and display of enroute charts in an avionics chart display system
US11954770B2 (en) 2021-11-12 2024-04-09 Rockwell Collins, Inc. System and method for recreating graphical image using character recognition to reduce storage space
US11887222B2 (en) 2021-11-12 2024-01-30 Rockwell Collins, Inc. Conversion of filled areas to run length encoded vectors

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2096866B (en) * 1981-04-10 1985-02-20 Philips Electronic Associated Improvements relating to character display
JPS61118791A (ja) * 1984-11-15 1986-06-06 株式会社東芝 フオント圧縮装置
JPS6263384A (ja) * 1985-08-20 1987-03-20 Fujitsu Ltd パタ−ンの相似変換方式
JPH01174463A (ja) * 1987-12-28 1989-07-11 Sharp Corp ドットパターン補正方法
US5274365A (en) * 1988-10-26 1993-12-28 Sun Microsystems, Inc. Method and apparatus for minimizing the visual degradation of digital typefaces-character analysis
AU629210B2 (en) * 1988-10-26 1992-10-01 Sun Microsystems, Inc. Method and apparatus for minimizing the visual degradation of digital typefaces
JP2782753B2 (ja) * 1989-01-13 1998-08-06 松下電器産業株式会社 文字パターン変倍装置
JP2748486B2 (ja) * 1989-01-13 1998-05-06 松下電器産業株式会社 文字パターン変倍装置
JP2836086B2 (ja) * 1989-03-10 1998-12-14 セイコーエプソン株式会社 文字パターンデータ発生装置
US5050103A (en) * 1989-05-12 1991-09-17 Adobe Systems Incorporated Method for displaying kanji characters
US5237313A (en) * 1989-08-01 1993-08-17 Adobe Systems Incorporated Method for editing character bitmaps at small sizes
JPH0396996A (ja) * 1989-09-08 1991-04-22 Tokyo Electric Co Ltd 文字出力装置
JPH03290691A (ja) * 1990-04-09 1991-12-20 Ricoh Co Ltd ベクタフォントの縮小方法
US5241653A (en) * 1990-04-12 1993-08-31 Adobe Systems Incorporated Apparatus and method for adjusting and displaying scaled, rasterized characters
US5255357A (en) * 1990-07-13 1993-10-19 Adobe Systems Incorporated Method for editing character bit maps at small sizes using connected runs
JPH04116594A (ja) * 1990-09-07 1992-04-17 Ricoh Co Ltd ベクトルフォントの展開方式
JPH04296795A (ja) * 1991-03-27 1992-10-21 Nec Off Syst Ltd 文字パターン発生装置
JPH04350897A (ja) * 1991-05-29 1992-12-04 Canon Inc 文字発生方法及び装置
JPH0511736A (ja) * 1991-06-28 1993-01-22 Toshiba Corp 文字パターン出力装置

Also Published As

Publication number Publication date
US5526476A (en) 1996-06-11
KR19980078335A (ko) 1998-11-16
CN1090937A (zh) 1994-08-17
KR0124961B1 (ko) 1997-11-28
CN1045835C (zh) 1999-10-20
KR940013853A (ko) 1994-07-16

Similar Documents

Publication Publication Date Title
KR100209455B1 (ko) 문자 생성 방법 및 그 장치
US6185341B1 (en) Image processing using vector data to reduce noise
US6501475B1 (en) Glyph-based outline font generation independent of resolution
JPH03122773A (ja) 画像形成装置
EP0843275A2 (en) Pattern extraction apparatus and method for extracting patterns
JPS62123573A (ja) コンピユ−タ・グラフイツク装置およびその操作方法
GB2229337A (en) Image coding method
US6052489A (en) Image output apparatus and method
US4511893A (en) Method of storing images in the form of contours and photo-typesetting apparatus thereof
US5404431A (en) Image drawing with improved area ratio approximation process
US5388166A (en) Image drawing apparatus
US4853885A (en) Method of compressing character or pictorial image data using curve approximation
US5526474A (en) Image drawing with improved process for area ratio of pixel
JPH0816144A (ja) アウトラインフォント展開方法およびアウトラインフォント展開装置
US5091973A (en) Image processing apparatus for reducing visible roughness in contours
JP3034140B2 (ja) 文字生成方法及びその装置
US5353359A (en) Methods for generating character pattern data and making image
JP3034141B2 (ja) 文字生成方法及びその装置
US5878194A (en) Method and device for outputting multicolor document
US5579406A (en) Apparatus and method for outline data processing
US6034702A (en) Character forming apparatus
EP0454125B1 (en) Method of producing characters and figures using computer
JPH0679323B2 (ja) 毛筆書体発生方法
JPH02202689A (ja) 文字認識装置
JPH0830725A (ja) 画像処理装置及び方法

Legal Events

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

Payment date: 20040331

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee