JPH11198465A - 文字出力装置 - Google Patents

文字出力装置

Info

Publication number
JPH11198465A
JPH11198465A JP10006090A JP609098A JPH11198465A JP H11198465 A JPH11198465 A JP H11198465A JP 10006090 A JP10006090 A JP 10006090A JP 609098 A JP609098 A JP 609098A JP H11198465 A JPH11198465 A JP H11198465A
Authority
JP
Japan
Prior art keywords
vector
unit
data
character
short
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP10006090A
Other languages
English (en)
Inventor
Yuji Onozawa
雄二 小野澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
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 Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP10006090A priority Critical patent/JPH11198465A/ja
Publication of JPH11198465A publication Critical patent/JPH11198465A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Record Information Processing For Printing (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

(57)【要約】 【課題】 アウトラインデータで表現された文字の描画
領域を有限(N)個の処理部で求める文字出力装置で、
高速文字処理を可能にすることを目的とする。 【解決手段】 文字のアウトラインのベクタデータと最
大交わり数とがフォント記憶手段1に記憶されている。
文字描画命令の入力で、キャッシュ手段3にヒットしな
ければ、フォント記憶手段1からベクタデータと最大交
わり数とを得、線分生成手段2でベクタデータを線分集
合に変換してキャッシュ手段3にキャッシュする。交わ
り検出手段4で最大交わり数とNとを比較し、Nを越え
る場合のみ、線分集合の各Y座標における交わり数を検
出し、線分集合分割手段5がその線分集合をN以下の線
分集合に分割し、N以下の場合は、交わり数の検出処理
と分割処理とを省略する。N以下の線分集合は、描画領
域決定手段6にて各Y座標における描画領域がN個同時
に求められ、出力手段7によって描画出力される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は文字出力装置に関
し、特にプリンタなどへの出力を目的として、アウトラ
インデータで表現された文字の描画を行う文字出力装置
に関する。
【0002】
【従来の技術】ワープロや図形エディタなどで処理され
た文書は、プリンタやディスプレイ装置に出力するため
に、ページ記述言語(Page Descriptio
n Language:PDL)などに変換される。P
DLにおいて、図形はベクタデータであり、文字はアウ
トラインフォントを特定するためのID(識別子)と文
字コードで表現されている。したがって、プリンタなど
の出力装置に出力する場合、PDLを受け取って出力装
置の解像度のビットマップを生成するために、図形や文
字に対するベクタデータの描画処理が行われる。この描
画処理は、文字の場合もアウトライン表現されたベクタ
データが対象となるため、図形でも文字でも結局、ベク
タラスタ変換という共通の処理で行っている。このよう
なシステムにおいて、従来より一般的に行われている処
理を以下に示す。
【0003】図24は従来の文書出力装置の構成例を示
すブロック図である。この文書出力装置は、ベクタラス
タ変換部1000と、フォント管理部1100と、メモ
リ部1200と、出力デバイス1300とからなり、フ
ォント管理部1100はフォントデータ記憶部1110
とキャッシュ1120とを有している。
【0004】このような文書出力装置において、図形ベ
クタデータは、ベクタラスタ変換部1000へ直接入力
される。また、フォントID/文字コードは、フォント
管理部1100へ入力される。この場合、フォント管理
部1100では、キャッシュ1120の状態のよって以
下のような処理を行うことになる。フォント管理部11
00のキャッシュ1120にその文字のビットマップデ
ータが存在すれば、そのビットマップデータをメモリ部
1200へ出力して、対応するメモリ上の位置にビット
マップが描画される。また、存在しない場合には、フォ
ントデータ記憶部1110から対応するアウトラインフ
ォントデータを読み出して、適当な大きさのベクタに変
換した後、ベクタデータをベクタラスタ変換部1000
へ出力する。ベクタラスタ変換部1000では、入力さ
れたベクタデータを処理してビットマップデータを生成
する。
【0005】入力されたベクタが図形の場合には、単に
メモリ部1200へのみビットマップデータを出力し
て、メモリ部1200が対応するメモリ上の位置にビッ
トマップを描画する。文字の場合には、さらにフォント
管理部1100にもビットマップデータを出力して、フ
ォント管理部1100ではビットマップデータをキャッ
シュする。メモリ部1200は、1ページ分のビットマ
ップデータが蓄えられた後で、出力デバイス1300へ
ビットマップデータを出力して、出力デバイス1300
から文書画像を出力する。
【0006】しかし、出力デバイスの解像度が高くなる
につれて、ベクタラスタ変換部1000の処理が非常に
重くなるとともに、メモリ部1200に必要なメモリ量
が増大する。そこで、出力をリアルタイムで行えるハー
ドウエアを設けることで、高速化を行うとともに、プリ
ンタなどの出力装置にリアルタイムでビットマップデー
タを送ることにより、ページメモリとフォントのビット
マップキャッシュのメモリを削減することが考えられて
いる。このようなハードウエア処理を前提としたベクタ
ラスタ変換部について説明する。
【0007】図25はベクタラスタ変換部の構成例を示
すブロック図である。ベクタラスタ変換部1000は、
ショートベクタ生成部1010と、エッジ生成部102
0と、メモリ描画部1030とからなり、エッジ生成部
1020はハードウェア構成の複数のDDA(Digi
tal Differential Analyze
r)部1021〜102Nとソート部1029とを有し
ている。
【0008】ショートベクタ生成部1010では、入力
されたベクタデータの中の曲線のベクタを直線ベクタ集
合で近似し、さらにすべての直線ベクタを各直線ベクタ
の開始するスキャンラインでソートする処理を行い、シ
ョートベクタデータを生成する。
【0009】図26は生成されたショートベクタの概念
を示す説明図であって、(A)は与えられたベクタの例
を示し、(B)は直線近似されたベクタを示し、(C)
はショートベクタデータを示している。(A)に示した
ように、与えられたベクタが直線ベクタと曲線ベクタと
からなるとき、その曲線ベクタについては複数の直線ベ
クタで近似する。図示の例では、(B)に示したよう
に、曲線ベクタは二つの直線ベクタによって近似されて
いる。これにより、与えられたベクタは六つの直線ベク
タL0〜L5によって表される。ここで、与えられたベ
クタは、8本のスキャンラインS0〜S7の範囲内にあ
るとする。各直線ベクタの端点のうち、Y座標値の小さ
い方、すなわち、直線ベクタの図の下側の端点を始点と
し、与えられたベクタを各直線ベクタの始点のY座標値
でソートすると、(C)に示したように、ショートベク
タデータ(ショートベクタの各々の直線を表現するデー
タをショートベクタセルと呼ぶ)が生成される。たとえ
ば、スキャンラインS0には直線ベクタL5,L0の始
点が交わっているので、ショートベクタデータとして
は、「S0」の位置に「L5」,「L0」のデータが入
ることになる。
【0010】このスキャンラインにソートされたショー
トベクタデータは、エッジ生成部1020へ入力され、
DDA部によって各スキャンラインごとにスキャンライ
ンと交わる直線のx座標を求める。この結果はソート部
1029へ送られ、x座標をソートすることで、スキャ
ンライン上の塗りつぶす領域を表すエッジデータが求め
られる。このエッジデータはランレングスのような開始
x座標と長さを表すデータとなって、ビットマップ生成
部1002へ入力され、メモリ描画部1030が、実際
にビットマップデータを生成する。
【0011】しかし、このような処理を効率的に行うた
めには、DDA部とソート部とがパイプライン的に動作
することが重要となり、DDA部の個数およびソート部
の並列数に従って、入力するショートベクタにおける各
スキャンラインと交わるショートベクタセルの数を制限
する必要がある。たとえば、DDA部の個数とソート部
の並列数とがそれぞれNとすると、入力ショートベクタ
の各スキャンラインと交わるショートベクタセルの数の
最大値を、N以下にしなくてなならない。通常の場合、
各スキャンラインに交わるショートベクタセルの数には
制限がないので、エッジ生成部1020へ入力する前処
理として、DDA部の個数とソート部の並列数とに合わ
せてショートベクタを複数に分割する処理を行ってい
る。この処理は各スキャンラインを逐次解析するような
処理によって行われるため、負荷は小さくない。また、
この処理は、文字のように何度も同じショートベクタを
処理する場合においてもその都度行っているため、文字
出力の処理速度を低下させていた。
【0012】そこで、文字のように何度も同じ処理が必
要な場合に、キャッシュを利用することがある。その例
として、たとえば特開平7−306669号公報や特開
平6−274144号公報に開示されたものがある。こ
れらの公報によれば、文字のキャッシュとして、ベクタ
データやビットマップを生成する過程の中間データを用
いることにより、ビットマップデータのキャッシュに比
べて少ないメモリ量で効率的なキャッシュを実現してい
る。また、特開平3−308407公報では、ビットマ
ップデータと面積率を持って、文字のアンチエリアシン
グを行う場合には、1回目の生成時間よりも2回目以降
を高速に処理できるようにしたものである。
【0013】
【発明が解決しようとする課題】しかしながら、特開平
7−306669号公報や特開平6−274144号公
報では、処理過程で生成される各種データからメモリ量
が少なくて済むデータ形式を選択してそのデータを、あ
るいは展開過程で生成される抽象度の高い中間データを
キャッシュするようにしているため、メモリ量の節約に
はなるが、その後のビットマップ生成処理においては、
最初のビットマップ化処理と同じであり、処理を高速に
するようなものではなかった。また、特開平3−308
407公報では、アンチエリアシングといった特定の文
字出力方式のみを高速化するものであり、通常の文字出
力を高速に行うようなものではなかった。
【0014】本発明はこのような点に鑑みてなされたも
のであり、特に有限(N)個のDDA部およびソート部
によりアウトラインデータで表現された文字の描画領域
が求められて描画出力する際に、より高速な文字処理を
実現することができる文字出力装置を提供することを目
的とする。
【0015】
【課題を解決するための手段】本発明では上記問題を解
決するために、少なくとも文字コードを含む文字描画命
令をもとに文字のアウトラインの描画領域をN個の並列
処理で決定して描画出力する文字出力装置において、文
字のアウトラインをベクタデータとして記憶するフォン
ト記憶手段と、前記文字描画命令に従って前記フォント
記憶手段から得られた前記文字コードに対応するベクタ
データを線分集合に変換する線分生成手段と、少なくと
も前記線分生成手段が生成した線分集合とその線分集合
の各線分が各Y座標と交差する最大交わり数をキャッシ
ュするキャッシュ手段と、前記生成された線分集合に対
して各Y座標における交わり数を検出する交わり検出手
段と、前記検出手段が検出した線分集合の各Y座標にお
ける交わり数をもとに複数のN本以下の線分集合に分割
する線分集合分割手段と、線分集合に対して各Y座標に
おける描画領域をN個同時に決定する描画領域決定手段
と、前記描画領域決定手段の求めた領域を描画出力する
出力手段と、を備えていることを特徴とする文字出力装
置が提供される。
【0016】このような文字出力装置によれば、フォン
ト記憶手段には、文字のアウトラインがベクタデータと
して検出手段があらかじめ検出した最大交わり数ととも
に記憶されている。文字描画命令が入力されると、キャ
ッシュ手段に命令文字に対応するベクタデータの線分集
合があるかどうかが判断され、なければ、その文字に対
応するベクタデータをフォント記憶手段から得て、線分
生成手段により線分集合に変換して、その線分集合と最
大交わり数とをキャッシュ手段にキャッシュしておく。
キャッシュ手段に命令文字に対応するベクタデータの線
分集合があれば、線分集合への変換は行わない。交わり
検出手段はキャッシュ手段の最大交わり数がN本以下か
どうかを判断し、N本を越える場合は、線分集合の各Y
座標における交わり数を検出し、線分集合分割手段がそ
の線分集合をN本以下の線分集合に分割する。N本以下
の線分集合は、描画領域決定手段にて各Y座標における
描画領域がN個同時に求められ、求めた領域が出力手段
7によって描画出力される。このように、線分集合とそ
の線分集合に対する最大交わり数とをキャッシュしてお
くことにより、Y座標における線分集合の最大交わり数
がN以下の文字の線分集合については、線分集合のY座
標における交わり数の検出処理および分割処理を省略す
ることができ、文字を高速処理することが可能になる。
【0017】
【発明の実施の形態】以下、本発明の実施の形態を図面
を参照して説明する。図1は本発明の原理図である。本
発明による文書出力装置は、フォント記憶手段1と、線
分生成手段2と、キャッシュ手段3と、交わり検出手段
4と、線分集合分割手段5と、描画領域決定手段6と、
出力手段7とから構成され、描画領域決定手段6は、N
(Nは2以上)個の座標算出部を有するX座標算出手段
6aと、ソート手段6bとによって構成されている。
【0018】フォント記憶手段1には、文字のアウトラ
インがベクタデータとして記憶されており、記憶時には
交わり検出手段4があらかじめ検出した最大交わり数を
付加情報として一緒に記憶されている。線分生成手段2
はフォント記憶手段1から得られたベクタデータを線分
集合に変換する機能を有する。キャッシュ手段3は線分
生成手段2が生成した線分集合と最大交わり数とをキャ
ッシュしておくもので、文字描画命令が入力されたとき
に、最初に参照される。交わり検出手段4は線分生成手
段2が生成した、またはキャッシュ手段3にキャッシュ
されている線分集合に対して各Y座標における交わり数
を検出したり、キャッシュ手段3にキャッシュされてい
る最大交わり数とNとの比較を行う。線分集合分割手段
5は交わり検出手段4による最大交わり数とNとの比較
の結果、最大交わり数がN本を越える場合に、その線分
集合を複数のN本以下の線分集合に分割する。描画領域
決定手段6では、X座標算出手段6aにおけるN個の座
標算出部がN本以下に分割された線分集合に対して各Y
座標ごとにY座標と交差する線分のX座標を求め、ソー
ト手段6bでは線分集合分割手段5による分割によって
ランダムになった線分のX座標をソートし、各Y座標に
おける描画領域を生成する。そして、この描画領域決定
手段6が求めた領域は出力手段7によって描画出力され
る。
【0019】このように、文字に対する線分集合を描画
出力するとき、生成された線分集合とその線分集合に対
する最大交わり数とをキャッシュ手段3にキャッシュし
ておく。これにより、Y座標における線分集合の最大交
わり数がN以下の文字の線分集合については、線分集合
のY座標における交わり数の検出処理および分割処理が
省略され、文字を高速処理することができる。
【0020】次に、本発明の実施の形態として、文字お
よび図形からなる文書を印刷出力する文書出力装置に適
用した場合を例に説明する。図2は文書出力装置の構成
例を示すブロック図である。図2において、文書出力装
置は、命令解釈部10と、ショートベクタ生成部20
と、ベクタ分割部30と、ベクタ記憶部40と、ベクタ
描画部50と、バッファ部60と、出力部70と、フォ
ント管理部80とから構成されている。さらに、フォン
ト管理部80は、データ管理部81と、フォントキャッ
シュ82と、フォントメモリ83と、データ解析部84
と、座標変換部85とから構成されている。
【0021】命令解釈部10は、入力されたPostS
cript(Adobe Systems社商標)やI
nterpress(Xerox社商標)などのページ
記述言語から図形または文字の描画命令を解釈し、描画
オブジェクトとして、次のショートベクタ生成部20
と、フォント管理部80が理解できる形式に変換して出
力するものである。たとえば入力が塗りつぶし図形の場
合は、図形の輪郭を表現するベクタと、偶奇規則/非零
巻線規則などの塗りつぶし規則と、曲線を直線近似する
場合の精度を指示するflatness値や、描画色な
どを含んだ描画オブジェクトとして、ショートベクタ生
成部20へ出力する。また、入力がストローク(線)図
形の場合には、図3に示すような線を表現するアウトラ
インベクタを生成し、塗りつぶし図形の場合と同様な情
報を含んだ描画オブジェクトとして、ショートベクタ生
成部20へ出力する。また、文字描画の場合には、文字
コードと、フォントIDと、描画位置や描画色などの情
報を含んだ描画オブジェクトを生成して、フォント管理
部80へ出力する。
【0022】図3はアウトラインベクタの説明図であ
る。命令解釈部10に2本のつながった直線を描画する
ストローク描画命令が入力された場合は、破線で示した
中心線の引数で与えられたベクタと輪郭データの各種属
性とから実線で示したアウトラインベクタが生成され
る。すなわち、中心線とその太さと2本の直線のつなぎ
の処理とを指定することにより、図示のような太さを持
った線の輪郭のアウトラインベクタが生成される。
【0023】ショートベクタ生成部20は、命令解釈部
10からのベクタデータを含んだ描画オブジェクトの入
力を受けて、これらの入力されたベクタデータ中に曲線
が含まれている場合にその曲線部分を、誤差が与えられ
たflatness値で指定された精度以下となるよう
に、微小な直線ベクタで近似する処理を行う。これを図
4を参照して説明する。
【0024】図4は曲線の再帰的な分割を示す説明図で
ある。たとえば曲線のベクタには、図4に黒丸記号で示
した四つの制御点で表現されるベジエ曲線が使われる。
この場合、ショートベクタ化の処理は、黒丸で示した元
のベジエ曲線の制御点の間の距離を中点分割していき、
その分割位置を新たなベジエ曲線の制御点とする。この
制御点は黒四角の記号で示してある。さらに、この制御
点に対してそれらの間を中点分割していくことにより、
ベジエ曲線をより短い複数の直線ベクタで表現すること
ができる。このように、ベジエ曲線を再帰的に分割し、
分割された制御点で作られる三角の高さ(距離d)がf
latnessで与えられた値より小さくなった時点で
分割を終了する。そして分割された各ベジエ曲線の始点
と終点とを順番に結ぶことにより、ショートベクタ化が
完了し、ベジエ曲線の始点と終点とが直線で近似され
る。そして最初から直線ベクタであったベクタとベジエ
曲線を近似した直線ベクタを合わせて、図26に示した
ように、スキャンラインでソートして、ショートベクタ
を作成する。
【0025】ベクタ分割部30は、入力された描画オブ
ジェクトに対するショートベクタをページを帯状に分割
したバンド単位で分割し、その後同じスキャンラインに
交わるショートベクタセルの数が、ベクタ描画部50で
同時に処理できる本数N以下になるように、さらにショ
ートベクタを解析し分割する。ここで、同時に処理でき
る本数とは、ベクタ描画部50の持っているDDA部の
数と並列ソート数のうち、小さい方の数になる。ただ
し、通常両者は同じ数であるとともに、2本のショート
ベクタセルで1描画領域が決定されるためこの数は偶数
となる。ベクタ描画部50の持っているDDA部の数が
4個の場合のショートベクタの分割結果を、図5に示
す。
【0026】図5はショートベクタの分割の一例を示す
図であり、(A)は分割前のショートベクタの集合を示
し、(B)および(C)は分割された二つのショートベ
クタの集合を示している。DDA部の数を4個とすれ
ば、1スキャンライン当たりのショートベクタを4本以
下にしなければならない。(A)に示したように、各ス
キャンラインと交わるショートベクタの数を調べていく
と、たとえばY軸上に矢印で示した位置のスキャンライ
ンでは、6本のショートベクタと交わっていることが判
る。これを4本以下になるよう分割すると、(B)およ
び(C)に示したようになる。図示の例では、矢印で示
した位置のスキャンラインと交わっているショートベク
タの右側にある2本の集合を分割の対象にし、新たにシ
ョートベクタの集合を生成している。ただし、一番右側
のショートベクタについては、問題のスキャンラインの
ところまではショートベクタの数はDDA部の数以下で
あるので、そのスキャンラインの位置でショートベクタ
自身を2分割している。このようにして分割された分割
ショートベクタはベクタ記憶部40へ入力される。
【0027】図6はベクタ記憶部におけるデータ記憶の
イメージを示す図であって、(A)はバンドにまたがっ
て配置された描画オブジェクトを示し、(B)はバンド
単位に記憶されるベクタ記憶部のデータイメージを示し
ている。(A)に示したように、たとえば1ページの領
域に三つの描画オブジェクトobj1〜obj3が描か
れており、その領域は四つのバンドに分けて処理すると
すると、バンド0には描画オブジェクトobj2,ob
j3が含まれ、バンド1およびバンド2には描画オブジ
ェクトobj1,obj2が含まれ、バンド3には描画
オブジェクトobj1が含まれている。ベクタ記憶部4
0はバンド単位に記憶する領域を有している。したがっ
て、ベクタ記憶部40のバンド0には描画オブジェクト
obj2,obj3の分割された分割ショートベクタデ
ータが記憶され、バンド1および2には描画オブジェク
トobj1,obj2の分割された分割ショートベクタ
データが記憶され、バンド3には描画オブジェクトob
j1の分割された分割ショートベクタデータが記憶され
ている。
【0028】これまでの処理は描画オブジェクト毎に処
理されているが、このベクタ記憶部40以降の処理は、
1ページ分の分割ショートベクタがベクタ記憶部40に
記憶されてから開始される。
【0029】ベクタ描画部50は、ベクタ記憶部40に
バンド別に蓄えた1ページ分の分割ショートベクタを、
順番に入力し処理する。この順番とは、最初のバンドに
対するショートベクタを順番に最後まで処理して、次の
バンドに移る。これを最終バンドまで処理することによ
って、1ページの処理とするものである。
【0030】図7はベクタ描画部の構成例を示すブロッ
ク図である。ベクタ描画部50は、N個のDDA部51
と、ソート部52と、メモリ描画部53とから構成され
る。DDA部51はスキャンラインとショートベクタセ
ルとの交わるN個以下のX座標を同時に求める。ソート
部52はN個のDDA部51から出力されるN個以下の
X座標を並列ソートする。メモリ描画部53はソートさ
れたX座標から始点/終点の対を求め、その間を描画色
でバッファ部60の対応するメモリ上に描画する。これ
は、入力されたバンド単位の分割ショートベクタからビ
ットマップを生成し、バンドバッファであるバッファ部
60に描画する処理である。
【0031】バッファ部60は、1バンド分のビットマ
ップデータを蓄えられる容量を持つ2つのバンドメモリ
から構成される。一つのバンドメモリには、ベクタ描画
部50によって描画処理が行われ、他方のバンドメモリ
には、描画された結果を、出力部70へ出力している。
これを交互に繰り返すことで、出力部70では1ページ
分の紙への出力が行われる。
【0032】フォント管理部80は、データ管理部8
1、フォントキャッシュ82、フォントメモリ83、デ
ータ解析部84、および座標変換部85から構成され
る。データ管理部81は、命令解釈部10からフォント
IDと文字コードと変換マトリックス(2×2の2次元
線形変換)と描画色と描画位置とを含んだ描画オブジェ
クトを受け取って、フォントIDと文字コードと変換マ
トリックスとをキーにして、フォントキャッシュ82を
引く。もし、フォントキャッシュ82にヒットした場合
には、フォントキャッシュ82内に記憶されているショ
ートベクタデータとショートベクタが各スキャンライン
に交わる最大ショートベクタセル数とを取り出し、描画
色と描画位置とともにベクタ分割部30へ出力する。も
し、フォントキャッシュ82にヒットしない場合には、
フォントメモリ83から文字に対するフォントデータを
取り出す。このフォントデータには、文字の外形を表す
ベクタデータとあらかじめ求められている各スキャンラ
イン毎に交わる最大ショートベクタセル数とが含まれて
いる。データ管理部81は、取り出した文字の外形を表
すベクタデータと変換マトリックスとを座標変換部85
へ送る。座標変換部85は、文字の外形を表すベクタデ
ータに対してマトリックス演算を行い、その結果をショ
ートベクタ生成部20と同一の処理を行ってショートベ
クタを生成し、データ管理部81へ戻す。データ管理部
81では、そのショートベクタと、各スキャンラインご
とに交わる最大ショートベクタセル数をフォントキャッ
シュ82へ登録し、描画色と描画位置とともにベクタ分
割部30へそれらのデータを出力する。ただし、変換マ
トリックスによっては対応する各スキャンラインごとに
交わる最大ショートベクタセル数がないものもある。そ
の場合には、最大ショートベクタセル数を0にしてベク
タ分割部30へ送る。この場合は、ベクタ分割部30で
ショートベクタを解析し、各スキャンラインごとに交わ
る最大ショートベクタセル数をデータ管理部81へ戻
す。データ管理部81では、ショートベクタとこの各ス
キャンラインごとに交わる最大ショートベクタセル数と
をフォントキャッシュ82へ登録する。またデータ解析
部84は、新たな書体のフォントデータを登録するとき
のみ動作して、データ管理部81から与えられたショー
トベクタを解析して、各スキャンラインごとに交わる最
大ショートベクタセル数を求めて、データ管理部81へ
返す。データ管理部81は、その結果をフォントメモリ
83に記憶するフォントデータに付加する。
【0033】以上、本発明の印刷処理装置の概要につい
て記述した。次に、この文書出力装置の主要部の詳細に
ついて説明する。まず、ショートベクタ生成部20で
の、ショートベクタ生成の詳細について説明する。これ
は、フォント管理部80の座標変換部85で行うショー
トベクタ生成においても、同様な方式を使用する。ショ
ートベクタ生成部20へのデータは、曲線ベクタを含む
ベクタ列であるが、まず曲線ベクタを複数の直線ベクタ
に近似し、すべて直線ベクタにしてしまう。その後の直
線ベクタを、初めに各頂点のY座標が整数になるように
変換する。具体的には、Y座標の小さい方の頂点には、
yの最大整数値を求めるfloor(y+0.5)の式
により、Y座標の大きい方の頂点には、floor(y
−0.5)の式を使って、Y座標を整数化する。また、
X座標については各辺の傾きが変わらないように、整数
化誤差をX座標値で補正する。このようにしてY座標値
を整数化した後、小さい方のY座標のベクタでソートさ
れ、リストで接続される。
【0034】図8はショートベクタの詳細なデータ構造
を示す図である。この図の左側にショートベクタの例を
示し、右側にそのショートベクタを表すデータ構造を示
している。各スキャンラインに対応してチェック配列2
1があり、各ショートベクタはY座標値の小さい方から
見て始点または終点が最初にスキャンラインと交わる位
置でチェック配列21にチェックされ、リストに登録さ
れる。たとえばスキャンラインY=5では、二つのショ
ートベクタの端点があるので、この位置に対応するチェ
ック配列21が黒丸でチェックされ、対応するリストに
二つのショートベクタのデータが追加登録されている。
リストの要素は、一つのショートベクタごとに四つあ
る。すなわち、Dir、Xs、Ye、およびDxであ
る。ここで、Dirはベクタの辺の方向が上向きか下向
きかを+1/−1で表す方向フラグであり、Xsは小さ
い方のY座標値YsにおけるX座標値であり、Yeは大
きい方のY座標値であり、DxはY座標値の+1増加に
対するX座標値の変化量で表した辺の傾きである。な
お、水平に近い辺など(水平か整数化前と整数化後で2
点のY座標の大小関係が入れ替わったもの)について
は、ショートベクタの要素に登録されない。
【0035】次に、ベクタ分割部30について説明す
る。図9はベクタ分割部の構成例を示すブロック図であ
る。ベクタ分割部30は、バンド分割部31と、分割制
御部32と、交点算出部33と、アクティブリスト制御
部34と、第1分割ショートベクタ記憶部35と、第2
分割ショートベクタ記憶部36とから構成され、アクテ
ィブリスト制御部34は、交わり検出部341とショー
トベクタ分割部342とから構成されている。
【0036】バンド分割部31は、入力されたショート
ベクタをバンドの境界で分割するもので、バンドの境界
にまたがるショートベクタをそれぞれのショートベクタ
に分割する。このバンド分割の例を図10に示す。
【0037】図10はバンド分割されたショートベクタ
の例を示す図である。図8に示すようなショートベクタ
が入力されたとし、バンドの境界がスキャンラインY=
19にあるとすると、このスキャンラインと交差するシ
ョートベクタは2本であり、これが分割の対象になる。
バンド分割されると、バンド境界より下のバンドでは、
バンドの境界のスキャンラインと交わっている分割対象
のショートベクタのデータ更新が行われ、図示の例で
は、Y=6およびY=16のリスト要素Yeが更新され
ていることが判る。バンド境界より上のバンドでは、バ
ンドの境界のスキャンラインと交わっている分割対象の
ショートベクタのリストが新たに作られている。また、
ここに入力されたショートベクタには、スキャンライン
と交わる最大のショートベクタセル数を付加データとし
て持つ。これは、フォント管理部80において文字のシ
ョートベクタに付加されたもので、通常図形のショート
ベクタや文字のショートベクタであっても、最大のショ
ートベクタ数が不明の場合には、値が0になる。このデ
ータは、次の分割制御部32において処理を高速化する
ために使用される。
【0038】分割制御部32は、バンド分割されたショ
ートベクタについてバンド順で処理する。今後の処理の
説明は簡単のために、バンド分割された一つのショート
ベクタについての処理として説明する。分割制御部32
は、まずショートベクタに付加されたスキャンラインと
交わる最大のショートベクタセル数データが有効かどう
か(0であるかないか)を確認する。もしデータが有効
でありかつこれがベクタ描画部50で同時に処理可能な
ショートベクタ数以下のときは、ショートベクタの分割
処理を行わずに、直接ベクタ記憶部40にショートベク
タを書き出す。また、もしデータが有効でない場合やベ
クタ描画部50で同時に処理可能なショートベクタ数よ
りも大きい場合には、交点算出部33、アクティブリス
ト制御部34、第1分割ショートベクタ記憶部35、第
2分割ショートベタ記憶部36を使って分割処理を行う
が、これを図11を参照して説明する。
【0039】図11はショートベクタに対する分割前処
理の一例を示す図である。この分割前処理は、まず辺の
関係に変化が起きるY座標をチェックしたチェック配列
321をショートベクタに追加する。辺の対応関係や順
序関係は、辺の追加/削除と交差がある場合のみ変化す
る可能性がある。そこで、Y座標値分のチェック配列3
21を用意し、追加/削除/交差のある座標値に対応す
る部分にチェックを入れるようにしている。図示のチェ
ック例では、追加を黒丸、削除を×、交差を黒三角で示
している。
【0040】アクティブリスト制御部34は、ショート
ベクタとチェック配列321とを読み込んで、内部モジ
ュールである交わり検出部341とショートベクタ分割
部342とによって、Y座標に交わるショートベクタセ
ルの数の検出とショートベクタの分割とを行う。これら
の動作について、図12〜図14に示すフローチャート
を参照しながら詳細に説明する。
【0041】図12ないし図14はショートベクタの分
割処理を示すフローチャートである。初めに、処理対象
スキャンラインを表す変数Ycを、ショートベクタのY
座標の最小値(図8の場合にはYmin=5)に設定す
る(ステップS1)。次に、ショートベクタ中にYcを
開始行とする辺があれば、これをアクティブリストに移
動する(ステップS2)。なお、ショートベクタの各要
素には、図8のようにDir,Xs,Ye,Dxが記載
されているので、これをアクティブリストに移動させる
場合には、モードフラグMode(=INIT)、現Y
座標でのX座標値Xc(=Xs)、開始点のY座標値Y
s(=Yc)の情報を付加する。
【0042】次に、現スキャンラインと各辺との交点の
X座標値を計算し、Xcに代入する(ステップS3)。
各辺のXcは、{Xs+(Yc−Ys)×Dx}で求め
ることができ、また1回前の処理でのYcが現在のYc
と1しか違わない場合には、{Xc+Dx}で求めるこ
とができる。さらに、Mode=INITの辺はステッ
プS2でアクティブリストに追加されたばかりであり、
また、ステップS2でXcを設定しているので、このス
テップの処理をスキップしてもよい。次に、ステップS
3で計算されたX座標値をもとに、アクティブリストを
X座標値の昇順にソートする(ステップS4)。
【0043】次に、アクティブリスト中の何番目の要素
を読み出すかを保持する変数iに初期値として1を設定
し(ステップS5)、アクティブリスト中のi番目の要
素を読み出す(ステップS6)。ここで、iとNとの大
小関係を比較し(ステップS7)、iの方が大きい場合
には、図14のステップS16に制御が移される。iの
方が小さい場合には、ステップS8に進む。また、この
とき最大のi、すなわち、MaxiをMaxレジスタに
記憶する。iがNより小さい場合、読み出されたi番目
の要素のModeをチェックし、INならばステップS
12に、OUTならステップS9に、INITならステ
ップS11に進む。なお、Mode値のINは1回前の
処理時点でのソート後の順番iがN以下だったことを表
し、OUTは同じくiがNより大きかったことを表して
いる。ModeがOUTの場合、前回OUTだった辺が
今回IN状態になっているので、この辺のYsからYc
−1までを切り出し、第2分割ショートベクタ記憶部3
6にその情報を出力する(ステップS9)。具体的に
は、Y=Ysの位置に、Dir=Dir,Xs=Xs,
Ye=Yc−1,Dx=Dxなるショートベクタ要素を
挿入する。ステップS9でYc−1までが出力されたの
で、その分を補正するためアクティブリストのi番目の
辺データを修正する(ステップS10)。具体的には、
Ys=Yc,Xs=Xcに変更し、さらにMode値を
INに修正する。
【0044】ModeがINITの場合は、アクティブ
リストのi番目の辺データのModeをINに変更する
(ステップS11)。ModeがINの場合、またはス
テップS10およびステップS11の処理が終了する
と、次に、YeがYcと等しいかどうかをチェックする
(ステップS12)。ここで、、もしYeがYcに等し
い場合には、その辺データを第1分割ショートベクタ記
憶部35に出力して、その辺データをアクティブリスト
から削除する(ステップS13)。YeがYcに等しく
ない場合には、iに1を加える(ステップS14)。
【0045】ステップS13またはステップS14の処
理により、iの指す要素がこれまで処理してきたものの
次の要素を指すようになるので、次は、そのような次の
要素がアクティブリスト中に存在するかどうかをチェッ
クする(ステップS15)。ここで、もし、i番目の辺
が存在する場合には、ステップS6に戻ってステップS
6以下の処理を繰り返す。もし,存在しない場合には、
図12のフローチャートに戻る。
【0046】一方、ステップS7でiがNより大きいと
判定された場合には、図14のステップS16に制御が
移される。ステップS16では、読み出されたi番目の
要素のModeをチェックし、OUTならばステップS
20に、INならステップS17に、INITならステ
ップS19に進む。ModeがINならば、前回INだ
った辺が今回OUT状態になっているので、この辺のY
sからYc−1までを切り出し、第1分割ショートベク
タ記憶部35にその情報を出力する(ステップS1
7)。具体的には、Y=Ysの位置に、Dir=Di
r,Xs=Xs,Ye=Yc−1,Dx=Dxなるショ
ートベクタ要素を挿入する。ここで、Yc−1までが出
力されたので、次に、その分を補正するためアクティブ
リストのi番目の辺データを修正する(ステップS1
8)。具体的には、Ys=Yc,Xs=Xcに変更し、
さらにMode値をOUTに修正する。ModeがIN
ITならば、アクティブリストのi番目の辺データのM
odeをOUTに変更する(ステップS19)。
【0047】ModeがOUTの場合、またはステップ
S18またはステップS19の処理が終了すると、次
に、YeがYcと等しいかどうかをチェックする(ステ
ップS20)。ここで、YeがYcと等しい場合には、
その辺データを第2分割ショートベクタ記憶部36に出
力して、その辺データをアクティブリストから削除する
(ステップS21)。もし、YeがYcと等しくない場
合には、iに1を加える(ステップS22)。
【0048】次に、ステップS15と同様に、次の要素
がアクティブリスト中に存在するかどうかをチェックす
る(ステップS23)。ここで、もし、存在する場合に
は、図13のステップS6に戻って、ステップS6以下
の処理を繰り返す。もし、存在しない場合には、図12
のフローチャートに戻る。
【0049】図12に戻って、次に、分割制御部32中
のチェック配列321をもとに、現在のYcの次にチェ
ックされているY座標値があるかどうかを調べる(ステ
ップS24)。ここで、次のチェック位置があれば、そ
のY座標値をYcに設定し(ステップS25)、ステッ
プS2に制御を移す。次のチェック位置がない場合に
は、アクティブリスト制御部34での処理を終了する。
このように、Ycを順次変更しながら処理したアクティ
ブリストの途中までの経過を、図15に示す。なお、図
15ではN=4を仮定している。
【0050】図15は分割処理の途中のアクティブリス
トを示す図である。アクティブリスト制御部34では、
チェックした位置のスキャンラインY=5,Y=6,Y
=8,Y=10のアクティブリストのデータを作ってい
る。ここで、スキャンラインY=5では、二つのショー
トベクタに対するアクティブリストのデータを示してい
る。スキャンラインY=6になると、二つのショートベ
クタが加わるので、四つのショートベクタに対するアク
ティブリストのデータを示している。スキャンラインY
=8では、二つのショートベクタが加わり、二つのショ
ートベクタが削除されていることを示している。スキャ
ンラインY=10では、四つのショートベクタに対する
アクティブリストを示している。
【0051】このような処理の結果、第1分割ショート
ベクタ記憶部35には、N個のDDA部とソート部の回
路で処理可能な部分多角形を表現するショートベクタが
生成される。また、第2分割ショートベクタ記憶部36
には、入力された多角形からその部分多角形を除いた部
分を表現するショートベクタが残る。
【0052】図16は分割処理されたショートベクタを
示す図、図17は分割処理された残りのショートベクタ
を示す図である。この図16、図17においてもN=4
を仮定している。図8のショートベクタの分割処理後の
第1分割ショートベクタ記憶部35の結果は図16に示
したように、各スキャンラインに交わるショートベクタ
の数が4以下になるようショートベクタが分割されてい
る。その分割された残りのショートベクタは第2分割シ
ョートベクタ記憶部36に記憶されていて、図17に示
すような二つのショートベクタに対するアクティブリス
トが作成されている。
【0053】このようにして分割された多角形のうち、
第1分割ショートベクタ記憶部35に格納されたショー
トベクタは、対応するバンドのベクタ記憶部40に出力
され、第2ショートベクタ記憶部36に格納されたショ
ートベクタは、Maxi−N>Nの場合に分割制御部3
2に戻されて、次の分割処理の対象となる。もし、Ma
xi−N<=Nの場合には、対応するバンドのベクタ記
憶部40に出力される。第2分割ショートベクタ記憶部
36に要素のない状態となった場合は、分割制御部32
は、次のバンドのショートベクタに対して処理を行い、
すべてのバンドに対する処理が完了した時点で、バンド
分割部31へ新たなショートベクタが入力される。この
ような処理の繰り返しは、ベクタ記憶部40に1ページ
分のデータが記憶されるまで行われる。
【0054】次に、ベクタ描画部50、バッファ部6
0、および出力部70の動作についてまとめて詳細に説
明する。図18はベクタ描画部、バッファ部および出力
部の動作を説明するための図である。ここで、バッファ
部60は、バッファ制御部61、第1バンドバッファ6
2および第2バンドバッファ63の二つのバンドバッフ
ァから構成されている。まず、上述の処理により、図形
/文字などの描画オブジェクトは、バンド単位に分割さ
れ、各スキャンラインと交わるショートベクタセル数が
N本以下に制約された単数または複数のショートベクタ
データに変更され、描画色、描画位置データなどととも
にベクタ描画部50に入力される。ベクタ描画部50
は、ベクタ記憶部40からバンド単位のこの入力を受付
て、バッファ部60の第1バンドバッファ62に描画す
る。一方、バッファ部60の描画済の第2バンドバッフ
ァ63からは、出力部70へデータが送られる。二つの
バンドバッファにて、描画および出力が交互に同時並列
的に実行されている。
【0055】ここで、ベクタ描画部50の動作を図19
を使ってさらに詳細に説明する。なお、分割ショートベ
クタのスキャンラインと交わる最大ショートベクタセル
数Nを4として、またショートベクタのDirの値を使
用しない塗りつぶしアルゴリズムである奇偶方式の場合
について説明する。
【0056】図19はベクタ描画部の詳細な構成例を示
すブロック図である。ベクタ描画部50は、図7で説明
したように、大きくはDDA部51、ソート部52およ
びメモリ描画部53の三つのブロックから構成されてい
る。詳細には、そのDDA部51は、ショートベクタ入
力制御部511と、N個(ここでは、4個)のDDA回
路512と、Yレジスタ513と、色レジスタ514
と、本数レジスタ515とから構成され、さらに各DD
A回路512は、Xレジスタ5121と、Dxレジスタ
5122と、Ryレジスタ5123とから構成される。
また、ソート部52は、比較器521と、N個のSxレ
ジスタ522と、N個のExレジスタ523とから構成
される。
【0057】まず、ショートベクタ入力制御部511で
は、ベクタ記憶部40の最初のバンドの最初の描画オブ
ジェクトに対する分割ショートベクタデータと描画色デ
ータとを読み込む。また、四つのDDA回路512の各
Ryレジスタ5123の値をクリアする。描画オブジェ
クトに対するショートベクタデータは、ショートベクタ
セルの本数と描画色データとショートベクタセルと各シ
ョートベクタセルの開始スキャンライン位置とからなっ
ている。ショートベクタ入力制御部511では、それぞ
れショートベクタセルの本数、描画色データ、最初のシ
ョートベクタセルの開始スキャンライン位置Syを、本
数レジスタ515、色レジスタ514、Yレジスタ51
3にセットするとともに、Ryレジスタ5123が0で
あるDDA回路512の一つにショートベクタセルの
X,Dx,(Ey−Sy+1)を、それぞれXレジスタ
5121,Dxレジスタ5122,Ryレジスタ512
3へ書き込む。そして、本数レジスタ515の値をデク
リメントする。次に、それに続くショートベクタセルの
SyとYレジスタ513の値とを比較して、等しい間の
ショートベクタセルをRyレジスタ5123が0である
DDA回路512の一つに書き込み、その本数分本数レ
ジスタ515の値をデクリメントする。この場合、ベク
タ分割部30において、同時に存在するショートベクタ
セルの数が4本以下に制限されているので、DDA回路
512の数を越えてしまうようなことはない。
【0058】このようにして、Yレジスタ513の値に
等しいSyを持つショートベクタセルがすべてDDA回
路512に書き込まれると、比較器521には、各DD
A回路512のXレジスタ5121とRyレジスタ51
23との値が入力される。このうち、Ryレジスタ51
23の値が0でないXレジスタ5121が有効とみなさ
れ、比較器521内で、小さい順に最初のSxレジスタ
522、最初のExレジスタ523、2番目のSxレジ
スタ522、2番目のExレジスタ523にソートされ
て出力される。この場合、ショートベクタの性質上、必
ず、Ryレジスタ5123の値が0でないDDA回路5
12は、偶数個になる。したがって、Sxレジスタ52
2が有効であれば、必ずExレジスタ523も有効とな
る。
【0059】メモリ描画部53では、Sxレジスタ52
2の値と、Exレジスタの値と、これらのペアが有効で
あるかどうかの信号524と、Yレジスタ513および
色レジスタ514の値とを受け取り、Yスキャンライン
のSxレジスタ522の位置からExレジスタ523ま
でのドットに対応するバンドメモリ上の位置に、色レジ
スタ514の値を書き込ために、メモリアドレスと書き
込みデータとをバッファ部60のバッファ制御部61へ
送る。
【0060】バッファ制御部61では、受け取ったデー
タとアドレスとをもとに、第1バンドバッファ62また
は第2バンドバッファ63のうち、書き込む側のバンド
バッファに書き込みを行う。これで、1スキャンライン
の処理が終了する。そして、次のスキャンラインの処理
に移るために、Yレジスタ513の値をインクリメント
し、各DDA回路512のXレジスタ5121にDx分
足して、Ryレジスタ5123が0でない、Ryレジス
タ5123をディクリメントする。また、続くショート
ベクタうち、ショートベクタセルのSyがYレジスタ5
13の値に等しいすべてのショートベクタセルが、同じ
ようにDDA回路512に書き込まれる。そして、上記
バンドバッファまでの書き込み処理を順次繰り返し行っ
ていく。また、本数レジスタ515が0になるまで上記
処理を行うと、1描画オブジェクトの描画が終了したこ
とになり、新たな描画オブジェクトに対するショートベ
クタデータをショートベクタ入力制御部511が行い、
これをバンド終了まで繰り返す。それにより、書き込み
側のバンドバッファに1バンド分の描画オブジェクトが
書き込まれることになり、次のステップでは、バッファ
制御部61が、書き込み側のバンドバッファを読み出し
側のバンドバッファにして出力部70への出力に使用
し、読み出し側のバンドバッファを書き込み側のバンド
バッファにして、メモリ描画部53からの書き込みに使
用する。これをすべてのバンドに対して繰り返し行うこ
とによって、1ページ分の出力が完了する。
【0061】最後に、フォント管理部80について詳細
に説明する。図20はフォント管理部の構成例を示すブ
ロックずである。フォント管理部80は、データ管理部
81と、フォントキャッシュ82と、フォントメモリ8
3と、データ解析部84と、座標変換部85とから構成
される。データ管理部81は、データ制御部811と、
管理テーブル812と、フォントデータ解部釈813
と、付加情報バッファ814とから構成される。フォン
ト管理部80の動作には、フォントを登録するときと、
文字に対するショートベクタを出力するときの2つのモ
ードがある。
【0062】まずは、フォントを登録するときの動作に
ついて説明する。フォントデータは、主に文字コードセ
ットに対する文字デザインを輪郭のベクタデータで表現
したグリフというものからなっている。このようなフォ
ントデータには、Adobe社のType1フォントや
Apple社のTrueTypeフォントというような
データフォーマットが有名である。このようなフォント
データは各デザインごとに作成されていて、それらを実
際に使用する場合には、ダウンロードという動作を行
い、システムにフォントデータを登録することが必要に
なる。本実施の形態においては、命令解釈部10にフォ
ントデータとフォントIDを引数にした、ダウンロード
命令が与えられると、フォントデータとフォントIDが
フォント管理部80のデータ管理部81に送られる。デ
ータ管理部81では、そのデータ制御部811が、受け
取ったフォントデータのフォントメモリ83への書き込
みフォントファイル名を決定して、フォントIDとフォ
ントファイル名とを対応させて、管理テーブル812へ
登録し、フォントデータをフォントメモリにフォントフ
ァイル名で書き込む。次に、データ制御部811は、フ
ォント内に含まれている各文字に対して、標準的な座標
変換を行った場合のスキャンラインと交わる最大ショー
トベクタセル数を求め、その結果を管理テーブル812
とフォントメモリ83とに登録する処理を行う。これ
を、図21に示したフローチャートに従って説明する。
【0063】図21はフォントデータの付加情報処理の
流れを示すフローチャートである。まず、データ制御部
811が座標変換部85へ標準的な変換マトリックスを
指定する(ステップS31)。この標準的なマトリック
スとは、フォントデータが通常使用される大きさ(10
ポイント程度)のマトリックスを指定する。これは、ス
キャンラインに交わる最大ショートベクタセルを求める
際に、小さ過ぎる場合は、最大ショートベクタセル数が
不安定な値になってしまうからである。次に、データ制
御部811がこのフォントの先頭の文字コードをフォン
トデータ解部釈813に指定する(ステップS32)。
次に、フォントデータ解部釈813がその文字コードの
グリフデータ(ベクタデータ)を取り出す(ステップS
33)。次に、座標変換部85がステップS31で指定
されたマトリックスでグリフデータを座標変換して、結
果のベクタがフォントショートベクタ生成部815へ渡
され、そこでショートベクタデータが作成される(ステ
ップS34)。これは、基本的には図8に示した図形の
場合と同じでのようなデータとなる。たとえば文字”
1”に対するショートベクタを図22に示す。
【0064】図22は文字に対するショートベクタの一
例を示す図である。左側の図には、文字”1”に対応す
るグリフデータを座標変換して得たベクタをショートベ
クタ化したものが示されており、そのショートベクタに
対するデータのアクティブリストが右側に示されてい
る。このデータは図8に示した図形の場合のデータ構造
と同じである。
【0065】次に、フォントショートベクタ生成部81
5によって生成されたショートベクタはデータ解析部8
4が受け取り、ここでスキャンラインに交わる最大ショ
ートベクタセル数Maxcellが求められる(ステッ
プS35)。この処理は、ショートベクタを分割するた
めではなく、ショートベクタセルが追加されるスキャン
ラインのみを解析するだけなので、比較的単純な処理で
行う。この処理を図22の場合で説明する。
【0066】図23は付加情報処理手順におけるデータ
解析の説明図である。図22に示すショートベクタの場
合、Y座標値が5,6,16,17,18,19のとき
のスキャンラインにおいて、次のような処理を行う。ア
クティブリストに現在のスキャンラインの追加ショート
ベクタセルを追加する。本スキャンラインで有効でなく
なったショートベクタセルを削除する。ショートベクタ
セルの数を数える。ショートベクタセルの数がMaxc
ell数と比較して多くなった場合にはMaxcell
数にする。この例では、スキャンライン5および6のと
きのスキャンラインに交わる最大ショートベクタセル数
Maxcellは2であるが、スキャンライン16のと
きに、最大ショートベクタセル数Maxcellが4に
なったので、それ以降のスキャンライン17,18,1
9のときは、スキャンラインに交わる最大ショートベク
タセル数が2に減っているが、最大ショートベクタセル
数は、Maxcell=4としている。
【0067】このようにして得られた最大ショートベク
タセル数はデータ制御部811へ送られる。次に、デー
タ制御部811はMaxcell数と文字コードとのペ
アを付加情報バッファ814へ書き込む(ステップS3
6)。次に、文字コードが最終文字コードかどうかが判
断され(ステップS37)、最終の文字コード以下なら
ばステップS33以下を繰り返す。また、文字コードが
最終の文字コードを越えていれば、データ制御部811
が付加情報バッファ814の内容をファイルとしてフォ
ントメモリ83に書き込み、ファイル名をその対応する
管理テーブル812へ登録して終了する。
【0068】これによって、あるフォントデータのある
文字について、あらかじめスキャンラインと交わる最大
ショートベクタセル数を解析なしに獲得することが可能
となる。ただし、この最大ショートベクタセル数は、標
準的なマトリックスを使ったときの値であるので、変換
マトリックスによっては一致しない場合がある。これ
は、回転、斜傾変換、極端に小さい縮小などの場合であ
る。このような場合には、獲得した最大ショートベクタ
セル数を使用しないように、データ制御部811が制御
する。また極端に小さい縮小に対しては、あらかじめ許
容値を設定しそれを足した値を使用するようにしてもよ
い。
【0069】次に、文字に対するショートベクタを出力
するときの動作について図20を参照しながら説明す
る。まず、命令解釈部10は、文字を出力するコマンド
を解釈すると、フォントIDと文字コードと変換マトリ
ックスと描画色と描画位置を含んだ描画オブジェクトを
生成して、フォント管理部80のデータ管理部81へ入
力する。これをデータ制御部811が受け取ると、フォ
ントID+文字コード+変換マトリックスでキャッシュ
のキーを作成して、フォントキャッシュ82にアクセス
する。フォントキャッシュ82では、キーとショートベ
クタデータとスキャンラインと交差する最大ショートベ
クタセル数のデータとをキャッシュしている。これらは
通常ハッシュ表のようなもので管理され、比較的高速に
アクセス可能である。
【0070】ここで、もし、フォントキャッシュ82に
ヒットした場合には、ショートベクタデータとスキャン
ラインと交差する最大ショートベクタセル数をデータ管
理部81が受け取り、ショートベクタデータに描画位置
によるオフセットを加えた後に、これらのデータは描画
色データとともにベクタ分割部30へ送られる。ベクタ
分割部30では、図形のときと同じようにショートベク
タデータを処理するが、もし、最大ショートベクタセル
数がベクタ描画部50のDDA部51におけるDDA回
路512の数よりも小さければ、単純なバンド分割部3
1の処理だけを行い、複雑なDDA回路512の数以下
のショートベクタに分割する処理を省略し、ベクタ分割
部30の分割制御部32が直接ベクタ記憶部40へショ
ートベクタを出力する。
【0071】もし、フォントキャッシュ82にヒットし
ない場合には、データ制御部811は、管理テーブル8
12にフォントIDを入力する。管理テーブル812は
入力に応じて、フォントメモリ83の上に記憶されたフ
ォントデータに対するファイル名と最大ショートベクタ
数に対するファイル名とをデータ制御部811へ返す。
データ制御部811は、そのファイル名をもとにフォン
トメモリ83をアクセスして、フォントデータと最大シ
ョートベクタ数データとを読み出す。そして、フォント
データと文字コードとをフォントデータ解部釈813へ
送ることによって、その文字に対する外形ベクタを受け
取り、受け取った外形ベクタとマトリックスとを座標変
換部85へ送る。座標変換部85では、外形ベクタをマ
トリックス変換する。マトリックス変換されたベクタが
フォントショートベクタ生成部815へ渡され、そこで
ショートベクタが作成され、データ制御部811へ送ら
れる。データ制御部811では、マトリックスを解析し
て、回転や斜傾やある大きさ以下のマトリックスでなけ
れば、最大ショートベクタセル数データからその文字に
対応するデータを読み出して、キャッシュにヒットした
場合と同じ処理を行い、ベクタ分割部30へデータを送
る。その後のベクタ分割部30処理は、先程説明した処
理と同じであるので省略する。また、マトリックスを解
析した結果が、回転や斜傾やある大きさ以下のマトリッ
クスであれば、データ制御部811では、ショートベク
タと最大ショートベクタセル数を0としてベクタ分割部
30へ送る。ベクタ分割部30では、最大ショートベク
タセル数が0である場合には、自動的にDDA回路の数
以下のショートベクタに分割する処理が必要であると判
断する。したがって、バンド分割部31の処理を行い、
分割制御部32に渡されたショートベクタは、図12、
図13および図14に示されたフローに従って分割処理
が行われる。分割処理の行われたショートベクタはベク
タ記憶部40へ書き込まれる。また、分割処理において
解析された最大ショートベクタセル数は、フォント管理
部80のデータ管理部81へ戻される。データ管理部8
1は、ショートベクタと最大ショートベクタセル数をフ
ォントID、文字コード、マトリックスをキーにしてフ
ォントキャッシュ82へ登録する。このときフォントキ
ャッシュ82のキャッシュ容量が足りないときは、ラン
ダムに選択した所に上書きしてしまう。この足りないと
きの処理については、最初に書き込まれたものから上書
きすることや最もアクセスのなかったものから上書きす
るなどの制御を行ってもよい。ベクタ記憶部40へ書き
込まれた以降の処理については先程説明した描画処理と
同じであるので省略する。
【0072】
【発明の効果】以上説明したように本発明では、N個
(Nは2以上の整数)のDDA手段と、N個の入力をソ
ート可能なソート手段とを備え、アウトラインデータで
表現された文字を描画する文字出力装置において、文字
/図形の外形を直線のみのベクタで表現したショートベ
クタを各スキャンラインでのショートベクタセル数がN
以下となるように複数のショートベクタに分割する分割
手段と、文字のショートベクタと各スキャンラインでの
ショートベクタセル数の最大値をキャッシュするフォン
トキャッシュ手段と、フォントデータに各文字の各スキ
ャンラインでのショートベクタセル数の最大値の前処理
を行い付加情報として記憶するフォントデータ記憶手段
を設け、スキャンラインでのショートベクタセル数がN
以下の文字のショートベクタについては、分割手段によ
るショートベクタの分割処理を省略することで、文字を
高速処理できる文字出力装置を実現する。
【図面の簡単な説明】
【図1】本発明の原理図である。
【図2】文書出力装置の構成例を示すブロック図であ
る。
【図3】アウトラインベクタの説明図である。
【図4】曲線の再帰的な分割を示す説明図である。
【図5】ショートベクタの分割の一例を示す図であり、
(A)は分割前のショートベクタの集合を示し、(B)
および(C)は分割された二つのショートベクタの集合
を示している。
【図6】ベクタ記憶部におけるデータ記憶のイメージを
示す図であって、(A)はバンドにまたがって配置され
た描画オブジェクトを示し、(B)はバンド単位に記憶
されるベクタ記憶部のデータイメージを示している。
【図7】ベクタ描画部の構成例を示すブロック図であ
る。
【図8】ショートベクタの詳細なデータ構造を示す図で
ある。
【図9】ベクタ分割部の構成例を示すブロック図であ
る。
【図10】バンド分割されたショートベクタの例を示す
図である。
【図11】ショートベクタに対する分割前処理の一例を
示す図である。
【図12】ショートベクタの分割処理を示すフローチャ
ート(その1)である。
【図13】ショートベクタの分割処理を示すフローチャ
ート(その2)である。
【図14】ショートベクタの分割処理を示すフローチャ
ート(その3)である。
【図15】分割処理の途中のアクティブリストを示す図
である。
【図16】分割処理されたショートベクタを示す図であ
る。
【図17】分割処理された残りのショートベクタを示す
図である。
【図18】ベクタ描画部、バッファ部および出力部の動
作を説明するための図である。
【図19】ベクタ描画部の詳細な構成例を示すブロック
図である。
【図20】フォント管理部の構成例を示すブロックずで
ある。
【図21】フォントデータの付加情報処理の流れを示す
フローチャートである。
【図22】文字に対するショートベクタの一例を示す図
である。
【図23】付加情報処理手順におけるデータ解析の説明
図である。
【図24】従来の文書出力装置の構成例を示すブロック
図である。
【図25】ベクタラスタ変換部の構成例を示すブロック
図である。
【図26】生成されたショートベクタの概念を示す説明
図であって、(A)は与えられたベクタの例を示し、
(B)は直線近似されたベクタを示し、(C)はショー
トベクタデータを示している。
【符号の説明】
1 フォント記憶手段 2 線分生成手段 3 キャッシュ手段 4 交わり検出手段 5 線分集合分割手段 6 描画領域決定手段 6a DDA手段 6b ソート手段 7 出力手段
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 FI G09G 5/24 670 G09G 5/24 670

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 少なくとも文字コードを含む文字描画命
    令をもとに文字のアウトラインの描画領域をN個の並列
    処理で決定して描画出力する文字出力装置において、 文字のアウトラインをベクタデータとして記憶するフォ
    ント記憶手段と、 前記文字描画命令に従って前記フォント記憶手段から得
    られた前記文字コードに対応するベクタデータを線分集
    合に変換する線分生成手段と、 少なくとも前記線分生成手段が生成した線分集合とその
    線分集合の各線分が各Y座標と交差する最大交わり数を
    キャッシュするキャッシュ手段と、 前記生成された線分集合に対して各Y座標における交わ
    り数を検出する交わり検出手段と、 前記検出手段が検出した線分集合の各Y座標における交
    わり数をもとに複数のN本以下の線分集合に分割する線
    分集合分割手段と、 線分集合に対して各Y座標における描画領域をN個同時
    に決定する描画領域決定手段と、 前記描画領域決定手段の求めた領域を描画出力する出力
    手段と、 を備えていることを特徴とする文字出力装置。
  2. 【請求項2】 前記フォント記憶手段は、各ベクタデー
    タを線分集合変換した際の各Y座標における交わり数を
    あらかじめ記憶していることを特徴とする請求項1記載
    の文字出力装置。
  3. 【請求項3】 前記交わり検出手段は、前記キャッシュ
    手段から少なくとも線分集合と線分集合の最大交わり数
    とを入力して、最大交わり数がN以下の場合に、入力し
    た前記線分集合の各Y座標における交わり数の検出をす
    ることなく前記線分集合を前記描画領域決定手段へ出力
    することを特徴とする請求項1に記載の文字出力装置。
  4. 【請求項4】 前記描画領域決定手段は、線分集合に対
    してN個の座標算出部を有するX座標算出手段と、各座
    標算出部から出力されたN個のX座標データをソートす
    るソート手段とを備えていることを特徴とする請求項1
    記載の文字出力装置。
JP10006090A 1998-01-14 1998-01-14 文字出力装置 Pending JPH11198465A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10006090A JPH11198465A (ja) 1998-01-14 1998-01-14 文字出力装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10006090A JPH11198465A (ja) 1998-01-14 1998-01-14 文字出力装置

Publications (1)

Publication Number Publication Date
JPH11198465A true JPH11198465A (ja) 1999-07-27

Family

ID=11628837

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10006090A Pending JPH11198465A (ja) 1998-01-14 1998-01-14 文字出力装置

Country Status (1)

Country Link
JP (1) JPH11198465A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006327155A (ja) * 2005-05-30 2006-12-07 Canon Inc 画像処理装置及びその制御方法、プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006327155A (ja) * 2005-05-30 2006-12-07 Canon Inc 画像処理装置及びその制御方法、プログラム

Similar Documents

Publication Publication Date Title
US5832530A (en) Method and apparatus for identifying words described in a portable electronic document
JP3927939B2 (ja) 印刷システム及び方法
JP3145509B2 (ja) 文字生成方法及びその装置
KR100317549B1 (ko) 문자채움처리를위해연쇄코드를사용하는비트맵문자변환방법
US6266444B1 (en) Character processing apparatus and method therefor
JP3037854B2 (ja) 文字生成方法及びその装置
US7333238B2 (en) Rendering a printing device pixel map
KR100302163B1 (ko) 문자 생성 방법 및 장치
JP3085175B2 (ja) 描画装置
JPH05120441A (ja) ベクトル画像描画装置
JPH11198465A (ja) 文字出力装置
US6504543B1 (en) Polygon drawing method and polygon drawing apparatus
JP3146771B2 (ja) フォントラスタライズ装置およびその方法
JP2004516496A (ja) 圧縮されスケール可能なアウトラインフォント
JP2819961B2 (ja) 印刷制御装置
JP2854344B2 (ja) ミクストモード文書の表示方法
JPH1185428A (ja) 画像形成方法及び画像形成装置
JP3536894B2 (ja) 図形処理装置
JPH11224331A (ja) ラスタ画像生成装置およびラスタ画像生成方法
JP4058197B2 (ja) 描画装置及び描画方法、記憶媒体
JP3864520B2 (ja) 印刷処理装置及び印刷処理方法
JP2001331166A (ja) 文字処理装置
JPH07306669A (ja) 文字出力装置
JP3054157B2 (ja) 文字処理装置および文字処理方法
JPH1110961A (ja) 印刷処理装置および印刷処理方法