JPH05224653A - 文字出力装置 - Google Patents
文字出力装置Info
- Publication number
- JPH05224653A JPH05224653A JP4061316A JP6131692A JPH05224653A JP H05224653 A JPH05224653 A JP H05224653A JP 4061316 A JP4061316 A JP 4061316A JP 6131692 A JP6131692 A JP 6131692A JP H05224653 A JPH05224653 A JP H05224653A
- Authority
- JP
- Japan
- Prior art keywords
- data
- character
- coordinate
- vector
- string
- 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
Links
Landscapes
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
(57)【要約】
【目的】 記憶容量によって文字の大きさが制限される
ようなことが無く、大きなビットマップデータでも存分
に展開可能な文字出力装置を提供する。 【構成】 ベクトルフォントデータを展開して出力する
文字出力装置に於て、前記ベクトルフォントデータをラ
ンレングスの座標データ列に変換する変換手段16と、
該変換された座標データ列を記憶するバッファ手段18
と、該バッファ手段から読み出した座標データ列に基づ
き出力用メモリ22にビットマップデータを描画する描
画手段20とを備える。
ようなことが無く、大きなビットマップデータでも存分
に展開可能な文字出力装置を提供する。 【構成】 ベクトルフォントデータを展開して出力する
文字出力装置に於て、前記ベクトルフォントデータをラ
ンレングスの座標データ列に変換する変換手段16と、
該変換された座標データ列を記憶するバッファ手段18
と、該バッファ手段から読み出した座標データ列に基づ
き出力用メモリ22にビットマップデータを描画する描
画手段20とを備える。
Description
【0001】
【産業上の利用分野】本発明は文字出力装置に関し、特
に表示装置に用いて好適な文字出力装置に関する。なお
本明細書に於て「文字」の語には、記号、図形等、コン
ピュータでコードにより取扱われるもの全てが含まれる
ものとする。
に表示装置に用いて好適な文字出力装置に関する。なお
本明細書に於て「文字」の語には、記号、図形等、コン
ピュータでコードにより取扱われるもの全てが含まれる
ものとする。
【0002】
【従来の技術】近年、DTP(デスクトップパブリッシ
ング)可能な装置が多くなりつつある。これらの装置
は、文字や図形、画像等をディスプレイ(表示装置)上
で同時に編集し、これらをプリンタから出力することが
できる。高品質の印刷と細かなパラメータ設定が可能
で、ディスプレイの表示がプリンタ出力とほぼ同じとさ
れているのが特徴である。この高品質の表示及び印刷を
する為、文字の形状を表わすフォントデータは、ベクト
ルフォントデータ(アウトラインフォントデータ)が使
用される。ベクトルフォントデータは、輪郭を表わすベ
クトルデータの集合からなる。可視化する場合は、べク
トル→ラスタ変換でビットマップデータに展開し、表示
或いは印刷する。このベクトル→ラスタ変換は負荷が重
い(処理に時間が掛かる)。このため従来は専用プロセ
ッサと高速のバッファ手段(テンポラリメモリ)を用意
し、これにビットマップデータを展開してから、ページ
メモリ等の出力メモリ上に転記するようにしていた(例
えば特開平2−251895号公報参照。)。
ング)可能な装置が多くなりつつある。これらの装置
は、文字や図形、画像等をディスプレイ(表示装置)上
で同時に編集し、これらをプリンタから出力することが
できる。高品質の印刷と細かなパラメータ設定が可能
で、ディスプレイの表示がプリンタ出力とほぼ同じとさ
れているのが特徴である。この高品質の表示及び印刷を
する為、文字の形状を表わすフォントデータは、ベクト
ルフォントデータ(アウトラインフォントデータ)が使
用される。ベクトルフォントデータは、輪郭を表わすベ
クトルデータの集合からなる。可視化する場合は、べク
トル→ラスタ変換でビットマップデータに展開し、表示
或いは印刷する。このベクトル→ラスタ変換は負荷が重
い(処理に時間が掛かる)。このため従来は専用プロセ
ッサと高速のバッファ手段(テンポラリメモリ)を用意
し、これにビットマップデータを展開してから、ページ
メモリ等の出力メモリ上に転記するようにしていた(例
えば特開平2−251895号公報参照。)。
【0003】
【発明が解決しようとする課題】前述のようにDTPで
は高品位の文字出力を行なう。この為文字が大きくなる
につれビットマップデータの量が極めて多くなってく
る。しかしバッファ手段の記憶容量には限りがある。こ
のため従来は、それを超えるような大きな、或いは高品
位な文字(ビットマッピデータ)は展開することが出来
なかった。バッファ手段の記憶容量を増やすことも考え
られる。しかし、例えば現状のN倍の大きさ迄可能とす
るなら、メモリ容量はNの2乗倍必要になる。更に大き
い、或いは高品位な文字を得たいとなれば必要容量は膨
大になる。これはコスト的に実現困難である。本発明の
目的は、この様な従来装置の欠点を解消し、記憶容量に
よって文字の大きさが制限されるようなことが無く、大
きなビットマップデータでも容易に展開が可能な文字出
力装置を提供することにある。
は高品位の文字出力を行なう。この為文字が大きくなる
につれビットマップデータの量が極めて多くなってく
る。しかしバッファ手段の記憶容量には限りがある。こ
のため従来は、それを超えるような大きな、或いは高品
位な文字(ビットマッピデータ)は展開することが出来
なかった。バッファ手段の記憶容量を増やすことも考え
られる。しかし、例えば現状のN倍の大きさ迄可能とす
るなら、メモリ容量はNの2乗倍必要になる。更に大き
い、或いは高品位な文字を得たいとなれば必要容量は膨
大になる。これはコスト的に実現困難である。本発明の
目的は、この様な従来装置の欠点を解消し、記憶容量に
よって文字の大きさが制限されるようなことが無く、大
きなビットマップデータでも容易に展開が可能な文字出
力装置を提供することにある。
【0004】
【課題を解決するための手段】上記目的達成のため本発
明では、ベクトルフォントデータを展開して出力する文
字出力装置に於て、前記ベクトルフォントデータをラン
レングスの座標データ列に変換する変換手段と、該変換
された座標データ列を記憶するバッファ手段と、該バッ
ファ手段から読み出した座標データ列に基づき出力用メ
モリにビットマップデータを描画する描画手段とを備え
る。
明では、ベクトルフォントデータを展開して出力する文
字出力装置に於て、前記ベクトルフォントデータをラン
レングスの座標データ列に変換する変換手段と、該変換
された座標データ列を記憶するバッファ手段と、該バッ
ファ手段から読み出した座標データ列に基づき出力用メ
モリにビットマップデータを描画する描画手段とを備え
る。
【0005】
【作用】変換手段はベクトルフォントデータをランレン
グスの座標データ列に変換する。変換は、例えば次の手
順で行なう。先ずベクトルデータで表わされる文字の輪
郭線上に一定間隔でスキャンラインを引き、各スキャン
ラインと輪郭線の交点、即ちその輪郭のエッジ点を求め
る。エッジ点は塗り潰し区間の始点、終点の2個一組で
求められる。これらエッジ点を同一のスキャンライン毎
に纏め、スキャンライン順にソートする。各スキャンラ
イン上の一組のエッジ点について、始点と終点の間のラ
ンレングス(ドット数)を求める。最初のエッジ点の座
標データとこのドット数を組み合わせ一個のランレング
スの座標データとする。なお「ランレングスの座標デー
タ」を以後「ランレングスデータ」という。この処理を
一本のスキャンラインの全部のエッジ点について、更に
は全てのスキャンラインのエッジ点について実施する。
これにより、当該文字を表わすランレングスデータ列が
生成される。変換されたデータ列はバッファ手段、例え
ばデータ列メモリに記憶される。描画手段はこれらラン
レングスデータ列を一組づつ順に読み出し、該データで
示される始点の位置から該データで示されるドット数
分、指定された文字色で、出力用メモリ、例えば表示用
ページメモリのドット(ピクセル)を塗り潰す。これに
より、出力用メモリ上にビットマップデータが描画され
る。
グスの座標データ列に変換する。変換は、例えば次の手
順で行なう。先ずベクトルデータで表わされる文字の輪
郭線上に一定間隔でスキャンラインを引き、各スキャン
ラインと輪郭線の交点、即ちその輪郭のエッジ点を求め
る。エッジ点は塗り潰し区間の始点、終点の2個一組で
求められる。これらエッジ点を同一のスキャンライン毎
に纏め、スキャンライン順にソートする。各スキャンラ
イン上の一組のエッジ点について、始点と終点の間のラ
ンレングス(ドット数)を求める。最初のエッジ点の座
標データとこのドット数を組み合わせ一個のランレング
スの座標データとする。なお「ランレングスの座標デー
タ」を以後「ランレングスデータ」という。この処理を
一本のスキャンラインの全部のエッジ点について、更に
は全てのスキャンラインのエッジ点について実施する。
これにより、当該文字を表わすランレングスデータ列が
生成される。変換されたデータ列はバッファ手段、例え
ばデータ列メモリに記憶される。描画手段はこれらラン
レングスデータ列を一組づつ順に読み出し、該データで
示される始点の位置から該データで示されるドット数
分、指定された文字色で、出力用メモリ、例えば表示用
ページメモリのドット(ピクセル)を塗り潰す。これに
より、出力用メモリ上にビットマップデータが描画され
る。
【0006】
【実施例】以下本発明の詳細を図示実施例に基いて説明
する。図1に本実施例装置の全体構成を示す。11はキ
ーボードで、文字コード及びそのパラメータ(書体、文
字の大きさ、文字色など)の入力に使用される。12は
入力バッファで、これら入力された文字コード、パラメ
ータ等を蓄え、入力があった旨を中央制御装置13に報
知する。パラメータはその種別コードと値の組み合わせ
で表現される。14は主記憶装置で、中央処理装置13
が実行するプログラムを保持すると共に、処理に必要な
ワークエリア等を提供する。中央処理装置13は前記プ
ログラムに基づき、前記報知があると、入力されたデー
タを前記フォントレジスタ群15に供給する。該レジス
タ群15は入力された文字コード、書体及び文字の大き
さを保持する。16はフォントプロセッサで、中央処理
装置13から出力命令を受けると、フォントレジスタ群
15をアクセスし、そこに保持されている書体、大きさ
及び文字コードを取得する。次いでキャッシュ制御部1
9が管理するキャッシュデータをアクセスし、その中に
要求されたランレングスデータ列が存在するか否かを確
認する。あるときはこれをデータ列メモリ18に供給す
る。無いときはフォントメモリ17からベクトルフォン
トデータを読み出し、ランレングスデータ列へ変換す
る。詳細は後述する。このフォントプロセッサ16が請
求項の「変換手段」にあたる。データ列メモリ18は、
フォントプロセッサ16から供給されたランレングスデ
ータ列を記憶する。このデータ列記憶手段18が請求項
の「バッファ手段」にあたる。20はビットマップ描画
部で、カラーレジスタ21に保持されている文字色に従
い、ランレングスデータ列に対応したビットマップデー
タをページメモリ22上に描画する。ビットマップ描画
部20、ページメモリ22が夫々請求項の「描画手
段」、「出力用メモリ」にあたる。23はディスプレイ
制御部で、ディスプレイ24の走査周波数に同期して、
ページメモリ22の内容を読み出し、ディスプレイ24
に供給する。ディスプレイ24にはベクトルフォントに
依る高品質の文字が表示される。
する。図1に本実施例装置の全体構成を示す。11はキ
ーボードで、文字コード及びそのパラメータ(書体、文
字の大きさ、文字色など)の入力に使用される。12は
入力バッファで、これら入力された文字コード、パラメ
ータ等を蓄え、入力があった旨を中央制御装置13に報
知する。パラメータはその種別コードと値の組み合わせ
で表現される。14は主記憶装置で、中央処理装置13
が実行するプログラムを保持すると共に、処理に必要な
ワークエリア等を提供する。中央処理装置13は前記プ
ログラムに基づき、前記報知があると、入力されたデー
タを前記フォントレジスタ群15に供給する。該レジス
タ群15は入力された文字コード、書体及び文字の大き
さを保持する。16はフォントプロセッサで、中央処理
装置13から出力命令を受けると、フォントレジスタ群
15をアクセスし、そこに保持されている書体、大きさ
及び文字コードを取得する。次いでキャッシュ制御部1
9が管理するキャッシュデータをアクセスし、その中に
要求されたランレングスデータ列が存在するか否かを確
認する。あるときはこれをデータ列メモリ18に供給す
る。無いときはフォントメモリ17からベクトルフォン
トデータを読み出し、ランレングスデータ列へ変換す
る。詳細は後述する。このフォントプロセッサ16が請
求項の「変換手段」にあたる。データ列メモリ18は、
フォントプロセッサ16から供給されたランレングスデ
ータ列を記憶する。このデータ列記憶手段18が請求項
の「バッファ手段」にあたる。20はビットマップ描画
部で、カラーレジスタ21に保持されている文字色に従
い、ランレングスデータ列に対応したビットマップデー
タをページメモリ22上に描画する。ビットマップ描画
部20、ページメモリ22が夫々請求項の「描画手
段」、「出力用メモリ」にあたる。23はディスプレイ
制御部で、ディスプレイ24の走査周波数に同期して、
ページメモリ22の内容を読み出し、ディスプレイ24
に供給する。ディスプレイ24にはベクトルフォントに
依る高品質の文字が表示される。
【0007】図2により実施例装置の動作の概要を説明
する。最初は中央制御装置13が所謂入力待ちをしてい
る(ステップS1)。入力があり、ステップS1の答が
「はい(yes)」になったらステップS2に進む。終
りコード「EOF」であったら処理を終了する。なお
「ステップ」の語は略す。ほかの語についても適宜省略
する。終りコード「EOF」でなかったらS3に進む。
入力データが文字コードであるかを検査する。ここでは
入力データの種類が、前記終りコード、文字コード及び
パラメータに限られることとする。S3の答が「いいえ
(no)」ならパラメータ入力である。S4に進む。書
体又は文字の大きさのパラメータについてはフォントレ
ジスタ群15の対応するレジスタに書き込む。文字色は
カラーレジスタ21に書き込む。全てのレジスタの値が
セットされると、中央制御装置13がフォントプロセッ
サ16にフォント出力を命令する。これに応動してフォ
ントプロセッサ16は、前述のキャッシュデータの検
索、ランレングスデータ列への変換等を行なう(S6,
S7)。なおランレングスデータ列が生成されたとき、
キャッシュ制御部19はキャッシュテーブル(不図示)
の更新を行なう(S8)。フォントプロセッサ16は、
キャッシュされていた、或いは生成されたランレングス
データ列をデータ列メモリ18に供給する。またその先
頭アドレスと文字幅を中央制御装置13に供給する(S
10)。中央制御装置13は、この先頭アドレスと、デ
ィスプレイ24上の表示位置を示すオフセット値をビッ
トマップ描画部20に供給する。なお文字幅は中央制御
部13が次の文字の表示位置(オフセット)を計算する
のに使用される。ビットマップ描画部20は、データ列
メモリ18のランレングスデータ列に基づき、ページメ
モリ22のオフセット値に対応する表示位置にビットマ
ップデータを描画する(S10)。文字色はカラーレジ
スタ21に保持されているものが参照される。この処理
が繰返される(S10→S1)。そしてページメモリ2
2に書き込まれたビットマップデータは、前述のように
ディスプレイ制御部23に読み出され、ディスプレイ2
4に表示される。
する。最初は中央制御装置13が所謂入力待ちをしてい
る(ステップS1)。入力があり、ステップS1の答が
「はい(yes)」になったらステップS2に進む。終
りコード「EOF」であったら処理を終了する。なお
「ステップ」の語は略す。ほかの語についても適宜省略
する。終りコード「EOF」でなかったらS3に進む。
入力データが文字コードであるかを検査する。ここでは
入力データの種類が、前記終りコード、文字コード及び
パラメータに限られることとする。S3の答が「いいえ
(no)」ならパラメータ入力である。S4に進む。書
体又は文字の大きさのパラメータについてはフォントレ
ジスタ群15の対応するレジスタに書き込む。文字色は
カラーレジスタ21に書き込む。全てのレジスタの値が
セットされると、中央制御装置13がフォントプロセッ
サ16にフォント出力を命令する。これに応動してフォ
ントプロセッサ16は、前述のキャッシュデータの検
索、ランレングスデータ列への変換等を行なう(S6,
S7)。なおランレングスデータ列が生成されたとき、
キャッシュ制御部19はキャッシュテーブル(不図示)
の更新を行なう(S8)。フォントプロセッサ16は、
キャッシュされていた、或いは生成されたランレングス
データ列をデータ列メモリ18に供給する。またその先
頭アドレスと文字幅を中央制御装置13に供給する(S
10)。中央制御装置13は、この先頭アドレスと、デ
ィスプレイ24上の表示位置を示すオフセット値をビッ
トマップ描画部20に供給する。なお文字幅は中央制御
部13が次の文字の表示位置(オフセット)を計算する
のに使用される。ビットマップ描画部20は、データ列
メモリ18のランレングスデータ列に基づき、ページメ
モリ22のオフセット値に対応する表示位置にビットマ
ップデータを描画する(S10)。文字色はカラーレジ
スタ21に保持されているものが参照される。この処理
が繰返される(S10→S1)。そしてページメモリ2
2に書き込まれたビットマップデータは、前述のように
ディスプレイ制御部23に読み出され、ディスプレイ2
4に表示される。
【0008】フォントプロセッサ16が実行するランレ
ングスデータ列への変換処理(図2、S7、図7)の詳
細を説明する。始めに図3ステップS21の処理を行な
う。先ずフォントメモリ17をアクセスし、その時選択
されている書体のベクトルフォントデータ群の中から、
要求された文字コードのベクトルフォントデータを読み
出す。このデータはそのとき設定されている文字の大き
さに対応するように拡大又は縮小する。輪郭が曲線で表
わされているものはショートベクトルに変換する。ここ
にショートベクトルとは曲線上の各点を結ぶ短いベクト
ルのことである。曲線上の各点自体は例えば前進差分法
等を用いて求められる。以下の説明ではこれも「ベクト
ル」に含めて説明する。文字について回転、その他変形
が指定されていた場合は、その処理も行なわれる。(前
進差分法:例えば山口富士夫「コンピュータディスプレ
イによる形状処理工学(I)」 初版 第4刷 (昭62
−5−25) 日刊工業新聞社 P.36−37等参
照。)上記処理により、図4(B)に示す文字の輪郭
(ベクトルフォントデータ)が生成されたとする。各点
P1〜P7の側に表示された括弧書きの数字が座標デー
タである。左側がX座標の値、右がY座標の値である。
なおP7はP1に重複している。このベクトルフォント
データの内容は各点P1〜P7の座標データの集合で示
される(図4(A))。二つ1組で各点の座標を表わ
す。先の方がX座標の値、後がY座標の値である。なお
コードS、Eはデータの始点、終点を表わす。以後の各
図に於ても同じ表現形式とする。
ングスデータ列への変換処理(図2、S7、図7)の詳
細を説明する。始めに図3ステップS21の処理を行な
う。先ずフォントメモリ17をアクセスし、その時選択
されている書体のベクトルフォントデータ群の中から、
要求された文字コードのベクトルフォントデータを読み
出す。このデータはそのとき設定されている文字の大き
さに対応するように拡大又は縮小する。輪郭が曲線で表
わされているものはショートベクトルに変換する。ここ
にショートベクトルとは曲線上の各点を結ぶ短いベクト
ルのことである。曲線上の各点自体は例えば前進差分法
等を用いて求められる。以下の説明ではこれも「ベクト
ル」に含めて説明する。文字について回転、その他変形
が指定されていた場合は、その処理も行なわれる。(前
進差分法:例えば山口富士夫「コンピュータディスプレ
イによる形状処理工学(I)」 初版 第4刷 (昭62
−5−25) 日刊工業新聞社 P.36−37等参
照。)上記処理により、図4(B)に示す文字の輪郭
(ベクトルフォントデータ)が生成されたとする。各点
P1〜P7の側に表示された括弧書きの数字が座標デー
タである。左側がX座標の値、右がY座標の値である。
なおP7はP1に重複している。このベクトルフォント
データの内容は各点P1〜P7の座標データの集合で示
される(図4(A))。二つ1組で各点の座標を表わ
す。先の方がX座標の値、後がY座標の値である。なお
コードS、Eはデータの始点、終点を表わす。以後の各
図に於ても同じ表現形式とする。
【0009】点P1からP2に至るベクトルをB1、以
下順にベクトルB2〜ベクトルB6とする。本実施例で
は横方向にスキャンするものとする。夫々のベクトルB
1〜B6について、各スキャンラインでスキャンしたと
きのエッジ点(ドット)を求め記憶する。具体的には各
ベクトルB1〜B6を表わす式に、Y=100、10
1、…、…、109を代入し、そのときのXの値を求め
る(S22)。この処理により図5(B)に示すエッジ
点D1〜D28が求められる。図5(A)にこれら各点
の座標データを示す。なお水平のベクトルB2,B5に
ついてはスキャンラインと交差しない。従ってエッジ点
は記憶されない。但し始点と終点は、各ベクトルB1,
B3,B4,B6のエッジ点D10,D11,D24,
D25として記憶される。またドットD1はベクトルB
1のエッジ点であると同時に、ベクトルB6のエッジ点
でもある。この為このドットD1は図5(A)のデータ
の最初と最後に2度記憶される。ドット20についても
同じで、図5(A)のデータの真ん中の列の上のところ
で2度記憶されている。S22で取得した座標データ列
をY座標について、次いでX座標についてソートする。
ここでは昇順とする(S23)。結果は図6のようにな
る。最初の2つのエッジ点についての座標データが同じ
値になっている。前の方はベクトルB1の始点としての
エッジ点D1の座標データであり、後の方はベクトルB
6の終点としてのエッジ点D1の座標データである。次
の2つのエッジ点の座標データ、即ちエッジ点D20に
ついても同様である。また図6のデータの一部に付した
ドットDの番号からも理解し得るように、同じスキャン
ライン上のエッジ点、例えばD2,D29,D21,D
19の座標データがこのソートにより順に並ぶことにな
る。
下順にベクトルB2〜ベクトルB6とする。本実施例で
は横方向にスキャンするものとする。夫々のベクトルB
1〜B6について、各スキャンラインでスキャンしたと
きのエッジ点(ドット)を求め記憶する。具体的には各
ベクトルB1〜B6を表わす式に、Y=100、10
1、…、…、109を代入し、そのときのXの値を求め
る(S22)。この処理により図5(B)に示すエッジ
点D1〜D28が求められる。図5(A)にこれら各点
の座標データを示す。なお水平のベクトルB2,B5に
ついてはスキャンラインと交差しない。従ってエッジ点
は記憶されない。但し始点と終点は、各ベクトルB1,
B3,B4,B6のエッジ点D10,D11,D24,
D25として記憶される。またドットD1はベクトルB
1のエッジ点であると同時に、ベクトルB6のエッジ点
でもある。この為このドットD1は図5(A)のデータ
の最初と最後に2度記憶される。ドット20についても
同じで、図5(A)のデータの真ん中の列の上のところ
で2度記憶されている。S22で取得した座標データ列
をY座標について、次いでX座標についてソートする。
ここでは昇順とする(S23)。結果は図6のようにな
る。最初の2つのエッジ点についての座標データが同じ
値になっている。前の方はベクトルB1の始点としての
エッジ点D1の座標データであり、後の方はベクトルB
6の終点としてのエッジ点D1の座標データである。次
の2つのエッジ点の座標データ、即ちエッジ点D20に
ついても同様である。また図6のデータの一部に付した
ドットDの番号からも理解し得るように、同じスキャン
ライン上のエッジ点、例えばD2,D29,D21,D
19の座標データがこのソートにより順に並ぶことにな
る。
【0010】このデータを、例えば図8のようなランレ
ングスデータ列に変換する(S24)。前述のようにエ
ッジ点は2個1組である。ビットマップに展開された場
合、その2個のエッジ点の間が字画部分として塗り潰さ
れる。この塗り潰し区間を、ここでは「塗り潰し開始点
のX座標データ」と「そこからの塗り潰しの長さRL」
の組み合わせで表わす。塗り潰し開始点のX座標をX
1、塗り潰し終了点のX座標をX2とすると、塗り潰し
の長さRLは、 RL=X2−X1+1 で求められる(図7、S57)。本実施例では、識別子
CYとその後に続くデータで先ずY座標、即ちスキャン
ラインを表わす(図8)。これに続けてそのライン上の
塗り潰し区間のデータ、即ち上記「開始点X座標と長さ
RL」の組み合わせから成るランレングスデータを、そ
の塗り潰しの数だけ置く。次のスキャンラインに移ると
きはまた識別子CYと次のY座標データを置く。その後
にそのスキャンライン上の各塗り潰し区間のデータを置
く。
ングスデータ列に変換する(S24)。前述のようにエ
ッジ点は2個1組である。ビットマップに展開された場
合、その2個のエッジ点の間が字画部分として塗り潰さ
れる。この塗り潰し区間を、ここでは「塗り潰し開始点
のX座標データ」と「そこからの塗り潰しの長さRL」
の組み合わせで表わす。塗り潰し開始点のX座標をX
1、塗り潰し終了点のX座標をX2とすると、塗り潰し
の長さRLは、 RL=X2−X1+1 で求められる(図7、S57)。本実施例では、識別子
CYとその後に続くデータで先ずY座標、即ちスキャン
ラインを表わす(図8)。これに続けてそのライン上の
塗り潰し区間のデータ、即ち上記「開始点X座標と長さ
RL」の組み合わせから成るランレングスデータを、そ
の塗り潰しの数だけ置く。次のスキャンラインに移ると
きはまた識別子CYと次のY座標データを置く。その後
にそのスキャンライン上の各塗り潰し区間のデータを置
く。
【0011】図7にその手順を示す。先ず図8のような
データ生成用ワークエリアの先頭アドレスAB0に先頭
記号Sを置く(S30)。カウンタn,m,Cを初期値
「1」にする(S31)。nは図6のデータのアドレス
AAのカウンタ、mは図8のアドレスABのカウンタ、
Cは図6の座標データを2組づつ取り出す為のカウンタ
である。最初は図8のデータ列にY座標データを置くた
めの処理を行なう。変数mで示されるアドレスAB1に
識別子CYを置く(S32)。次いでmをインクリメン
トする(S33)。図6のアドレスAA2のデータ、即
ち最初のエッジ点D1のY座標を、図8のアドレスAB
2に置く(S34)。mをインクリメントする(S3
5)。次に同じAA2の値「200」を変数Y0に代入
する。前述したように、図8に於て同じスキャンライン
上の塗り潰し区間データは、Y座標データの後に続けて
置かれる。変数Y0は先に処理された塗り潰し区間のY
座標記憶に使用される。ここではまだ前の処理が無い。
従って図6のアドレスAA2に保持されている最初のY
座標「200」がこの変数Y0に代入される。これで図
8のデータ列に最初のY座標データを置く処理は終っ
た。なお以下、図の指定、「アドレス」、「カウン
タ」、「変数」、「ランレングスデータ列」の語などは
適宜省略する。
データ生成用ワークエリアの先頭アドレスAB0に先頭
記号Sを置く(S30)。カウンタn,m,Cを初期値
「1」にする(S31)。nは図6のデータのアドレス
AAのカウンタ、mは図8のアドレスABのカウンタ、
Cは図6の座標データを2組づつ取り出す為のカウンタ
である。最初は図8のデータ列にY座標データを置くた
めの処理を行なう。変数mで示されるアドレスAB1に
識別子CYを置く(S32)。次いでmをインクリメン
トする(S33)。図6のアドレスAA2のデータ、即
ち最初のエッジ点D1のY座標を、図8のアドレスAB
2に置く(S34)。mをインクリメントする(S3
5)。次に同じAA2の値「200」を変数Y0に代入
する。前述したように、図8に於て同じスキャンライン
上の塗り潰し区間データは、Y座標データの後に続けて
置かれる。変数Y0は先に処理された塗り潰し区間のY
座標記憶に使用される。ここではまだ前の処理が無い。
従って図6のアドレスAA2に保持されている最初のY
座標「200」がこの変数Y0に代入される。これで図
8のデータ列に最初のY座標データを置く処理は終っ
た。なお以下、図の指定、「アドレス」、「カウン
タ」、「変数」、「ランレングスデータ列」の語などは
適宜省略する。
【0012】次はこのY座標上の各塗り潰し区間を求
め、そのX座標データとその長さRLを前記Y座標デー
タの後に置く処理である。S37,S42〜S46のル
ープでこの処理を行なう。先ずS37で図6のAA1の
データ「100」を変数X1として取り込む。取り込ん
だデータ「100」は終りコード「E」ではない。S4
2に進み、nをインクリメントして図6の次のAA2の
データ「200」をY1として取り込む。更にnをイン
クリメントする。データ2個、即ち1個目のエッジ点
(D1)のデータを取ったので、Cもインクリメントす
る(S45。C=2)。エッジ点の座標データを2組づ
つ取り出す為のカウンタCは初期値を「1」とし、S4
6でC≧3か否かで、二つのエッジ点の4つの座標デー
タの取り込みを判定する。ここでは答は「いいえ」であ
る。S37,S42〜S45を再度実行する。このとき
の図6のAA3,AA4のデータはX2,Y2の変数に
読み込まれる。今度はS46の答が「はい」に変る。C
を1に戻す(S47)。
め、そのX座標データとその長さRLを前記Y座標デー
タの後に置く処理である。S37,S42〜S46のル
ープでこの処理を行なう。先ずS37で図6のAA1の
データ「100」を変数X1として取り込む。取り込ん
だデータ「100」は終りコード「E」ではない。S4
2に進み、nをインクリメントして図6の次のAA2の
データ「200」をY1として取り込む。更にnをイン
クリメントする。データ2個、即ち1個目のエッジ点
(D1)のデータを取ったので、Cもインクリメントす
る(S45。C=2)。エッジ点の座標データを2組づ
つ取り出す為のカウンタCは初期値を「1」とし、S4
6でC≧3か否かで、二つのエッジ点の4つの座標デー
タの取り込みを判定する。ここでは答は「いいえ」であ
る。S37,S42〜S45を再度実行する。このとき
の図6のAA3,AA4のデータはX2,Y2の変数に
読み込まれる。今度はS46の答が「はい」に変る。C
を1に戻す(S47)。
【0013】S48に進み、ここでの塗り潰し区間が、
その前に処理された塗り潰し区間と同じスキャンライン
上にあるか否かを確認する。S36での代入が生きてい
るので答は「はい」である。S55に進む。このステッ
プで、このとき読み込まれた2つのエッジ点のX座標の
うち最初のデータX1を、塗り潰し区間の始点として、
mが示すアドレスAB3に書き込む(S55)。mをイ
ンクリメントする(S56)。次にX2からX1を減算
し、塗り潰し区間の長さRLを求める(S57)。ここ
では2つのエッジ点が同じエッジ点D1である。 RL=1−1+1=1 となる。即ちここでの塗り潰しの長さ(字画の幅)は1
ドットである。このRLはこのときmが示すアドレスA
B4に置かれる。これにより最初のランレングスデータ
RD1が図8のAB3及びAB4に書き込まれたことに
なる。次いでmがインクリメントされる(S59)。S
37に戻る。今度は図6のAA5〜AA8のデータの処
理が行なわれる。これはエッジ点D20,D20につい
てのデータである。先ずS37,S42〜S46のルー
プが2回繰返され、それらのデータが読み出される。こ
れらのY座標「200」が直前のY座標データを保持し
ているY0と比較される。ここでは同じである。従っ
て、またS48からS55に飛ぶ。エッジ点D20,D
20についてのランレングスデータRD2が図8のAB
5,AB6に書き込まれる。S37に戻る。
その前に処理された塗り潰し区間と同じスキャンライン
上にあるか否かを確認する。S36での代入が生きてい
るので答は「はい」である。S55に進む。このステッ
プで、このとき読み込まれた2つのエッジ点のX座標の
うち最初のデータX1を、塗り潰し区間の始点として、
mが示すアドレスAB3に書き込む(S55)。mをイ
ンクリメントする(S56)。次にX2からX1を減算
し、塗り潰し区間の長さRLを求める(S57)。ここ
では2つのエッジ点が同じエッジ点D1である。 RL=1−1+1=1 となる。即ちここでの塗り潰しの長さ(字画の幅)は1
ドットである。このRLはこのときmが示すアドレスA
B4に置かれる。これにより最初のランレングスデータ
RD1が図8のAB3及びAB4に書き込まれたことに
なる。次いでmがインクリメントされる(S59)。S
37に戻る。今度は図6のAA5〜AA8のデータの処
理が行なわれる。これはエッジ点D20,D20につい
てのデータである。先ずS37,S42〜S46のルー
プが2回繰返され、それらのデータが読み出される。こ
れらのY座標「200」が直前のY座標データを保持し
ているY0と比較される。ここでは同じである。従っ
て、またS48からS55に飛ぶ。エッジ点D20,D
20についてのランレングスデータRD2が図8のAB
5,AB6に書き込まれる。S37に戻る。
【0014】図6のAA9〜AA12から次の1組のエ
ッジ点D2,D28のデータが読み出される。これらの
Y座標「201」をY0(=200)と比較する。違っ
ている。従ってここではS50に進む。新しい値(=2
01)をY0に代入する。次にY座標が変化することを
示す識別子CYをmが示すアドレスAB7に書き込む
(S51)。mをインクリメントし、次のアドレスAB
8に新たなY座標値「201」を書き込む(S52,S
53)。mをインクリメントする(S54)。S55〜
S58が実行され、エッジ点D2,D28で表わされる
塗り潰し区間のランレングスデータRD3がAB9,A
B10に書き込まれる。ここでは2つのエッジ点が隣り
合っているので、 RL=2−1+1=2 となる。即ちここでの塗り潰しの長さ(字画の幅)は2
ドットである。同様の処理が図6のAA13〜AA16
のD21,D19について行なわれる。Y座標が同じ2
01であるので、識別子CY等の挿入は無く、そのラン
レングスデータRD4は前のRD3のすぐ後に置かれ
る。このようにして、各スキャンラインについて、ラン
レングスデータRDが生成される。最後に図6のAA5
7の終りコード「E」が読み込まれる。S38の答が
「いいえ」になる。S41に進み、図8のAB49に
「E」が書き込まれ、処理が終る。これで図8のランレ
ングスデータ列が生成された。
ッジ点D2,D28のデータが読み出される。これらの
Y座標「201」をY0(=200)と比較する。違っ
ている。従ってここではS50に進む。新しい値(=2
01)をY0に代入する。次にY座標が変化することを
示す識別子CYをmが示すアドレスAB7に書き込む
(S51)。mをインクリメントし、次のアドレスAB
8に新たなY座標値「201」を書き込む(S52,S
53)。mをインクリメントする(S54)。S55〜
S58が実行され、エッジ点D2,D28で表わされる
塗り潰し区間のランレングスデータRD3がAB9,A
B10に書き込まれる。ここでは2つのエッジ点が隣り
合っているので、 RL=2−1+1=2 となる。即ちここでの塗り潰しの長さ(字画の幅)は2
ドットである。同様の処理が図6のAA13〜AA16
のD21,D19について行なわれる。Y座標が同じ2
01であるので、識別子CY等の挿入は無く、そのラン
レングスデータRD4は前のRD3のすぐ後に置かれ
る。このようにして、各スキャンラインについて、ラン
レングスデータRDが生成される。最後に図6のAA5
7の終りコード「E」が読み込まれる。S38の答が
「いいえ」になる。S41に進み、図8のAB49に
「E」が書き込まれ、処理が終る。これで図8のランレ
ングスデータ列が生成された。
【0015】図8のランレングスデータ列は図1のデー
タ列メモリ18に供給される。ビットマップ描画部20
は、中央制御部13から供給されるこのランレングスデ
ータ列の先頭アドレスとオフセット値に基づき、ページ
メモリ22上にビットマップデータを生成する。ここで
の処理によりページメモリ22に描かれるビットマップ
データを図13に示す。なお説明の便宜上、ランレング
スデータ列のアドレスはこのデータ生成の時と同じもの
を用いる(図8)。ページメモリ22の座標はディスプ
レイ24と同じとし、そこに書き込まれるドットには符
号PDを付す。区別するときは符号の後にX,Y各座標
値を付す。与えられるオフセット値はX0=400,Y
0=200とする。元のベクトルフォントデータのD1
の座標がX=100,Y=200であるから、ページメ
モリ22上のD1に対応する座標はX=500,Y=4
00となる。
タ列メモリ18に供給される。ビットマップ描画部20
は、中央制御部13から供給されるこのランレングスデ
ータ列の先頭アドレスとオフセット値に基づき、ページ
メモリ22上にビットマップデータを生成する。ここで
の処理によりページメモリ22に描かれるビットマップ
データを図13に示す。なお説明の便宜上、ランレング
スデータ列のアドレスはこのデータ生成の時と同じもの
を用いる(図8)。ページメモリ22の座標はディスプ
レイ24と同じとし、そこに書き込まれるドットには符
号PDを付す。区別するときは符号の後にX,Y各座標
値を付す。与えられるオフセット値はX0=400,Y
0=200とする。元のベクトルフォントデータのD1
の座標がX=100,Y=200であるから、ページメ
モリ22上のD1に対応する座標はX=500,Y=4
00となる。
【0016】図9,図10を中心にして、ここでの処理
を説明する。先ずカウンタnを「1」、フラグF1,F
2を「1」に初期化する(S61)。カウンタnは図8
のアドレスABのカウントに使用される。フラグF1は
識別子CYが読み込まれたとき「1」とされ、次のデー
タをY座標データとして取り込む為に使用される。フラ
グF2はX座標データが取り込まれたとき「1」とさ
れ、それに続く塗り潰し区間の長さRLの取り込みに使
用される。S62に進み、カウンタnが示す図8のアド
レスAB1のデータを変数TDに取り込む。変数TDは
取り込みデータの一時保持に使用される。取り込んだデ
ータが終りコード「E」か否かが検査される(S6
3)。終りコードなら処理を終る(図8、AB49のデ
ータを読み込んだ場合。)。ここでは「いいえ」であ
る。S64に進み、読み込んだデータが識別子か否かが
検査される。「はい」である。前述のフラグF1が
「1」にされ(S65)、nがインクリメントされ(S
66)、S62に戻る。次のAB2のデータが読み込ま
れる。今度はS64の答が「いいえ」である。S67に
進み、フラグF1が立てられているか検査される。「は
い」である。フラグF1が「0」に戻され、読み込まれ
たデータが変数TYに代入される(S68,S69)。
変数TYはY座標データ保持に使用される。nがインク
リメントされ(S70)、S62に戻る。
を説明する。先ずカウンタnを「1」、フラグF1,F
2を「1」に初期化する(S61)。カウンタnは図8
のアドレスABのカウントに使用される。フラグF1は
識別子CYが読み込まれたとき「1」とされ、次のデー
タをY座標データとして取り込む為に使用される。フラ
グF2はX座標データが取り込まれたとき「1」とさ
れ、それに続く塗り潰し区間の長さRLの取り込みに使
用される。S62に進み、カウンタnが示す図8のアド
レスAB1のデータを変数TDに取り込む。変数TDは
取り込みデータの一時保持に使用される。取り込んだデ
ータが終りコード「E」か否かが検査される(S6
3)。終りコードなら処理を終る(図8、AB49のデ
ータを読み込んだ場合。)。ここでは「いいえ」であ
る。S64に進み、読み込んだデータが識別子か否かが
検査される。「はい」である。前述のフラグF1が
「1」にされ(S65)、nがインクリメントされ(S
66)、S62に戻る。次のAB2のデータが読み込ま
れる。今度はS64の答が「いいえ」である。S67に
進み、フラグF1が立てられているか検査される。「は
い」である。フラグF1が「0」に戻され、読み込まれ
たデータが変数TYに代入される(S68,S69)。
変数TYはY座標データ保持に使用される。nがインク
リメントされ(S70)、S62に戻る。
【0017】次にAB3のデータが読み込まれる。S6
4,S67とも「いいえ」でS71に進む。フラグF2
が立っているかが検査される。「いいえ」である。S7
2に進み、このときのデータTDが変数TXに代入され
る。変数TXは塗り潰しの起点のX座標値記憶に使用さ
れる。S73に進み、フラグF2が「1」にセットされ
る。nがインクリメントされ(S74)、S62に戻
る。次にAB4のデータが読み込まれる。S71で「は
い」となり、S75に進む。フラグF2が「0」に戻さ
れ、取り込まれたデータTDが変数RLVに代入され
る。変数RLVは塗り潰しの長さを記憶する。これで最
初のランレングスデータRD1、即ち図8のAB3,A
B4のデータが、変数TX,RLVに記憶された。図8
のAB2のY座標データもTYに取り込まれている。こ
れにオフセット値X0,Y0を加えれば、ページメモリ
22の書込開始位置XP,YPが定まる(S77)。こ
こではオフセット値X0=400,Y0=200であ
る。読み込まれた値がTX=100,TY=200であ
るので、ページメモリ22の書き込み開始位置はX=5
00,Y=400となる。図10のS81に進み、カラ
−レジスタ21からそのときの文字色を読み出し変数C
Cに代入する。この後のステップS82からS86のル
ープでこの文字色CCによるページメモリ22の塗り潰
しを行なう。
4,S67とも「いいえ」でS71に進む。フラグF2
が立っているかが検査される。「いいえ」である。S7
2に進み、このときのデータTDが変数TXに代入され
る。変数TXは塗り潰しの起点のX座標値記憶に使用さ
れる。S73に進み、フラグF2が「1」にセットされ
る。nがインクリメントされ(S74)、S62に戻
る。次にAB4のデータが読み込まれる。S71で「は
い」となり、S75に進む。フラグF2が「0」に戻さ
れ、取り込まれたデータTDが変数RLVに代入され
る。変数RLVは塗り潰しの長さを記憶する。これで最
初のランレングスデータRD1、即ち図8のAB3,A
B4のデータが、変数TX,RLVに記憶された。図8
のAB2のY座標データもTYに取り込まれている。こ
れにオフセット値X0,Y0を加えれば、ページメモリ
22の書込開始位置XP,YPが定まる(S77)。こ
こではオフセット値X0=400,Y0=200であ
る。読み込まれた値がTX=100,TY=200であ
るので、ページメモリ22の書き込み開始位置はX=5
00,Y=400となる。図10のS81に進み、カラ
−レジスタ21からそのときの文字色を読み出し変数C
Cに代入する。この後のステップS82からS86のル
ープでこの文字色CCによるページメモリ22の塗り潰
しを行なう。
【0018】ここでは文字色、即ちページメモリ22の
一つのドットの深さが1バイト(8ビット)であったと
する(例えば16色16階調で256色)。またビット
マップ描画部20は所謂32ビットチップであったとす
る。1ドット1バイトであるから、32ビットチップな
ら4ドット分1サイクルで処理できる。但し、塗り潰し
の開始アドレス、終了アドレスは、通常4の倍数になら
ない。そこで本実施例ではS82でこれに対応した書き
込みデータWDの生成を行ない、これをページメモリ2
2に書き込む。この処理の概要を先に説明する。図13
のドットPD(500,400)について塗り潰しを考
える。X=500であるので4で割切れる。従って書き
込みはこのときのスキャンラインY=400の、X=5
00〜503に対して行なわれる。この場合、文字の字
画部分として文字色データCCを書き込むのは、X=5
00のドットのみで、残りの3ドットはそのときそこに
書き込まれていたデータをその儘再度書き込まなければ
ならない。
一つのドットの深さが1バイト(8ビット)であったと
する(例えば16色16階調で256色)。またビット
マップ描画部20は所謂32ビットチップであったとす
る。1ドット1バイトであるから、32ビットチップな
ら4ドット分1サイクルで処理できる。但し、塗り潰し
の開始アドレス、終了アドレスは、通常4の倍数になら
ない。そこで本実施例ではS82でこれに対応した書き
込みデータWDの生成を行ない、これをページメモリ2
2に書き込む。この処理の概要を先に説明する。図13
のドットPD(500,400)について塗り潰しを考
える。X=500であるので4で割切れる。従って書き
込みはこのときのスキャンラインY=400の、X=5
00〜503に対して行なわれる。この場合、文字の字
画部分として文字色データCCを書き込むのは、X=5
00のドットのみで、残りの3ドットはそのときそこに
書き込まれていたデータをその儘再度書き込まなければ
ならない。
【0019】そこで本実施例では、図12の手順で、例
えば最初の1バイトが文字色CC、残り3バイトが元の
ページメモリのデータである書き込みデータWDを生成
する。先ず最初のバイトがFFh、残り3バイトが00
hのマスキングデータMS1と、データの配置がその逆
になっているマスキングデータMS2を生成する。なお
「h」はヘキサコードであることを示す。文字色データ
CC、例えば56hが4バイト連なるデータCCAと、
先のマスキングデータMS1の間で各ビットの論理積
(アンド)をとる。最初の1バイトが文字色CC、残り
3バイトが00hとなっているデータCCMが生成され
る。そのときのページメモリ22の該当部分(ここでは
Y=400のX=500〜503)のデータMDAを読
み出す。各バイトの内容が図12のようになっていたと
する。このデータMDAと、後のマスキングデータMS
2の間で各ビットの論理積(アンド)をとる。最初の1
バイトが00h、残り3バイトが元のページメモリのデ
ータのままとなっているデータMDMが生成される。デ
ータCCMとデータMDMの論理和(オア)をとる。求
めるデータ、即ち最初の1バイトが文字色CC、残り3
バイトが元のページメモリのデータとなっている書き込
みデータWDが生成される。
えば最初の1バイトが文字色CC、残り3バイトが元の
ページメモリのデータである書き込みデータWDを生成
する。先ず最初のバイトがFFh、残り3バイトが00
hのマスキングデータMS1と、データの配置がその逆
になっているマスキングデータMS2を生成する。なお
「h」はヘキサコードであることを示す。文字色データ
CC、例えば56hが4バイト連なるデータCCAと、
先のマスキングデータMS1の間で各ビットの論理積
(アンド)をとる。最初の1バイトが文字色CC、残り
3バイトが00hとなっているデータCCMが生成され
る。そのときのページメモリ22の該当部分(ここでは
Y=400のX=500〜503)のデータMDAを読
み出す。各バイトの内容が図12のようになっていたと
する。このデータMDAと、後のマスキングデータMS
2の間で各ビットの論理積(アンド)をとる。最初の1
バイトが00h、残り3バイトが元のページメモリのデ
ータのままとなっているデータMDMが生成される。デ
ータCCMとデータMDMの論理和(オア)をとる。求
めるデータ、即ち最初の1バイトが文字色CC、残り3
バイトが元のページメモリのデータとなっている書き込
みデータWDが生成される。
【0020】具体的処理例を図11に示す。ここでは図
12のマスキング用データMS1,MS2を文字変数と
して扱うので、MS1$,MS2$と表現する。先ずS
91でこれらを初期化する(ヌルの文字列にする)。次
のステップS92で書き込み座標データXPを4で除
し、余り「XPmod4=0」を得る。これに変数RL
Vの値(このとき「1」)を加算し、kに代入する。k
=1である。この変数kは図12のマスク用データMS
1のFFhとされるべきバイトの数、及びマスク用デー
タMS2の00hとされるべきバイトの数を表わす。S
93〜S95のループにより、この為の処理が行なわれ
る。即ち各ビット「1」の文字CHR$(&HFF)が
kの数だけ文字列MS1$に付加される。また各ビット
「0」の文字CHR$(&H00)がkの数だけ文字列
MS2$に付加される。k=1なので、ここでは夫々1
バイトだけ付加される。次のステップS96で変数jが
求められる。変数jはMS1$,MS2$の残りのバイ
トを夫々00h,FFhで埋める為のもので、S92に
於けるkの値(XPmod4+RLV)を4から減算し
て求める。ここでは「3」である。このjの値が「0」
になるまで、S97〜S99のループが実行される。こ
れで図12のMS1及びMS2のデータが生成された。
そして図11のS100〜S103により、図12のC
CM及びMDMの生成が行なわれ、これの論理和により
求める書き込みデータWDが生成される。
12のマスキング用データMS1,MS2を文字変数と
して扱うので、MS1$,MS2$と表現する。先ずS
91でこれらを初期化する(ヌルの文字列にする)。次
のステップS92で書き込み座標データXPを4で除
し、余り「XPmod4=0」を得る。これに変数RL
Vの値(このとき「1」)を加算し、kに代入する。k
=1である。この変数kは図12のマスク用データMS
1のFFhとされるべきバイトの数、及びマスク用デー
タMS2の00hとされるべきバイトの数を表わす。S
93〜S95のループにより、この為の処理が行なわれ
る。即ち各ビット「1」の文字CHR$(&HFF)が
kの数だけ文字列MS1$に付加される。また各ビット
「0」の文字CHR$(&H00)がkの数だけ文字列
MS2$に付加される。k=1なので、ここでは夫々1
バイトだけ付加される。次のステップS96で変数jが
求められる。変数jはMS1$,MS2$の残りのバイ
トを夫々00h,FFhで埋める為のもので、S92に
於けるkの値(XPmod4+RLV)を4から減算し
て求める。ここでは「3」である。このjの値が「0」
になるまで、S97〜S99のループが実行される。こ
れで図12のMS1及びMS2のデータが生成された。
そして図11のS100〜S103により、図12のC
CM及びMDMの生成が行なわれ、これの論理和により
求める書き込みデータWDが生成される。
【0021】書き込みデータWDの生成が終ると図10
のS83に進む。データWDがスキャンラインY=40
0のX=500〜503の4ドットに書き込まれる。次
のステップS84で書き込み位置XPの更新と、塗り潰
し区間の変数RLVの更新を行なう。S82(図11)
の処理により、書き込み開始位置XPが4の倍数で割切
れなかったドットについての処置は終了している。そこ
でこのS84では、書き込み単位である4ドットから、
その余りの分(XPmod4)を減算し、残った値をそ
のときのXPに加算して、新たな書き込み位置XPとす
る。塗り潰し区間についてはその数を減算し、新たなR
LVとする。ここで取り上げた例、即ち図13のドット
PD(500,400)の場合、4で割切れる。従って
このステップS93で夫々「4」づつ減算され、RLV
が負になる。S85で「はい」となる。そこでS86に
進み、カウンタnがインクリメントされ、図9のS62
に戻って、同じスキャンラインの次のランレングスデー
タ、即ち図8のRD2についてページメモリ22への書
き込みが行なわれる。
のS83に進む。データWDがスキャンラインY=40
0のX=500〜503の4ドットに書き込まれる。次
のステップS84で書き込み位置XPの更新と、塗り潰
し区間の変数RLVの更新を行なう。S82(図11)
の処理により、書き込み開始位置XPが4の倍数で割切
れなかったドットについての処置は終了している。そこ
でこのS84では、書き込み単位である4ドットから、
その余りの分(XPmod4)を減算し、残った値をそ
のときのXPに加算して、新たな書き込み位置XPとす
る。塗り潰し区間についてはその数を減算し、新たなR
LVとする。ここで取り上げた例、即ち図13のドット
PD(500,400)の場合、4で割切れる。従って
このステップS93で夫々「4」づつ減算され、RLV
が負になる。S85で「はい」となる。そこでS86に
進み、カウンタnがインクリメントされ、図9のS62
に戻って、同じスキャンラインの次のランレングスデー
タ、即ち図8のRD2についてページメモリ22への書
き込みが行なわれる。
【0022】このようにしてビットマップ描画部20に
より、ページメモリ22へのビットマップ展開が行なわ
れる。ディスプレイ制御部23はこれを読み出しディス
プレイ24に表示する。ディスプレイ24のX=50
0,Y=400を起点にして図13に示すような文字が
描かれる。
より、ページメモリ22へのビットマップ展開が行なわ
れる。ディスプレイ制御部23はこれを読み出しディス
プレイ24に表示する。ディスプレイ24のX=50
0,Y=400を起点にして図13に示すような文字が
描かれる。
【0023】なお本発明によれば1文字あたりのデータ
量が大幅に減少する。従って本実施例のようにキャッシ
ュ制御をする場合、従来に比べ格段に多くの文字をキャ
ッシングし得る。また本発明は印刷装置、その他の文字
出力装置にも適用可能である。これらの形で実施される
ものも本発明の範囲に含まれる。
量が大幅に減少する。従って本実施例のようにキャッシ
ュ制御をする場合、従来に比べ格段に多くの文字をキャ
ッシングし得る。また本発明は印刷装置、その他の文字
出力装置にも適用可能である。これらの形で実施される
ものも本発明の範囲に含まれる。
【0024】
【発明の効果】以上説明したように、本発明では変換手
段によりベクトルフォントデータをランレングスの座標
データ列に変換し、これをバッファ手段に記憶し、これ
に基づいて描画手段で出力用メモリにビットマップデー
タを描画するようにした。ランレングスのデータ列はビ
ットマップデータに比べ格段に小さい。従って従来の装
置のようにバッファ手段の記憶容量で展開可能な文字の
大きさが制限されてしまうことは無く、大きな文字も存
分に描ける。また、今までと同じ大きさで良いとするな
ら、バッファ手段の記憶容量を大幅に減少させることが
出来る。
段によりベクトルフォントデータをランレングスの座標
データ列に変換し、これをバッファ手段に記憶し、これ
に基づいて描画手段で出力用メモリにビットマップデー
タを描画するようにした。ランレングスのデータ列はビ
ットマップデータに比べ格段に小さい。従って従来の装
置のようにバッファ手段の記憶容量で展開可能な文字の
大きさが制限されてしまうことは無く、大きな文字も存
分に描ける。また、今までと同じ大きさで良いとするな
ら、バッファ手段の記憶容量を大幅に減少させることが
出来る。
【図1】 実施例の構成を示すブロック図。
【図2】 実施例の動作の概要を示すフローチャート。
【図3】 ランレングスの座標データ列への変換手順の
概要を示すフローチャート。
概要を示すフローチャート。
【図4】 ベクトルフォントデータを示す線図。
【図5】 エッジ点及びそのデータを示す線図。
【図6】 ソートしたエッジ点のリストを示す線図。
【図7】 ランレングスの座標データへの変換手順の詳
細を示すフローチャート。
細を示すフローチャート。
【図8】 生成されたランレングスの座標データ列を示
す線図。
す線図。
【図9】 出力メモリへのビットマップデータ描画手順
を示すフローチャート(その1)。
を示すフローチャート(その1)。
【図10】 出力メモリへのビットマップデータ描画手
順を示すフローチャート(その2)。
順を示すフローチャート(その2)。
【図11】 書き込みデータ生成手順の詳細を示すフロ
ーチャート。
ーチャート。
【図12】 書き込みデータの生成手順の概要を示す線
図。
図。
【図13】 出力用メモリに描画されたビットマップデ
ータを示す線図。
ータを示す線図。
16 変換手段 18 バッファ手段 20 描画手段 22 出力メモリ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 堀 素史 神奈川県川崎市高津区坂戸3丁目2番1号 KSP R&D ビジネスパークビル 富士ゼロックス株式会社内
Claims (1)
- 【請求項1】 ベクトルフォントデータを展開して出力
する文字出力装置に於て、前記ベクトルフォントデータ
をランレングスの座標データ列に変換する変換手段と、
該変換された座標データ列を記憶するバッファ手段と、
該バッファ手段から読み出した座標データ列に基づき出
力用メモリにビットマップデータを描画する描画手段と
を備えたことを特徴とする文字出力装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4061316A JPH05224653A (ja) | 1992-02-14 | 1992-02-14 | 文字出力装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4061316A JPH05224653A (ja) | 1992-02-14 | 1992-02-14 | 文字出力装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH05224653A true JPH05224653A (ja) | 1993-09-03 |
Family
ID=13167630
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4061316A Pending JPH05224653A (ja) | 1992-02-14 | 1992-02-14 | 文字出力装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH05224653A (ja) |
-
1992
- 1992-02-14 JP JP4061316A patent/JPH05224653A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5016001A (en) | Pattern data generating system | |
| JPS60140472A (ja) | 対話型フオント・パタ−ン作成・修正・合成制御装置 | |
| JP3145509B2 (ja) | 文字生成方法及びその装置 | |
| KR100212412B1 (ko) | 문자패턴 생성장치 | |
| US5519412A (en) | Pattern processing method | |
| JPH01296389A (ja) | 図形処理方法及びその装置 | |
| JPH02270019A (ja) | 高品質文字パターン発生方式 | |
| JP3807571B2 (ja) | 形状変換方法および該方法を実行させるプログラムを記録した記録媒体、ならびに形状変換装置 | |
| JP3034140B2 (ja) | 文字生成方法及びその装置 | |
| JP3146771B2 (ja) | フォントラスタライズ装置およびその方法 | |
| US5977949A (en) | Character forming apparatus | |
| JP2000013601A (ja) | 印刷情報処理装置、中間データ生成装置および方法 | |
| JP3089906B2 (ja) | 描画装置 | |
| JP3344538B2 (ja) | 文字生成装置 | |
| JPH03288197A (ja) | 文字処理装置 | |
| JP2835056B2 (ja) | 高品質文字パターン発生方式 | |
| JP2935189B2 (ja) | アウトラインフォント処理装置 | |
| JP3347756B2 (ja) | 文字生成方法及びその装置 | |
| JP2976671B2 (ja) | データ展開方法 | |
| JP2619931B2 (ja) | 文字処理装置および文字処理方法 | |
| JP3084817B2 (ja) | 文字出力装置 | |
| JPH04186292A (ja) | 文字パターン作成装置 | |
| JPH04340592A (ja) | ベクトルフォント出力装置 | |
| JPH03139697A (ja) | ミクストモード文書の表示方法 | |
| JPH06168337A (ja) | 塗り潰し処理方法 |