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

문자 생성 방법 및 그 장치

Info

Publication number
KR0124961B1
KR0124961B1 KR1019930026683A KR930026683A KR0124961B1 KR 0124961 B1 KR0124961 B1 KR 0124961B1 KR 1019930026683 A KR1019930026683 A KR 1019930026683A KR 930026683 A KR930026683 A KR 930026683A KR 0124961 B1 KR0124961 B1 KR 0124961B1
Authority
KR
South Korea
Prior art keywords
stroke
character
strokes
data
line width
Prior art date
Application number
KR1019930026683A
Other languages
English (en)
Other versions
KR940013853A (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 KR940013853A publication Critical patent/KR940013853A/ko
Priority to KR1019970015855A priority Critical patent/KR100209455B1/ko
Application granted granted Critical
Publication of KR0124961B1 publication Critical patent/KR0124961B1/ko

Links

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

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

Description

문자 생성 방법 및 그 장치
제 1 도는 종래 기술의 설명을 위해서 한자(漢字)를 도시한 도면.
제 2a 도는 제 1 도에 도시된 한자를 종래 기술에 의해 24×4도트로 전개시킨 도면.
제 2b 도는 제 1 도에 도시된 한자를 종래 기술에 의해 16×16도트로 전개시킨 도면.
제 3 도는 종래 기술의 설명을 위해서 또 다른 한자를 도시한 도면.
제 4a 도는 제 3 도에 도시된 한자를 종래 기술에 의해 16×16도트로 전개시킨 도면.
제 4b 도는 제 3 도에 도시된 한자를 종래 기술에 의해 12×16도트로 전개시킨 도면.
제 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 : 최대/최소 변환 배율 검출기
본 발명은 논리 좌표계로 표현된 아웃라인(outline)문자를 정수치로 표현된 물리 좌표 상에 전개시키기 위한 문자 생성 방법 및 그 장치에 관한 것이다.
프린터 장치, 디스플레이 장치 등에 있어서는 문자를 인쇄 내지 표시하기 위해 문자 패턴의 생성이 필요하다. 이 문자 패턴의 생성에 있어서, 최근에 동일 문자에 있어서도 여러가지 문자 사이즈의 문자가 요구되고 있다. 이로 인해 동일한 문장 대하여 비트 패턴에 의해 각종 문자 사이즈의 무자가 주어질 경우 메모리 용량이 커진다. 특히, 한자와 같이 다수의 문자 종류를 갖는 문자도 큰 메모리 용량이 필요하다.
이러한 문제점을 해결하기 위하여, 아웃라인 폰트에 의한 문자 생성 방법이 알려져 있다. 이 방법은 문자의 윤곽을 실수 표현으로 또한 논리 좌표계로 표현한 문자 패턴 데이타를 가지고, 이 데이타를 지정된 문자 사이즈 좌표계로 변환하여 문자를 정수로 표현되는 비트 맵 이미지로 전개하는 것이다.
종래에 도형이나 아웃라인 폰트와 같은 실수 표현의 논리 좌표 데이타를 정수로 표현된 비트 맵 이미지로 전개할 경우, 문자 데이타가 프린터나 디스플레이의 픽셀 단위로 표현될 수 있도록 그 문자 데이타의 소수 부분이 라운딩 처리된다. 통상적인 라운딩 처리로서는 좌표 데이타가 가장 가까운 픽셀로 표현되도록 하기 위하여 사시오입이 일반적이다.
예를 들어 제 1 도의 도시와 같이 아웃라인 형식으로 표현된 한자 車의 문자를 구성하는 각각의 점(윤곽점)은 1000×1000 등과 같은 정수 논리 좌표로 보존되어 있다.
이 논리 좌표상의 문자 아웃라인 데이타는 필요한 문자 사이즈로 변환되어서 소수점을 포함한 좌표치로 변환된다. 이것을 물리 좌표에 의해 좌표치로 표현할 수 있도록 모든 점을 정수로 라운딩 처리하면 모든 점이 가장 가까운 정수로 라운딩 처리된다. 예를 들어, 24×24도트의 문자 사이즈로 변환할 경우에는, 좌표 변환 처리와 라운딩 처리에 의하여 제 1 도에 도시된 한자인 車라는 문자는 제 2a 도에 도시된 것과 같게 된다. 이 예에서는 원래의 문자가 굵게 디자인된 문자이기 때문에 생성된 문자 비트 맵 이미지도 두 픽셀의 폭을 갖는다.
이 같은 문자를 이번에는 종횡 16도트(16×16도트)의 비트 맵 이미지로 되도록 변환하면 제 2b 도의 도시와 같아지고 중앙의 인접하는 2개의 횡 스트로크가 서로 접촉하게 된다.
이와 동일하게, 제 3 도의 도시와 같은 1000×1000의 논리 좌표로 아웃라인 형식으로 표현된 龜라는 문자를 16×16도트의 문자 사이즈로 변환하면 제 4a 도에 도시된 것처럼 된다.
한자 龜라는 문자는 이 한자를 구성하는 2개의 日의 부분에 포함되는 3개의 횡 스트로크와 머리부분에 하나의 횡 스트로크 및 하부에 하나의 횡 스트로크가 있다.따라서, 합계 8개의 횡 스트로크가 포함되어 있다. 8개의 횡 스트로크를 표현하기 위해서는 횡 스트로크간의 흰 부분도 포함하여 16도트가 필요하다. 따라서, 16×16도트의 비트맵 이미지가 정확히 표현 가능한 최소의 크기이다.
한자가 12×2도트의 물리좌표로 축소처리되면, 제 4b 도의 도시와 같이 횡 스트로크간의 흰 여백을 표현하는 도트가 없으므로 횡 스트로크가 서로 접촉하게 된다.
이로 인해, 제 2b 도의 도시와 같이 고딕체 등의 선폭이 굵은 디지인의 문자를 작게 축소하면, 횡 스트로크끼리 접촉되어 인로 인해 그 접촉된 부분이 검게 얼룩이 져서 문자를 정확히 인식할 수 없고 가독성(可讀性)이 떨어진다.
이와 동일하게, 제 4b 도의 도시와 같이 선폭이 가늘어도 복잡한 디자인의 문자를 작게 축소하면 일부 횡 스트로크가 서로 접촉하게 된다. 이로 인해, 그 접촉된 부분이 검게 얼룩진 것처럼 보이고 문자를 정확히 인식할 수가 없어 가독성이 떨어진다.
또한, 제 5 도의 도시와 같이 아웃라인 형식으로 표현된 한 目의 문자를 구성하는 각각의 점(윤곽점)은 1000×1000 등과 같은 정수 논리 좌표로 보존되고 있다. 예를 들어, 이 한자를 12×4 도트의 문자사이즈로 변환할 경우에는, 제 6a 도의 도시와 같이 좌표 변환 처리에 의하여 한자인 目의 문자의 좌측 종 스트로크는 X좌표로 e=1.2 내지 e'=2.7로 표현된다. 라운딩 처리에 의하여 제 6b 도의 도시와 같이 이 종 스트로크는 X 좌표에서 1에서 3까지의 두 픽셀폭을 갖는 비트 맵 이미지가 된다.
또한, 한자 目의 우측의 종 스트로크는 X좌표에서 f=7.7 내지 f'=9.2로 표현된다. 그리고 라운딩 처리에 의해 제 6b 도의 도시와 같이 이 종 스트로크는 X좌표에서 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양상에 따라서, 문자의 윤곽선을 좌표로 표현한 아웃라인 폰트 데이타로부터 비트 맵 이미지를 생성하는 문자 생성 방법이 제공되는데, 이 방법은 아웃라인 폰트 데이타를 지정된 사이즈의 좌표계의 좌표치로 변환하는 단계와, 상기 변환된 좌표치를 정수 좌표치로 라운딩 처리하는 단계와, 상기 라운딩 처리 후의 좌표에 있어서의 상기 동일 방향에 있는 복수의 스트로크간의 간격이 합계치를 산출하는 단계와, 상기 합계치를 대상이 스트로크 수에서 1을 감산한 수와 비교하는 단계와, 상기 합계치가 상기 뺀 수보다 작을 경우에 상기 대상이 되는 스트로크 중 소망하는 스트로크의 선폭을 조정하도록 상기 정수 좌표치를 변경하는 단계와, 상기 조정된 좌표치를 포함하는 상기 정수 좌표치를 전개하여 상기 비트 맵 이미지를 생성하는 단계를 포함한다.
본 발명의 제2양상에 따라서, 문자의 윤곽선을 좌표로 표현한 아웃라인 폰트 데이타로부터 비트 맵 이미지를 생성하는 문자 생성 장치가 제공되는데, 이 장치는 각 문자의 상기 아웃라인의 폰트 데이타를 저장하는 폰트 메모리와, 상기 폰트 메모리에서 판독한 지정된 문자의 아웃라인 폰트 데이타를 지정된 사이즈의 좌표계의 좌표치로 변환한 후에 이 좌표치를 정수 좌표치로 라운딩 처리하여 그 후 상기 라운딩 처리 후의 좌표치로부터 문자의 스트로크간의 접촉이 있는지를 검출하여 만일 그러한 접촉이 있을 경우 상기 정수 좌표치를 변경하여 상기 비트 맵 이미지를 생성하는 문자 전개 회로를 구비한다.
본 발명의 이러한 양상에 따라서, 라운딩 처리 후의 정수 좌표치로부터 라운딩 처리후의 스트로크가 접촉하고 있는지를 판정한다. 이를 위해서는 우선 라운딩 처리후의 스트로크간의 간격의 합계치를 산출한다. 한편 각 스트로크가 서로 접촉하지 않는 최저 조건은 임의의 간격이 스트로크 수에서 1을 뺀 수이므로 그 합계치와 그 뺀 수를 비교한다. 그리고 합계치가 뺀 수보다 작을 때는 스트로크가 접촉하고 있는 것으로 판정하여 일부 스트로크의 선폭을 조정한다. 이 선폭을 조정하는 한 방법은 선폭을 가늘게 하여 스트로크간의 접촉을 방지하여 문자의 일부가 검게 얼룩지는 것을 방지하는 것이다. 또 다른 조정 방법으로서, 일부의 스트로크를 삭제하여 스트로크간의 접촉을 방지하여 문자의 일부가 검게 얼룩지는 것을 방지한다.
본 발명의 제3양상에 따라서, 문자의 윤곽선을 좌표로 표현한 아웃라인 폰트 데이타로부터 비트 맵 이미지를 생성하는 문자 생성 방법이 제공되는데, 이 방법은 상기 아웃라인 폰트 정보를 지정된 사이즈의 좌표계의 좌표치로 변환하는 단계와, 상기 변환된 좌표치를 상기 정수 좌표치로 라운딩 처리하는 단계와, 상기 라운딩 처리 전의 각 스트로크간의 간격과 상기 라운딩 처리후의 각 스트로크간의 간격으로부터 각 간격의 변환 배율(scaling fator)을 산출하는 단계와, 상기 변환 배율 중 최대의 변환 배율의 간격과 최소 배율의 간격과의 차를 산출하는 단계와, 상기 차를 작게하는 방향으로 상기 스트로크 중 소망하는 스트로크의 정수 좌표치를 이동하는 단계와, 상기 이동된 좌표치를 포함하는 상기 정수 좌표치를 전개하여 상기 비트맵 이미지를 생성하는 단계를 포함한다.
본 발명의 제4양상에 따라서, 문자의 윤곽선을 좌표로 표현한 아웃라인이 폰트 데이타로부터 비트 맵 이미지를 생성하는 문자 생성 장치가 제공되는데, 이 장치는 각 문자의 상기 아웃라인 폰트 데이타를 저장하는 폰트 메모리와, 상기 폰트 메모리에서 판독한 지정된 문자의 아웃라인 폰트 데이타를 지정된 사이즈의 좌표계의 좌표치로 변환한 후에 정수 좌표치로 라운딩 처리하고, 그 후 상기 라운딩 처리전과 라운딩 처리후의 스트로크 간격의 변환 배율의 최대와 최소와의 차가 작아지도록 상기 정수 좌표치를 변경하여 상기 비트 맵 이미지를 생성하는 문자 전개 회로를 구비한다.
본 발명의 이 두 양상에 따라서, 라운딩 처리 후의 스트로크 간격과 원래의 문자에서의 스트로크 간격과의 배율이 균등하면 라운딩 처리 후의 스트로크 간격은 원래의 문자의 디자인을 재현하였다고 말할 수 있다. 이로 인해, 라운딩 처리된 스트로크간의 간격과 라운딩 처리 후의 스트로크간의 간격에서 각 간격의 변환 배율을 산출하여 변환 배율 중 최대의 배율과 최소의 배율과의 차가 작아지도록 복수의 스트로크 간격간의 스트로크의 좌표를 이동함으로써 스트로크 간격을 조정하는 것이다.
본 발명의 또다른 특징 및 장점은 첨부된 도면과 관련하여 이하의 상세한 설명을 통해 명백하게 드러날 것이다.
첨부된 도면은 본 발명의 원리를 설명하기 위한 것으로서 본 발명의 바람직한 실시예를 비롯하여 상술한 일반적인 설명을 위한 것이다.
제 8 도는 본 발명의 원리를 예시한 제1도면이다. 제 8 도에 도시된 바와 같이, 1000×1000의 좌표계로 보존되는 아웃라인 좌표 ao 내지 co'를 지정 사이즈로 좌표 변환한다. 그리고 라운딩 처리하여 정수 좌표치를 얻는다. 예를 들어, 한자 車를 16×16도트의 사이즈로 변환하면 중간 스트로크의 하단 좌표 b1'와 아래의 스트로크의 상단 좌표 c1이 동일 좌표치로 되고, 이들 스트로크가 서로 접촉한다. 이 접촉을 검출하기 위해서 대상이 되는 스트로크 간격의 합계치를 연산하고, 대상 스트로크 수에서 1을 뺀 수와 비교한다. 이 합계치가 대상 스트로크의 갯수 -1보다 작을 경우에는 세선화 처리(line-thinning process)를 실행한다. 즉, 대상 스트로크 중 외측의 스트로크를 제외하고 중앙의 스트로크의 선폭을 가늘게 한다. 이것으로 스트로크간의 접촉을 방지한다.
제 9 도는 본 발명의 원리를 예시한 제2도면이다. 제 9 도의 도시와 같이, 1000×1000의 좌표계로 보존되는 아웃라인 좌표 ao∼co'를 지정 사이즈로 좌표 변환한다. 그리고 라운딩 처리하여 정수 좌표치를 얻는다. 예를 들어, 한자 龜는 12×12도트의 사이즈로 변환하면 위의 스트로크의 하단 좌표 a1'와 중앙의 스트로크의 상단 좌표 b1이 동일 조표치가 되고, 중앙의 스트로크의 하단 좌표 b1'과 아래의 스트로크의 상단 좌표 c1이 동일 좌표치가 된다. 따라서, 이들 스크로크가 서로 접촉한다. 이 접촉을 검출하기 위하여, 대상이 되는 스트로크 간격의 합계치를 연산하여 대상 스트로크의 갯수 -1과 비교한다. 이 합계치가 대상 스크로크의 갯수 -1보다 작을 경우에는 스트로크가 서로 접촉하고 있는 것으로 판정한다. 이 경우에, 스트로크 선폭이 1픽셀 폭인 경우에는 스트로크 폭을 가늘게 하면 그 스트로크는 삭제된다. 따라서 소거처리를 실시한다. 즉 대상 스트로크 중에서 외측 스트로크 이외의 중앙 스트로크를 삭제한다. 이것에 의하여 스트로크간의 접촉을 방지한다.
제 10 도는 본 발명의 원리를 예시한 제3도면이다. 제 10의 도시와 같이, 아웃라인 좌표계를 보존되고 있는 아웃라인 좌표 a 내지 e를 지정 사이즈로 좌표 변환된다. 그리고 라운딩 처리하여 정수 좌표를 얻는다. 예를 들어, 한자 目를 14×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)의 구성에 대하여 설명한다. 여기에서는 문자를 구성하는 좌측 부수 및 우측 부수에 해당하는 엘레멘트, 붓의 운필에 해당하는 스트로크 및 입필부나 종필부에 해당하는 파트의 같이 계층 구조로 문자를 분석하는 방식으로 설명한다. 또한, 데이타량 삭감을 목적으로 문자의 계층구조와 특징 데이타를 저장한 제 13 도의 구조 데이타 메모리(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픽셀의 사이즈로 하기 위해서는 1000×1000의 좌표계로 표현되는 문자의 윤곽 정보를 X 방향으로 16/1000배 하고, Y 방향으로 16/1000배한다.
이와 같이 변환 연산된 윤곽 데이타는 스트로크 블록(45)의 데이타와 함께 제 12 도의 힌트 처리부(31)에 보내진다. 힌트 처리부(31)에서는 제 19 도의 문자 전개 테이블을 작성한다. 이 문자 전개 테이블을 제 19 도의 도시와 같이 문자를 구성하는 각 스트로크마다 스트로크 번호와, 라운딩 처리 전의 스트로크의 좌표(종 스트로크의 선폭 좌측의 X좌표 X1, 종 스트로크의 선폭 우측의 X좌표, Xr, 횡 스트로크의 선폭 하측의 X좌표 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 도의 16×16도트의 사이즈로 변환하는 예로 설명한다. 제 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)로부터 지정된 문자의 엘레멘트의 스트로크 블록을 판독한다. 그리고나서, 확대/축소 연산기(30)의 좌표 변환 후의 윤곽 데이타와 스트로크 블록의 내용을 제 19 도의 문자 전개 테이블에 저장한다.
(2) 힌트 처리부(31)는 문자 전개 테이블의 그룹 번호란을 판독하여 동일한 그룹 번호의 스트로크 그룹을 찾아 낸다. 그리고 이들의 라운딩 처리 후의 스트로크 좌표를 판독하여 스트로크 간격 연산기(32)에 건네준다. 예를 들어, 상기의 한자 車의 예에서는 문자 전개 테이블에서 3개의 스트로크(S3,S5,S6)가 동일 그룹의 스트로크로서 추출된다. 그리고나서, 라운딩 처리 후의 스트로크 좌표가 인출된다.
(3) 스트로크 간격 연산기(32)는 라운딩 처리 후의 스트로크 좌표로부터 힌트 처리 후의 스트로크 간격 WS를 계산한다. 제 9 도의 예에서는, a1'-a1 및 b1'-c1의 2개의 스트로크 간격이 계산된다. a1'는 스트로크(S3)의 하측 Y좌표 Yb=(=10)이고, b1은 스트로크(S5)의 상측 Y좌표 Yu(=9)이다. 또한, b1'는 스트로크(S5)의 하측 Y좌표 Yb(=7)이고, C1은 스트로크(S6)의 상측 Y좌표 Yu(=7)이다. 따라서 힌트 처리 후의 스트로크 간격 WS는 WS=(a1'-b1)+(a1'-c1)=10-9+7-7=1 이 된다.
다음에, 이 스트로크 갯수 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 도에 도시한 한자 龜 를 예를 들어 제 21 도, 제 22 도 및 제 24 도를 참조하여 폰트 메모리(4)에서 문자를 생성하는 동작에 대해 설명한다.
제 21 도에 도시한 것처럼, 폰트 메모리(4)의 구조 데이타 메모리(4a)의 문자 포인터 블록(41)에서 한자 龜의 문자 코드 8B54에 기초하여 엘레멘트에 대한 포인터가 얻어진다. 또한 엘레멘트 포인터 블록(42)에서, 구조 데이타가 저장되어 있는 엘레멘트 블록(44)의 포인터를 얻는다. 제 23 도에 도시한 것처럼, 한자 龜는 14개의 스트로크(S1∼S14)로 구성되어 있으므로, 엘레멘트 블록(44)에서는 엘레멘트의 분류 코드 다음의 스트로크 블록(45) 내에 한자 龜를 구성하는 14개의 스트로크(S1∼S14)에 관한 정보가 기술되어 있다. 여기서는 문자의 스트로크 순서에 따라 데이타가 배치된다.
최초의 스트로크(S1)는 사선이므로, 이 스트로크(S1)는 사선의 분류 코드를 가지며, X 그룹 번호, Y 그룹 번호, 세선화 부호 및 소거부호의 순으로 배열된 제어부호란이 0이다. 즉, X 및 Y방향의 스트로크 제어의 그룹 번호가 0으로 설정되어 있고, 세선화 부호 및 소거부호도 0이다. 제2스트로크(S2)는 횡선이므로, 이 스트로크는 횡선 분류 코드를 가지며, X 및 Y 방향에서의 스트로크 제어의 그룹 번호가 0으로 설정되어 있다. 그리고 세선화 부호 미 소거부호도 0이다.
이처럼 이 문자 龜에서는 제 24 도에 도시한 것처럼 스트로크(S9,S11,S14)가 X방향의 스트로크 조정 그룹에, 스트로크(S5,S7,S8)가 Y 방향의 제1스트로크 조정 그룹에, 스트로크(S10,S12,S13)가 Y방향의 제2의 스트로크 조정 그룹에 설정되어 있다.
또한, 제7스트로크(S7)과 제12스트로크(S12)는 세선화 부호가 1이다. 따라서 상술한 제의 실시처럼, 문자를 선폭이 굵은 서체 등으로 비트 맵에 전개했을 때, 횡 스트로크가 서로 접촉하여 간격을 유지할 수 없을 경우에는 이들의 선폭을 가늘게 하여 간격을 유지하게끔 제어한다.
또한, 제7스트로크(S7)과 제12스트로크(S12)는 세선화 부호가 1이다. 이것에 의해 작은 비트 맵 이미지를 생성할 때 횡 스트로크가 서로 인접하게 되어 검게 얼룩지게 될 경우, 이 횡 스트로크를 소거하여 스트로크간의 간격을 유지한다.
따라서, 구조 데이타 메모리(4a)로부터 문자 龜의 문자 코드에서 대응하는 관련 스트로크 블록(45)의 내용이 인출된다. 마찬가지로, 제 22 도에 도시한 것처럼 한자 龜의 문자 코드 8B54에 기초한 문자 포인터 블록(47)에서 파트 포인터 블록(48)의 포인터를 구한다. 그리고 파트 포인터 블록(48)에서 윤곽 정보 블록(49) 내의 대응하는 윤곽 데이타를 인출한다.
제 12 도에서 설명한 확대/축소 회로(30)는 이러한 윤곽 데이타를 지정된 문자 사이즈의 윤곽 데이타로 확대 또는 축소한다. 예를 들면, 제 9 도에 도시한 X가 12픽셀, Y가 12픽셀의 사이즈로 하는 데는 1000×1000의 좌표계로 표현된 문자의 윤곽 데이타를 X 방향으로 12/1000배 하고, Y방향으로도 12/1000배한다.
이와 같이 해서 변환된 윤곽 데이타는 스트로크 블록(45)의 데이타와 함께 제 12 도의 힌트 처리부(31)에 보내진다. 힌트 처리부(31)에서는 제 24 도의 문자 전개 테이블을 작성한다.
이 문자 전개 테이블은 제 24 도에 도시한 것처럼 문자를 구성하는 각 스트로크마다 스트로크 번호와 라운딩 처리 전의 스트로크의 선폭의 아래쪽의 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 도에서 도시한 문자 龜가 제 9 도의 12×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,S6,S7,S8,S9,S10,S11,S12,S13,S14)에 대해, 라운딩 처리 전의 스트로크 좌표와, 라운딩 처리 후의 스트로크 좌표를 구하여 문자 전개 테이블에 저장한다. 이와 같이 하면, 라운딩 처리 전의 문자 龜는 라운딩 처리에 의해 제 9 도처럼 된다. 이들 데이타를 사용하여, 제 12 도의 스트로크 간격 연산기(32), 비교기(33), 판정회로(34)의 동작에 의해 제 20 도의 스트로크 삭제/조정처리가 행해진다.
(1) 힌트 처리부(31)는 폰트 메모리(4)의 구조 데이타 메모리(4a)에서 지정된 문자의 엘레멘트의 스트로크 블록을 판독한다. 그리고, 확대/축소 회로(30)의 윤곽 데이타와 더불어, 제 24 도에 도시된 문자 전개 테이블에서의 스트로크 블록의 내용을 저정한다.
(2) 힌트 처리부(31)는 문자 전개 테이블의 그를 번호란을 판독하여 동일한 그룹 번호를 갖는 스트로크 그룹을 찾아낸다. 힌트 처리부(31)는 이들의 라운딩 처리 후의 스트로크 좌표를 판독하여 스트로크 간격 연산기(32)에 건네준다. 예를 들면, 제 23 도에 도시한 한자 龜의 예에서는 문자 전개 테이블에서 스트로크(S5,S7,S8)의 3개의 스트로크가 동일한 그룹의 스트로크로서 추출된 다음 라운딩 처리 후의 스트로크 좌표가 판독한다.
(3) 스트로크 간격 연산기(32)는 라운딩 처리 후의 스트로크 좌표에서 힌트 처리 후의 스트로크 간격 WS을 연산한다.
제 24 도의 예에서는 a1'-b1 및 b1'-c1의 2개의 스트로크 간격이 계산된다. a1'는 스트로크(55)의 아래쪽 Y좌표 Yb(=9)이며 b1은 스트로크(S7)의 윗쪽 Y좌표 Yu(=9)이고, b1'는 스트로크(S7)의 아래쪽 Y좌표 Yb(=8)이며, c1은 스트로크(S8)의 윗쪽 Y좌표 Yu(=8)이다. 따라서, 힌트 처리 후의 스트로크 간격 WS는 WS=(a1'-b1)+(b1'-c1)=9-9+8-8=0 으로 된다.
다음에 이 스트로크 총수 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 도의 예에서는 문자 龜의 윗쪽 엘레멘트 目의 중앙 스트로크(S7)에 소거부호가 설정되어 있다. 따라서, 이 스트로크(S7)의 문자 전개 테이블의 라운딩 처리 후의 아래쪽 Y좌표 Yb에 1을 가산하여 9로 하고, 선폭을 0으로 하여 스트로크를 소거한다.
이와 같이 하면, 문자 龜는 제 9 도와 같이 되고, 문자 龜의 윗쪽 엘레멘트인 目의 부분이 얼룩지게 되지 않아 그 외관상의 인상이 원래의 이미지에 근접된다.
여기서, 소거처리하는 하는 스트로크를 가장 바깥쪽의 2개의 스트로크를 제외한 다른 스트로크로 하면 그 문자의 외관상의 인상이 원래의 문자의 이미지와 가깝게 된다. 이 때문에 외측의 2개의 스트로크(여기서는 스트로크 S5 및 S8)를 제외한 다른 스트로크에 소거부호를 설정해 둔다.
(7) 다음에, 힌트 처리부(31)는 문자 전개 테이블의 그룹 번호란을 조사하여 아직 미처리 그룹 번호가 있는지를 조사하고, 만일 그러한 미처리 그룹 번호가 있다면 단계(2)로 되돌아 간다. 힌트 처리부(31)가 미처리된 그룹 번호가 없다고 판정하면, X 및 Y방향 모두 조정처리를 종료하였는지를 조사하여 종료하지 않았으면, 단계(2)로 되돌아 간다. 반대로 조정처리가 종료했으면, 문자의 전체 엘레멘트를 반복하였는지를 판정하여 전체 엘레멘트가 종료되지 않았으면 단계(1)에 되돌아 가고, 종료되었으면 조정처리를 종료한다.
그리고, 조정처리가 종료되면, 문자 전개부(3)에서는 필링회로(35)가 문자 전개 테이블의 내용에 의거하여 선을 그려 비트 맵 이미지를 완성시킨다.
이와 같이 해서, 축소 문자 龜에 대해서는 제 9 도와 같은 스트로크 선폭을 조정함으로써 원래의 문자 디자인에 가까운 비트 맵 이미지를 얻을 수 있다.
이들 실시예에 있어서, 일반적으로 문자는 가장 외측의 스트로크가 굵은 쪽이 가독성이 높기 때문에, 가장 외측의 스트로크는 가늘게 하지 않거나 삭제하지 않는다. 또한 1픽셀 폭의 스트로크를 가늘게 하면 스트로크가 소거되기 때문에 2픽셀 이상의 스트로크를 가늘게 하는 것이다.
또, 대상이 되는 스트로크를 가늘게 하기 위해, 비트 맵 이미지를 전개하기 전에 스트로크의 좌표를 변경함으로써 용이하게 스트로크를 가늘게 할 수 있다. 또한, 미리 선폭을 가늘게 하거나 또는 삭제할 스트로크를 설정해 둠으로써 문자 디자인상에 가늘게 해도 가독성을 유지할 수 있는 스트로크를 지정할 수 있다. 또한, 용이하게 선폭을 가늘게 하는 스트로크를 인식할 수 있어서 원래의 문자 디자인에 맞는 스트로크의 조정이 가능해진다.
제1의 실시예에 있어서, 한자 車에 대해 설명했지만 한자 龜 등의 횡 스트로크가 가지런히 정렬되어 있는 다른 한자에도 적용할 수 있다. 제2의 실시예에 있어서, 한자 龜의 윗쪽 目의 부분에서 설명했지만 아래쪽 目 부분도 검증할 수 있으며, 이와 마찬가지로 한자 車등 다른 종 스트로크 또는 횡 스트로크가 평행하게 정렬되어 있는 문자에도 적용할 수 있다. 또한, 제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픽셀을 뺀 스트로크 간격의 연산을 지시한다. 판정회로(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 도 및 제 2 도에 의해 폰트 메모리(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×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)는 이 라운딩 처리 전의 스트로크 좌표를 상술한 선폭 보존 라운딩 처리를 하여, 라운딩 처리 후의 스트로크 좌표를 구하고, 문자 전개 테이블의 라운딩 처리 후의 스트로크 좌표란에 저장한다.
이것을 제 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 도처럼 된다.
이들 데이타를 사용하여, 제 25 도의 스트로크 간격 연산기(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개의 스트로크 간격 wa1=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)는 (wb-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 도, 제 33 b도 및 제 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=d(스트로크 S5의 Yb)-a'(스트로크 S6의 Yu)=4.5-1.5=3.0
또한, 각 스트로크의 라운딩 처리 후의 간격 wb, wb2 및 wb3은 다음과 같이 계산된다.
wa1=d0(스트로크 S2의 Yb)-c'0(스트로크 S4의 Yu)=12-9=3
wa2=d0(스트로크 S4의 Yb)-b'0(스트로크 S5의 Yu)=8-6=2
wa3=d0(스트로크 S5의 Yb)-a'0(스트로크 S6의 Yu)=5-1=4
다음에 단계(4)에서 스트로크 간격의 배율 wb1/wa1, wb2/wa2 및 wb3/wa3은 다음과 같이 계산된다.
wb1/wa1=3/2.0=1.5
wb2/wa2=2/2.6=1.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으로 횡 스트로크(S3)의 선폭 상측의 Y좌표 Yu에 1을 가산하여 10에서 11로 한다.
이와 같이 하면, 제 34 도와 같은 원래의 한자 目의 디자인에 가까운 비트 맵 이미지를 얻을 수 있다.
이와 같이 최대의 배율과 최소의 배율과의 차를 작게 하기 위하여 스트로크를 1픽셀만큼 이동시킨 때의 이와 같은 배율의 차를 구하고 이동 전의 제1의 차와 이동 후의 제2의 차를 비교하여 그 차가 최소로 되는 스트로크 위치를 결정하도록 하였으므로 간단한 연산에 의하여 실현할 수 있다. 또 라운딩 처리 전의 스트로크 좌표에서 라운딩 처리 전의 스트로크 간격을 산출하기 위하여 용이하게 라운딩 처리 전의 스트로크 간격을 연산할 수 있다. 또한 문자의 아웃라인 데이타와 함께 문자의 스트로크 간격의 제어를 행하는 스트로크를 지정하는 데이타를 설정하였으므로 스트로크 간격의 제어 대상을 쉽게 인식할 수 있고, 원래 문자의 디자인에 맞는 스트로크의 조정이 가능해진다. 또한, 문자의 아웃라인 데이타에서 변환에 의하여 구한 라운딩 처리 전의 스트로크 데이타에서 라운딩 처리 전의 스트로크 간격을 연산하므로 쉽게 라운딩 전의 스트로크 간격을 구할 수 있어 문자 생성 속도를 그다지 저하하지 않고도 실현할 수 있다.
이 실시예에서는 한자 目에 대하여 설명하였으나 다른 횡 스트로크가 평행하게 정렬되어 있는 한자나 종 스트로크가 나란히 있는 한자에도 적용할 수 있다. 라운딩 처리 전의 스트로크 간격을 좌표 변환 후의 좌표치에서 산출하고 있으나 폰트 메모리(4)의 본래의 윤곽 데이타로부터도 산출할 수 있고, 이 간격을 폰트 메모리에 저장해 두어도 된다. 윤곽 데이타로서 문자 좌표계에서의 파트의 원점을 설정하고 이 원점에서의 상대위치로 표현해도 된다. 폰트 메모리를 파트 분할 방식으로 설명하였으나 스트로크 분할 방식도 관계없다.
이와같이 본 발명에서는 스트로크가 접촉하고 있는 것을 검출하여 라운딩 처리 후의 스트로크의 선폭을 가늘게 하거나 스트로크를 소거하기 위하여 축소해도 검게 얼룩지는 것을 방지할 스트로크 있고 본래의 문자 디자인을 재현한 비트 맵 이미지를 얻을 수 있다. 라운딩 처리 후의 스트로크 사이의 간격의 합계치를 산출하여 스트로크의 총수에서 1을 뺀 수와 비교하고, 합계치가 뺀 수보다 작을 때는 스트로크가 접촉하고 있다고 판정하여 일부의 스트로크의 선폭을 가늘게 하거나 소거하므로 간단한 연산으로 실현할 스트로크가 있고 문자 생성 속도를 그다지 저하시키지 않고도 실현할 수 있다.
또한, 라운딩 처리 후의 스트로크 간격을 조정하여 원래 문자에서의 스트로크 간격과 같게 함으로써 원래 문자의 디자인을 재현한 비트 맵 이미지를 얻을 수 있다. 라운딩 처리전의 스트로크 사이의 간격과 라운딩 처리 후의 스트로크 사이의 간격에서 각 간격의 변환 배율을 산출하여 최대의 배율과 최소의 배율과의 차가 작아지도록 복수의 스트로크 간격 사이의 스트로크의 좌표를 이동함으로써 스트로크 간격을 조정하므로 간단한 연산으로 실현할 수 있고 문자 생성 속도를 그다지 저하하지 않고도 실현이 가능하다.

Claims (23)

  1. 문자의 윤곽선을 좌표로 표현한 아웃라인 폰트 데이타에서 비트 맵 이미지를 생성하는 문자 생성 방법에 있어서, 상기 이웃라인 폰트 데이타를 지정된 사이즈의 좌표계의 좌표치로 변환하는 단계와; 상기 변환된 좌표치를 정수 좌표치에 라운딩 처리하는 단계와; 상기 라운딩 처리 후의 좌표에 있어서의 복수의 동일방향에 있는 스트로크간의 간격의 합계치를 산출하는 단계와; 상기 합계치와 상기 대상이 되는 스트로크 갯수에서 1을 뺀 수를 비교하는 단계와; 상기 합계치가 상기 뺀 수보다 작을 경우에 상기 대상이 되는 스트로크 중 소망하는 스트로크의 선폭을 조정하도록 상기 정수 좌표치를 변경하는 단계와; 상기 조정된 좌표치를 포함하는 상기 정수 좌표치를 전개하여 상기 비트 맵 이미지를 생성하는 단계를 포함하는 것을 특징으로 하는 문자 생성 방법.
  2. 제 1 항에 있어서, 상기 정수 좌표치를 변경하는 단계는 상기 소망하는 스트로크의 선폭을 가늘게 하도록 상기 정수 좌표치를 변경하는 것을 특징으로 하는 문자 생성 방법.
  3. 제 2 항에 있어서, 상기 정수 좌표치를 변경하는 단계는 상기 복수의 스트로크 중 가장 외측에 있는 스트로크를 제외한 스트로크이며 또한 해당 스트로크의 선폭이 2픽셀 이상인 스트로크의 선폭을 가늘게 하는 것을 특징으로 하는 문자 생성 방법.
  4. 제 1 항에 있어서, 상기 정수좌표치를 변경하는 단계는 상기 소망하는 스트로크를 소거하도록 상기 정수 좌표치를 변경하는 것을 특징으로 하는 문자 생성 방법.
  5. 제 1 항에 있어서, 상기 합계치를 산출하는 단계는 지정된 복수의 스트로크의 상기 라운딩 처리한 정수좌표치에서 스트로크 사이의 간격의 합계치를 산출하는 것을 특징으로 하는 문자 생성 방법.
  6. 제 5 항에 있어서, 상기 정수 좌표치를 변경하는 단계는 상기 합계치가 상기 뺀 수보다 작을 경우에 상기 지정된 복수의 스트로크 중 특정 스트로크의 선폭을 변경하는 것을 특징으로 하는 문자 생성 방법.
  7. 제 1 항에 있어서, 상기 비트 맵 이미지를 생성하는 단계는 상기 각 스트로크를 구성하는 복수의 파트의 아웃라인 폰트 데이타를 전개하여 상기 문자의 비트 맵 이미지를 생성하는 것을 특징으로 하는 문자 생성 방법.
  8. 제 2 항에 있어서, 상기 합계치를 산출하는 단계는 지정된 복수의 스트로크의 상기 라운딩 처리한 정수 좌표치에서 스트로크 사이의 간격의 합계치를 산출하는 것을 특징으로 하는 문자 생성 방법.
  9. 제 8 항에 있어서, 상기 정수 좌표치를 변경하는 단계는 상기 합계치가 상기 뺀 수보다 작을 경우에 상기 지정된 복수의 스트로크 중 특성 스트로크의 선폭을 변경하는 것을 특징으로 하는 문자 생성 방법.
  10. 제 4 항에 있어서, 상기 합계치를 산출하는 단계는 지정된 복수의 스트로크의 상기 라운딩 처리한 정수 좌표치에서 스트로크 사이의 간격의 합계치를 산출하는 것을 특징으로 하는 문자 생성 방법.
  11. 제 10 항에 있어서, 상기 정수 좌표치를 변경하는 단계는 상기 합계치가 상기 뺀 수보다 작을 경우에 상기 지정된 복수의 스트로크 중 특정 스트로크의 선폭을 변경하는 것을 특징으로 하는 문자 생성 방법.
  12. 문자의 윤곽선을 좌표로 표현한 아웃라인 폰트 데이타에서 비트 맵 이미지를 생성하는 문자 생성 장치에 있어서, 각 문자의 상기 아웃라인 폰트 데이타를 저장하는 폰트 메모리와; 상기 폰트 메모리에서 판독한 지정된 문자의 아웃라인 폰트 데이타를 지정된 사이즈의 좌표계의 좌표치를 변환한 다음, 상기 좌표치를 정수 좌표치에 라운딩 처리하여, 상기 라운딩 처리 후의 좌표치에서 문자의 스트로크들간에 접촉이 있는지를 검출하여 접촉이 있을 경우에 상기 정수 좌표치를 변경하여 상기 비트 맵 이미지를 생성하는 문자 전개 회로를 구비하는 것을 특징으로 하는 문자 생성 장치.
  13. 제 12 항에 있어서, 상기 문자 전개 회로는 상기 라운딩 처리 후의 좌표에 있어서의 복수의 동일방향에 있는 스트로크 사이의 간격의 합계치를 산출한 후, 상기 합계치와 상기 대상이 되는 스트로크의 개수에서 1을 뺀 수를 비교하여, 상기 합계치가 상기 뺀 수 보다 작을 경우에 상기 대상이 되는 스트로크 중 소망하는 스트로크의 선폭을 조정 처리한 뒤에, 상기 조정된 좌표치를 포함하는 상기 정수 좌표치를 전개하여 상기 비트 맵 이미지를 생성하는 것을 특징으로 하는 문자 생성 장치.
  14. 제 13 항에 있어서, 상기 문자 전개 회로는 상기 소망하는 스트로크의 선폭을 가늘게 하도록 상기 정수좌표치를 변경하는 것을 특징으로 하는 문자 생성 장치.
  15. 제 14 항에 있어서, 상기 문자 전개 회로는 상기 복수의 스트로크 중 가장 외측의 스트로크 이외의 스트로크이며 또한 해당 스트로크의 선폭이 2픽셀 이상인 스트로크의 선폭을 가늘게 하도록 상기 정수 좌표치를 변경하는 것을 특징으로 하는 문자 생성 장치.
  16. 제 13 항에 있어서, 상기 문자 전개 회로는 상기 소망하는 스트로크를 소거하도록 상기 정수 좌표치를 변경하는 것을 특징으로 하는 문자 생성 장치.
  17. 제 13 항에 있어서, 상기 폰트 메모리는 상기 문자에 대응하는 스트로크 데이타로서 상기 대상이 되는 스트로크를 지정하는 데이타를 저장하고; 상기 문자 전개 회로는 상기 지정된 복수의 스트로크의 상기 라운딩 처리한 정수 좌표치에 스트로크들간의 간격의 합계치를 산출하는 것을 특징으로 하는 문자 생성 장치.
  18. 제 17 항에 있어서, 상기 폰트 메모리는 상기 문자에 대응하는 스트로크 데이타로서 상기 조정될 스트로크를 지정하는 데이타를 저장하고; 상기 문자 전개 회로는 상기 정수 좌표치를 변경하기 위하여 상기 합계치가 상기 뺀 수보다 작을 경우에 상기 지정된 복수의 스트로크 중 특정 스트로크의 선폭을 변경하는 것을 특징으로 하는 문자 생성 장치.
  19. 제 13 항에 있어서, 상기 폰트 메모리는 상기 문자의 파트의 아웃라인 폰트 데이타와 각 문자의 파트 지정 데이타를 저장하고; 상기 문자 전개 회로는 지정된 문자의 파트 지정 데이타로 지정하는 아웃라인 폰트데이타를 추출하고, 상기 각 스트로크를 구성하는 복수의 파트의 아웃라인 폰트 데이타를 전개하여 상기 문자의 비트 맵 이미지를 생성하는 것을 특징으로 하는 문자 생성 장치.
  20. 제 14 항에 있어서, 상기 폰트 메모리는 상기 문자에 대응하는 스트로크 데이타로서 상기 대상이 되는 스트로크를 지정하는 데이타를 저장하고; 상기 문자 전개 회로는 상기 지정된 복수의 스트로크의 상기 라운딩 처리한 정수 좌표치에서 스트로크들간의 간격의 합계치를 산출하는 것을 특징으로 하는 문자 생성 장치.
  21. 제 20 항에 있어서, 상기 폰트 메모리는 상기 문자에 대응하는 스트로크 데이타로서 상기 조정될 스트로크를 지정하는 데이타를 저장하고; 상기 문자 전개 회로는 상기 정수 좌표치를 변경하기 위하여 상기 합계치가 상기 뺀 수보다 작을 경우에 상기 지정된 복수의 스트로크 중 지정된 스트로크의 선폭을 변경하는 것을 특징으로 하는 문자 생성 장치.
  22. 제 16 항에 있어서, 상기 폰트 메모리는 상기 문자에 대응하는 스트로크 데이타로서 상기 대상이 되는 스트로크를 지정하는 데이타를 저장하고; 상기 문자 전개 회로는 상기 지정된 복수의 스트로크의 상기 라운딩 처리한 정수 좌표치에서 스트로크들간의 간격의 합계치를 산출하는 것을 특징으로 하는 문자 생성 장치.
  23. 제 22 항에 있어서, 상기 폰트 메모리는 상기 문자에 대응하는 스트로크 데이타로서 상기 조정될 스트로크를 지정하는 데이타를 저장하고; 상기 문자 전개 회로는 상기 정수 좌표치를 변경하기 위하여 상기 합계치가 상기 뺀 수보다 작을 경우에 상기 지정된 복수의 스트로크 중 특정 스트로크의 선폭을 변경하는 것을 특징으로 하는 문자 생성 장치.
KR1019930026683A 1992-12-07 1993-12-07 문자 생성 방법 및 그 장치 KR0124961B1 (ko)

Priority Applications (1)

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

Applications Claiming Priority (4)

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 文字生成方法及びその装置

Related Child Applications (1)

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

Publications (2)

Publication Number Publication Date
KR940013853A KR940013853A (ko) 1994-07-16
KR0124961B1 true KR0124961B1 (ko) 1997-11-28

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 After (1)

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

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 アウトラインフォント展開方法およびアウトラインフォント展開装置
DE69533116T2 (de) 1994-07-29 2005-05-25 Nippon Telegraph And Telephone Corp. 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 广东宝莱特医用科技股份有限公司 一种热敏打印机自适应纸张打印的方法及系统
CN105835535B (zh) * 2015-04-03 2018-04-13 江苏浩宇电子科技有限公司 一种用于小型便携式写字机的笔画式书写方法
JP7009316B2 (ja) * 2018-06-20 2022-01-25 キヤノン株式会社 画像形成装置及びその画像形成方法、並びにプログラム
CN111949156B (zh) * 2020-07-10 2024-03-29 广州视源电子科技股份有限公司 书写装置的汉字书写测试方法及系统、书写装置
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
US11842429B2 (en) 2021-11-12 2023-12-12 Rockwell Collins, Inc. System and method for machine code subroutine creation and execution with indeterminate addresses
US11887222B2 (en) 2021-11-12 2024-01-30 Rockwell Collins, Inc. Conversion of filled areas to run length encoded vectors
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

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 ドットパターン補正方法
AU629210B2 (en) * 1988-10-26 1992-10-01 Sun Microsystems, Inc. Method and apparatus for minimizing the visual degradation of digital typefaces
US5274365A (en) * 1988-10-26 1993-12-28 Sun Microsystems, Inc. Method and apparatus for minimizing the visual degradation of digital typefaces-character analysis
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
KR940013853A (ko) 1994-07-16
US5526476A (en) 1996-06-11
CN1045835C (zh) 1999-10-20
KR19980078335A (ko) 1998-11-16
CN1090937A (zh) 1994-08-17
KR100209455B1 (ko) 1999-07-15

Similar Documents

Publication Publication Date Title
KR0124961B1 (ko) 문자 생성 방법 및 그 장치
US6016361A (en) Method and apparatus for compressing binary data using pattern matching encoding
EP0843275B1 (en) Pattern extraction apparatus and method for extracting patterns
US5878161A (en) Image processing using vector data to reduce noise
US5548700A (en) Editing text in an image
CN101452444B (zh) 手写体信息快速编辑排版方法
US6501475B1 (en) Glyph-based outline font generation independent of resolution
JPH03122773A (ja) 画像形成装置
US4573201A (en) Data processing method of binary graphic pattern and system therefor
US5404431A (en) Image drawing with improved area ratio approximation process
US5105471A (en) Apparatus for converting character outline data into dot data, having means for correcting reproduction width of strokes of rotated or italicized characters
KR0142161B1 (ko) 문자 생성 방법 및 장치
GB2115657A (en) Method of storing characters and photo-typsetting apparatus
US4853885A (en) Method of compressing character or pictorial image data using curve approximation
US5353359A (en) Methods for generating character pattern data and making image
JP3034140B2 (ja) 文字生成方法及びその装置
JP3149221B2 (ja) 画像処理装置
JP3034141B2 (ja) 文字生成方法及びその装置
US4993853A (en) Matrix character modification information unique to a given font
US5579406A (en) Apparatus and method for outline data processing
US6034702A (en) Character forming apparatus
JP2000076378A (ja) 文字認識方法
JPH05151388A (ja) 処理領域及び処理条件の指定方式
EP0454125B1 (en) Method of producing characters and figures using computer
JP2937607B2 (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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20030924

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee