(57)【特許請求の範囲】
【請求項１】
輪郭の交差を許すストローク単位で登録されたデータから交差を許さない輪郭を発生させる情報処理システムにおいて、
登録された１文字分の全てのストロークからストロークを２つずつ抽出する抽出手段と、
該抽出手段により抽出された２つのストロークの対から交点座標を算出する交点座標算出手段と、
該交点座標算出手段により算出された交点座標をストアする交点座標ストア手段と、
該交点座標ストア手段にストアされた交点座標に基づき予め定めた規則に従って輪郭を繋ぎ替える繋ぎ替え手段と
を備え、
前記輪郭の交差を許すストローク単位で登録されたデータは、各輪郭の回転方向と、スタート点番号と、エンド点番号と、前記２つのストロークの対が交差しているか否かを判定するための、輪郭データの最大座標値と、輪郭データの最小座標値とを含むことを特徴とする情報処理システム。
【請求項２】
請求項１において、前記繋ぎ替え手段により輪郭を繋ぎ替えて輪郭データを生成する生成手段と、
該生成手段により生成された輪郭データに基づき文字パターンを出力する出力手段と
をさらに備えたことを特徴とする情報処理システム。
【請求項３】
請求項２において、前記出力手段はプリンタであることを特徴とする情報処理システム。
【請求項４】
請求項２において、前記出力手段は表示装置であることを特徴とする情報処理システム。
【請求項５】
輪郭の交差を許すストローク単位で登録されたデータから交差を許さない輪郭を発生させる情報処理システムで実行される情報処理方法において、
登録された１文字分の全てのストロークからストロークを２つずつ抽出する抽出ステップと、
該抽出ステップにより抽出された２つのストロークの対から交点座標を算出する交点座標算出ステップと、
算出された交点座標をストアする交点座標ストアステップと、
ストアされた交点座標に基づき予め定めた規則に従って輪郭を繋ぎ替える繋ぎ替えステップと
を備え、
前記輪郭の交差を許すストローク単位で登録されたデータは、各輪郭の回転方向と、スタート点番号と、エンド点番号と、前記２つのストロークの対が交差しているか否かを判定するための、輪郭データの最大座標値と、輪郭データの最小座標値とを含むことを特徴とする情報処理方法。
【請求項６】
輪郭の交差を許すストローク単位で登録されたデータから交差を許さない輪郭を発生させる情報処理システムにおいて、
輪郭の交差を許すストローク単位で登録されたデータに基づき文字を表示する表示制御手段と、
該表示制御手段により表示された輪郭の交差を許すストロークを含む文字に対して、交差を許さない輪郭を編集領域全体で発生させるか一部で発生させるかを設定するための設定手段と、
該設定手段により編集領域一部で発生が指定された場合にその領域を指定し確定するための領域指定確定手段と、
該領域指定確定手段により領域が確定された場合に、当該領域に関わっているストロークを抽出する抽出手段と、
該抽出手段により抽出された２つのストロークの対から交点座標を算出する交点座標算出手段と、
該交点座標算出手段により算出された交点座標をストアする交点座標ストア手段と、
該交点座標ストア手段にストアされた交点座標に基づき予め定めた規則に従って輪郭を繋ぎ替える繋ぎ替え手段と
を備え、
前記輪郭の交差を許すストローク単位で登録されたデータは、各輪郭の回転方向と、スタート点番号と、エンド点番号と、前記２つのストロークの対が交差しているか否かを判定するための、輪郭データの最大座標値と、輪郭データの最小座標値とを含むことを特徴とする情報処理システム。
【請求項７】
輪郭の交差を許すストローク単位で登録されたデータから交差を許さない輪郭を発生させる情報処理システムにおいて、
輪郭の交差を許すストローク単位で登録されたデータに基づき文字を表示する表示制御手段と、
該表示制御手段により表示された輪郭の交差を許すストロークを含む文字に対して、交差を許さない輪郭を編集領域全体で発生させるか一部で発生させるかを設定するための設定手段と、
該設定手段により編集領域全体で発生が設定された場合に、登録された１文字分の全てのストロークからストロークを２つずつ抽出する抽出手段と、
該抽出手段により抽出された２つのストロークの対から交点座標を算出する交点座標算出手段と、
該交点座標算出手段により算出された交点座標をストアする交点座標ストア手段と、
該交点座標ストア手段にストアされた交点座標に基づき予め定めた規則に従って輪郭を繋ぎ替える繋ぎ替え手段と
を備え、
前記輪郭の交差を許すストローク単位で登録されたデータは、各輪郭の回転方向と、スタート点番号と、エンド点番号と、前記２つのストロークの対が交差しているか否かを判定するための、輪郭データの最大座標値と、輪郭データの最小座標値とを含むことを特徴とする情報処理システム。
【請求項８】
輪郭の交差を許すストローク単位で登録されたデータから交差を許さない輪郭を発生させる情報処理システムで実行される情報処理方法において、
輪郭の交差を許すストローク単位で登録されたデータに基づき文字を表示するステップと、
表示された輪郭の交差を許すストロークを含む文字に対して、交差を許さない輪郭を編集領域全体で発生させる設定が行われた場合に、登録された１文字分の全てのストロークからストロークを２つずつ抽出するステップと、
抽出された２つのストロークの対から交点座標を算出するステップと、
算出された交点座標をストアするステップと、
ストアされた交点座標に基づき予め定めた規則に従って輪郭を繋ぎ替えるステップと
を備え、
前記輪郭の交差を許すストローク単位で登録されたデータは、各輪郭の回転方向と、スタート点番号と、エンド点番号と、前記２つのストロークの対が交差しているか否かを判定するための、輪郭データの最大座標値と、輪郭データの最小座標値とを含むことを特徴とする情報処理方法。
【請求項９】
輪郭の交差を許すストローク単位で登録されたデータから交差を許さない輪郭を発生させる情報処理システムで実行される情報処理方法において、
輪郭の交差を許すストローク単位で登録されたデータに基づき文字を表示するステップと、
表示された輪郭の交差を許すストロークを含む文字に対して、交差を許さない輪郭を編集領域の一部で発生させる設定が行われ、しかも、交差を許さない輪郭を発生させるための領域が確定された場合に、当該領域に関わっているストロークを抽出するステップと、
抽出された２つのストロークの対から交点座標を算出するステップと、
算出された交点座標をストアするステップと、
ストアされた交点座標に基づき予め定めた規則に従って輪郭を繋ぎ替えるステップと
を備え、
前記輪郭の交差を許すストローク単位で登録されたデータは、各輪郭の回転方向と、スタート点番号と、エンド点番号と、前記２つのストロークの対が交差しているか否かを判定するための、輪郭データの最大座標値と、輪郭データの最小座標値とを含むことを特徴とする情報処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、交差を許すストロークのデータを交差を許さない全輪郭データに変換して高品質の文字図形を出力する情報処理システム及び方法並びに輪郭データ処理装置及び方法に関する。
【０００２】
【従来の技術】
交差を許すストローク型の文字から、大サイズの文字や白抜き文字等を発生させたい場合には、交差を許すストロークのデータから交差を許さない全輪郭のデータにー旦コンバートしてから処理する必要がある。従来から、ストロークのデータから一旦ビットマップのデータを発生させ、その輪郭を追跡し、全輪郭の座標データを得るような処理を行っていた。
【０００３】
【発明が解決しようとする課題】
大サイズの文字や白抜き文字等の品質を上げるには、所望の出力サイズでビットマップを発生さてから輪郭を得る必要があるので、大サイズになればなるほど、処理時間がかかってしまうという問題点があった。
【０００４】
また、ビットマップを発生させているとき、展開用メモリが不足してしまい、あるサイズまでしか展開できないことがあり、このような場合、それ以上のサイズに関しては、全輪郭を発生させた後の座標値を拡大しなければならず、メモリの容量によっては品質の劣化が余儀なくされてしまうという問題点があった。
【０００５】
一方、高速に処理しようとすると、ビットマップのイメージを小さくしてから、その輪郭を追跡し、全輪郭の座標を得た後、拡大縮小するという処理を行っていたので、出力された大サイズの文字の品質の劣化が著しかった。
【０００６】
本発明の目的は、上記のような問題点を解決し、交差を許すストロークデータから交差を許さない全輪郭データをより高速で発生させ、高品質な文字および図形を出力することができる情報処理システム及び方法並びに輪郭データ処理装置及び方法を提供することにある。
【０００７】
【課題を解決するための手段】
請求項１の発明は、輪郭の交差を許すストローク単位で登録されたデータから交差を許さない輪郭を発生させる情報処理システムにおいて、登録された１文字分の全てのストロークからストロークを２つずつ抽出する抽出手段と、該抽出手段により抽出された２つのストロークの対から交点座標を算出する交点座標算出手段と、該交点座標算出手段により算出された交点座標をストアする交点座標ストア手段と、該交点座標ストア手段にストアされた交点座標に基づき予め定めた規則に従って輪郭を繋ぎ替える繋ぎ替え手段とを備え、前記輪郭の交差を許すストローク単位で登録されたデータは、各輪郭の回転方向と、スタート点番号と、エンド点番号と、前記２つのストロークの対が交差しているか否かを判定するための、輪郭データの最大座標値と、輪郭データの最小座標値とを含むことを特徴とする。
【０００８】
請求項１において、繋ぎ替え手段により輪郭を繋ぎ替えて輪郭データを生成する生成手段と、生成手段により生成された輪郭データに基づき文字パターンを出力する出力手段とをさらに備えている。
【０００９】
請求項２において、出力手段はプリンタとすることができる。
【００１０】
請求項２において、出力手段は表示装置とすることができる。
【００１１】
請求項５の発明は、輪郭の交差を許すストローク単位で登録されたデータから交差を許さない輪郭を発生させる情報処理システムで実行される情報処理方法において、登録された１文字分の全てのストロークからストロークを２つずつ抽出する抽出ステップと、該抽出ステップにより抽出された２つのストロークの対から交点座標を算出する交点座標算出ステップと、算出された交点座標をストアする交点座標ストアステップと、ストアされた交点座標に基づき予め定めた規則に従って輪郭を繋ぎ替える繋ぎ替えステップとを備え、前記輪郭の交差を許すストローク単位で登録されたデータは、各輪郭の回転方向と、スタート点番号と、エンド点番号と、前記２つのストロークの対が交差しているか否かを判定するための、輪郭データの最大座標値と、輪郭データの最小座標値とを含むことを特徴とする。
【００１２】
請求項６の発明は、輪郭の交差を許すストローク単位で登録されたデータから交差を許さない輪郭を発生させる情報処理システムにおいて、輪郭の交差を許すストローク単位で登録されたデータに基づき文字を表示する表示制御手段と、該表示制御手段により表示された輪郭の交差を許すストロークを含む文字に対して、交差を許さない輪郭を編集領域全体で発生させるか一部で発生させるかを設定するための設定手段と、該設定手段により編集領域一部で発生が指定された場合にその領域を指定し確定するための領域指定確定手段と、該領域指定確定手段により領域が確定された場合に、当該領域に関わっているストロークを抽出する抽出手段と、該抽出手段により抽出された２つのストロークの対から交点座標を算出する交点座標算出手段と、該交点座標算出手段により算出された交点座標をストアする交点座標ストア手段と、該交点座標ストア手段にストアされた交点座標に基づき予め定めた規則に従って輪郭を繋ぎ替える繋ぎ替え手段とを備え、前記輪郭の交差を許すストローク単位で登録されたデータは、各輪郭の回転方向と、スタート点番号と、エンド点番号と、前記２つのストロークの対が交差しているか否かを判定するための、輪郭データの最大座標値と、輪郭データの最小座標値とを含むことを特徴とする。
【００１３】
請求項７の発明は、輪郭の交差を許すストローク単位で登録されたデータから交差を許さない輪郭を発生させる情報処理システムにおいて、輪郭の交差を許すストローク単位で登録されたデータに基づき文字を表示する表示制御手段と、該表示制御手段により表示された輪郭の交差を許すストロークを含む文字に対して、交差を許さない輪郭を編集領域全体で発生させるか一部で発生させるかを設定するための設定手段と、該設定手段により編集領域全体で発生が設定された場合に、登録された１文字分の全てのストロークからストロークを２つずつ抽出する抽出手段と、該抽出手段により抽出された２つのストロークの対から交点座標を算出する交点座標算出手段と、該交点座標算出手段により算出された交点座標をストアする交点座標ストア手段と、該交点座標ストア手段にストアされた交点座標に基づき予め定めた規則に従って輪郭を繋ぎ替える繋ぎ替え手段とを備え、前記輪郭の交差を許すストローク単位で登録されたデータは、各輪郭の回転方向と、スタート点番号と、エンド点番号と、前記２つのストロークの対が交差しているか否かを判定するための、輪郭データの最大座標値と、輪郭データの最小座標値とを含むことを特徴とする。
【００１４】
請求項８の発明は、輪郭の交差を許すストローク単位で登録されたデータから交差を許さない輪郭を発生させる情報処理システムで実行される情報処理方法において、輪郭の交差を許すストローク単位で登録されたデータに基づき文字を表示するステップと、表示された輪郭の交差を許すストロークを含む文字に対して、交差を許さない輪郭を編集領域全体で発生させる設定が行われた場合に、登録された１文字分の全てのストロークからストロークを２つずつ抽出するステップと、抽出された２つのストロークの対から交点座標を算出するステップと、算出された交点座標をストアするステップと、ストアされた交点座標に基づき予め定めた規則に従って輪郭を繋ぎ替えるステップとを備え、前記輪郭の交差を許すストローク単位で登録されたデータは、各輪郭の回転方向と、スタート点番号と、エンド点番号と、前記２つのストロークの対が交差しているか否かを判定するための、輪郭データの最大座標値と、輪郭データの最小座標値とを含むことを特徴とする。
【００１５】
請求項９の発明は、輪郭の交差を許すストローク単位で登録されたデータから交差を許さない輪郭を発生させる情報処理システムで実行される情報処理方法において、輪郭の交差を許すストローク単位で登録されたデータに基づき文字を表示するステップと、表示された輪郭の交差を許すストロークを含む文字に対して、交差を許さない輪郭を編集領域の一部で発生させる設定が行われ、しかも、交差を許さない輪郭を発生させるための領域が確定された場合に、当該領域に関わっているストロークを抽出するステップと、抽出された２つのストロークの対から交点座標を算出するステップと、算出された交点座標をストアするステップと、ストアされた交点座標に基づき予め定めた規則に従って輪郭を繋ぎ替えるステップとを備え、前記輪郭の交差を許すストローク単位で登録されたデータは、各輪郭の回転方向と、スタート点番号と、エンド点番号と、前記２つのストロークの対が交差しているか否かを判定するための、輪郭データの最大座標値と、輪郭データの最小座標値とを含むことを特徴とする。
【００２９】
【発明の実施の形態】
＜第１の実施の形態＞
図１は本発明の第１の実施の形態を示す。本実施の形態のシステムは、複数の機器からなるシスチムでもよく、１つの機器からなる装置でもよい。本システムは日本語ワードプロセッサであってもよいし、ワークステーションあるいはパーソナルコンピュータ等のシステムであってもよい。
【００３０】
図１において、１はＣＰＵ(central processing unit) であり、この装置全体の制御および演算処理等を行うものである。ＣＰＵ１は必要に応じて外部記憶装置９の記憶データを参照したり、ＲＡＭ３にロードする。２はＲＯＭ(read only memory)であり、システム起動プログラムと、文字変換用の文字パターン・データ等が記憶してある。３はＲＡＭ(random access memory)であり、ＣＰＵ１の演算に使用するデータと、ＣＰＵ１の演算結果を一時記憶するためのものである。４はキーボード制御部（ＫＢＣ）であり、キーボード（ＫＢ）５よりキー入力データ（文字コードや制御コード）を受け取りＣＰＵ１へ伝送するものである。７はＣＲＴ(cathode ray tube) 表示装置（ＣＲＴ）であり、ビットマップイメージを表示するためのものである。６はディスプレイ制御部（ＣＲＴＣ）であり、ＲＡＭ３に格納された表示情報、すなわち、文字コードから変換されたビットマップイメージを読み出し、ＣＲＴ表示装置７に転送するものである。９は外部記憶装置であり、プログラムおよびデータを記憶してあり、フロッピー（登録商標）ディスク（ＦＤ）９１と、ハードディスク（ＨＤ）９２と、ＣＤＲＯＭ９３等が好ましい。ハードディスク９２には、オペレーティングシステムがストアしてある。８はディスク制御部（ＤＫＣ）であり、外部記憶装置９のデータ伝送等の制御を行うものである。１０はプリンタ制御部（ＰＲＴＣ）であり、プリンタ装置（ＰＲＴ）１１を駆動制御するものである。プリンタ装置１１としては、レーザビームプリンタか、あるいは熱転写プリンタが好ましい。１２はシステムバスであり、ＣＰＵ１と、ＲＯＭ２と、ＲＡＭ３と、キーボード制御部４と、ディスプレイ制御部６と、ディスク制御部８と、プリンタ制御部１０との間でデータ転送を行うためのものである。
【００３１】
プログラムおよび関連データは、フロッピー（登録商標）ディスク９１あるいはＣＤＲＯＭ９３から供給される。フロッピー（登録商標）ディスク９１またはＣＤＲＯＭ９３からプログラムおよび関連データを、一旦、ハードディスク９２にインストールすることにより、ハードディスク９２からＲＡＭ３にロードし実行することが可能となる。あるいは、ハードディスク９２にインストールせずに、直接、フロッピー（登録商標）ディスク９１またはＣＤＲＯＭ９３からＲＡＭ３にロードし実行することも可能である。
【００３２】
本システムは、電源がＯＮされると、ＲＯＭ２にストアされている基本I/O プログラム中のＩＰＬ（イニシャル・プログラミング・ローディング）機能により、ハードディスク９２からオペレーティングシステムがＲＡＭ３に読み込まれ、その動作が開始される。本システムは基本I/O プログラムと、ウインドウシステム等のオペレーティングシステム２１１と、アプリケーション２１２とが実行されることにより動作する。
【００３３】
図２は図１に示すプリンタ装置１１の構成を示す。図２において、１６１はＣＰＵであり、装置全体の制御および演算処理等を行うものである。１６２はＲＯＭであり、システム起動プログラムおよび文字パターン・データ等を記憶するためのものである。１６３はＲＡＭであり、使用制限のないデータ記憶領域であり、処理ごとに各プログラムおよびデータがロードされる。１６１０はプリンタ制御部（ＰＲＴＣ）であり、記録ヘッド１６１１を駆動制御するものである。上記構成要素１６１〜１６３，１６１０〜１６１２はシステムバス１８１２を介して相互結合されている。
【００３４】
図３は図１に示すＲＡＭ３のメモリマップの一例を示す。領域２１０に基本I/O プログラムがロードされ、領域２１１にウインドウシステム等のオペレーティングシステムがロードされ、領域２１２にアプリケーションがロードされ、領域２１３に関連データがロードされる。領域２１４にワークメモリとして各プログラムが使用する。
【００３５】
図４は図１のＲＯＭ２にストアされる制御プログラムの一例を示すフローチャートである。プログラムのインタフェースとして文字コード、出力サイズ、書体、変形情報等が渡される。
【００３６】
ステップＳ２０１にて、文字コードおよび書体から対象となる文字のデータを読み込む。読み込まれるデータはストローク単位で登録された文字データであり、各ストロークは、図５に示すような芯線＋太さ型のデータであってもよいし、図６に示すような輪郭型のデータであってもよい。読み込まれたデータが芯線＋太さ型のデータである場合は、芯線＋太さ型のデータから、１ストローク単位のアウトライン座標に変換される。
【００３７】
ステップＳ２０２にて、ハードディスク９２等の外部記憶装置９、またはＲＯＭ２に予めストアされたデータが持つ文字の幅と高さと、インターフェイスで要求された出力サイズとから、拡大縮小処理や変形処理等の座標変換を行う。そして、ステップＳ２０３にて、曲線データが存在していればショートベクトルのデータを発生させる。曲線データは３次ベジェ関数と、３次Ｂスプライン関数と、２次ベジェ関数と、２次Ｂスプライン関数等で予め定義されている。ここでは、図７に示すような３次ベジェ関数で定義されている曲線をショートベクトル化する例を説明する。
【００３８】
図７の３次ベジェ関数で定義されたオリジナル点Ａ，Ｂ，Ｃ，Ｄを分解していくと、ａはＡＢの中点、ｂはＢＣの中点、ｃはＣＤの中点、ｘはａｂの中点、ｚはｂｃの中点、ｙはｘｚの中点というように求めていき、新たに、２つのベジェ構成点ＡａｘｙとｙｚｃＤを発生させる。そして、ベジェ構成点ＡａｘｙおよびｙｚｃＤに関して、新たに分解していき、最終的に、予め設定された収束条件を満たすまで分解していく。得られた新たな点列がショートベクトルの点列となる。そして、求めたベジェ曲線からショートベクトル化された点列と、元々直線として登録された点列を輪郭の順序を守るようにして登録する。図８に登録された座標列の様子を示す。登録の内容として、まず、１輪郭の情報を示す輪郭データ管理情報部（図８（ｂ））があり、このメンバとして、各輪郭の回転方向（左回り、右回り）と、スタート点番号と、エンド点番号と、輪郭データの最大座標値と、最小座標値とが格納される。そして、実際に輪郭座標が格納されている輪郭座標データ部がある。これは輪郭データ管理情報部によって示されたスタート点番号からエンド点番号の所に、その輪郭の座標値と、１つ前の点番号と、次の点番号が格納される。輪郭座標データテーブルを図８（ｃ）に示す。
【００３９】
そして、ステップＳ２０４にて、１文字分の全てのストロークの輪郭データ発生が終了したかどうかを判定する。判定した結果、まだ処理すべきストロークが存在していて終了していない場合は、ステップＳ２０２に戻る。他方、１文字分の全てのストロークに対して座標変換および曲線データの直線化が終了した場合には、ステップＳ２０５に移行し、その後、ステップＳ２０４までに登録したストロークの輪郭データをチェックして、お互いの輪郭が交差していれば繋ぎ替えて新たな輪郭を発生させる処理を行う。
【００４０】
すなわち、ステップＳ２０５にて、図８で示すように、登録された最初の輪郭データを基準輪郭データとする。ステップＳ２０６にて、ステップＳ２０５でセットした基準輪郭データの次の輪郭データを対象輪郭データとしてセットする。ついで、ステップＳ２０７にて、基準輪郭データと対象輪郭データに基づき、輪郭が交差しているか否かをチェックする。実際には、図８に示した各輪郭の情報から、基準輪郭データと対象輪郭データの大きい方の最大座標値と小さい方の最小座標値との間に、小さい方の最大座標値と大きい方の最小座標値とが存在する２つの線分を、交差している線分とみなす。
【００４１】
そして、ステップＳ２０８にて、交差している線分とみなした線分のデータから交点を計算する処理を行い、ステップＳ２０９にて、得られた交点が小さい方の最大座標値と大きい方の最小座標値との間に存在する場合に、交点ありと判定する。例えば、図９に示すように、この交点が２つの線分に同時に含まれる場合は最終的に交点ありと判定し、図１０に示すように、交点が２つの線分外にある場合には交点なしと判定する。そして、交差する線分を、基準輪郭データの線分と、対象輪郭データの線分を総当たりでチェックして求め、基準輪郭データの全ての線分と対象輪郭データの全ての線分について、交点が存在するか否かをチェックし、存在した場合に交点を算出する。
【００４２】
ステップＳ２０９にて判定した結果、１つ以上の交点がある場合には、ステップＳ２１０にて、連結変更の処理を行う。すなわち、２つの線分が交差している場合には、ステップＳ２０８で求めた交点を追加して、２つの輪郭データの連結の組み替えを行う。
【００４３】
組み替えの様子を図１２および図１３に示す。図１２の例では、基準輪郭データの線分ＤＡと対象輪郭データの線分ＥＦの交点をαとし、線分ＢＣと線分ＥＦの交点をβとし、線分ＢＣと線分ＧＨの交点をγとし、線分ＤＡと線分ＧＨの交点をδとし、各交点を輪郭座標データテーブル（図１２（ｃ））に２点づつ格納する。２点づつ格納する理由は、例えば、線分ＡＢと線分ＣＤが交点Ｚを持つ場合に繋ぎ替えを行うためには、Ａ -->  Ｚ -->  Ｄと、Ｃ -->  Ｚ -->  Ｂというように、新たな座標列がそれぞれ必要になるからである。また、輪郭データの結合を行うと、スタート点とエンド点は１つの輪郭に１つしか必要でないので、対象輪郭データのスタート点とエンド点は、図１２（ｃ）に示すように、輪郭座標データテーブルの９番目のエンド点を削除し、スタート点に繋げ、ループするような形に繋ぎ替える。そして、図１３に示すように、実際に、２つの輪郭の繋ぎ替え作業を行っていく。
【００４４】
図１３（ａ）を説明する。基準輪郭データの線分ＤＡと、対象輪郭データの線分ＥＦは、交点αで交差しているので、一方の繋ぎを、基準輪郭データの線分の基点側Ｄと、対象輪郭データの線分の終点側Ｆと、交点α１とを繋げて、Ｄ -->α１ -->  Ｆとする。もう一方の繋ぎを、対象輪郭データの線分の基点側Ｅと、基準輪郭データの線分の終点側Ａと、交点α２と繋げて、Ｅ -->  α２ -->  とする。そして、その繋ぎ替えに合わせて、輪郭座標データテーブルの次の点番号と、１つ前の点番号とを変更する。次に、図１２に示す基準輪郭データの線分ＢＣと対象輪郭データの線分ＥＦの繋ぎ替えを、図１３（ｂ）を参照して説明する。線分ＥＦは、既に、線分Ｅα２と線分α１Ｆに分割されているので、交点がある方の線分α１Ｆを対象輪郭データの線分として選択する。ついで、線分ＢＣと、線分α１Ｆと、交点βとを、Ｂ -->  β１ -->  Ｆと、α１ -->  β２ -->Ｃというように繋ぎ替える。この繋ぎ替えに合わせて、輪郭座標データテーブルの次の点番号と、１つ前の点番号を変更する。
【００４５】
次に、基準輪郭データの線分ＢＣと、対象輪郭データの線分ＧＨの繋ぎ替えを、図１３（ｃ）を参照して説明する。基準輪郭データの線分β２Ｃと、対象輪郭データの線分ＧＨと、交点γとの繋ぎ替えに更新され、β２ -->  γ１ -->  Ｈと、Ｇ -->  γ２ -->  Ｃのように繋ぎ替えられる。この繋ぎ替えに合わせて、輪郭座標データテーブルも変更する。最後に、図１３（ｄ）を参照して、基準輪郭データの線分ＤＡと、対象輪郭データの線分ＧＨの繋ぎ替えを説明すると、基準輪郭データの線分Ｄαｌと、対象輪郭データの線分γ１Ｈの繋ぎ替えに更新され、Ｄ -->  δ１ -->  Ｈと、γ１ -->  δ２ -->  α１のように繋ぎ替え、この繋ぎ替えに合せて、輪郭座標データテーブルも更新する。ステップＳ２１０における繋ぎ替えが終了した後の輪郭座標データテーブルを図１３（ｄ）に示す。
【００４６】
そして、ステップＳ２１１にて、ステップＳ２１０にて接続を変更したことによって消滅した輪郭の登録削除の作業か、あるいは新たに発生した輪郭の登録追加の作業を行う。既に、ステップＳ２１０にて、Ａ -->  Ｂ -->  β１ -->  Ｆ -->  Ｇ -->  γ２ -->  Ｃ -->  Ｄ -->  δ１ -->  Ｈ -->  Ｅ -->  α２ -->  Ａという連結ができている（図１４（ａ）参照）ので、対象輪郭データであるＥ -->  Ｆ -->  Ｇ -->  Ｈは、基準輪郭データに吸収されてしまっている。従って、対象輪郭データは消滅したということで、図１４の（ｂ）に示すように、スタート点番号とエンド点番号の値を「−１」とする。また、上記輪郭に属さない新たな輪郭（α１ -->  β２ -->  γ１ -->  δ２）が発生している（図１４（ａ）参照）。図１３（ｄ）のままだと、スタート点とエンド点がなく、ループ状態になるので、どれかをスタート点と定め、エンド点を１つ追加することによって、新たな輪郭の登録を行う。登録は輪郭データ管理情報部の一番最後の所に追加する。そして、この輪郭の回転方向と、最小座標値および最大座標値を調べて、図１４（ｂ），（ｃ）に示すように登録する。ステップＳ２０７からステップＳ２１１までの処理が、基準輪郭データと対象輪郭データの連結を変更する処理であり、ここで１つの対象輪郭データに対する処理を終了する。
【００４７】
ステップＳ２１２にて、次の対象輪郭データの候補を検索する。例えば、ステップＳ２１１で対象としていた対象輪郭データの後に別の輪郭データが存在するかどうかをチェックする。ステップＳ２１３にて、対象輪郭データが終了したか否かを判定し、否定判定された場合は、ステップＳ２１４へ進み、ステップＳ２１４にて、ステップＳ２１２において検索した対象輪郭データを新たなチェックすべき輪郭データとして登録し、その後、ステップＳ２０７に戻る。他方、肯定判定された場合、すなわち、もう対象輪郭データが存在しない場合には、これまでの処理で１つの基準データに対して処理を終了したことになるので、ステップＳ２１５に移行する。ステップＳ２１５にて、新たな基準輪郭データを検索する。すなわち、ステップＳ２１４までに対象としていた基準輪郭データの次のデータが存在するかどうかをチェックする。
【００４８】
ステップＳ２１６にて基準輪郭データが終了したか否かを判定し、判定した結果、まだ基準輪郭データが存在する場合には、ステップＳ２１７へ進み、ステップＳ２１７にて、ステップＳ２１５において検索した基準輪郭データを新たにチェックすべき輪郭データとして登録し、その後、ステップＳ２０６に戻る。他方、ステップＳ２１６にて判定した結果、基準輪郭データとなるべき輪郭が存在しない場合には、ステップＳ２１８に進む。（ステップＳ２１２やステップＳ２１５において、対象輪郭データや基準輪郭データを検索する際、スタート点およびエンド点の値が「−１」になっていなければ、存在すると判断する。「−１」となっていた場合には、消滅した輪郭データと判断し、次の輪郭データを検索しに行く。）ステップＳ２１８にて、ステップＳ２１６までに求めた輪郭データを、交差を許さない全輪郭データとして出力する。交差を許さない全輪郭データは輪郭データ管理情報部に登緑された全ての輪郭が出力される分けではない。図１４（ａ）の例では、Ａ -->  Ｂ -->  β１ -->  Ｆ -->  Ｇ -->  γ２ -->  Ｃ -->  Ｄ -->  δ１ -->  Ｈ -->  Ｅ -->  α２ -->  Ａの輪郭は、最終的に登録すべき輪郭であるが、αｌ -->  β２ -->  γ１ -->  δ２ -->  α１の輪郭データは、最終的に登録すべきでない輪郭のデータということになる。この判断は次のようにして行う。
【００４９】
まず、輪郭データ情報部に最初から登録されている輪郭の数を記憶しておき、最終的にその数より少ない所に登録されている輪郭データの中で、輪郭の回転方向が変化していないもの（図１４の例では、Ａ -->  Ｂ -->  β１ -->  Ｆ -->Ｇ -->  γ２ -->  Ｃ -->  Ｄ -->  δ１ -->  Ｈ -->  Ｅ -->  α２ -->  の輪郭）を、登録すべきデータであると判断する。そして、予め登録された輪郭数よりも多いところに登録された輪郭データ、つまり、新規に登録されたデータは、輪郭の回転方向が逆転しているもののみを登録すべきデータであると判断する。図１４の例では、該当する輪郭なしとなる。
【００５０】
次に、図１５に示すような輪郭データ群の例を説明する。この例の最初の輪郭数は４である。この輪郭データを上記アルゴリズムで処理を行うと、最終的に、図１６に示すようになる。この場合、最初の輪郭数が４であるので、それよりも小さいところに登録されていて輪郭が逆転していないのは、最初の輪郭のみである。また、最初の輪郭数よりも多いところに登録されていて輪郭か逆転しているのは、最後の輪郭のみである。従って、この２つの輪郭のみを最終的に登録して、図１７に示すような輪郭を許さない全輪郭データを発生させることができることになる。
【００５１】
このようにして、輪郭の交点を探し、相互の輪郭の連結を変更し、最終的に、必要なデータのみを抽出して、交差を許す輪郭データから交差を許さない輪郭データを発生させることが可能となる。
【００５２】
他方、ステップＳ２０７にて判定した結果、基準輪郭データと対象輪郭データが交差していない場合には、ステップ２１２へ進む。
【００５３】
他方、ステップＳ２０９にて判定した結果、基準輪郭データと対象輪郭データの間に交点がない場合には、ステップＳ２１２へ進む。すなわち、ステップＳ２０７にて交差ありと判定したが、ステップＳ２０８にて線分を実際にチェックしてみたら、交点が存在しない場合（図１１のような場合）には、ステップＳ２１２へ進む。
【００５４】
＜第２の実施の形態＞
本発明の第２実施例の形態は、ユーザ定義可能なフォントエディタ画面あるいは図形編集画面上で、ユーザの指示に従って、交差しているストロークの交差をなくす処理を行う例である。
【００５５】
図１８は図１に示すＣＲＴ表示装置７に表示した文字図形編集ダイアログを示す。このダイアログの一括変換１７１がユーザにより選択されると、一括変換モードに設定され、編集画面上の全てのデータに対して交差を許す輪郭データから交差を許さない輪郭データへの変換を行う。また、この文字図形編集ダイアログ１７２がユーザにより選択されると、部分変換モードが設定され、ユーザに変換対象領域を指定させ、その領域に関わるストロークに対してのみ交差を許す輪郭データから交差を許さない輪郭データへの変換を行う。
【００５６】
図１８に示す文字「吉」に対して、ユーザが一括変換１７１を選択すると、編集上の全てのストロークあるいは図形に対して一括変換が行なわれる。この様子を図１９に示す。この場合、第１の実施の形態で説明した通り、編集上の全てのデータに対して交差をチェックし、交差が存在すれば交差を許さない輪郭型への変換を行う。
【００５７】
図１８に示す文字「吉」に対して、部分変換を行う場合には、ユーザは文字図形編集ダイアログの部分変換１７２を選択し、部分領域を指定する。例えば、図２０の左側に示すように、図２０に破線で示すラバーバンドで部分領域１９０が囲まれ、マウスがクリックされると、部分領域１９０に関わっているストロークが存在するのかどうかをチェックし、存在するのであれば、そのストロークはどのストロークであるのかをチェックする。図２０の例では、ストローク１９１、１９２が部分領域１９０に関っており、その他のストローク１９３〜１９７はその部分領域１９０に関わっていないと判定する。従って、部分領域１９０に関わっているストロークには、関わっていることを示すフラグをセットし、部分領域に関わっていないストロークには、関わっていることを示すフラグをクリアする。そして、フラグがセットされたストロークのみを抽出し、それらのストロークに対してのみ、第１の実施の形態と同様の処理を施す。すなわち、表示された輪郭の交差を許すストロークを含む文字に対して、交差を許さない輪郭を編集領域の一部で発生させる設定が行われ、しかも、交差を許さない輪郭を発生させるための領域が確定された場合に、当該領域に関っているストロークを抽出し、抽出されたストロークに対してストローク対のストロークの線分が互いに交差するか否かを判定する。肯定判定された場合に線分の交点座標を算出し、算出された交点座標をストアし、ストアされた交点座標に基づき予め定めた規則に従って輪郭を繋ぎ替える。その結果、部分領域に関係するストロークに対しての交差を許す輪郭データから交差を許さない輪郭データへ変換されることになる。
【００５８】
例えば、図２１の左側に示すように、図２１に破線で示すラバーバンドで部分領域２００が囲まれ、マウスがクリックされると、部分領域２００に関わっているストロークが存在するのかどうかをチェックし、存在するのであれば、そのストロークはどのストロークであるのかをチェックする。図２１の例では、ストローク２０４、２０５、２０７が部分領域２００に関っており、その他のストローク２０１〜２０８、２０６はその部分領域２００に関わっていない。従って、部分領域２００に関わっているストロークには、関わっていることを示すフラグをセットし、部分領域２００に関わっていないストロークには、関わっていることを示すフラグをクリアする。そして、フラグがセットされたストロークのみを抽出し、それらのストロークに対してのみ、図２０について説明したのと同様の処理を施す。その結果、部分領域に関係するストロークに対しての交差を許す輪郭データから交差を許さない輪郭データへ変換されることになる。
【００５９】
このように、文字や図形の編集を行っているときに、ユーザがストロークの交差を作ってしまった場合に、その交差を取り除きたいと指示することによって、ユーザの手間をかけずに自動的に２つ以上の輪郭の交差を取り除くことが可能となる。
【００６０】
【発明の効果】
以上税明したように、本発明によれば、上記のように構成したので、交差を許すストロークの座標データから交差を許さない全輪郭のアウトライン座標を高速かつ高品位に発生させることができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態を示すブロック図である。
【図２】図１に示すプリンタ装置１１の構成を示すブロック図である。
【図３】図１に示すＲＡＭ３のメモリマップを示す図である。
【図４】図１に示すＲＯＭ２にストアされる制御プログラムの一例を示すフローチャートである。
【図５】芯線＋太さ型のストロークデータの一例を示す図である。
【図６】ストローク単位のアウトライン型のデータの一例を示す図である。
【図７】３次ベジェ分解を説明するための説明図である。
【図８】全輪郭変換前のストローク型のデータの構造の一例を示す図である。
【図９】線分の交差の一例を示す図である。
【図１０】交差しない線分の例を示す図である。
【図１１】ストロークの交差しない一例を示す図である。
【図１２】交点を求めた後のデータの構造を示す図である。
【図１３】２つのストロークの繋ぎ替えを説明するための説明図である。
【図１４】２つのストロークの繋ぎ替え終了後の様子を示す図である。
【図１５】ストロークの変換前のデータを示す図である。
【図１６】ストロークの繋ぎ替え終了した後の様子を示す図である。
【図１７】ストロークの変換後の様子を示す図である。
【図１８】コンピュータ画面上で文字や図形を編集する様子を示す図である。
【図１９】全編集領域が指定された場合の処理を説明するための説明図である。
【図２０】一部領域が指定された場合の処理を説明するための説明図である。
【図２１】一部領域が指定された場合の処理を説明するための説明図である。
【符号の説明】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  キーボード制御部（ＫＢＣ）
５  キーボード（ＫＢ）
６  ディスプレイ制御部（ＣＲＴＣ）
７  ＣＲＴ表示装置（ＣＲＴ）
８  ディスク制御部（ＤＫＣ）
９  外部記憶装置
１０  プリンタ制御部（ＰＲＴＣ）
１１  プリンタ装置（ＰＲＴ）
１２  システムバス
９１  フロッピーディスク（ＦＤ）
９２  ハードディスク（ＨＤ）
９３  ＣＤＲＯＭ
【図１】
0003827255.tif 000002
【図２】
0003827255.tif 000003
【図３】
0003827255.tif 000004
【図４】
0003827255.tif 000005
【図５】
0003827255.tif 000006
【図６】
0003827255.tif 000007
【図７】
0003827255.tif 000008
【図８】
0003827255.tif 000009
【図９】
0003827255.tif 000010
【図１０】
0003827255.tif 000011
【図１１】
0003827255.tif 000012
【図１２】
0003827255.tif 000013
【図１３】
0003827255.tif 000014
【図１４】
0003827255.tif 000015
【図１５】
0003827255.tif 000016
【図１６】
0003827255.tif 000017
【図１７】
0003827255.tif 000018
【図１８】
0003827255.tif 000019
【図１９】
0003827255.tif 000020
【図２０】
0003827255.tif 000021
【図２１】
0003827255.tif 000022