KR100376196B1 - 아웃라인 스무딩 처리 방법, 장치 및 기억매체 - Google Patents

아웃라인 스무딩 처리 방법, 장치 및 기억매체 Download PDF

Info

Publication number
KR100376196B1
KR100376196B1 KR10-2000-0059074A KR20000059074A KR100376196B1 KR 100376196 B1 KR100376196 B1 KR 100376196B1 KR 20000059074 A KR20000059074 A KR 20000059074A KR 100376196 B1 KR100376196 B1 KR 100376196B1
Authority
KR
South Korea
Prior art keywords
vector
data
outline
dot
bitmap
Prior art date
Application number
KR10-2000-0059074A
Other languages
English (en)
Other versions
KR20010050918A (ko
Inventor
미야사카노리아키
야나기사와쉬게카주
오모토류지
Original Assignee
세이코 엡슨 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 세이코 엡슨 가부시키가이샤 filed Critical 세이코 엡슨 가부시키가이샤
Publication of KR20010050918A publication Critical patent/KR20010050918A/ko
Application granted granted Critical
Publication of KR100376196B1 publication Critical patent/KR100376196B1/ko

Links

Classifications

    • 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
    • B41J5/00Devices or arrangements for controlling character selection
    • B41J5/30Character or syllable selection controlled by recorded information
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/22Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
    • G09G5/24Generation of individual character patterns
    • G09G5/28Generation of individual character patterns for enhancement of character form, e.g. smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/109Font handling; Temporal or kinetic typography

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Dot-Matrix Printers And Others (AREA)
  • Image Processing (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

어떤 문자 폰트에 규정되는 문자를 도트 매트릭스 형상의 비트 맵 데이터로서 갖고, 해당 문자를 상기 비트 맵 데이터에 기초하여 표시하는 문자 출력 장치를 위한 방법이 제공된다. 상기 문자의 확대시, 그 비트 맵 데이터는 일단 벡터 데이터로 변환된다. 그리고, 상기 비트 맵 데이터의 경사 방향에서 인접하는 데이터 배열이 불연속으로 되는 부분을 포함하여, 상기 변환된 벡터의 시점에서 벡터 방향의 종점으로 향해 새로운 선긋기가 행해지며, 상기 새로운 선긋기에 의해 생성된 선의 내부가 도색되어 비트 맵 데이터가 재 생성된다.

Description

아웃라인 스무딩 처리 방법, 장치 및 기억매체{Outline smoothing method and system}
본 발명은 테이프 인쇄 장치, 워드프로세서나 퍼스널 컴퓨터에서 인쇄 장치 또는 표시 장치 등, 비트 맵 폰트를 갖는 문자 출력 장치에 이용하여 알맞은 아웃라인 스무딩 처리 방법 및 그 장치에 관한 것이다.
종래, 여러 가지 사이즈의 문자를 인쇄 또는 표시하는 방법에,
(1) 대상이 되는 문자 데이터를 전부 구비하는 방법,
(2) 비트 맵 폰트를 구비하고, 확대 축소하는 방법,
(3) 아웃라인 폰트를 구비하고, 확대 축소하는 방법
이 있었다.
그러나, (1)에 대해서는 데이터 량이 확대되어 현실적이지 못하다. (2)에 대해서는 (1)에 비해 인쇄 품질이 떨어지고, 그 결점을 해소하고자 한 경우에는 소프트웨어에 관한 부담이 크게 되어 그 처리에 시간을 요구한다.
구체적으로, 비트 맵 폰트를 구비하는 인쇄 장치에서, 인자 품질 향상을 위한 처리로서, 문자의 확대시에서의 「단차」의 평활화 처리가 있다. 여기에서, 「단차」란 비트 맵 데이터의 경사 방향으로 인접하는 도트 배열이 불연속으로 이루어지고, 문자 확대에 수반하여 붕괴가 발생하는 부분이다.
종래는 평활화를 위해 그 「단차」를 검출하고, 확대시에 그 「단차」를 채우도록 보정 도트를 추가하고 있었다.
그런데, 이 평활화 처리에서, 보정 도트를 많게 하면 문자의 윤곽이 붕괴되어 디자인이 손상되고, 또 보정 도트의 수를 작게 하면 요철이 남아, 확대율이 크게 될수록 보정을 위한 효과가 별로 얻어지지 않는 결점이 있었다.
한편, (3)에 대해서는 (2)에 비해 시스템 규모가 크게 되고, 또 데이터 량도 크게 되며, 예를 들면 테이프 인쇄 장치와 같은 비교적 규모가 작은 인쇄 장치에서는 처리 시간, 가격 중 어느 것을 희생하고 있었던 것이다.
본 발명의 목적은 확대율이 크게 되어도 아웃라인이 매끄러운 비트 맵 폰트의 문자 화상을 생성 가능하게 하는 아웃라인 스무딩 처리 방법, 장치 및 기억 매체를 제공하는 것이다.
상기의 목적을 달성하기 위해, 본 발명의 제 1 상태에 의하면, 도트 매트릭스 형상의 비트 맵 데이터에 의해 규정되는 비트 맵 폰트의 문자 화상의 아웃라인을 평활화하는 방법에 있어서,
상기 문자 화상의 확대시, 상기 비트 맵 데이터를 일단 벡터 데이터로 변환하는 단계와,
소정 수의 벡터 연쇄로서, 상기 비트 맵 데이터의 시작에서 종료까지의 사이에서 1 벡터씩 시프트 시키는 연쇄에 기초하여, 새로운 비트 맵 상에 선 긋기를 행하여 상기 확대 문자 화상의 아웃라인을 작성하는 단계와,
상기 선 긋기에 의해 생성된 아웃라인의 내부를 도트로 도색하여 상기 확대한 문자 화상을 표시하는 새로운 비트 맵 데이터를 생성하는 단계로 이루어지는 방법이 제공된다.
바람직하게는, 상기 선 긋기를 행하는 단계는
상기 벡터 데이터에 기초하여 기준이 되는 아웃라인 좌표를 구하는 단계와,
상기 소정 수의 벡터 연쇄에서 변화 패턴에 각각 대응하여 미리 정의되는 보정 데이터를 참조함으로써 상기 기준이 되는 아웃라인 좌표를 보정하여 보정 아웃라인 좌표로 하는 단계와,
상기 보정 아웃라인 좌표의 각 인접하는 것끼리의 사이를 선으로 연결하는 단계를 포함한다.
상기 목적을 달성하기 위해, 본 발명의 제 2 상태에 의하면, 도트 매트릭스 형상의 비트 맵 데이터에 의해 규정되는 비트 맵 폰트의 문자 화상의 아웃라인을 평활화하는 방법에 있어서,
상기 비트 맵 데이터를 미리 규정된 조건에 따라 각 도트가 벡터화 완료인지 여부를 표시하는 벡터화 완료 정보를 참조하면서 변환처의 벡터 데이터의 시작에 대응하는 상기 비트 맵 데이터의 시점의 좌표를 구하는 단계와,
상기 시점에서 시작하여 소정의 순서에 따라 대응하는 선행 도트의 다음에 위치하는 인접 도트의 방향을 결정하고, 상기 결정된 방향에 기초하여 상기 비트 맵 데이터가 표현하는 각 도트를 상하좌우 4 방향 중 어느 방향의 벡터로 변환함으로써, 상기 비트 맵 데이터를 직교 벡터 행렬로 변환함과 함께, 상기 벡터화 완료 정보를 갱신하는 단계와,
상기 직교 벡터 행렬의 소정 수의 벡터의 각 연쇄에 기초하여, 상기 직교 벡터 행렬의 벡터를 사선화 벡터로 변환할 때에 적용하기 위해 미리 상기 연쇄의 소정 패턴을 정의한 사선화 테이블을 참조함으로써, 상기 직교 벡터 행렬을 사선 벡터 행렬로 변환하는 단계와,
상기 시점과 상기 사선 벡터 행렬에 기초하여 비트 맵 좌표를 작성하고, 상기 비트 맵 좌표를 상기 사선 벡터 행렬의 소정수의 벡터 연쇄 패턴에 따라 각각으로부터 미리 도트 단위의 보정 량을 정의한 보정 데이터 테이블을 참조하여 보정함으로써 선 긋기 처리를 행하는 단계와,
상기 비트 맵 데이터의 시점의 좌표를 구하는 단계에 의해 새로운 시점이 이미 발견되지 않게 될 때까지 상기 각 단계를 반복하여 실행시킴으로써, 상기 선 긋기 처리의 결과를 표현하는 선 데이터를 발생하는 단계와,
상기 선 데이터에 기초하여 새로운 비트 맵 데이터를 생성하는 단계로 이루어지는 방법에 제공된다.
바람직하게는, 상기 선 긋기 처리를 행하는 단계는 상기 문자 화상의 아웃라인을 규정하는 데이터와 도색 처리에 의해 내측을 도트로 도색해야 할 선을 규정하는 데이터를 생성하는 단계를 포함하고,
상기 새로운 비트 맵 데이터를 생성하는 단계가,
상기 도색 처리를 행하는 단계와,
상기 도색 처리에 의해 얻어진 데이터를 상기 아웃라인을 규정하는 데이터와 중합시키는 단계와,
상기 벡터화에 의해 굵게 된 상기 문자 화상의 선 폭을 가늘게 하는 선폭 보정 처리를 행하는 단계로 이루어진다.
바람직하게는, 상기 시점의 좌표를 구하는 단계는 상기 비트 맵 데이터의 도트를 소정 방향으로 순차 스캔하고, 상기 벡터화 완료 정보에 의해 벡터화 완료인 것을 표시하지 않고, 또한 직전의 도트로부터의 변화를 표시하는 도트의 좌표를 상기 시점의 좌표로 결정하는 단계를 포함한다.
바람직하게는, 상기 비트 맵 데이터를 직교 벡터 행렬로 변환하는 단계가
상기 시점에 대응하는 벡터 값을 설정하고, 상기 벡터화 완료 정보를 상기 시점이 벡터화 완료라고 하도록 갱신하는 단계와,
벡터화하는 도트 위치를 벡터 방향의 다음 도트로 이동하는 단계와,
상기 다음 도트의 주변 도트를 조사하여 상기 다음 도트의 벡터 값을 결정하는 단계와,
상기 다음의 도트가 시점 후보로 될 수 있는 경우, 상기 도트가 벡터화 완료라고 하도록 상기 벡터화 완료 정보를 갱신하는 단계와,
상기 벡터화하는 도트 위치가 상기 시점으로 복귀할 때까지 상기 다음 도트로 이동하는 단계에서 상기 벡터화 완료 정보를 갱신하는 단계까지를 반복하는 단계를 포함한다.
바람직하게는, 상기 선 긋기 처리를 행하는 단계가,
상기 시점에 기초하여 미리 규정된 조건에 따라 보정전의 기준 아웃라인의 시점 좌표를 결정하고, 이후 전의 좌표 값에 그 좌표로부터의 상기 사선화 벡터 행렬의 벡터 값에 따른 이동량을 추가한 값을 다음의 좌표 위치로 함으로써, 기준 아웃라인 좌표를 설정하는 단계와,
상기 기준 아웃라인 좌표를 상기 보정 데이터 테이블을 참조하여 도트 단위로 보정하여 아웃라인 좌표를 생성하는 단계를 포함한다.
보다 바람직하게는, 상기 선 긋기 처리를 행하는 단계는
상기 아웃라인 좌표의 각 연속하는 2점 사이를 상기 아웃라인 좌표의 좌표계의 좌표축이 직교하는 2축 중 직선의 경사 대응하여 상기 직선이 보다 큰 좌표값의 변화를 표시하는 쪽을 기준 축으로서, 시점, 종점 및 상기 각 연속하는 2점 사이의 직선에 가장 가까운 정수값의 좌표 상의 보간점에 도트를 설정하여 연결함으로써, 상기 문자 화상의 아웃라인을 규정하는 데이터를 생성하는 단계와,
상기 아웃라인 좌표의 상기 각 연속하는 2점 사이를 상기 2축의 소정의 한쪽만을 기준 축으로서, 시점 및 상기 보간점에 도트를 설정하면서 연결함으로써, 내측을 도트로 도색하기 위한 선을 규정하는 데이터를 생성하는 단계를 더 포함한다.
보다 바람직하게는, 상기 도색은 처리에 의해 얻어진 데이터를 상기 아웃라인을 규정하는 데이터와 중합시키는 단계는 상기 아웃라인을 규정하는 데이터와 상기 도색 처리에 의해 얻어진 데이터의 논리 합 연산을 행하는 단계를 포함한다.
보다 바람직하게는, 상기 선폭 보정 처리를 행하는 단계는 상기 도색 처리에 의해 얻어진 데이터를 상기 아웃라인을 규정하는 데이터와 중합시킴으로써 얻어진 중합 비트 맵 데이터의 좌표를 종 방향으로 스캔하고, 현재 좌표 도트가 「흑색」에서, 다음 좌표 도트가 「백색」인 경우에 「백색」으로 하고, 횡 방향으로 상기 중합 비트 맵 데이터의 상기 좌표를 스캔하고, 현재 좌표 비트가 「흑색」이고 다음 좌표 도트가 「백색」인 경우에 「백색」으로 하며, 벡터화에 의해 종횡 각 방향으로 1 도트 폭 만큼 굵게 된 상기 문자 화상을 표시하는 상기 중합 비트 맵 데이터로부터 상기 1 비트 폭만큼을 각각 삭제하는 단계를 포함한다.
상기 목적을 달성하기 위해, 본 발명의 제 3 상태에 의하면,
비트 맵 폰트를 규정하는 도트 매트릭스 형상의 비트 맵 데이터를 기억하는 기억 장치와,
상기 비트 맵 폰트의 문자 확대시, 상기 비트 맵 데이터를 일단 벡터 데이터로 변환하고, 소정수의 벡터 연쇄로서 상기 비트 맵 데이터의 시작에서 종료까지의 사이에서 1 벡터씩 시프트 시키는 연쇄에 기초하여 새로운 비트 맵 상에 선 긋기를 행하여 상기 확대 문자 화상의 아웃라인을 작성하고, 그리고 상기 선 긋기에 의해 생성된 아웃라인의 내부를 도트로 도색하여 상기 확대한 문자 화상을 표현하는 새로운 비트 맵 데이터를 작성하는 폰트 가공 장치와,
상기 작성된 비트 맵 데이터를 인자 또는 표시하는 문자 출력 장치로 이루어지는 아웃라인 스무딩 처리 장치가 제공된다.
바람직하게는, 상기 폰트 가공 장치는 변환된 벡터 데이터에 기초하여 기준이 되는 아웃라인 좌표를 구하는 기준 아웃라인 연산부와,
상기 소정수의 벡터 연쇄에서 변화 패턴에 각각 대응하여 미리 정의되는 보정 데이터를 참조함으로써, 상기 기준이 되는 아웃라인 좌표를 보정하여 보정 아웃라인 좌표로 하고, 그리고 상기 보정 아웃라인 좌표의 각 인접하는 것끼리 사이를 선으로 연결하는 선분 생성부를 구비하여 이루어진다.
상기 목적을 달성하기 위해 본 발명의 제 4 상태에 의하면, 비트 맵 데이터에 기초해 인자 또는 표시하는 문자 출력 장치를 위한 아웃라인 스무딩 처리 장치에 있어서,
비트 맵 폰트를 규정하는 도트 매트릭스 형상의 비트 맵 데이터를 기억하는 기억 장치와,
상기 비트 맵 데이터를 미리 규정된 조건에 따라 각 도트가 벡터화 완료인지 여부를 표시하는 벡터화 완료 정보를 참조하면서 변환처의 벡터 데이터의 시작에 대응하는 비트 맵 데이터의 시점의 좌표를 구하는 시점 결정부와,
상기 시점으로부터 시작하여 소정의 순서에 따라 대응하는 선행 도트의 다음에 위치하는 인접 도트의 방향을 결정하고, 상기 결정된 방향에 기초하여 상기 비트 맵 데이터가 표시하는 각 도트를 상하좌우 4 방향 중 어느 방향의 벡터로 변환함으로써, 상기 비트 맵 데이터를 직교 벡터 행렬로 변환함과 함께, 상기 벡터화 완료 정보를 갱신하는 직교 벡터 추출부와,
상기 직교 벡터 행렬의 소정 수의 벡터 각 연쇄에 기초하여, 상기 직교 벡터 행렬의 벡터를 사선화 벡터로 변환할 때에 적용하기 위해 미리 상기 연쇄의 소정 패턴을 정의한 사선화 테이블을 참조함으로써 상기 직교 벡터 행렬을 사선 벡터 행렬로 변환하는 사선 벡터 변환부와,
상기 시점과 상기 사선 벡터 행렬에 기초하여 비트 맵 좌표를 작성하고, 상기 비트 맵 좌표를 상기 사선 벡터 행렬의 소정 수의 벡터 연쇄 패턴에 따라 각각으로부터 미리 도트 단위의 보정량을 정의한 보정 데이터 테이블을 참조하여 보정함으로써, 선 긋기 처리를 행하는 선 긋기 처리부와,
상기 비트 맵 데이터의 시점의 좌표를 구하는 단계에 의해 새로운 시점이 이미 발견되지 않게 될 때까지 상기 각부의 처리를 반복함으로써 생성된 상기 선 긋기 처리의 결과를 표현하는 선 데이터에 기초하여 새로운 비트 맵 데이터를 생성하는 비트 맵 데이터 생성부로 이루어지는 아웃라인 스무딩 처리 장치가 제공된다.
바람직하게는, 상기 선 긋기 처리부는 상기 문자 화상의 아웃라인을 규정하는 데이터를 생성하는 아웃라인 데이터 생성부와, 도색 처리에 의해 내측을 도트로 도색해야 할 선을 규정하는 데이터를 생성하는 도색 라인 데이터 생성부를 구비하고, 상기 비트 맵 데이터 생성부는 상기 도색 처리를 행하는 도색부, 상기 도색 처리에 의해 얻어진 데이터를 상기 아웃라인을 규정하는 데이터와 중합시키는 중합부, 및 상기 벡터화에 의해 굵게 된 상기 문자 화상의 선폭을 가늘게 하는 선폭 보정 처리를 행하는 선폭 보정부를 구비한다.
바람직하게는, 상기 보정 테이블은 복수의 비트 맵 폰트에 각각 준비되어, 상기 복수의 비트 맵 폰트의 선택된 것에 따라 선택적으로 사용되는 보정 데이터의 복수의 테이블의 집합체이다.
상기 목적을 달성하기 위해 본 발명의 제 5 상태에 의하면, 도트 매트릭스 형상의 비트 맵 데이터에 의해 규정되는 비트 맵 폰트의 문자 화상의 아웃라인을 평활화하는 방법을 실현할 수 있는 컴퓨터가 실행 가능한 프로그램을 격납한 기억 매체에 있어서,
상기 프로그램은,
상기 문자 화상의 확대시, 상기 비트 맵 데이터를 일단 벡터 데이터로 변환하는 벡터 데이터 생성 모듈과,
소정수의 벡터 연쇄로서, 상기 비트 맵 데이터의 개시에서 종료까지의 사이에서 1 벡터씩 시프트시키는 연쇄에 기초하여 새로운 비트 맵 상에 선 긋기를 행하여 상기 확대 문자 화상의 아웃라인을 작성하는 아웃라인 작성 모듈과,
상기 선 긋기에 의해 생성된 아웃라인의 내부를 도트로 도색하여 상기 확대한 문자 화상을 표현하는 새로운 비트 맵 데이터를 생성하는 비트 맵 생성 모듈로 이루어지는 기억 매체가 제공된다.
상기 목적을 달성하기 위해 본 발명의 제 6 상태에 의하면, 도트 매트릭스 형상의 비트 맵 데이터에 의해 규정되는 비트 맵 폰트의 문자 화상의 아웃라인을 평활화하는 방법을 실현할 수 있는 컴퓨터가 실행가능한 프로그램을 격납한 기억 매체에 있어서,
상기 프로그램이,
상기 비트 맵 데이터를 미리 규정된 조건에 따라 각 도트가 벡터화 완료인지 여부를 표시하는 벡터화 완료 정보를 참조하면서 변환처의 벡터 데이터의 시작에 대응하는 상기 비트 맵 데이터의 시점 좌표를 구하는 시점 결정 모듈과,
상기 시점에서 시작하여 소정의 순서에 따라 대응하는 선행 도트의 다음에 위치하는 인접 도트의 방향을 결정하고, 상기 결정된 방향에 기초하여 상기 비트 맵 데이터가 표시하는 각 도트를 상하좌우 4 방향 중 어느 방향의 벡터로 변환함으로써, 상기 비트 맵 데이터를 직교 벡터 행렬로 변환함과 함께, 상기 벡터화 완료 정보를 갱신하는 직교 벡터 추출 모듈과,
상기 직교 벡터 행렬의 소정 수 벡터의 각 연쇄에 기초하여, 상기 직교 벡터 행렬의 벡터를 사선화 벡터로 변환할 때에 적용하기 위해 미리 상기 연쇄의 소정 패턴을 정의한 사선화 테이블을 참조함으로써, 상기 직교 벡터 행렬을 사선 벡터 행렬로 변환하는 사선 벡터 변환 모듈과,
상기 시점과 상기 사선 벡터 행렬에 기초하여 비트 맵 좌표를 작성하고, 상기 비트 맵 좌표를 상기 사선 벡터 행렬의 소정 수의 벡터의 연쇄 패턴에 따라 각각으로부터 미리 도트 단위의 보정량을 정의한 보정 데이터 테이블을 참조하여 보정함으로써, 선 긋기 처리를 행하는 선 긋기 처리 모듈과,
상기 비트 맵 데이터의 시점의 좌표를 구하는 단계에 의해 새로운 시점이 이미 발견되지 않게 될 때까지 상기 각 단계를 반복하여 실행함으로써, 상기 선 긋기 처리의 결과를 표현하는 선 데이터를 생성하는 선 데이터 생성 모듈과,
상기 선 데이터에 기초하여 새로운 비트 맵 데이터를 생성하는 비트 맵 데이터 생성 모듈로 이루어지는 기억 매체가 제공된다.
본 발명의 아웃라인 스무딩 처리 방법, 그 장치 및 기억에 의하면, 폰트 메모리에 사용된 비트 맵 데이터가 일단 벡터 데이터로 치환되어, 벡터 데이터 상에서 평활화됨으로써, 확대율이 크게 되어도 아웃라인의 평활화한 문자 화상을 제공하는 비트 맵 데이터를 생성할 수 있다. 이 때문에, 비트 맵을 8 방향의 벡터(상하좌우 4방향과 경사 4 방향)로 표현하고, 6개 벡터의 연쇄 패턴으로부터 최적인 벡터 방향을 결정하며, 또 6개 벡터의 연쇄 패턴에서, 벡터로 표현되지 않은 1 도트 단위로 보정을 행한다.
본 발명에 의하면, 확대해도 품질이 좋은 인자 또는 표시가 가능한 외, 비트 맵 데이터를 사용하고 있기 때문에 압축이 가능하며, 산술 부호화에 의한 압축 알고리즘에 의해 문자 사이즈 등에도 좋지만, 예를 들면 40 % 정도의 압축이 가능하다. 통상, 아웃라인 폰트를 탑재하는 기기에서도 해상도가 낮은 작은 사이즈의 문자를 취급하는 경우, 인자 품질 열화 때문에, 비트 맵 데이터를 이용하여 인자하는 것이 있지만, 본 발명에 의하면 문자의 대소에 관계없이 동일 품질로 문자의 인쇄가 가능하게 되고, 또 메모리 용량의 절약도 가능하게 되는 것이다.
또, 본 발명에 의하면, 워드프로세서나 퍼스널 컴퓨터 등의 인쇄 장치, 표시 장치로의 적용은 물론이고, 테이프 인쇄 장치 등 비교적 장치 규모가 작은 기종에서도, 인자 품위, 처리 속도, 가격 중 어느 것도 특성으로 하지 않고, 문자 확대시에서의 평활한 아웃라인 스무딩 처리가 가능하게 된다.
본 발명의 전술 및 그 다른 목적, 특징 및 이점은 첨부한 도면에 기초하여 하기의 상세한 설명에 의해 한층 명확히 된다.
도 1은 본 발명의 실시 형태에 기초한 아웃라인 스무딩 처리법 및 그 장치가 적용되는 문자 출력 장치의 내부 구성을 도시하는 블럭도.
도 2는 도 1에서 제어부의 기능을 메모리 상에 전개하여 도시한 블럭도.
도 3a는 본 발명의 실시 형태에 관한 좌표와 비트 맵의 정의를 설명하기 위한 도면.
도 3b는 본 발명의 실시 형태에 관한 벡터의 정의를 설명하기 위한 도면.
도 3c는 상기 벡터의 정의를 표 형식으로 도시한 도면.
도 4는 상기 제어부에 의한 비트 맵 처리의 수순을 도시하는 플로우챠트.
도 5는 도 4에서 벡터의 시점 검색 처리의 구체적인 처리 수순을 도시하는 플로우챠트.
도 6은 도 4에서 직교 벡터로의 변환 처리의 구체적인 처리 수순을 도시하는 플로우챠트.
도 7은 도 4에서 사선 벡터로의 변환 처리의 구체적인 처리 수순을 도시하는 플로우챠트.
도 8은 도 4에서 선 긋기 처리의 구체적인 처리 수순을 도시하는 플로우챠트.
도 9는 도 4에서 도색 처리의 구체적인 처리 수순을 도시하는 플로우챠트.
도 10은 도 4에서 선 폭 보정 처리의 구체적인 처리 수순을 도시하는 플로우챠트.
도 11a 내지 도 11c는 시점 검색 결정의 예를 비트 맵 상에 전개하여 도시한 도면.
도 12는 벡터 시점 결정을 위한 조건과 벡터 값과의 관계를 표 형식(<표 1>)으로 도시한 도면.
도 13은 1개 전의 벡터와 검색 순위와의 관계를 표 형식(<표 2>)으로 도시한 도면.
도 14는 검색 방향 패턴과 조건, 벡터의 관계를 표 형식(<표 3>)으로 도시한 도면.
도 15는 벡터와 벡터화 위치와의 관계를 표 형식(<표 4>)으로 도시한 도면.
도 16a 및 도 16b는 직교 벡터화의 예를 비트 맵 상에 전개하여 도시한 도면.
도 17은 직교 벡터 행렬에서 연속하는 2개의 벡터 요소의 변화 방향을 표 형식(<표 5>)으로 도시한 도면.
도 18은 직교 벡터와 변환된 사선 벡터와의 관계를 표 형식(<표 6>)으로 도시한 도면.
도 19는 벡터 변환 조건을 표 형식(<표 7>)으로 도시한 도면.
도 20은 변환 조건을 벡터 패턴으로서 표 형식(<표 8>)으로 도시한 도면.
도 21은 사선화 판정 테이블의 내용을 도시한 도면.
도 22a 및 도 22b는 벡터 사선화의 예를 비트 맵 상에 전개하여 도시한 도면.
도 23은 벡터 값과 좌표 이동량과의 관계를 표 형식(<표 9>)으로 도시한 도면.
도 24는 벡터 값과 전회 좌표로부터의 이동량, 아웃라인 기준 좌표와의 관계를 표 형식(<표 10>)으로 도시한 도면.
도 25는 선 긋기 좌표를 표 형식(<표 11>)으로 도시한 도면.
도 26은 보정 데이터와 보정 방향의 관계를 표 형식(<표 12>)으로 도시한 도면.
도 27은 보정 방향과 좌표 이동량과의 관계를 표 형식(<표 13>)으로 도시한 도면.
도 28은 확대 배율과 보정 도트 수와의 관계를 표 형식(<표 14>)으로 도시한 도면.
도 29는 도트 보정의 예를 표 형식(<표 15>)으로 도시한 도면.
도 30은 도트 보정의 예를 표 형식(<표 16>)으로 도시한 도면.
도 31은 도트 보간을 설명하기 위해 예시한 그래프(<그래프 1>).
도 32는 보간점 군 연산 알고리즘을 리스트 형식(<리스트 1>)으로 도시하는 도면.
도 33은 보간점 군 연산 알고리즘을 리스트 형식(<리스트 2>)으로 도시하는 도면.
도 34는 보간점 군 연산 알고리즘을 리스트 형식(<리스트 3>)으로 도시하는 도면.
도 35는 보간점 군 연산 알고리즘을 리스트 형식(<리스트 4>)으로 도시하는 도면.
도 36은 도트 보간을 설명하기 위해 예시한 그래프(<그래프 2>).
도 37은 보간점 군 연산 알고리즘을 리스트 형식(<리스트 5>)으로 도시하는 도면.
도 38은 도트 보간을 설명하기 위해 예시한 그래프(<그래프 3>).
도 39는 도트 보간을 설명하기 위해 예시한 그래프(<그래프 4>).
도 40은 보간점 군 연산 알고리즘을 리스트 형식(<리스트 6>)으로 도시하는 도면.
도 41은 도트 보간을 설명하기 위해 예시한 그래프(<그래프 5>).
도 42는 스트로크 라인의 도색 알고리즘을 리스트 형식(<리스트 7>)으로 도시하는 도면.
도 43a 및 도 43b는 스트로크 라인을 이용한 도색을 설명하기 위해 예시한 그래프(<그래프 6>).
도 44a 및 도 44b는 스트로크 라인을 이용한 도색을 설명하기 위해 예시한 그래프(<그래프 7>).
도 45a 및 도 45b는 스트로크 라인을 이용한 도색을 설명하기 위해 예시한 그래프(<그래프 8>).
도 46a 및 도 46b는 X 스캔 선 긋기 처리를 이용한 도색을 설명하기 위해 예시한 그래프(<그래프 9>).
도 47은 필 라인의 보간점 군 발생 알고리즘을 리스트 형식(<리스트 8>)으로 도시하는 도면.
도 48a 및 도 48b는 필 라인 처리에 의한 도색을 설명하기 위해 예시한 그래프(<그래프 10>).
도 49는 필 라인 도색을 위한 알고리즘을 리스트 형식(<리스트 9>)으로 도시하는 도면.
도 50은 스트로크 영역과 필 영역의 중합을 그래프 표시한 동작 개념도.
도 51a ~ 51d는 큰 보정 예를 비트 맵 상에 전개하여 도시한 도면.
도 52a ~ 52d는 큰 보정의 예외 처리를 비트 맵 상에 전개하여 도시한 도면.
도 53a ~ 53c는 본 발명의 실시 형태에서 사용되는 벡터 정의의 더욱 상세한 예를 도시하는 도면.
* 도면 부호에 대한 간단한 설명 *
1 : 제어부
2 : 조작부
3 : 인자부
4 : 구동부
11 : CPU
12 : 프로그램 메모리
13 : 워크 RAM
14 : 문자 폰트 메모리
15 : 입출력 제어부
16 : 버스
111 : 시점 검색·결정부
112 : 직교 벡터 추출부
113 : 사선 벡터화 변환부
114 : 선 긋기 처리부
115 : 도색 처리부
116 : 선 폭 보정 처리부
이하, 도면을 참조하면서 본 발명의 한 실시 형태에 대해 상세히 설명한다.
도 1은 본 발명이 채용되는 문자 출력 장치의 내부 구성을 도시하는 블럭도이다. 본 발명의 실시 형태에서는 문자 출력 장치로서 테이프 인쇄 장치를 예시하여 설명한다. 테이프 인쇄 장치는 키 입력한 목표한 문자 등에 기초하여 작성한 인쇄 화상을 카트리지 내의 테이프에 열 방식으로 인쇄함과 함께 그 테이프 인쇄 부분을 절단하여 라벨을 작성하는 것이다.
도 1에 도시하는 바와 같이, 테이프 인쇄 장치는 기본적인 구성으로서 CPU를 제어 중추로 하는 제어부(1), 키보드나 디스플레이를 갖는 사용자와의 인터페이스로 이루어지는 조작부(2), 열 방식의 인쇄 헤드에 의해 테이프 카트리지에 있는 테이프에 인쇄를 행하는 인자부(3)로 이루어진다. 조작부(2)와 인자부(3)는 각종 드라이버를 내장하여 각부 회로를 구동하는 구동부(4)를 통해 제어부(1)에 접속된다. 조작부(2), 인자부(3), 구동부(4)에 대해서는 본 발명의 목적과는 직접 관계없기 때문에, 이 이상의 상세 설명은 생략한다.
제어부(1)는 CPU(11), 프로그램 메모리(12), 워크 RAM(13), 폰트 메모리(14), 입출력 제어부(15)로 구성되고, 이들 각 블럭(11, 12, 13, 14, 15)은 쌍방향의 내부 버스(16)를 통해 공통으로 접속된다. CPU(11)는 프로그램 메모리(12)에 격납된 후술하는 각 프로그램에 따라 워크 RAM(13)을 사용하여 본 발명의 아웃라인 스무딩 처리 장치로서 기능하는 외에, 테이프 인쇄 장치 전체를 제어한다.
워크 RAM(13)은 작업 영역으로서 사용되고, 프로그램에 의한 아웃라인 스무딩 처리의 경과 데이터가 그 때마다 기입된다. 폰트 메모리(14)에는 문자 등의 폰트 데이터가 도트 매트릭스 형상의 비트 맵 형식으로 격납되고, 문자 등을 특정하는 코드 데이터가 제공된 때에 대응하는 폰트 데이터를 출력한다.
입출력 제어부(10C : 15)는 CPU(11)의 기능을 보충함과 함께, 각종 주변 회로와의 인터페이스 신호를 취급하기 위한 논리 회로가 게이트 어레이나 커스텀 LSI 등에 의해 구성되어 조립되어 있다. 예를 들면, 키보드로부터의 각종 지령이나 입력 데이터 등을 그대로 또는 가공하여 내부 버스(16)로 받아들임과 함께, CPU(11)와 협동하여 CPU(11)에 의해 내부 버스(16)에 출력된 데이터나 제어 신호를 그대로 또는 가공하여 구동부(4)에 출력한다.
도 2는 도 1에 도시하는 제어부(1)가 갖는 기능을 메모리 상에 전개하여 도시한 도면이다. 전술한 바와 같이, 제어부(1)는 아웃라인 스무딩 처리 장치로서 기능하고, 여기에서는 문자의 가공시, 그 비트 맵 데이터를 일단 벡터 데이터로 변환하고, 비트 맵 데이터의 경사 방향으로 인접하는 데이터 배열이 불연속으로 이루어지는 부분을 포함하며, 벡터의 시점에서 그 벡터 방향의 종점을 향해 선 긋기를 행하여 도트 보정을 실시하고, 또한 내부를 도색하여 비트 맵 데이터를 재생성하여 인쇄 또는 표시 출력을 행하기 위한 제어를 행한다.
도 2에 도시하는 바와 같이, 본 발명의 아웃라인 스무딩 처리 장치(제어부(1))는 폰트 메모리(14)와, 폰트 가공 장치(CPU(11))와 문자 출력부(20)로 구성된다. 폰트 가공 장치(11)는 기능적으로 시점 검색· 결정부(111), 직교 벡터 추출부(112), 사선 벡터화 변환부(113), 선 긋기 처리부(114), 도색 처리부(115), 선 폭 보정 처리부(116)로 구성된다. 이들 각 처리부(111 ~ 116)는 후술하는 로직에 따른 프로그램에 의해 동작한다.
시점 검색·결정부(111)는 폰트 메모리(14)에 있는 비트 맵 데이터에 대해 미리 규정된 조건에 따라 벡터의 시점이 되는 좌표를 구하고, 직교 벡터 추출부(112)로 공급한다. 직교 벡터 추출부(112)는 시점 검색·결정부(111)에 의해 출력되는 시점 좌표에서 차례로 도트의 변화 방향을 조사하고, 상하좌우 4 방향의 직교 벡터 행렬로 변환함과 함께, 그 도트가 벡터화 완료인 것을 도시하는 벡터화 완료 정보(플래그 메모리(131))의 내용을 갱신한다.
사선 벡터 변환부(113)는 변환된 직교 벡터 행렬의 6개 벡터의 연쇄 패턴으로부터 미리 사선화해야 할 패턴이 정의되는 사선화 판정 테이블(132)의 내용을 참조하여 사선 벡터 행렬로 변환하여 선 긋기 처리부(114)로 공급한다.
선 긋기 처리부(114)는 확대 등 가공된 비트 맵 좌표에 대해 사선 벡터 행렬의 6개 벡터의 연쇄 패턴으로부터 미리 정의되는 보정 데이터를 참조하여 선 긋기를 행하는 좌표를 도트 단위로 보정하고, 보정된 아웃라인 좌표 사이를 선으로 연결한다. 선 긋기 처리부(114)는 변환된 벡터 행렬로부터 기준이 되는 아웃라인 좌표를 구하는 기준 아웃라인 연산부와, 연속한 벡터값의 패턴에 의해 미리 정의되는 보정 데이터가 정의되는 보정 테이블과, 상기 보정 테이블을 참조함으로써 상기 기준이 되는 아웃라인 좌표를 보정하고, 이 보정된 아웃라인 좌표 사이를 선으로 연결하는 선분 생성부를 구비하고 있다. 여기에서, 아웃라인 좌표로서, 외부 테두리용 선과 도색용 선의 2 종류가 생성된다.
도색 처리부(115)는 먼저 아웃라인 좌표 보정을 행함으로써 얻어지는 필 라인의 내측을 도색한 후, 폰트 외부 테두리가 묘화되어 있는 워크 메모리(13)의 아웃라인용 묘화 영역 및 필 라인용 묘화 영역(모두 비트 맵 영역(134))에 전개된 내용을 논리 합 연산하여 중합시키는 처리를 행한다.
선폭 보정 처리부(116)는 선 긋기 처리부(114)에 의해 생성된 비트 맵 데이터를 따라 정의하는 XY 양 방향으로 각각 1 도트만큼 삭제함으로써 벡터화에 의해 XY 방향으로 1 도트만큼 굵게 된 비트 맵의 선폭 보정을 행한다.
문자 출력부(20)는 인쇄를 위해 워크용 비트 맵 영역(134)으로부터 목표한 비트 맵을 판독하고 도트 전개하여 입출력 제어부(15), 구동부(4)를 통해 인자부(印字部 : 3)로 출력한다.
또, 전술한 각 처리부(111 ~ 116)의 상세한 로직은 플로우챠트를 사용하여 이후 상세히 설명한다.
본 발명의 동작 설명에 앞서, 이후에 설명하는 좌표와 비트 맵 데이터의 정의에 대해 도 3a 및 3b를 참조하면서 설명한다. 도 3a는 좌표와 비트 맵의 정의를 도시하고 있고, 도 3b 및 도 3c는 벡터의 정의를 도시하고 있다.
도 3a에 도시하는 바와 같이, 좌표 X와 Y를 정의하고, 이후에 좌표값을 표시하는 경우, X, Y로 표기한다. 또, 편의상, X축의 정 방향을 「우 」, 부 방향을 「좌 」, Y축 정 방향을 「하」, 부 방향을 「상」으로 표현한다. 비트 맵 데이터는 백색이 0 × 0(「0」을 C 언어의 16 진수 표기한 것), 흑색이 0 × 1(「1」을 C 언어의 16 진수 표기한 것)로 하고, 제공된 비트 맵 데이터의 좌표 외부(「0, -1」등)는 백색 (0 × 0)으로 한다.
벡터의 방향과 번호는 도 3b에서 도시하는 바와 같이 정의된다. 즉, 벡터는 상하좌우 0 ~ 7의 8 방향으로 표현되고, 따라서 도 3c에 도시하는 바와 같이 표기되는 것으로 한다. 또, 벡터의 1과 5, 3과 7은 1 문자로는 구별할 수 없기 때문에, 측면에 「'」 또는 「.」를 부착하여 구별하는 것으로 한다.
도 53a 내지 도 53c에 벡터 정의가 도시되어 있다. 도 53a에 도시되는 바와 같이, 벡터는 유향 선분 OP로 표현되고, 벡터를 굵게 표현하는 것이 일반적이지만, 여기에서는 ↑a로 표기된다. 또, 도 53b에 도시하는 바와 같이, X - Y 좌표 상의 벡터 ↑v는 기본 벡터 ↑i, ↑j를 사용하여 ↑v = x·↑i + y·↑i 로 표현된다. 여기에서는 간단히 ↑v로 표기한다. 또, 도 53c에 도시하는 바와 같이, 각 방향 벡터를 정의하고, 각각이 행렬로 치환된다. 이 각 벡터의 집합을 벡터 공간, 벡터 군이라 하고, ↑vct로 표기하는 것으로 한다.
각 방향 벡터에 대해, X축을 기준으로 한 회전 각도는 이하와 같이 된다.
∠(↑a) = 0, ∠(↑b) = π/4, ∠(↑c) = π/2,
∠(↑d) = 3π/4 , ∠(↑e) = π, ∠(↑f) = 5π/4,
∠(↑g) = 3π/2, ∠(↑h) = 7π/4
각 벡터 사이의 회전 각도는 상기 각 값의 감산으로 구해져,
∠(↑f - ↑d) = ∠(↑f) - ∠(↑d) = π/2가 된다.
여기에서, 회전 각도의 계산 등을 간단히 하기 위해, 각 벡터에 「심볼」로서, 0 ~ 7 숫자를 할당한다. 즉, 이하와 같이 할당된다.
↑a → "0" ↑b → "1" ↑c → "2" ↑d → "3" ↑e → "4"
↑f → "5" ↑g → "6" ↑h → "7"
이 경우, 전술한 ↑vct는 이하와 같이 된다.
↑vct = {↑a, ↑b, ↑c , ↑d, ↑e, ↑f , ↑g, ↑h}
= {0, 1, 2, 3, 4, 5, 6, 7}
벡터 군 ↑vct의 n번째의 벡터는 ↑vct[n]이라 표기하고, 예를 들면, ↑vct[2] = ↑c = "2"가 된다.
도 4는 본 발명의 실시 형태에 의한 처리와 데이터의 흐름을 플로우챠트로 도시한 것이다. 이하, 동작의 흐름을 개략 설명한다.
먼저, 시점 검색·결정부(111)는 문자 폰트 메모리(14)로부터 판독된 비트 맵 데이터에 대해, 벡터의 시점 후보가 되는 좌표를 구한다. 또, 그 비트 맵과 후술하는 벡터화 완료 정보로부터 새로운 벡터의 시점 좌표를 구하고, 그 시점 좌표를 다시 직교 벡터 추출부(112)로 도달한다(스텝 S41, S42).
직교 벡터 추출부(112)는 시점에서 비트 맵을 스캔하고, 상하좌우 4 방향의 직교 벡터 행렬로 치환함으로써 시점에서 1주만큼의 직교 벡터를 추출하고, 추출된 직교 벡터 행렬을 사선 벡터 변환부(113)로 넘긴다(스텝 S43). 사선 벡터 변환부(113)는 얻어진 직교 벡터 행렬의 6개 벡터의 연쇄 패턴으로부터 후술하는 사선화 판정 테이블(132)을 참조하고, 사선 벡터 행렬로 변환하며 선 긋기 처리부(114)에 처리를 위임한다(스텝 S44). 이 시점에서 상하좌우 4 방향으로 경사 4 방향을 추가한 8 방향의 벡터가 된다.
선 긋기 처리부(114)는 좌표를 보정하면서 아웃라인을 작성하는 것으로, 확대 가공한 비트 맵 좌표에 대해 벡터를 찾아 선을 그을 때, 얻어진 사선 벡터 행렬의 6개 벡터의 연쇄 패턴으로부터 후술하는 보정 테이블(113)을 참조하고, 선을 그은 좌표를 1 도트 단위로 보정한다(스텝 S45). 여기에서, 선을 외부 테두리용 선과 도색용 선의 2 종류를 작성하고, 이 선 데이터는 전체 시점에 대한 처리가 종료할 때까지 워크용 비트 맵 영역(134)에 유지된다. 이와 같이, 사선 벡터로부터 아웃라인 좌표에 보정을 추가하여 선 긋기를 행한다. 그리고, 다시 벡터 시점의 검색(스텝 S41)을 행하고, 새로운 시점이 없을 때까지 전술한 스텝 S41 ~ S45에 도시하는 처리를 반복하며, 도색 처리부(115)로 처리를 위임한다.
도색 처리부(115)는 선 긋기 처리부(114)에 의해 생성되는 도색용 선의 내부를 도색한 후, 외부 테두리용 선과 중합한다(스텝 S46). 선 폭 보정 처리부(116)는 벡터화에 의해 전체에 선 폭이 굵게 되기 때문에 종횡 1 도트선을 가늘게 하기 위한 처리를 행한다(스텝 S47).
이하, 벡터 시점의 검색(스텝 S41)에서 선 폭 보정 처리(스텝 S47)에 이르는 처리의 상세에 대해 도 5 ~ 도 10에 도시하는 상세 플로우챠트를 참조하면서 설명한다.
먼저, 시점 검색·결정부(111)에 의한 시점 검색·결정을 위한 처리(도 4에서의 스텝 S41, 42)로부터 설명한다.
도 5에, 시점 검색·결정을 위한 처리 수순이 플로우챠트로 도시되어 있다. 여기에서는, 먼저, 좌표 「0,0」에서 시점 검색을 개시한다(스텝 S411). 그리고, X 방향으로 좌표를 스캔하고, 1 도트씩 시점의 조건에 일치하는지 여부를 체크한다(스텝 S412).
시점의 조건으로서는 현재 좌표 위치 도트([x,y]가 흑색이고, 1 도트 전([x-1,y])이 백색이며, 플래그 메모리(131)에 설정되어 있는 벡터화 완료 정보의 대응하는 도트가 세트되어 있지 않고, 소위 아직 벡터가 완료하지 않은 도트를 시점으로 한다. 또, 플래그 메모리(131)에 설정되는 벡터화 완료 정보는 후술하는 직교 벡터 추출 처리(스텝 S43)에서 갱신된다. 초기값은 전부 클리어되어 있는 것으로 한다.
그리고, 전술한 시점 조건에 따른 도트를 시점으로 하고, 후술하는 직교 벡터의 추출 처리로 진행한다. 여기에서, 시점이 발견되면y를 +1(y가 끝의 좌표까지 도달하고 있을 때에는x를 +1,y= 0으로) 갱신하여(스텝 S413), 스텝 S411 이후의 처리를 반복한다.
시점 결정의 예에 대해, 도 11a ~ 11c에 도시하는 비트 맵을 참조하면서 설명한다. 도 11a는 1회째, 도 11b는 2회째, 도 11c는 3회째의 시점 검색의 경우에서 비트 맵과 벡터화 완료 정보의 각각을 도시하고 있다.
1회째의 검색에서는 플래그 메모리(131)에서의 벡터화 완료 정보가 전부 클리어되어 있기 때문에, 최초에 「백색 → 흑색」이 되고, 여기에서는 [6, 2]가 시점이 된다. 2회째의 검색의 경우, [6, 2]에 대한 직교 벡터화(도 16a 참조)에 의해, 「벡터화 완료 정보」가 갱신되어 있다(도 16b 참조). 「백색 → 흑색」이 되는 도트 [6, 3], [6. 4], [6, 5], [6, 6] 등은 벡터화 완료 정보가 세트되어 있기 때문에 시점으로 되지 않는다. 따라서, 조건에 일치하는 최초의 도트 [15, 5]가 시점이 된다. 3회째 검색의 경우, 1, 2회째의 직교 벡터화에 의해 「백색 → 흑색」이 되는 도트는 전부「벡터화 완료 정보」로서 플래그 메모리(131)에 세트된다. 따라서, 3회째 시점은 없다고 판단되고, 후술하는 도색 처리(스텝 S46)로 진행한다.
다음에, 직교 벡터 추출부(112)에 의한 직교 벡터로의 변환 처리(도 4 스텝 S42)에 대해 도 6을 참조하면서 상세히 설명한다. 도 6에 직교 벡터 변환 처리를 위한 수순이 플로우챠트로 상세히 도시되어 있다.
직교 벡터로의 변환 처리는 비트 맵을 직교 벡터값(→, ↓, ←, ↑의 4종)으로 변환하는 처리를 하고, 시점에서 차례로 도트의 변화 방향을 조사하여 벡터화된 데이터는 ↑VCT = [0, 0, 2, 4, ...]와 같은 행렬로 되어 위치 정보는 없어진다.
먼저, 시점의 벡터값을 구하고, 벡터화 정보를 세트한다(스텝 S431). 다음에, 벡터화하는 도트 위치를 시점에서 벡터 방향으로 이동(스텝 S432)하여 이동한 도트 위치의 주변 도트를 조사하며, 벡터값을 결정한다(스텝 S433). 그리고, 벡터화하는 도트 위치를 벡터 방향으로 이동하여(스텝 S434) 벡터화한 도트 위치가 시점 후보로 될 수 있는 경우(스텝 S435), 벡터화 완료 정보를 세트하고(스텝 S436), 그렇지 않으면 도트 위치의 이동 이후(스텝 S433 내지 S435)를 반복한다.
또, 시점의 벡터값의 결정은 도 12에 도시하는 <표 1>에 따라 결정하고, 도트 위치가 시점에서 벡터 방향으로 이동한다. 여기에서는, 현재 위치 도트에 대해 벡터값을 결정하는 것이고, 1개 전의 벡터 값에서 벡터 검색 방향 패턴 순서를 결정하며, 그 순서에 따라 각 벡터 검색 방향의 패턴 조건을 조사하며, 최초에 일치한 조건에 대응하는 값을 벡터값으로 하고 있다. 도 13에 1개 전의 벡터와 검색 순위의 관계가 도 14에 검색 방향 패턴과 조건, 벡터값과의 관계가 각각 <표 2> <표 3>으로서 도시되어 있다.
또, 검색 조건은 배타적이지 않고 벡터 0과 4 또는 2와 6이 결정되는 조건은 양립한다. 따라서, 검색 순서에 따라 처리를 진행하지 않으면 정확한 벡터는 얻어지지 않는다. 여기에서의 검색 순서는 벡터가 「좌로 회전하는 쪽을 우선」하도록 결정되어 있다.
그런데, 현재 위치 벡터값이 상방향 "6"인 경우, 상방향으로 이동한 도트는 시점 후보가 된다. 따라서, 시점의 검색 처리에서 이 도트는 제외할 필요가 있기 때문에, 플래그 메모리(131)에 「벡터화 완료 정보」로서 세트한다. 벡터 방향으로의 도트 이동은 도 15에 도시하는 <표 4>에 따른다. 다시 말하면, <표 4>에 따라 벡터화를 행하는 도트 좌표 위치를 이동한다. 그리고, 벡터화하는 도트 위치가 시점으로 복귀할 때까지 전술한 스텝 S432 내지 S436의 처리를 반복한다(스텝 S437).
도 16a, 도 16b를 참조하면서 직교 벡터화의 예를 설명한다. 대응하는 「벡터화 완료 정보」는 전술한 시점 검색의 예로서 도시하고, 도 16a는 1 회째의 시점 검색시, 도 16b는 2회째의 시점 검색시에서 각각의 직교 벡터 데이터, 직교 벡터 변환 종료시에서 「벡터화 완료 정보」가 도시되어 있다.
1회째는 시점 [6, 2], 직교 벡터 데이터 ↑VCT1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6], 2 회째는 시점 [15, 5], 직교 벡터 데이터 ↑VCT2 = [4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 6, 0, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 4, 6, 4, 6]이 된다.
다음에, 사선 벡터로의 변환부(113)에 의한 사선 벡터로의 변환 처리에 대해 설명한다. 도 7에 사선 벡터 변환을 위한 처리 수순이 플로우챠트로 도시되어 있다. 이하, 도 7에 도시하는 플로우챠트를 참조하면서 사선 벡터 변환 처리에 대해 상세히 설명한다.
여기에서, 직교 벡터 ↑VCT = {..., VCT[n-2], VCT[n-1], VCT[n], VCT[n+1], VCT[n+2], ...}에서, VCT[n-2]와 VCT[n-1]이나, VCT[n]과 VCT[n+1] 등의 연속하는 2개의 벡터 요소의 변화 방향에 대해, 도 17에 도시하는 <표 5>와 같이 정의한다.또, 동일 값인 경우에는 동일 방향으로 정의한다.
여기에서, 벡터 행렬의 최종 요소와 초기 요소는 연속하고 있는 것으로 한다. 예를 들면, 벡터 행렬 ↑VCT = {VCT[0], VCT[1],..., VCT[n-2], VCT[n-1], VCT[n]}에서, VCT[n]과 VCT[0]은 연속한 요구이다.
또, 직교 벡터 행렬 ↑VCT = {..., VCT[n-2], VCT[n-1], VCT[n], VCT[n+1], VCT[n+2], VCT[n+3]...}에서, VCT[n-2] = Vn2(2개 전의 직교 벡터), VCT[n-1] = Vn1(1개 전의 직교 벡터), VCT[n] = V0(현재 직교 벡터) , VCT[n+1] = V1(1개 앞의 직교 벡터), VCT[n+2] = V2(2개 앞의 직교 벡터), VCT[n+3] = V3(3개 앞의 직교 벡터)로 정의한다.
사선 벡터 변환부(113)는 연속하는 2개의 직교 벡터가 이하에 기술하는 소정의 조건에 따른 경우, 그것을 사선 벡터(우상(右上) 벡터, 우하(右下) 벡터, 좌하(左下) 벡터, 좌상(左上) 벡터)로 치환하는 기능을 갖는다. 치환 상태를 도 18에 <표 6>으로서 도시한다. 여기에서의 처리는 2 직교 벡터를 1 사선 벡터로 변환하기 때문에, 변환한 분만큼 벡터가 적게 된다.
변환 조건은 이하의 경우이다. 즉, 먼저 연속한 벡터 요소 Vn2 ~ V3에 대해 변화 방향을 조사하고, V0 → V1이 좌회전으로, 또한 각 벡터 요소의 변화가 도 19에 <표 7>로 표시하는 조건에 일치한 경우에 V0과 V1을 사선 벡터로 변환한다. 전술한 변환 조건을 V0 = 「↓」일 때의 벡터 패턴으로 한 것이 도 20에 <표 8>로서 도시하고 있다.
여기에서, 벡터 연산 방법에 대해 설명한다. 직교 벡터 추출부(112)에 의해 작성된 직교 벡터 행렬에 대해 사선화 조건을 조사하고, 새로운 사선화 벡터 행렬로 출력하는 것이다. 사선화된 벡터는 다음의 사선화 조건에는 영향을 미치지 않는다.
도 7에 도시하는 플로우챠트를 참조하면서 벡터 연산을 위한 처리의 흐름을 설명한다. 벡터 연산은 직교 벡터 행렬의 선두 위치에서 개시한다(스텝 S441). Vn2 ~ V2의 위치는 ↑VCT = {V0, V1, V2, ..., Vn2, Vn1}이 된다. 다음에, V0 → V1의 회전 방향을 조사한다(스텝 S442). 여기에서, 좌 회전하면 스텝 S444 이후의 처리로 진행하고, 좌 회전 이외의 경우, 현재 직교 벡터값 V0을 사선화 벡터값으로 하며, 검사하는 직교 벡터 행렬의 요소 위치를 다음의 벡터로 이동한다(스텝 S443).
예를 들면, Vn2 ~ V2의 위치는 ↑VCT = {V0, V1, V2, ..., Vn2, Vn1}에서 ↑VCT = {Vn1, V0, V1, V2, ..., Vn2}와 같이 1씩 시프트한다.
스텝 S444에서는 Vn2 ~ V3의 벡터의 변화 방향을 이하의 C 언어의 연산식 (1)에 의해 산출한다.
dr(V[n-1] → V[n]) =
(V[n] - V[n-1] + 10) AND 0 x 07 ...(1)
연산의 결과, "0"은 좌 회전, "2"는 동일 방향, "4"는 우 회전,"6"은 반대(불가능)를 의미한다.
다음에, 변화 방향을 현재 벡터의 전후로 분할하고, 이하의 연산식 (2), (3)에 따라 가중을 행한다(스텝 S445).
후 방향의 변화 가중 W1 =
{dr(V1-V2) x 3 + dr(V2 →V3)}/2 ...(2)
전 방향의 변화 가중 W2 =
{dr(Vn1-V0) x 3 + dr(Vn2 → Vn1)}/2 ...(3)
그리고, 이 w1, w2에 대한 사선화 판정 테이블(132)의 값을 조사한다(스텝 S446). 여기에서, 값을 조사하여(스텝 S447), "1"의 경우, 현재 벡터를 사선화하여 사선화 벡터 행렬로 들어간다. 연산 식은 이하의 (4)에 따른다.
사선화 벡터 값 = (현재 벡터값 + 0 x 07) AND 0 x 07 ...(4)
이것에 의해, "0"은 "7", "2"는 "1", "4"는 "3", "6"은 "5"로 변환된다. 또, 사선화 대상이 된 직교 벡터 배열 요소의 다음 요소는 사선화 벡터에 포함되기 때문에, 검사하는 직교 벡터 행렬의 요소 위치를 2개 이동한다(스텝 S448).
한편, 값이 "0"인 경우, 현재 직교 벡터값 V0을 사선화 벡터값으로 하고, 검사하는 직교 벡터 행렬의 요소 위치를 다음의 벡터로 이동한다(스텝 S449). 그리고, 직교 벡터 행렬의 선두 위치로 복귀할 때까지 전술한 스텝 S441 ~ 스텝 S449까지의 처리를 반복한다(스텝 S450).
또, 최종 벡터를 사선화한 경우의 시점의 이동 처리에 대해, 직교 벡터 행렬의 최후의 벡터와 선두 벡터가 사선화 대상이 된 경우(↑VCT = {V1, V2, ..., Vn2, Vn1, V0}에서 V0 - V1이 사선화되는 경우), 사선화 벡터 행렬로 들어간 선두 벡터를 삭제하고, 시점 좌표로부터 삭제한 선두 벡터 방향으로 이동한 좌표를 새로운 시점으로 한다.
사선화 판정 테이블(132)의 내용을 도 21에 도시한다. 사선화 판정 테이블(132)에는 전술한 바와 같이 가중 연산하여 얻어지는 w1, w2가 표시하는 값에 대해 사선화할지 여부의 데이터가 설정된다. 이 테이블 값을 변경함으로써 사선화하는 패턴을 변경할 수 있다.
벡터 사선화의 예에 대해, 도 22a, 도 22b를 참조하면서 설명한다. 도 22a에는 1회째의 시점 결정시, 도 22b에는 2회째의 시점 결정시에서의 사선화 벡터 데이터가 도시되어 있다.
도 22a에서는 시점은 [6, 2], 사선화 벡터 데이터는 ↑VCT1B = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 3, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,]이다.
도 22b에서는 초기 시점은 [15, 5], 사선화 벡터 데이터가 ↑VCT2B = [4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5]로 되어 있다.
여기에서는 최종 벡터와 선두 벡터가 사선화되어 삭제된 선두 벡터는 "4", 따라서, 시점은 [-1, 0] 이동하고, 신 시점은 [14, 5]로 된다.
다음에, 선 긋기 처리부(114)에 의한 도트 보정을 포함하는 선 긋기 처리(도 4에서의 스텝 S45)에 대해 설명한다. 여기에서, 선 긋기 처리는 아웃라인 좌표 보정을 위한 처리와, 보정에 의해 얻어지는 좌표간의 선 긋기까지의 처리를 포함하는 것으로 한다. 도 8에 선 긋기 처리를 위한 처리 수순이 플로우챠트로 도시되어 있다. 이하, 플로우챠트를 참조하면서 상세히 설명한다.
먼저, 아웃라인 좌표 보정을 위한 처리로부터 설명한다. 여기에서는 기준 비트 맵으로부터 추출된 사선화 벡터 행렬로부터, 벡터의 시점, 종점 좌표를 구하고, X 방향, Y 방향으로 확대한 새로운 비트 맵 영역(워크용 비트 맵(134))에 아웃라인(선)을 묘화한다. 벡터의 시점, 종점 좌표는 사선화 벡터 영역의 연속하는 6개 요소를 참조함으로써 1 도트 단위로 보정을 추가하는 것이다. 여기에서는 아웃라인으로서, 외부 테두리용 선과 도색용 선의 2 종류를 작성한다. 따라서, 확대 가공 처리를 위한 비트 맵 영역을 2개 필요로 한다.
먼저, 시점과 벡터값으로부터 기준이 되는 아웃라인 좌표를 결정한다(스텝 S451). 여기에서는 보정 데이터를 참조하기 전의 기준이 되는 아웃라인 좌표를 구하기 위해 연산을 행한다.
구체적으로는, X, Y 방향의 배율을 각각 BX, BY로 하고, 원래의 시점을 XO, Y0로 한 경우, 확대 가공 후의 시점 [X1, Y1]은 [BX x X0, BY x Y0]로 구한다. 이후의 기준 아웃라인 좌표의 연산은 전의 좌표(최초는 시점 좌표)의 값에 그 좌표로부터의 사선화 벡터값에 따른 이동량을 추가한 값을 다음의 좌표 위치로 한다. 사선화 벡터값과 이동량의 관계를 도 23에 <표 9>로서 도시한다.
아웃라인 기준 좌표의 예를 이하에 도시한다. 즉, 사선화 벡터 변환부(113)에 의해 작성된 사선화 벡터 행렬을, BX = 2, BY =3으로 확대한 아웃라인 좌표는 시점 좌표 [X0, Y0]을 [6, 2], 사선화 벡터 행렬 ↑VCT1B = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 3, 4, 3,4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]으로서 확대 후의 시점 좌표 [X1, Y1]은 [12, 6]이 되고, 시점 좌표 이후의 좌표 연산은 도 24에 <표 10>로 도시하도록 된다.
아웃라인으로부터 비트 맵 데이터를 얻기 위해서는 도 25에 <표 11>로서 도시하는 좌표 사이에 차례로 선 긋기를 행하게 된다. 그러나, 이것은 단순히 경사 선을 45도 방향으로 한 것뿐으로, 비트 맵 데이터는 매끄럽게 되지 않는다. 그래서, 이하에 설명하는 바와 같이, 각 좌표를 전후의 벡터 데이터를 참조함으로써, 1 도트 좌표 단위로 보정을 추가하여 보다 매끄러운 비트 맵 데이터가 되도록 되어 있다.
즉, 기준이 되는 아웃라인 좌표를 결정한 후, 스텝 S452 이후의 보정 데이터에 의한 기준 좌표의 보정 처리가 행해진다. 여기에서, 전술한 바와 같이 구해진 기준 아웃라인 좌표에 대해, 전후의 벡터값을 참조하여 보정 데이터에 의해 보정을 추가한 선 긋기용 아웃라인 좌표를 구한다. 보정에는 기준 좌표를 그대로 선 긋기용 좌표로 하는 「보정없음」과, 그 기준 좌표는 선 긋기에 사용되지 않고, 다음회 이후의 선 긋기 처리에 포함하는 「스킵」과, 기준 좌표에 대해 1 도트 단위로 좌표 위치를 이동하는 「도트 보정」의 3 종류가 있다. 또, 보정 데이터는 전후 벡터값의 패턴에 의해 개별로 결정된 값으로서 보정 테이블(133)에 그 값이 설정된다.
이하, 보정 데이터의 참조 방법에 대해 설명한다. 설명에 앞서, 현재 벡터와 그 주변 벡터를 이하와 같이 정의한다. 즉, 사선화 벡터 행렬 ↑VCTB = {...,VCTB[n-3], VCTB[n-2], VCTB[n-1], VCTB[n], VCTB[n+1], VCTB[n+2], ...}에서, 연속하는 6개의 벡터 요소, VCTB[n-3]을 Vn3(3개 전의 벡터), VCTB[n-2]를 Vn2(2개 전의 벡터), VCTB[n-1]을 Vn1(1개 전의 벡터), VCTB[n]을 V0(현재 벡터), VCTB[n+1]을 V1(1개 앞의 벡터), VCTB[n+2]를 V2(2개 앞의 벡터)로 정의한다.
이 경우, 먼저 현재 벡터 V0가 직교 벡터(0, 2, 4, 6)이 사선화 벡터(1, 3, 5, 7)를 조사한다. 직교 벡터의 경우, 플래그 a0을 "0"으로 하고, 사선 벡터의 경우, 플래그 a0을 "1"로 세트한다.
그리고, Vn2 ~ V3의 벡터 변화 방향을 이하의 연산식 (5)에 의해 연산한다(스텝 S452).
dr(V(n-1) → V(n)) =
(V(n) - V(n-1) + 10) AND 0 x 07 ...(5)
여기에서, dr의 연산 결과가 "0"일 때 좌 회전, "1"일 때 좌 45도 회전, "2"일 때 동일 방향, "3"일 때 우 45도 회전, "4"일 때 우 회전, "5"일 때 우 135도 회전(불가능), "6"일 때 반대(불가능), "7"일 때 좌 135도 회전(불가능)으로 한다.
다음에, 이하의 연산식 (6)에 의해, 현재 벡터에 대응하는 보정 데이터가 설정된 테이블(132)의 어드레스 addr를 산출한다(스텝 S453).
addr = 1250 x dr(V1 →V2) + 250 x dr(V0 →V1) +
125 x a0 + 25 x dr(Vn3 →Vn2) + 5 x dr(Vn1 →V0) ...(6)
그리고, 현재 벡터에 대응하는 보정 데이터를 보정 데이터 H의 addr 바이트째의 데이터로서 구한다. 여기에서 보정 데이터 H는 "0" ~ "8"의 9값을 갖는 것으로 한다. H가 "0"인 경우, 「보정없음」(스텝 S456), H가 "8"인 경우, 현재 벡터에 의해 결정된 기준 좌표는 선 긋기에 사용하지 않고, 다음 회 이후의 선 긋기 처리에 포함하는 「스킵」(스텝 S458), H가 "1" ~ "7"인 경우, 후술하는 아웃라인 좌표 보정 처리를 행하고 1 도트 단위로 좌표 위치를 보정한다. 보정 데이터 H와 보정 방향의 관계는 도 26에 <표 12>로서 도시되어 있다.
아웃라인 좌표 보정 처리 방법에 대해 설명한다. 보정의 방향 Hdr는 이하의 연산식 (7)을 연산함으로써 결정한다(스텝 S457)
Hdr = (H + V0 + 7) AND 7 ...(7)
그리고, 도 27에 도시하는 <표 13>에 따라 XY 방향의 보정 도트 수를 구한다(스텝 S459). 여기에서, HX, HY는 확대 배율마다 정하는 보정 도트 수이고, 보정 후에 인접하는 선과 연결되어 버리지 않도록 확대 배율의 1/2 이하로 한다. 도 28에 <표 14>로서 배율마다 보정 도트 수가 참고값으로서 도시되어 있다. 현재 벡터에 의해 확정된 기준 좌표에 대해 보정 도트 수만큼 이동한 좌표를 선 긋기용 좌표로 한다(스텝 S480).
또, 전술한 벡터 계산은 보정 데이터를 격납하고 있는 테이블(132)의 어드레스를 구하고 있는 것에 지나지 않고, 여기에서는 보정 데이터 그것은 계산할 수 없고, 연속한 벡터값의 패턴에 의해 개별적으로 보정 데이터를 결정해 두며, 그 보정 데이터의 집합체인 보정 테이블(132)을 참조하는 형식을 채용하고 있다. 이것은, 예를 들면 폰트 서체별로 보정 데이터를 교체함으로써 서체의 특징을 활용한 아웃라인 스무딩 처리를 가능하게 하는 것이다.
도트 보정의 예에 대해 2개 예시하여 설명한다.
도 29에 <표 15>로서 도시하는 예는, 시점 좌표 [X0, Y0]를 [6, 2], 사선화 벡터 행렬 ↑VCT1B = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 3, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6], X 방향 3배, Y 방향 4배의 확대 문자에 대해, X 방향 보정 도트값 "1", Y 방향 보정 도트값 "2"로 선 긋기하는 케이스를 예시하고 있다. 표 중, LINE{(X1, Y1) - (X2, Y2)}는 좌표 (X1, Y1) - (X2, Y2) 사이에 선을 긋기 위한 처리를 도시한다. 또, LINE SKIP은 선을 긋는 처리를 스킵하는 것을 표시한다.
도 30에 <표 16>으로서 도시하는 예는 시점 [14, 5], 사선화 벡터 데이터 ↑VCT2B = [4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5], X 방향 3배, Y 방향 4배의 확대 가공 문자에 대해, X 방향 보정 도트 값 "1", Y 방향 보정 도트값 "2"로 선 긋기하는 케이스를 예시하고 있다.
스텝 S480 이후의 선 긋기에 대해 상세히 설명한다. 여기에서, 어떤 선 긋기 처리는 기준의 비트 맵 데이터 사이즈에 X, Y 방향의 확대율을 곱한 사이즈의 데이터 영역을 2개 확보하고, 전술한 바와 같이 결정된 선 긋기용 좌표의 2점 사이에 외부 테두리용 선 및 도색용 선으로서 도트 보간하여 묘화하는 것이다. 여기에서는 외부 테두리용 선을 스트로크 라인, 외부 테두리용 묘화 영역을 스트로크 영역, 도색용 선을 필 라인, 도색용 묘화 영역을 필 영역이라 호칭하여 설명을 연속한다. 또, 선을 긋는 대상의 2점을 P1 = (X1, Y1), P2 = (X2, Y2)로 한다.
먼저, 스트로크 라인 처리부터 설명한다. 여기에서는, 스트로크 영역에 폰트 외부 테두리 선으로서 전술한 바와 같이 결정된 선 긋기용 좌표의 2점간에 도트를 보간하여 묘화한다. 이 때, 매끄러운 선을 얻기 위해, 선의 경사에 의해서는 기준 축을 교체하여(스텝 S482) 도트 보간한다.
구체적으로는, 선 긋기 기준 축 결정을 위해, X, Y의 변화량의 크기 쪽을 기준 축으로 하고, 2점 사이의 X, Y의 차분 △X = ABS(X2 - X1), △Y = ABS(Y2 - Y1)을 구하고, △X ≥ △Y일 때 X축 기준으로서 X 방향을 스캔하고, △X < △Y일 때 Y축을 기준으로서 Y 방향을 스캔한다. 여기에서, ABS는 절대값을 구하기 위한 함수이다.
X축 기준 선 긋기 처리(X 방향 스캔)에서, X1, X2를 비교하고, X 좌표의 작은 쪽에서 차례로 도트를 묘화한다. 여기에서, X1 ≥ X2일 때, P2 → P1순으로 묘화(개시점 PS = P2, 종료점 PE = P1)하고, X1 < X2일 때 P1 → P2의 순으로 묘화(개시점 PS = P1, 종료점 PE = P2)한다.
Y 축 기준 선 긋기 처리(Y 방향 스캔)에서, Y1, Y2를 비교하고, Y 좌표의 작은 쪽에서 선을 긋는다. 여기에서, Y1 ≥ Y2일 때, P2 → P1 순으로 묘화(개시점 PS = P2, 종료점 PE = P1)하고, Y1 < Y2일 때 P1 → P2의 순으로 묘화(개시점 PS = P2, 종료점 PE = P2)한다.
스트로크 라인 처리는 시점, 종점, 보간점 전체에 도트를 묘화하고, 묘화되는 도트는 스트로크 영역의 데이터와의 논리 합(OR) 연산한다(스텝 S483).
다음에, 필 라인 처리에 대해 설명한다. 여기에서는 필 영역에 폰트 도색용 선으로서 전술한 바와 같이 해서 결정된 선 긋기용 좌표의 2점 사이에 도트를 보간하여 묘화한다. 도트 보간을 위한 기준 축은 X 방향만으로 한다.
구체적으로, X축 기준 선 긋기 처리(X 방향 스캔)는 X1, X2를 비교하고, X 좌표의 작은 쪽에서 차례로 도트를 묘화한다(스텝 S484). X1 ≥ X2일 때에, P2 → P1 순으로 묘화(개시점 PS = P2, 종료점 PE = P1)하고, X1 < X2일 때 P1 → P2의 순으로 묘화(개시점 PS = P2, 종료점 PE = P2)한다. 필 라인 처리는 시점, 보간점에 도트를 묘화하고, 종점은 미처리로 한다. 또, 묘화되는 도트는 필 영역의 데이터로서의 배타적 논리합(XOR) 연산으로 한다(스텝 S485).
전술한 스트로크 라인, 필 라인 처리에서, 2점 사이에 직선을 묘화하는 알고리즘에 대해 도 31 ~ 도 41을 참조하면서 상세히 설명한다.
도 31에 도시하는 <그래프 1>에서, 2점 사이(도면 중 ★ 표시)에 직선을 긋는 경우, 그래프 상에 직선을 묘화하도록 메모리 상에 소수점 부착 값의 좌표에 도트를 묘화할 수 없다. 실제로는 도면 중, ●로 도시하는 바와 같이 2점 사이의 직선에 가장 가까운 정수값의 좌표 상에 도트를 보간하게 된다.
이와 같은 보간점 군은 도 32에 <리스트 1>로서 도시하는 알고리즘에 의해 차례로 구할 수 있다. 여기에서, 보간점 군은 (x+x1, y)로 표현된다. 다시 말하면, x가 1 스텝 카운트될 때마다, 소수점 부착의 좌표값을 가장 가까운 정수로 사사오입하는 연산(round 함수)을 행한다. 도 32에 도시하는 예에서는 정수로사사오입 함수 round를 사용했지만, 이것을 통상의 사칙 연산으로 치환하는 경우에는 도 33에 <리스트 2>로 표시하는 알고리즘이 얻어진다. 여기에서, 보간점 군은 (x, y)이다.
실제, 도 33에 도시하는 연산 식을 프로그램으로 실행하는 경우는 별도로 하드웨어로 실현하고자 한 경우, dy/dx의 나눗셈, 소수점 부착 변수 1, 1/2와의 비교 등을 포함하고 있는 것이 애로점이다. 이 때문에, 도 34 또는 도 35에 각각 <리스트 3> <리스트 4>로서 도시하는 바와 같이 알고리즘을 변형해 둔다. 도 32 ~ 35에 리스트 표시한 알고리즘에 대해서는 본 발명 요지와 직접 관계가 없기 때문에, 여기에서의 설명은 생략한다.
또, 이제까지의 설명은 dx > = dy로서 설명하였다. 이것은 x를 1 스텝 카운트 인크리먼트할 때마다 「y를 1 스텝 카운트 인크리먼트할지 여부」라는 판단을 하고 있기 때문이고, 증분 dy/dx가 1 스텝 카운트 이상으로 되는 경우에는 적용할 수 없다. 실험으로, dx < dy의 경우에서 실행해 보면, 도 36에 그래프 표시(<그래프 2>)하도록 되어 버린다(Y 좌표 정 방향 = 하 방향).
이것을 회피하기 위해서는 1과 dx와의 비교를 반복하는 처리로 변경하면 좋다. 이를 위한 알고리즘은 도 37에 <리스트 5>로서 도시하는 바와 같이 된다. 이 알고리즘에 의해, 증분 dy/dx가 1보다 큰 경우에도 도 38에 그래프 표시(<그래프 3>)하는 바와 같이 직선으로 가장 가까운 좌표점 군이 얻어진다.
그런데, dx < dy 경우의 처리는 전술한 알고리즘에서 문제없이 직선 생성이 가능하게 된다. 그러나, dx가 dy에 대해 보다 큰 값(경사가 급한 경우)은 도 39에 그래프 표시 (<그래프 4>)하도록 보간되는 도트가 매우 작게 되어버린다.
실제, 도색용 알고리즘으로서는 유용하다. 그러나, 폰트 외부 테두리를 얻기 위한 선 긋기로서 이용한 경우는 도 39에 도시하는 바와 같이, 도트가 조밀한 부분과 도트가 생긴 부분과 혼합되어 기형인 외형을 갖는 폰트는 되지 않는다.
선의 경사에 의하면, 보간점 군이 조밀하게 되도록 하려면 dx, dy의 대소에 의해 케이스 나눔을 행한다. dx<dy의 경우는 정확히 X축과 Y축을 교체하여 연산하도록 한 처리를 행한다. 다시 말하면, y를 1 스텝 카운트 인크리먼트할 때마다 x를 1 스텝 카운트 인크리먼트할지 여부의 판단을 행하고, 증분 dy/dx 또는 dx/dy를 1 이하로 정규화한다. 이 경우, 알고리즘은 도 40에 <리스트 6>으로서 도시하는 형태가 된다. 이 알고리즘에 의하면, 결과 도 41에 도시하는 바와 같이 그래프 표시(<그래프 5>)되고, 도트가 조밀하게 묘화된다.
이상 정리하면, 스트로크 라인(외부 테두리용 선 긋기)용 알고리즘은 이하와 같이 된다. 다시 말하면, dx > = dy인 경우, x를 1 스텝 카운트 인크리먼트할 때마다 y를 인크리먼트할지 여부를 판단하는 처리(X 스캔 선 긋기 처리)가 행해진다. dx < dy의 경우, y를 1 스텝 카운트 인크리먼트할 때마다 x를 인크리먼트할지 여부를 판단하는 처리(y 스캔 선 긋기 처리)가 행해져, 시점, 종점, 보간점은 스트로크 영역 데이터와 논리합(OR) 연산이 행해진다.
다음에, 스트로크 라인을 이용한 도색 처리에 대해 설명한다. 도색의 알고리즘은 도 42에 <리스트 7>로서 도시되는 바와 같이, Y 방향의 1개전의 도트와의 배타적 논리 합(XOR) 연산을 행함으로써 실현된다. 이것을 도 43a에 도시하는 도형(<그래프 6>)의 예에서 실행한 경우, 도 43b와 같이 되고 특히 문제는 발생하지 않는다.
다음에, 스트로크 라인 처리를 사용하여 묘화된 도 44a의 예(<그래프 7>)에서 실행한 경우, 결과는 도 44b와 같이 되고, 목적한 대로 도색이 행해지지 않는다. 동일한 도 45a에 도시하는 장방형(<그래프 8>)을 사용하여 실행한 경우, 도 45b와 같이 되고, 변 a-d, 변 b-c 사이의 도색이 목적한 대로 할 수 없다.
이들의 원인으로서, 도색 알고리즘이 1개의 점에서 1개의 점 사이를 채우는 처리를 목적으로 하는 것에 대해, 예를 들면 선분 A-C, B-C(도 44a), a-d, b-c(도 34a)가 도색 방향인 Y 방향으로부터 보아 1 도트 이상의 점으로 묘화되고 있기 때문이다.
선분 A-C, B-C가 1 도트 이상의 점으로 묘화되는 것은 그것이 Y 스캔 선 긋기처리로 묘화된 것이기 때문에, 그 문제를 해결하기 위해서는 선분의 경사에 관계없이, X 스캔 선 긋기 처리를 행하면 좋다.
좌표점 사이를 단순히 X 스캔 선 긋기 처리를 행한 예, 도 46a를 예시(<그래프 9>)하여 도색을 행한다. 이 경우, 도 46b에 도시하는 바와 같이, X 스캔, Y 스캔 선 긋기 처리를 겸용한 예보다 개선되었지만, 정점 A, B가 1 도트만이기 때문에, 도색 종점이 존재하지 않고, 선을 그어 버린다.
필 라인(도색용 선 긋기) 처리에 대해 설명한다. 도 46b에서, 점 A, B는 도형의 정점이고, 도색 종점을 묘화하는 것은 어렵다. 그 때문에, 정점 A, B에는 선 긋기 처리에서 흑색 점을 그리지 않고 백색 점으로 어긋나면 좋지만, 단순히 선 긋기 처리의 시점, 종점을 백색 점으로 하는 바와 같은 처리에서는 정점 C까지도 백색 점으로 되어버리며, 이번에는 점 C 이후에 선이 그려져 버린다.
그래서, 선 긋기 처리의 시점, 종점은 전회 또는 다음 회의 선 긋기로 중첩되고, 2회 처리되는 것을 이용하여 시점에서 종점의 1개전의 보간점 군에 대해서는 필 영역의 데이터와 배타적 논리 합 연산, 종점에 대해서는 미처리로 함으로써 정점을 백색 점으로 할 수 있다. 필 라인의 보간점 군 생성 알고리즘은 도 47에 리스트 형식으로 도시하도록 된다.
필 라인 처리에 의해 도 48a의 <그래프 10>에서 △도형(정점 A, B, C)은 이하의 수순에 따른다. 즉, 도 48a에서 필 라인 A-B 처리에서, A점에 흑색 점, B 점은 미처리(백색 점), 필 라인 C-B 처리로 C점에 흑색 점, B점은 미처리(백색 점), 필 라인 A-C 처리로 A점은 배타적 논리 합 연산으로 백색 점, C점은 미처리로 흑색점이 된다. 도 48a에 도시하는 △도형에 도색 처리를 실시하면 도 48b와 같이 된다.
필 라인(도색용 선 긋기) 알고리즘에 대해 정리하면 이하와 같이 된다. 즉, 2점 사이의 좌표 중, X 좌표가 작은 쪽을 개시점으로 한다. 그리고, x를 1 스캔 카운트 인크리먼트할 때마다, y를 인크리먼트할지 여부를 판단한다(X 스캔 선 긋기 처리). 시점, 보간점 군은 필 영역 데이터와 배타적 논리 합 연산을 실행한다. 종점은 미처리로 한다.
다음에, 도색 처리부(115)에 의한 도색 처리(도 4에서 스텝 S46)에 대해 설명한다. 도 9에 처리 수순이 플로우챠트로 도시되어 있다. 이하, 도 9에 도시하는 플로우챠트를 참조하면서 설명한다.
도색 처리부(115)에서는 선 긋기 처리부(114)에 의해 작성된 필 라인의 내측을 도색한다. 필 라인의 도색은 Y 방향의 1개전의 도트와 배타적 논리 합 연산 XOR을 실행하게 된다(스텝 S461). 알고리즘을 도 49에 리스트 형식(<리스트 9>)으로 도시한다.
스트로크 영역, 필 영역의 중합에 대해 설명한다. 여기에서는, 폰트 외부 테두리가 그려져 있는 스트로크 영역과, 도색 폰트가 그려져 있는 필 영역의 내용을 논리 합 연산함으로써 중합한다(스텝 S462). 이 상태는 도 50에 동작 개념도로서 도시되어 있다.
최후에, 선 폭 보정 처리부(116)에 의한 굵기 보정 처리(도 4에서의 스텝 S47)에 대해 설명한다. 도 10에 처리 수순이 플로우챠트로 도시되어 있다.
여기에서, 선 긋기 처리부(114)에 의해 작성된 비트 맵은 벡터화에 의해 X 방향, Y 방향과 함께 1 도트만큼 굵게 되어 버리기 때문에, 비트 맵을 X, Y 양 방향으로 각각 1 도트만큼 삭제하는 기능을 실행한다.
처리 방법에 대해 구체적으로 설명한다. 먼저, Y 방향으로 좌표를 스캔하고(스텝 S471), 도트 삭제의 조건을 조사하며(스텝 S472), 이하에 도시하는 조건의 도트를 「백색」으로 한다(스텝 S473). 여기에서, 도트 삭제의 조건은 현재 좌표 도트가 「흑색」, 다음 좌표 도트(= Y+1)가 「백색」이며, 좌표단의 도트에 대해서는 미처리로 한다.
다음에, X 방향으로 좌표를 스캔하고(스텝 S472), 도트 삭제의 조건을 조사하며(스텝 S472), 이하의 조건의 도트를 「백색」으로 한다(스텝 S473). 여기에서, 도트 삭제의 조건은 현재 좌표 도트가 「흑색」, 다음 좌표 도트( = X+1)가 「백색」이며, 좌표 단의 도트에 대해서는 미처리로 한다.
굵기 보정의 예에 대해, 도 51a ~ 51d에 도시하는 비트 맵을 참조하면서 설명한다.
도 51a에 도시하는 비트 맵 예에 대해, 아웃라인을 추출하여 확대한다. 여기에서는, 벡터 데이터 ↑VCT1 = [0, 0, 2, 2, 0, 0, 2, 2, 4, 4, 4, 4, 6, 6, 6, 6]으로 한다. 그리고, X 방향 2배, Y 방향 2배로서, 선 긋기, 도색, 중합 처리를 실행하면, 결과는 도 51b와 같이 되어 버린다.
도 51b는 X 방향 2배, Y 방향 2배로 확대하여 묘화한 때의 비트 맵이기 때문에, 도형의 크기는 본래 4 x 2의 8도트 만큼이어야 하지만, 벡터화한 경우, 도면과 같이 +1 도트만큼 굵게 되어 버린다. 여기에서, +1 도트는 이 예에 한정되지 않고, 또 확대율의 값에 의한 것은 아니고 일률적이다. 또, LINE{(X1,Y1)-(X2, Y2)}는 좌표 (X1, Y1)에서 좌표 (X2, Y2)로 향해 선분을 그은 처리를 도시한다.
이 때문에, 굵기 보정 처리를 행하지만, 이것에 한정되지 않고, Y 방향으로 좌표를 스캔하고, F[x, y] = 0 x 1(흑색), F[x, y+1] = 0 x 0(백색)의 경우, F[x, y] = 0 x 0(백색)으로 치환한다. 이것에 의해, 도 51c에 도시하는 비트 맵이 생성된다. 구체적으로, □로 표현되는 도트가 보정된다.
계속해서, X 방향으로 좌표를 스캔하고, F[x, y] = 0 x 1(흑색), F[x, y+1]= 0 x 0(백색)의 경우, F[x, y] = 0 x 0(백색)으로 치환한다. 이것에 의해, 도 51d에 도시하는 비트 맵이 생성된다. 구체적으로, ◇로 표현되는 도트가 보정된다. 이 크기 보정을 행한 결과, XY 방향으로 2배한 도형의 폭은 XY의 각각의 방향에서 본래의 4 x 2의 8 도트로 된다.
다음에, 굵기 보정의 예외 처리(스텝 S474)에 대해 도 52a ~52d에 도시하는 비트 맵을 참조하면서 설명한다. 기준의 비트 맵 데이터가 도 52a에 도시하는 바와 같이 24 x 24 도트 폰트 사이즈의 끝에 접하고 있는 경우에 대해 굵기 보정을 가하는 것이다.
X 방향 Y 방향 공히 2배로서, 선 긋기, 도색, 중합 처리를 실행하면 도 52b에 도시하는 바와 같은 비트 맵이 된다. 선 긋기 처리에서, 종점 좌표가 확대 후의 비트 맵 사이즈를 초과한 좌표는 묘화되지 않기 때문에, 도형의 크기는 1 도트만큼 크게 되는 개소와 아닌 개소가 존재한다.
단순히 굵기 보정 처리를 행하면 도 52c에 도시하는 비트 맵이 된다. 이 경우, 보정 처리 후의 도형은 XY 방향에서 1 도트 열만큼 작게 되어 버린다. 그래서, 확대후의 도형에서 비트 맵의 좌표 끝에 있는 도트에 대해 미처리하면, 도 52d에 도시하는 비트 맵이 얻어진다. 도 52c, 52d에서, □는 보정되는 도트를 표시한다.
또, 전술한 실시 형태의 아웃라인 스무딩 방법을 실현하는 소프트웨어의 프로그램 코드를 기록한 기억 매체를 시스템 또는 장치에 공급하고, 그 시스템 또는 장치의 컴퓨터(또는 CPU나 MPU)가 기억 매체에 격납된 프로그램 코드를 판독하여실행하는 것에 의해서도, 본 발명의 목적이 달성되는 것은 말할 필요도 없다.
이 경우, 기억 매체로부터 판독된 프로그램 코드 자체가 본 발명의 신규한 기능을 실현하게 되고, 그 프로그램 코드를 기억한 기억 매체는 본 발명을 구성하게 된다.
프로그램 코드를 공급하기 위한 기억 매체로서는, 예를 들면 플로피 디스크, 하드 디스크, 광 디스크, 광 자기 디스크, CD-ROM, CD-R, 자기 테이프, 불휘발성 메모리 카드, ROM 등을 이용할 수 있다. 또, 통신 네트워크를 통해 서버 컴퓨터로부터 프로그램 코드가 공급되도록 해도 좋다.
이상은 본 발명의 바람직한 실시 형태의 설명이고, 본 발명의 정신 및 범위를 벗어나지 않고 다양한 변경이 가능한 것은 당업자에는 이해될 수 있을 것이다.
본 발명의 아웃라인 스무딩 처리 방법, 장치 및 기억 매체는 확대율이 크게 되어도 아웃라인이 매끄러운 비트 맵 폰트의 문자 화상을 생성 가능하게 한다.

Claims (17)

  1. 도트 매트릭스 형상의 비트 맵 데이터에 의해 규정되는 비트 맵 폰트의 문자 화상의 아웃라인을 평활화하는 방법에 있어서,
    상기 문자 화상의 확대시, 상기 비트 맵 데이터를 일단 벡터 데이터로 변환하는 단계와;
    소정 수의 벡터 연쇄로서, 상기 비트 맵 데이터의 시작에서 종료까지의 사이에서 1 벡터씩 시프트시키는 연쇄에 기초하여, 새로운 비트 맵 상에 선 긋기를 행하여 상기 확대 문자 화상의 아웃라인을 작성하는 단계와;
    상기 선 긋기에 의해 생성된 아웃라인의 내부를 도트로 도색하여 상기 확대한 문자 화상을 표현하는 새로운 비트 맵 데이터를 생성하는 단계로 이루어지는 방법.
  2. 제 1 항에 있어서,
    상기 선 긋기를 행하는 단계는,
    상기 벡터 데이터에 기초하여 기준이 되는 아웃라인 좌표를 구하는 단계와,
    상기 소정 수의 벡터 연쇄에서 변화의 패턴에 각각 대응하여 미리 정의되는 보정 데이터를 참조함으로써 상기 기준이 되는 아웃라인 좌표를 보정하여 보정 아웃라인 좌표로 하는 단계와;
    상기 보정 아웃라인 좌표의 각 인접하는 것끼리의 사이를 선으로 연결하는 단계를 포함하는, 방법.
  3. 도트 매트릭스 형상의 비트 맵 데이터에 의해 규정되는 비트 맵 폰트의 문자 화상의 아웃라인을 평활화하는 방법에 있어서,
    상기 비트 맵 데이터를 미리 규정된 조건에 따라 각 도트가 벡터화 완료인지 여부를 표시하는 벡터화 완료 정보를 참조하면서 변환처의 벡터 데이터의 시작에 대응하는 상기 비트 맵 데이터의 시점의 좌표를 구하는 단계와;
    상기 시점에서 시작하여 소정의 순서에 따라 대응하는 선행 도트의 다음에 위치하는 인접 도트의 방향을 결정하고, 상기 결정된 방향에 기초하여 상기 비트 맵 데이터가 표현하는 각 도트를 상하좌우 4방향 중 어느 방향의 벡터로 변환함으로써, 상기 비트 맵 데이터를 직교 벡터 행렬로 변환함과 함께, 상기 벡터화 완료 정보를 갱신하는 단계와;
    상기 직교 벡터 행렬의 소정 수의 벡터의 각 연쇄에 기초하여, 상기 직교 벡터 행렬의 벡터를 사선화 벡터로 변환할 때에 적용하기 위해 미리 상기 연쇄의 소정 패턴을 정의한 사선화 테이블을 참조함으로써, 상기 직교 벡터 행렬을 사선 벡터 행렬로 변환하는 단계와;
    상기 시점과 상기 사선 벡터 행렬에 기초하여 비트 맵 좌표를 작성하고, 상기 비트 맵 좌표를 상기 사선 벡터 행렬의 소정수의 벡터 연쇄 패턴에 따라 각각으로부터 미리 도트 단위의 보정량을 정의한 보정 데이터 테이블을 참조하여 보정함으로써 선 긋기 처리를 행하는 단계와;
    상기 비트 맵 데이터의 시점의 좌표를 구하는 단계에 의해 새로운 시점이 이미 발견되지 않게 될 때까지 상기 각 단계를 반복하여 실행시킴으로써, 상기 선 긋기 처리의 결과를 표현하는 선 데이터를 발생하는 단계와;
    상기 선 데이터에 기초하여 새로운 비트 맵 데이터를 생성하는 단계로 이루어지는 방법.
  4. 제 3 항에 있어서,
    상기 선 긋기 처리를 행하는 단계는 상기 문자 화상의 아웃라인을 규정하는 데이터와 도색 처리에 의해 내측을 도트로 도색해야 할 선을 규정하는 데이터를 생성하는 단계를 포함하고,
    상기 새로운 비트 맵 데이터를 생성하는 단계는,
    상기 도색 처리를 행하는 단계와;
    상기 도색 처리에 의해 얻어진 데이터를 상기 아웃라인을 규정하는 데이터와 중합시키는 단계와,
    상기 벡터화에 의해 굵게 된 상기 문자 화상의 선 폭을 가늘게 하는 선폭 보정 처리를 행하는 단계로 이루어지는, 방법.
  5. 제 3 항에 있어서,
    상기 시점의 좌표를 구하는 단계는 상기 비트 맵 데이터의 도트를 소정 방향으로 순차 스캔하고, 상기 벡터화 완료 정보에 의해 벡터화 완료라는 것을 표시하지 않고, 또한 직전의 도트로부터의 변화를 표시하는 도트의 좌표를 상기 시점의 좌표로 결정하는 단계를 포함하는, 방법.
  6. 제 3 항에 있어서,
    상기 비트 맵 데이터를 직교 벡터 행렬로 변환하는 단계는,
    상기 시점에 대응하는 벡터값을 설정하고, 상기 벡터화 완료 정보를 상기 시점이 벡터화 완료라고 하도록 갱신하는 단계와;
    벡터화하는 도트 위치를 벡터 방향의 다음 도트로 이동하는 단계와;
    상기 다음 도트의 주변 도트를 조사하여 상기 다음 도트의 벡터값을 결정하는 단계와,
    상기 다음의 도트가 시점 후보로 될 수 있는 경우, 상기 도트가 벡터화 완료라고 하도록 상기 벡터화 완료 정보를 갱신하는 단계와;
    상기 벡터화하는 도트 위치가 상기 시점으로 복귀할 때까지 상기 다음 도트로 이동하는 단계에서 상기 벡터화 완료 정보를 갱신하는 단계까지를 반복하는 단계를 포함하는, 방법.
  7. 제 3 항에 있어서,
    상기 선 긋기 처리를 행하는 단계는,
    상기 시점에 기초하여 미리 규정된 조건에 따라 보정전의 기준 아웃라인의 시점 좌표를 결정하고, 이후, 전의 좌표값에 그 좌표로부터의 상기 사선화 벡터 행렬의 벡터값에 따른 이동량을 추가한 값을 다음의 좌표 위치로 함으로써, 기준 아웃라인 좌표를 설정하는 단계와;
    상기 기준 아웃라인 좌표를 상기 보정 데이터 테이블을 참조하여 도트 단위로 보정하여 아웃라인 좌표를 생성하는 단계를 포함하는, 방법.
  8. 제 7 항에 있어서,
    상기 선 긋기 처리를 행하는 단계는,
    상기 아웃라인 좌표의 각 연속하는 2점 사이를 상기 아웃라인 좌표의 좌표계의 좌표축의 직교하는 2축 중 직선의 경사에 대응하여 상기 직선이 보다 큰 좌표값의 변화를 표시하는 쪽을 기준 축으로서, 시점, 종점 및 상기 각 연속하는 2점 사이의 직선에 가장 가까운 정수값의 좌표 상의 보간점에 도트를 설정하여 연결함으로써, 상기 문자 화상의 아웃라인을 규정하는 데이터를 생성하는 단계와;
    상기 아웃라인 좌표의 상기 각 연속하는 2점 사이를 상기 2축의 소정의 한쪽만을 기준 축으로서, 시점 및 상기 보간점에 도트를 설정하면서 연결함으로써 내측을 도트로 도색하기 위한 선을 규정하는 데이터를 생성하는 단계를 더 포함하는, 방법.
  9. 제 4 항에 있어서,
    상기 도색 처리에 의해 얻어진 데이터를 상기 아웃라인을 규정하는 데이터와 중합시키는 단계는 상기 아웃라인을 규정하는 데이터와 상기 도색 처리에 의해 얻어진 데이터의 논리합 연산을 행하는 단계를 포함하는, 방법.
  10. 제 4 항에 있어서,
    상기 선폭 보정 처리를 행하는 단계는,
    상기 도색 처리에 의해 얻어진 데이터를 상기 아웃라인을 규정하는 데이터와 중합시킴으로써 얻어진 중합 비트 맵 데이터의 좌표를 종 방향으로 스캔하고, 현재 좌표 도트가 「흑색」이고 다음 좌표 도트가 「백색」인 경우에 「백색」으로 하고, 횡 방향으로 상기 중합 비트 맵 데이터의 상기 좌표를 스캔하고, 현재 좌표 비트가 「흑색」이고 다음 좌표 도트가 「백색」인 경우에 「백색」으로 하며, 벡터화에 의해 종횡 각 방향으로 1 도트 폭 만큼 굵게 된 상기 문자 화상을 표현하는 상기 중합 비트 맵 데이터로부터 상기 1 비트 폭 만큼을 각각 삭제하는 단계를 포함하는, 방법.
  11. 비트 맵 폰트를 규정하는 도트 매트릭스 형상의 비트 맵 데이터를 기억하는 기억 장치와;
    상기 비트 맵 폰트의 문자 확대시, 상기 비트 맵 데이터를 일단 벡터 데이터로 변환하고, 소정수의 벡터 연쇄로서 상기 비트 맵 데이터의 시작에서 종료까지의 사이에서 1 벡터씩 시프트시키는 연쇄에 기초하여 새로운 비트 맵 상에 선 긋기를 행하여 상기 확대 문자 화상의 아웃라인을 작성하고, 상기 선 긋기에 의해 생성된 아웃라인의 내부를 도트로 도색하여 상기 확대한 문자 화상을 표현하는 새로운 비트 맵 데이터를 작성하는 폰트 가공 장치와;
    상기 작성된 비트 맵 데이터를 인자 또는 표시하는 문자 출력 장치로 이루어지는 아웃라인 스무딩 처리 장치.
  12. 제 11 항에 있어서,
    상기 폰트 가공 장치는 변환된 벡터 데이터에 기초하여 기준이 되는 아웃라인 좌표를 구하는 기준 아웃라인 연산부와,
    상기 소정수의 벡터 연쇄에서 변화 패턴에 각각 대응하여 미리 정의되는 보정 데이터를 참조함으로써, 상기 기준이 되는 아웃라인 좌표를 보정하여 보정 아웃라인 좌표로 하고, 그리고 상기 보정 아웃라인 좌표의 각 인접하는 것끼리 사이를 선으로 연결하는 선분 생성부를 구비하여 이루어지는, 아웃라인 스무딩 처리 장치.
  13. 비트 맵 데이터에 기초해 인자 또는 표시하는 문자 출력 장치를 위한 아웃라인 스무딩 처리 장치에 있어서,
    비트 맵 폰트를 규정하는 도트 매트릭스 형상의 비트 맵 데이터를 기억하는 기억 장치와;
    상기 비트 맵 데이터를 미리 규정된 조건에 따라 각 도트가 벡터화 완료인지 여부를 표시하는 벡터화 완료 정보를 참조하면서 변환처의 벡터 데이터의 시작에 대응하는 상기 비트 맵 데이터의 시점의 좌표를 구하는 시점 결정부와;
    상기 시점으로부터 시작하여 소정의 순서에 따라 대응하는 선행 도트의 다음에 위치하는 인접 도트의 방향을 결정하고, 상기 결정된 방향에 기초하여 상기 비트 맵 데이터가 표현하는 각 도트를 상하좌우 4 방향 중 어느 방향의 벡터로 변환함으로써, 상기 비트 맵 데이터를 직교 벡터 행렬로 변환함과 함께, 상기 벡터화 완료 정보를 갱신하는 직교 벡터 추출부와;
    상기 직교 벡터 행렬의 소정수의 벡터의 각 연쇄에 기초하여, 상기 직교 벡터 행렬의 벡터를 사선화 벡터로 변환할 때에 적용하기 위해 미리 상기 연쇄의 소정 패턴을 정의한 사선화 테이블을 참조함으로써 상기 직교 벡터 행렬을 사선 벡터 행렬로 변환하는 사선 벡터 변환부와;
    상기 시점과 상기 사선 벡터 행렬에 기초하여 비트 맵 좌표를 작성하고, 상기 비트 맵 좌표를 상기 사선 벡터 행렬의 소정 수의 벡터 연쇄 패턴에 따라 각각으로부터 미리 도트 단위의 보정량을 정의한 보정 데이터 테이블을 참조하여 보정함으로써, 선 긋기 처리를 행하는 선 긋기 처리부와;
    상기 비트 맵 데이터의 시점의 좌표를 구하는 단계에 의해 새로운 시점이 이미 발견되지 않게 될 때까지 상기 각부의 처리를 반복함으로써 생성된 상기 선 긋기 처리의 결과를 표현하는 선 데이터에 기초하여 새로운 비트 맵 데이터를 생성하는 비트 맵 데이터 생성부로 이루어지는 아웃라인 스무딩 처리 장치.
  14. 제 13 항에 있어서,
    상기 선 긋기 처리부는, 상기 문자 화상의 아웃라인을 규정하는 데이터를 생성하는 아웃라인 데이터 생성부와, 도색 처리에 의해 내측을 도트로 도색해야 할 선을 규정하는 데이터를 생성하는 도색 라인 데이터 생성부를 구비하고,
    상기 비트 맵 데이터 생성부는, 상기 도색 처리를 행하는 도색부, 상기 도색 처리에 의해 얻어진 데이터를 상기 아웃라인을 규정하는 데이터와 중합시키는 중합부, 및 상기 벡터화에 의해 굵게 된 상기 문자 화상의 선폭을 가늘게 하는 선폭 보정 처리를 행하는 선폭 보정부를 구비하는, 아웃라인 스무딩 처리 장치.
  15. 제 13 항에 있어서,
    상기 보정 테이블은 복수의 비트 맵 폰트에 각각 준비되어, 상기 복수의 비트 맵 폰트의 선택된 것에 따라 선택적으로 사용되는 보정 데이터의 복수 테이블의 집합체인 아웃라인 스무딩 처리 장치.
  16. 도트 매트릭스 형상의 비트 맵 데이터에 의해 규정되는 비트 맵 폰트의 문자 화상의 아웃라인을 평활화하는 방법을 실현할 수 있는 컴퓨터가 실행 가능한 프로그램을 격납한 기억 매체에 있어서,
    상기 프로그램은,
    상기 문자 화상의 확대시, 상기 비트 맵 데이터를 일단 벡터 데이터로 변환하는 벡터 데이터 생성 모듈;
    소정수의 벡터 연쇄로서, 상기 비트 맵 데이터의 시작에서 종료까지의 사이에서 1 벡터씩 시프트시키는 연쇄에 기초하여 새로운 비트 맵 상에 선 긋기를 행하여 상기 확대 문자 화상의 아웃라인을 작성하는 아웃라인 작성 모듈과;
    상기 선 긋기에 의해 생성된 아웃라인의 내부를 도트로 도색하여 상기 확대한 문자 화상을 표현하는 새로운 비트 맵 데이터를 생성하는 비트 맵 생성 모듈로 이루어지는 기억 매체.
  17. 도트 매트릭스 형상의 비트 맵 데이터에 의해 규정되는 비트 맵 폰트의 문자 화상의 아웃라인을 평활화하는 방법을 실현할 수 있는 컴퓨터가 실행 가능한 프로그램을 격납한 기억 매체에 있어서,
    상기 프로그램은,
    상기 비트 맵 데이터를 미리 규정된 조건에 따라 각 도트가 벡터화 완료인지 여부를 표시하는 벡터화 완료 정보를 참조하면서 변환처의 벡터 데이터의 시작에 대응하는 상기 비트 맵 데이터의 시점의 좌표를 구하는 시점 결정 모듈과;
    상기 시점에서 시작하여 소정의 순서에 따라 대응하는 선행 도트의 다음에 위치하는 인접 도트의 방향을 결정하고, 상기 결정된 방향에 기초하여 상기 비트 맵 데이터가 표현하는 각 도트를 상하좌우 4 방향 중 어느 방향의 벡터로 변환함으로써, 상기 비트 맵 데이터를 직교 벡터 행렬로 변환함과 함께, 상기 벡터화 완료 정보를 갱신하는 직교 벡터 추출 모듈과;
    상기 직교 벡터 행렬의 소정 수의 벡터의 각 연쇄에 기초하여, 상기 직교 벡터 행렬의 벡터를 사선화 벡터로 변환할 때에 적용하기 위해 미리 상기 연쇄의 소정 패턴을 정의한 사선화 테이블을 참조함으로써, 상기 직교 벡터 행렬을 사선 벡터 행렬로 변환하는 사선 벡터 변환 모듈과;
    상기 시점과 상기 사선 벡터 행렬에 기초하여 비트 맵 좌표를 작성하고, 상기 비트 맵 좌표를 상기 사선 벡터 행렬의 소정수의 벡터의 연쇄 패턴에 따라 각각으로부터 미리 도트 단위의 보정량을 정의한 보정 데이터 테이블을 참조하여 보정함으로써, 선 긋기 처리를 행하는 선 긋기 처리 모듈과;
    상기 비트 맵 데이터의 시점의 좌표를 구하는 단계에 의해 새로운 시점이 이미 발견되지 않게 될 때까지 상기 각 단계를 반복하여 실행시킴으로써, 상기 선 긋기 처리의 결과를 표현하는 선 데이터를 생성하는 선 데이터 생성 모듈과;
    상기 선 데이터에 기초하여 새로운 비트 맵 데이터를 생성하는 비트 맵 데이 생성 모듈로 이루어지는 기억 매체.
KR10-2000-0059074A 1999-10-07 2000-10-07 아웃라인 스무딩 처리 방법, 장치 및 기억매체 KR100376196B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP28721899A JP3791259B2 (ja) 1999-10-07 1999-10-07 アウトラインスムージング処理方法
JP99-287218 1999-10-07

Publications (2)

Publication Number Publication Date
KR20010050918A KR20010050918A (ko) 2001-06-25
KR100376196B1 true KR100376196B1 (ko) 2003-03-15

Family

ID=17714582

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0059074A KR100376196B1 (ko) 1999-10-07 2000-10-07 아웃라인 스무딩 처리 방법, 장치 및 기억매체

Country Status (6)

Country Link
US (1) US6753862B1 (ko)
JP (1) JP3791259B2 (ko)
KR (1) KR100376196B1 (ko)
CN (1) CN1160667C (ko)
HK (1) HK1036865A1 (ko)
TW (1) TW509888B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007531078A (ja) * 2003-07-16 2007-11-01 ハンヤン ハク ウォン カンパニー,リミテッド 3次元メッシュ情報の符号化及び復号化方法並びにその装置
CN100377578C (zh) * 2005-08-02 2008-03-26 北京北大方正电子有限公司 一种电视字幕文字的处理方法
US7636097B1 (en) * 2006-02-15 2009-12-22 Adobe Systems Incorporated Methods and apparatus for tracing image data
US7778492B2 (en) * 2006-04-04 2010-08-17 Oldford Group Limited System and method for scaling digital images
CN101221386A (zh) * 2007-01-08 2008-07-16 三星电子株式会社 成像设备及其成像方法
US8384917B2 (en) * 2010-02-15 2013-02-26 International Business Machines Corporation Font reproduction in electronic documents
CN101908216B (zh) * 2010-07-20 2014-04-30 中兴通讯股份有限公司 一种实现矢量字体的方法及装置
CN101957998B (zh) * 2010-10-09 2012-07-04 深圳市布易科技有限公司 把位图表达的图转为矢量阴影线表达的图的方法和装置
CN102637195A (zh) * 2012-02-27 2012-08-15 王涛 一种基于矢量图形播放的终端系统及其实现方法
CN107292936B (zh) * 2017-05-18 2020-08-11 湖南大学 一种汉字字体矢量化方法
CN110996026B (zh) * 2019-12-18 2022-05-24 普联技术有限公司 一种osd显示方法、装置、设备及存储介质
JP7432418B2 (ja) * 2020-03-26 2024-02-16 株式会社オーク製作所 露光装置および露光方法
CN111797843B (zh) * 2020-07-10 2022-10-11 济南中正金码科技有限公司 一种激光标刻汉字轮廓的提取方法、系统、存储介质及设备
US11915071B1 (en) * 2022-10-26 2024-02-27 Kyocera Document Solutions Inc. Caching outline characters in printed documents

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60113289A (ja) * 1983-11-25 1985-06-19 セイコーインスツルメンツ株式会社 図形表示装置用ライン・スム−ジング回路
US4777651A (en) * 1984-06-25 1988-10-11 Tektronix, Inc. Method of pixel to vector conversion in an automatic picture coding system
US5027304A (en) * 1987-10-02 1991-06-25 Telecommunication Laboratories, Directorate General of Telecommunications , Ministry of Communications Character multifont compression and restoration device
JPH0832471B2 (ja) * 1988-08-31 1996-03-29 キヤノン株式会社 出力方法
US5475807A (en) * 1988-12-19 1995-12-12 Canon Kabushiki Kaisha Character processing apparatus
JP2935510B2 (ja) * 1989-09-26 1999-08-16 キヤノン株式会社 出力装置及び出力方法
JPH03233689A (ja) * 1990-02-09 1991-10-17 Fuji Xerox Co Ltd アウトラインデータ描画装置
US5233685A (en) * 1990-06-12 1993-08-03 Wordperfect Corporation Method and apparatus for integrated graphical and textual character printing
JP2980732B2 (ja) 1991-07-05 1999-11-22 沖電気工業株式会社 アウトラインフォントの生成方法
US5301267A (en) * 1991-09-27 1994-04-05 Adobe Systems Incorporated Intelligent font rendering co-processor
US5428728A (en) * 1991-09-30 1995-06-27 Destiny Technology Corporation Method and apparatus for outline font character generation in dot matrix devices
JP2990671B2 (ja) 1992-05-30 1999-12-13 京セラ株式会社 画像平滑化処理方式
JP2959612B2 (ja) 1994-02-14 1999-10-06 キヤノン株式会社 ドットパターンからのベクトル座標発生方法及び装置
US5600772A (en) * 1994-08-17 1997-02-04 Printronix, Inc. Bit map character convertor using chain-codes for the character filling process
US6226400B1 (en) * 1998-06-24 2001-05-01 Colorcom, Ltd. Defining color borders in a raster image by identifying and breaking contrast ties
US6504543B1 (en) * 1999-01-06 2003-01-07 Matsushita Electric Industrial Co., Ltd. Polygon drawing method and polygon drawing apparatus

Also Published As

Publication number Publication date
CN1295309A (zh) 2001-05-16
JP2001109455A (ja) 2001-04-20
CN1160667C (zh) 2004-08-04
HK1036865A1 (en) 2002-01-18
US6753862B1 (en) 2004-06-22
JP3791259B2 (ja) 2006-06-28
TW509888B (en) 2002-11-11
KR20010050918A (ko) 2001-06-25

Similar Documents

Publication Publication Date Title
KR100376196B1 (ko) 아웃라인 스무딩 처리 방법, 장치 및 기억매체
US7262774B2 (en) Character image generating apparatus, character image generating method, display control apparatus, display control method and computer-readable recording medium recorded character image generation program or display control program thereon
US20090091574A1 (en) Rendering device, image output device, and program
JP3037854B2 (ja) 文字生成方法及びその装置
EP0356262B1 (en) Image processing apparatus
US5526474A (en) Image drawing with improved process for area ratio of pixel
JPH01296389A (ja) 図形処理方法及びその装置
WO2005004105A1 (ja) 文字表示装置、 文字表示方法、 文字表示プログラムおよび記録媒体
US6927780B2 (en) Fast text/graphics resolution improvement with chain-code table look-up
US5553219A (en) Font outline and bit map generator synthesizing filling data with selected outline data or duplicate outline data
US6538756B1 (en) Information processing apparatus and recording medium with pattern generation programs recorded thereon
US5542050A (en) Font information transfer system
US20070188498A1 (en) Character generation processing method
KR100361387B1 (ko) 다각형 묘화 방법, 및 다각형 묘화 장치
JP3034140B2 (ja) 文字生成方法及びその装置
JPH11109943A (ja) フォント処理装置およびフォント処理用プログラムを記録した記録媒体
JP3191409B2 (ja) フォントデータ生成装置
JP2000066658A (ja) 画像処理装置および記録媒体
JP3070822B2 (ja) 輪郭線データ変換装置
JP3294249B2 (ja) 画像処理装置
JPH10222146A (ja) 文字表示装置と表示方法及びフォント情報
JPH0668247A (ja) ディジタル画像データ変倍方法および装置
JP2637921B2 (ja) 文字記号発生装置
JP3072756B2 (ja) 描画装置
JP3099556B2 (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: 20130227

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20140220

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20150224

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee