(57)【特許請求の範囲】
【請求項１】
文字の字形を輪郭座標値で表現するアウトラインフォントを用いる文字処理装置であって、
前記輪郭座標値を読み込む読込手段と、
複数の補正情報について、その補正が有効な前記輪郭座標値の範囲を決定する決定手段と、
前記有効範囲および前記補正情報に従い、前記輪郭座標値を補正する補正手段とを有し、
前記決定手段は、前記輪郭座標値の描画順に前記補正情報の有効範囲を決定し、前記有効範囲を前記輪郭座標値ごとの前記補正情報の有効フラグの連続として表現することを特徴とする文字処理装置。
【請求項２】
前記決定手段は、前記輪郭座標値の描画順に前記補正情報の有効範囲の終了を判断することで、前記有効範囲を決定することを特徴とする請求項1に記載された文字処理装置。
【請求項３】
前記決定手段は、前記輪郭座標値に対応する前記補正情報の重複に基づき、前記有効範囲を決定することを特徴とする請求項1に記載された文字処理装置。
【請求項４】
さらに、前記決定手段が決定した前記有効範囲を出力する有効範囲出力手段を有し、
前記補正手段は、前記有効範囲出力手段が出力する前記有効範囲、および、前記補正情報に従い、前記輪郭座標値を補正することを特徴とする請求項1から請求項3の何れかに記載された文字処理装置。
【請求項５】
前記有効範囲出力手段は、前記有効範囲を前記輪郭座標値ごとの配列形式で出力することを特徴とする請求項4に記載された文字処理装置。
【請求項６】
前記有効範囲出力手段は、前記有効範囲を前記補正情報ごとの配列形式で出力することを特徴とする請求項4に記載された文字処理装置。
【請求項７】
前記有効範囲出力手段は、前記有効範囲を描画命令形式で出力することを特徴とする請求項4に記載された文字処理装置。
【請求項８】
文字の字形を輪郭座標値で表現するアウトラインフォントを用いる文字処理装置のCPUが実行する文字処理方法であって、
前記輪郭座標値を読み込み、
複数の補正情報について、その補正が有効な前記輪郭座標値の範囲を決定し、
前記有効範囲および前記補正情報に従い、前記輪郭座標値を補正し、
前記補正情報の有効範囲は、前記輪郭座標値の描画順に決定し、前記輪郭座標値ごとの前記補正情報の有効フラグの連続として表現することを特徴とする文字処理方法。
【請求項９】
前記輪郭座標値の描画順に前記補正情報の有効範囲の終了を判断することで、前記有効範囲を決定することを特徴とする請求項8に記載された文字処理方法。
【請求項１０】
前記輪郭座標値に対応する前記補正情報の重複に基づき、前記有効範囲を決定することを特徴とする請求項8に記載された文字処理方法。
【請求項１１】
さらに、前記決定した有効範囲をメモリに出力し、
出力される有効範囲および前記補正情報に従い、前記輪郭座標値を補正することを特徴とする請求項8から請求項10の何れかに記載された文字処理方法。
【請求項１２】
前記有効範囲は、前記輪郭座標値ごとの配列形式で出力されることを特徴とする請求項11に記載された文字処理方法。
【請求項１３】
前記有効範囲は、前記補正情報ごとの配列形式で出力されることを特徴とする請求項11に記載された文字処理方法。
【請求項１４】
前記有効範囲は描画命令形式で出力されることを特徴とする請求項11に記載された文字処理方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は文字処理装置及びその方法に関し、例えば、文字の字形を輪郭の座標値で表すアウトラインフォントを用いる文字処理装置及びその方法に関する。
【０００２】
【従来の技術】
従来の文字処理装置においては、アウトライン形式でコード化された文字データ（アウトラインフォントデータ）について、ビットマップ展開時に文字の字形が高品位に保たれるように、該アウトラインフォントデータの輪郭座標値情報と共に、輪郭座標値を補正する輪郭座標補正情報を保持していた。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記従来の文字処理装置においては、輪郭座標値情報に基づいて描画を行う際に、上記輪郭座標補正情報に属する複数の項目が各々示す高品位化処理機能を、同一の領域に対して同時には実現できない場合があった。このような処理としては、例えば、同じ方向の異なる線幅への複数の補正処理において、各線幅の座標値が等しくなく、かつ重なった範囲を持つ場合等が挙げられる。従って、このような同時には実現不可能な複数の高品位化処理機能が、同一領域に対して同時に施されることによって、該領域においては文字の字形を高品位に保つための効果を得られず、かえって文字品位を低下させてしまう場合があった。
【０００４】
また、従来の文字処理装置における輪郭座標補正情報は、前記輪郭座標値情報に基づいて描画を行う際の順番に無関係に保持されていた。即ち、各座標点における相対位置情報のみに関する補正情報であるため、保持されるデータ量も少ないものではなかった。
【０００５】
本発明は上記の問題を解決するためになされたもので、輪郭座標補正情報について補正情報を適用する有効範囲を決定し、複数の高品位化処理機能が同時に機能しないように制御することによって、文字の字形を高品位に保つことが可能な文字処理装置及びその制御方法を提供することを目的とする。
【０００６】
また、輪郭座標の補正情報をより少ないデータ量で取り扱うことが可能な文字処理装置及びその方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【０００８】
本発明にかかる文字処理装置は、文字の字形を輪郭座標値で表現するアウトラインフォントを用いる文字処理装置であって、前記輪郭座標値を読み込む読込手段と、複数の補正情報について、その補正が有効な前記輪郭座標値の範囲を決定する決定手段と、前記有効範囲および前記補正情報に従い、前記輪郭座標値を補正する補正手段とを有し、前記決定手段は、前記輪郭座標値の描画順に前記補正情報の有効範囲を決定し、前記有効範囲を前記輪郭座標値ごとの前記補正情報の有効フラグの連続として表現することを特徴とする。
【０００９】
本発明にかかる文字処理方法は、文字の字形を輪郭座標値で表現するアウトラインフォントを用いる文字処理装置のCPUが実行する文字処理方法であって、前記輪郭座標値を読み込み、複数の補正情報について、その補正が有効な前記輪郭座標値の範囲を決定し、前記有効範囲および前記補正情報に従い、前記輪郭座標値を補正し、前記補正情報の有効範囲は、前記輪郭座標値の描画順に決定し、前記輪郭座標値ごとの前記補正情報の有効フラグの連続として表現することを特徴とする。
【００４８】
【実施例】
以下、本発明に係る一実施例について、図面を参照して詳細に説明する。
【００４９】
＜第１実施例＞
図１は本実施例を適用する文字処理装置の基本構成を示すブロック図である。本文字処理装置は、ワードプロセッサあるいは電子タイプライタであっても良いし、インクジェットプリンタ、レーザビームプリンタ等のプリンタや、ワークステーションあるいはコンピュータシステムであってもよい。
【００５０】
図１において、１０１は中央演算処理装置（ＣＰＵ）であり、本文字処理装置全体の制御および演算処理等を行うものである。１０２は読みだし専用メモリ（ＲＯＭ）であり、システム起動プログラムおよび文字パターンデータ等の記憶領域である。本実施例において後述する各フローチャートに示される処理もは制御プログラムとしてＲＯＭ１０２に格納されており、ＣＰＵ１０１によって実行される。１０３はランダムアクセスメモリ（ＲＡＭ）であり、使用制限のないデータの記憶領域として、様々な処理を実行するために各々のプログラム（後述するフローチャートに係るプログラムを含む）およびデータがロードされる領域である。本実施例において使用される変数等は、ＲＡＭ１０３上に確保される。
【００５１】
また、１０４はキーボード制御部（ＫＢＣ）であり、キーボード（ＫＢ）１０５よりキー入力データを受取り、ＣＰＵ１０１へ伝達する。１０６はポインティングデバイス制御装置（ＰＤＣ）であり、ポインティングデバイス（ＰＤ）１０７より座標データやボタン入力データ等を受取り、ＣＰＵ１０１へ伝達する。１０８はディスプレイ制御部（ＣＲＴＣ）であり、後述のディスプレイ装置１０９に表示すべきデータを出力する。ディスプレイ装置（ＣＲＴ）１０９は、例えばＣＲＴのような表示装置を具備し、ＣＲＴＣ１０８よりデータを受取り、これを表示する。
【００５２】
１０１１はフロッピーディスク装置（ＦＤ）あるいはハードディスク（ＨＤ）等の外部記憶装置（ディスク；ＤＳＫ）であり、プログラムおよびデータを記憶させておき、実行時必要に応じて参照またはＲＡＭ１０３へロードする。１０１０はディスク制御部（ＤＫＣ）であり、ＤＳＫ１０１１との間でのデータ伝達等の制御を行う。１０１２はプリンタ制御部（ＰＲＴＣ）であり、プリンタ装置（ＰＲＴ）１０１３を制御する。プリンタ装置（ＰＲＴ）１０１３はＰＲＴＣ１０１２からのデータを受取り、記録媒体への印刷を実行する。１０１４はシステムバスであり、上述の構成要素間のデータの通路となるべきものである。
【００５３】
以上の構成からなる本実施例の文字処理装置においては、文字の字形を輪郭の座標で表すアウトラインフォントを用いる。以下、本実施例で用いるアウトラインフォントにおける輪郭座標値情報のデータ構造を図２に示す。
【００５４】
図２に示す様に、本実施例の輪郭座標値情報は、総輪郭数、及び各輪郭の終了点番号を有する。また、輪郭における各制御点毎に、ｘ座標，ｙ座標値、及び該制御点が端点であるか、あるいは３次ベジェ曲線における中間点であるかを示す点属性データを有する。尚、本実施例においては、輪郭座標値は図３に示すような左下を原点とする２次元平面座標を用いるものとする。以降、図３に示す２次元平面座標において、Ｘ方向が水平方向、Ｙ方向が垂直方向であるとする。
【００５５】
ここで、図４に、本実施例における線幅補正の様子を示す。図４に示す５０１が水平方向における線幅であり、水平線幅と称する。また、５０２が垂直方向における線幅であり、垂直線幅と称する。これらを総称して、以降「線幅情報」とする。この線幅情報の補正は、図５に示す文字輪郭補正情報に基づいて行われる。この補正情報は、ＫＢ１０５やＰＤ１０７等によって入力されたコマンドをＣＰＵ１０１において解釈し、ＲＡＭ１０３上に展開されたものである。
【００５６】
尚、本実施例において、線幅情報は予めＲＯＭ１０２にその種類別に格納されている。以降これを「線幅情報テーブル」と称し、この例を図５に示す。本実施例では、水平線幅情報、垂直線幅情報の２種類の線幅情報テーブルを備え、図５に示す様に、文字輪郭補正情報データの先頭に水平線幅情報テーブルへのオフセット値、及び垂直線幅情報テーブルへのオフセット値を持つ。なお、各オフセット値で指定された水平および垂直線幅情報は、同じデータ構造であり、水平あるいは垂直線幅情報を持たない場合、該線幅情報テーブルへのオフセット値に「０」が代入される。
【００５７】
図６に、上述した本実施例の線幅情報テーブルにおけるデータ構造を示す。水平線幅情報テーブルの先頭には水平線幅情報の数を示すＨＣＯＵＮＴが格納されており、同様に、垂直線幅情報テーブルの先頭には垂直線幅情報の数を示すＶＣＯＵＮＴが格納されている。以降、各線幅情報テーブルにはＨＣＯＵＮＴあるいはＶＣＯＵＮＴで示される数だけ、各線幅情報における下限座標値ＬＯ、上限座標値ＨＩ、その線幅を構成する制御点の最少座標値および最大座標値情報ＬＭＩＮ，ＬＭＡＸ，ＨＭＩＮ，ＨＭＡＸが格納されている。
【００５８】
以上説明した様に、図５に示す文字輪郭補正情報に従って、本実施例ではアウトラインフォントの線幅が補正される。
【００５９】
ここで、図7を参照して、図6で示した線幅情報テーブルに含まれる各変数について更に説明する。尚、図7において示される各座標値は、図中網掛けで示す水平方向の線幅に対するものである。即ち、該線幅に対して、点703は線幅方向（垂直方向；Y方向）において下限座標値LO、また、線幅の下限を構成する制御点の線幅長さ方向（水平方向；X方向）における最小座標値LMINとなるため、座標(y, x)=(LO, LMIN)となる。同様に、点704は(LO, LMAX)、点705は(HI, HMIN)、点706は(HI, HMAX)と表される。
【００６０】
本実施例においては、上述した様に文字輪郭補正情報に従って線幅情報が補正されるが、この時、複数の文字輪郭補正情報によって同一輪郭に対して複数の線幅補正が施されることを避けるために、補正対象となる輪郭の有効範囲を決定することを特徴とする。
【００６１】
以降、本実施例において文字輪郭座標値の補正情報の有効範囲を決定するアルゴリズムについて、詳細に説明する。
【００６２】
本実施例では、前述の輪郭座標値情報、及び文字輪郭線補正情報（線幅情報テーブル）を入力として、各補正情報が有効となる輪郭座標値の範囲を決定し、該有効範囲を図８に示す様なデータ配列として例えばＲＡＭ１０３の所定領域に出力する。以降、線幅を補正する文字輪郭補正情報を、単に「線幅情報」と称する。
【００６３】
図８は、本実施例において決定された線幅情報の有効範囲を示す情報であり、図２に示す輪郭座標値情報におけるｎ個の各制御点（座標値，点属性情報を含む）について、図６で示した水平，垂直の各線幅情報毎に、該線幅が有効であるか否かを示すフラグをたてることによって、線幅情報の各輪郭座標値に対する有効範囲情報がフラグ配列として得られる。
【００６４】
本実施例では、輪郭座標値情報を順次読み込み、描画する段階で、対応する線幅情報をその都度検出していく。ここで、対応する線幅情報とは、描画の際に連続する２つの輪郭座標値の２次元ベクトルが、ある線幅情報の下限の最小座標値ＬＭＩＮと下限の最大座標値ＬＭＡＸとを結ぶ線分の一部、あるいは全てを構成するか、又は、上限の最小座標値ＨＭＩＮと上限の最大座標値ＨＭＡＸを結ぶ線分の一部、あるいは全てを構成するか、のいずれかの条件を満たす線幅情報である。
【００６５】
本実施例において出力される、図８に示した線幅情報の有効範囲としては、例えば連続する２つの輪郭座標値の始点Ｐ（１）と終点Ｐ（２）からなる線分について上記対応する線幅情報を検出したら、その結果を始点Ｐ（１）に対する線幅情報として、始点Ｐ（１）の線幅情報フラグに反映させる。これは、始点Ｐ（１）をプロットする前に、対応する線幅情報を描画処理に伝達するためである。
【００６６】
また、始点Ｐ（１）が輪郭の開始点である場合、始点Ｐ（１）はその輪郭の最終点Ｐ（Ｌ）と連続している。そこで、２点Ｐ（１），Ｐ（Ｌ）からなる線分に対応する線幅情報を開始点Ｐ（１）の線幅情報フラグに反映するため、フラグ操作などにより輪郭の「開始点処理」を行うようにする。同様に、２点Ｐ（１），Ｐ（２）からなる線分に対応する線幅情報を最終点Ｐ（Ｌ）の線幅情報フラグに反映するため、フラグ操作などにより輪郭の「最終点処理」を行うようにする。
【００６７】
以下、本実施例における文字輪郭座標値の補正情報の有効範囲を決定するアルゴリズムについて、図９及び図１０のフローチャートを参照して説明する。尚、図９及び図１０に示すアルゴリズムは、１文字単位の描画処理の流れを示すものである。
【００６８】
まず、図９のステップＳ９０１において初期設定として、描画処理中のある時点において有効な線幅情報を示す作業用のフラグ配列ＡＤＪＵＳＴを、全てオフにセットする。これにより、全ての線幅情報が未使用（無効）であると示される。尚、フラグ配列ＡＤＪＵＳＴは１次元配列であり、ＲＡＭ１０３上に確保され、
ＨＣＯＵＮＴ＋ＶＣＯＵＮＴ個のフラグを有する。例えば図８に示す例においては、７個のフラグを有している。また、輪郭の開始点処理及び終了点処理を行うために、輪郭の開始点及び最終点について座標データを読み込まずにベクトル計算を行うことを示すＬＳフラグをオンにセットする。
【００６９】
次にステップＳ９０２において、１文字分の輪郭座標値情報が終了したか否かを判定し、終了していなければステップＳ９０３へ進み、終了していれば処理を終了する。ステップＳ９０３においては、現在処理中（ＣＵＲＲＥＮＴ）の制御点が輪郭の最終点であるか否か、即ち、輪郭の最終点処理を行うか否かを判定する。そして、最終点でなければステップＳ９０４へ進む。
【００７０】
ステップＳ９０４では、ポインタが示す１つの制御点分の輪郭座標値情報を読み込み、変数ＣＵＲＲＥＮＴへ格納する。続いてステップＳ９０５に進み、ＣＵＲＲＥＮＴの制御点が輪郭の開始点であるか否か、即ち、輪郭の開始点処理を行うか否かを判定する。開始点であればステップＳ９０６へ進み、そうでなければステップＳ９１２へ進む。
【００７１】
本実施例の開始点処理においては、該開始点についてステップＳ９０６以降の２経路を実行する。ステップＳ９０６においてＬＳフラグがオフであれば、ステップＳ９０７ではＬＳフラグをオンとし、続いてステップＳ９０８において、変数ＣＵＲＲＥＮＴを次の輪郭座標値とのベクトル計算の始点を示す変数ＢＥＧＩＮに格納する。更に、該輪郭の最終点処理のために、開始点の座標値である変数ＣＵＲＲＥＮＴを、輪郭の終了点を示す輪郭座標値とのベクトル計算のための一時格納変数ＴＭＰに保持する。そしてステップＳ９０９に進み、輪郭座標値情報から次の座標値を読み込むためにポインタを更新し、ステップＳ９０４に戻って次の制御点における輪郭座標値情報を読み込む。即ち、開始点と２番目の点におけるベクトル計算を可能とする。
【００７２】
一方、ステップＳ９０６においてＬＳフラグがオンであれば、該輪郭の開始転処理のために、最終点と開始点による線分について対応する線幅情報を検出する。まずステップＳ９１０でＬＳフラグをオフに設定する。次にステップＳ９１１において該輪郭の最終点を読み込み、変数ＢＥＧＩＮに格納する。即ち、開始点処理の準備を行う。そしてステップＳ９１２に進み、変数ＣＵＲＲＥＮＴをベクトル計算の終点を示す変数ＥＮＤに格納し、ステップＳ９１８に進む。即ち、開始点と最終点とにおけるベクトル計算を可能とする。
【００７３】
このように開始点処理の際にステップＳ９０６によって分岐される２経路の処理によって、開始点について２番目の点とのベクトル及び最終点とのベクトルを共に考慮して線幅を検出し、該結果を後述する様に合成することができる。即ち、本実施例の開始点処理が実現される。
【００７４】
一方、ステップＳ９０３において当該制御点が輪郭の最終点であればステップＳ９１３に進む。本実施例の最終点処理においては、該最終点についてステップＳ９１３以降の２経路を実行する。ステップＳ９１３でＬＳフラグがオンであればステップＳ９１４へ進んでＬＳフラグをオフとし、ステップＳ９１５において、輪郭の開始点を保持している変数ＴＭＰをベクトル計算の終点を示す変数ＥＮＤに格納し、ステップＳ９１８に進む。即ち、開始点と最終点とのベクトル計算を可能とする。
【００７５】
一方、ステップＳ９１３でＬＳフラグがオフであればステップＳ９１６へ進み、ＬＳフラグをオンに設定する。そして、ステップＳ９０７において、その輪郭の開始点をＢＥＧＩＮに、２番目の点をＥＮＤに格納し、ステップＳ９１８に進む。即ち、開始点と２番目の点とのベクトル計算を可能とする。
【００７６】
このように最終点処理の際にステップＳ９１３によって分岐される２経路の処理によって、最終点について開始点とのベクトル、及び開始点と２番目の点とのベクトルを共に考慮して線幅を検出し、該結果を後述する様に合成することができる。即ち、本実施例の最終点処理が実現される。
【００７７】
ステップＳ９１８においては、以上のようにしてセットされた変数ＢＥＧＩＮとＥＮＤの２点を結ぶ直線のベクトル計算を、以下の式に基づいて行う。
【００７８】
ＶＥＣＴＯＲ（Ｘ，Ｙ）＝ＥＮＤ（Ｘ，Ｙ）−ＢＥＧＩＮ（Ｘ，Ｙ）
ステップＳ９１８におけるベクトル計算の終了後、処理は図１０に示すステップＳ９１９に進む。ステップＳ９１９においては、ステップＳ９１８で求めたＶＥＣＴＯＲ（Ｘ，Ｙ）が水平または垂直であるか否かを判定し、該当しなければステップＳ９２０へ進む。ステップＳ９２０においては、変数ＣＵＲＲＥＮＴが輪郭の開始点または最終点であるか否かを判定し、開始点または最終点でああればステップＳ９２１へ進み、それ以外であればステップＳ９２４へ進む。
【００７９】
ステップＳ９２１においてはＬＳフラグを判定し、オフであればステップＳ９２２へ進み、有効範囲の検出結果を示すフラグ配列ＲＥＳを、輪郭の開始点処理及び最終点処理のために用意された一時格納フラグ配列に格納しておく。尚、一時格納フラグ配列もＡＤＪＵＳＴと同じサイズである。そして、処理は図９に示すステップＳ９０２に戻る。即ち、開始点処理及び最終点処理を実行するために、ＣＵＲＲＥＮＴの座標値について再度処理を繰り返す。
【００８０】
一方、ステップＳ９２１でＬＳフラグがオンであればステップＳ９２３へ進み、開始点処理又は最終点処理を実行する。即ち、一時格納フラグ配列とフラグ配列ＲＥＳとの論理和（ＯＲ）を取り、その結果を輪郭の開始点に対応する線幅情報のフラグとしてＲＥＳに代入して、ステップＳ９２４に進む。
【００８１】
ステップＳ９２４においては、検出された線幅情報ＲＥＳが有効であることを示すために、フラグ配列ＡＤＪＵＳＴとＲＥＳとの論理和（ＯＲ）を取り、フラグ配列ＡＤＪＵＳＴに代入する。そしてステップＳ９２５において、読み込んだ座標値ＣＵＲＲＥＮＴ、及び図８に示す該座標値ＣＵＲＲＥＮＴに対応する有効範囲情報としてフラグ配列ＡＤＪＵＳＴを出力し、ステップＳ９２６において輪郭の開始点のための一時格納フラグをすべてオフにセットする。そしてステップＳ９２７に進み、変数ＥＮＤを次のベクトル計算の始点にするため、変数ＢＥＧＩＮに代入し、次いでステップＳ９２８において、輪郭座標値情報から次の座標値を読み込むために、ポインタを更新する。そして、図９に示すステップＳ９０２に戻る。
【００８２】
一方、ステップＳ９１９において、ステップＳ９１８で求めたＶＥＣＴＯＲ（Ｘ，Ｙ）が水平または垂直であると判定されると、処理はステップＳ９２９に進む。ステップＳ９２９においては、対応する線幅情報を検出するために、該当する線幅情報テーブルの先頭へポインタを移動する。そしてステップＳ９３０において、ポインタによって指定された線幅情報テーブルから、変数ＣＵＲＲＥＮＴに対応する線幅情報を１つ検出する。そして、その検出結果はＡＤＪＵＳＴと同じサイズの配列ＲＥＳに出力され、即ち、配列ＲＥＳにおいては検出された線幅情報のフラグのみがオンとなる。もちろん、何も検出されない場合には配列ＲＥＳ中のフラグはすべてオフである。このように、対応する線幅情報が検出された場合はステップＳ９３１へ進み、検出されなかった場合はステップＳ９２０へ進む。尚、ステップＳ９３０における線幅情報検出処理の詳細については後述する。
【００８３】
ステップＳ９３１においては、ステップＳ９３０によって検出された線幅情報ＲＥＳに基づいて、該輪郭補正値において各補正情報の有効範囲が終了するか否かを判定し、終了するならステップＳ９３２へ進み、終了しないならステップＳ９２０へ進む。尚、ステップＳ９３１における有効範囲終了判定処理の詳細については後述する。そして、ステップＳ９３２においては、ステップＳ９３１によって有効範囲が終了すると判定されたため、フラグ配列ＡＤＪＵＳＴの各フラグをすべてオフにセットし、ステップＳ９２０へ進む。
【００８４】
以下、上述した図１０においてステップＳ９３０で示した線幅情報検出処理について、図１１のフローチャートを参照して詳細に説明する。
【００８５】
本実施例の線幅情報検出処理とは即ち、線幅情報テーブルから変数ＣＵＲＲＥＮＴによって示される制御点に対応する線幅情報を検出する処理を示す。
【００８６】
まず図１１のステップＳ１００１において、対応する線幅情報テーブルに含まれる線幅情報の数ＮＵＭＬＩＮＥ，線幅情報テーブルのアドレス情報，また、読み込まれたＣＵＲＲＥＮＴの輪郭座標値から、線幅の高さ方向の下限及びまたは上限座標値と比較するための座標値ＨＬ、及び線幅の長さ方向における最小または最大座標値と比較するための座標値ＭＭとが設定される。
【００８７】
例えば、水平線幅情報テーブルについて対応する線幅情報を検出する場合には、ステップＳ１００１においては線幅の数ＨＣＯＵＮＴがＮＵＭＬＩＮＥへ代入され、ポインタが水平線幅情報テーブルの１個目の線幅情報のアドレスに設定される。更に、ＨＬにはＣＵＲＲＥＮＴのＹ座標値が代入され、ＭＭにはＣＵＲＲＥＮＴのＸ座標値が代入される。
【００８８】
一方、垂直線幅情報テーブルについて対応する線幅情報を検出する場合には、線幅の数ＶＣＯＵＮＴがＮＵＭＬＩＮＥへ代入され、ポインタが垂直線幅情報テーブルの１個目の線幅情報のアドレスに設定される。更に、ＨＬにはＣＵＲＲＥＮＴのＸ座標値が代入され、ＭＭにはＣＵＲＲＥＮＴのＹ座標値が代入される。
【００８９】
そして次にステップＳ１００２において、ポインタの指す線幅情報テーブルのＮＵＭＬＩＮＥ個全ての線幅情報について、検出判定が終了したか否かを判定する。全て終了していれば、線幅情報テーブルにはＣＵＲＲＥＮＴの描画に対応する線幅情報は保持されていないと判定して、図１０に示すステップＳ９２０へ戻る。
【００９０】
一方、ステップＳ１００２において未処理の線幅情報が存在していれば、ステップＳ１００３へ進む。ステップＳ１００３においては、当該線幅情報の下限座標値ＬＯが、ステップＳ１００１で設定した比較値ＨＬに等しいか否か判定し、等しければステップＳ１００５へ進み、等しくなければステップＳ１００４へ進む。
【００９１】
ステップＳ１００４においては、当該線幅情報の上限座標値ＨＩがＨＬに等しいか否かを判定し、等しければステップＳ１００６へ進んで、Ｓ１００１で設定した比較値ＭＭが当該線幅情報の上限の最小座標値ＨＭＩＮ以上、かつ最大座標値ＨＭＡＸ以下であるか否かを判定する。そして、条件を満たせば本処理を抜けて図１０に示したステップＳ９３１へ進み、満たさなければステップＳ１００７へ進む。
【００９２】
一方、ステップＳ１００４において当該線幅情報の上限ＨＩがＨＬに等しくないと判定されるとステップＳ１００７へ進み、当該線幅情報は描画と対応していないため、線幅情報テーブル内の次の線幅情報を獲得するためにポインタを更新し、ステップＳ１００２へ戻る。
【００９３】
一方、ステップS1003において当該線幅情報の下限LOがHLと等しい場合、処理はステップS1005に進み、ステップS1001で設定した比較値MMが当該線幅情報の下限の最小座標値LMIN以上、かつ最大座標値LMAX以下であるか否かを判定する。そして、この条件を満たせば、ステップS931へ抜けるが、満たさない場合にはステップS1004に進む。
【００９４】
即ち、ステップＳ９３１へ抜ける場合は、ＣＵＲＲＥＮＴの描画に対応する線幅情報が線幅情報テーブルに保持されていると判断された場合である。
【００９５】
次に、上述した図１０に示すステップＳ９３１の有効範囲終了判定処理のアルゴリズムについて、図１２のフローチャートを参照して詳細に説明する。
【００９６】
本実施例の有効範囲終了判定処理においては、ステップＳ９３０で検出されたＣＵＲＲＥＮＴの線幅情報が、現時点において有効とされている線幅情報と重複した場合に、有効範囲終了とみなすことを特徴とする。
【００９７】
まず図１２のステップＳ１１０１においては、上述した図９のステップＳ９３０によって検出されたＣＵＲＲＥＮＴの線幅情報が水平線幅情報ならばステップＳ１１０２へ進み、垂直線幅情報ならばステップＳ１１０３へ進む。そしてステップＳ１１０２にでは、現時点における有効な線幅情報を示すフラグ配列ＡＤＪＵＳＴの水平線幅情報フラグの先頭にポインタを移動し、以降のステップにおいて水平線幅の数ＨＣＯＵＮＴをループカウンタの最大値に設定する。一方、ステップＳ１１０３においては、フラグ配列ＡＤＪＵＳＴの垂直線幅情報フラグの先頭にポインタを移動し、以降のステップにおいて垂直線幅の数ＶＣＯＵＮＴをループカウンタの最大値に設定する。
【００９８】
ステップＳ１１０２，１１０３の終了後は共にステップＳ１１０４に進み、フラグ配列ＡＤＪＵＳＴの全ての水平線幅情報あるいは垂直線幅情報について、ＣＵＲＲＥＮＴの線幅情報との重複判定が終了しているか否かを判定し、終了していれば有効範囲を終了しないこととし、図１０のステップＳ９２０に戻る。一方、重複判定が終了していなければステップＳ１１０５へ進む。
【００９９】
ステップＳ１１０５においては、フラグ配列ＡＤＪＵＳＴ中の重複判定をしようとする線幅情報のフラグがオンであるか否かを判定し、オンであればステップＳ１１０６へ進み、オフであれば重複判定する必要がないとしてステップＳ１１０７へ進む。
【０１００】
ステップＳ１１０６においては、ＣＵＲＲＥＮＴの線幅情報とポインタの指す線幅情報との重複判定を行う。尚、この重複判定処理の詳細については後述する。ステップＳ１１０６においてＣＵＲＲＥＮＴの線幅情報とポインタの指す線幅情報とが重複すると判定されると、有効範囲を終了するとして図１０に示すステップＳ９３２へ進み、重複しないと判定されると、ステップＳ１１０７へ進む。
【０１０１】
ステップＳ１１０７においては、ＣＵＲＲＥＮＴの線幅情報と線幅情報テーブルに格納されている次の線幅情報との重複判定を行うために、線幅情報テーブルにおけるポインタを更新する。
【０１０２】
以上説明した様に、ＣＵＲＲＥＮＴの線幅情報が、既に検出された線幅情報を示すフラグ配列ＡＤＪＵＳＴと重複していると判断されるとステップＳ９３２へ、重複が無いと判断されるとステップＳ９２０へ戻る。
【０１０３】
次に、上述した図１２のステップＳ１１０６に示す重複判定処理について、図１３のフローチャートを参照して詳細に説明する。
【０１０４】
まずステップＳ１２０１において、重複判定しようとしている２つの線幅情報が同一であるか否かを判定する。同一であれば重複はしていないと判断して図１２のステップＳ１１０７へ進み、同一でなければステップＳ１２０２へ進む。
【０１０５】
ステップＳ１２０２においては、ＣＵＲＲＥＮＴの線幅情報の上限座標値ＨＩｃと下限座標値ＬＯｃとの差分（距離）を求め、この距離をＤＩＳＴ１に代入する。また同時に、線幅情報テーブルにおいてポインタによって示される線幅情報の上限座標値ＨＩｔと下限座標値ＬＯｔとの差分（距離）を求め、この距離をＤＩＳＴ２に代入する。そして更に、ＣＵＲＲＥＮＴの線幅情報の上限ＨＩｃ、下限ＬＯｃ、及びポインタによって指定された線幅情報の上限ＨＩｔ、下限ＬＯｔの４つの値の最大値及び最小値を求め、その差を最大距離ＭＡＸＤＩＳＴに代入する。そしてステップＳ１２０３において、ＭＡＸＤＩＳＴがＤＩＳＴ１とＤＩＳＴ２の和よりも大きいか否かを判定し、大きければ２つの線幅情報は重複しないと判断し、図１２のステップＳ１１０７へ進む。一方、大きくなければ２つの線幅情報は重複していると判断し、図１１のステップＳ９３２へ進む。
【０１０６】
即ち、本実施例においては、描画時に新たに有効になった線幅情報（ＣＵＲＲＥＮＴに対応する線幅情報）について、その下限座標値ＬＯと上限座標値ＨＩとで示される範囲と重複する領域を持つ線幅情報が同方向の線幅情報テーブル中に存在し、かつ、該重複した領域を持つ線幅情報がＣＵＲＲＥＮＴの線幅情報検出時点で有効な線幅情報（ＡＤＪＵＳＴ）として認識されている場合に、（ステップＳ９３２で）現時点で有効な線幅情報（ＡＤＪＵＳＴ）を全て無効とすることにより、ＣＵＲＲＥＮＴに対応するの線幅情報のみが、以降の描画に対して有効となる。
【０１０７】
以上説明した処理により、ＣＵＲＲＥＮＴの描画に対応して、各線幅情報が有効となる輪郭座標値の範囲が決定される。
【０１０８】
即ち本実施例においては、描画のために一度検出した線幅情報（ＣＵＲＲＥＮＴにおける線幅情報）は、以降の描画においても有効な線幅情報であるとして（ＡＤＪＵＳＴに）認識され、その線幅情報を無効にする条件（ステップＳ９３１）に当てはまるまで、該線幅情報は有効であると認識される。従って、線幅情報フラグ配列におけるオンの連続により、補正情報の有効範囲が決定される。
【０１０９】
以上説明したように本実施例によれば、上述した処理を全ての輪郭座標値情報に対して行うことにより、描画過程における線幅情報が有効となる範囲を決定することができる。従って、同時に実行されるべきでない輪郭座標値補正情報を分割して適用することが可能となり、高品位な文字出力が実現される。
【０１１０】
また、描画される輪郭点順に補正情報有効範囲を判定することができるため、実際に該有効範囲を参照する際のポインタ操作等が単純となり、最低限の負荷で補正情報が有効か否かを判定可能となる。
【０１１１】
＜第２実施例＞
以下、本発明に係る第２実施例について説明する。
【０１１２】
尚、第２実施例における装置構成は上述した第１実施例と同様であり、また、第２実施例において特に説明しない構成及び処理については、上述した第１実施例と同様であるとする。
【０１１３】
上述した第１実施例においては、図８に示すような配列形式で座標点描画時の有効な線幅情報をフラグのオン／オフによって明確にすることにより、描画過程における線幅情報の有効範囲を決定する例について説明した。
【０１１４】
第２実施例においては、上述した第１実施例によって出力された図８に示す配列に基づいて、各線幅情報毎に、その有効範囲の輪郭座標値情報における始点および終点を導出し、新たに出力することを特徴とする。以下、第２実施例における有効範囲決定のアルゴリズムについて、図１４及び図１５を参照して説明する。
【０１１５】
図１４に、第２実施例において各線幅情報の有効範囲を示す出力の形式を示す。この出力形式において、まず先頭に水平線幅情報テーブルおよび垂直線幅情報テーブルへのオフセット値が格納される。ここで、線幅情報を持たない場合には「０」が格納される。続いて、各線幅情報テーブルについて、線幅情報の数分だけ有効範囲情報を保持する。ここで、上述した第１実施例で図８に示した出力配列は、水平線幅情報、垂直線幅情報の順に格納されているので、第２実施例においては該出力配列から水平／垂直の区別なしに、まとめて有効範囲の始点及び終点の導出処理を行えば、自動的に水平線幅情報と垂直線幅情報とが図１４に示す順番で格納されることになる。尚、この有効範囲の情報長は可変であり、そのデータ構造は図示する通りである。即ち、有効範囲情報として、まず有効範囲の数ｎｒａｎｇｅが保持され、続いてｎｒａｎｇｅ組みの開始点番号及び終了点番号の情報が保持される。
【０１１６】
図１５に、第２実施例における有効範囲決定処理のフローチャートを示す。
【０１１７】
まずステップＳ１４０１において、描画過程における有効な線幅情報を示すフラグ配列ＡＤＪＵＳＴの各要素のフラグを「０」に初期設定する。また、輪郭座標値情報における制御点番号を示すループカウンタｉ、及びフラグ配列ＡＤＪＵＳＴにおける要素数を示すループカウンタｊを共に「１」に初期化する。更に、有効範囲の変化数を示す変数ｃｏｕｎｔを「０」に初期化する。
【０１１８】
続いてステップＳ１４０２において、ｉが輪郭座標値情報における全制御点の数ｎを越えたか否か、即ち、全ての制御点について処理が終了したか否かを判定し、終了していればステップＳ１４１５へ進み、全ての線幅情報について有効範囲情報が導出されたとしてそのサイズを求め、各線幅情報テーブルにおけるオフセット値計算を行う。
【０１１９】
一方、ステップＳ１４０２において未終了であると判定されるとステップＳ１４０３へ進み、ｊがＨＣＯＵＮＴとＶＣＯＵＮＴの和を越えたか否か、即ち、フラグ配列ＡＤＪＵＳＴの全ての要素（全線幅情報）について処理が終了したか否かを判定する。ここで、未終了であればステップＳ１４０４へ進む。
【０１２０】
ステップＳ１４０４においては、ｊ番目の線幅情報ＡＤＪＵＳＴ［ｊ］と、上述した第１実施例において出力した、図８に示す配列の中で制御点番号ｉにおける有効な線幅情報を示す線幅情報フラグ配列部分（以降ＳＴＡＴＵＳと称する）のｊ番目の要素（ＳＴＡＴＵＳ［ｉ］［ｊ］）との差が「０」であるか否かを判定し、「０」であればステップＳ１４０８へ進み、「０」でなければ有効範囲の開始または終了を示すと判断して、ステップＳ１０４５へ進む。
【０１２１】
ステップＳ１４０５においては、現在注目している制御点番号ｉを有効範囲の始点または終点であると判断し、一時格納用バッファ配列に格納する。そしてステップＳ１４０６に進み、線幅情報ＡＤＪＵＳＴ［ｊ］における有効／無効の状態を変更するために、ＳＴＡＴＵＳ［ｉ］［ｊ］の内容をＡＤＪＵＳＴ［ｊ］へ代入する。続いてステップＳ１４０７において、有効範囲の変化数ｃｏｕｎｔを１増加させる。そしてステップＳ１４０８に進み、ループカウンタｊを１増加させた後、ステップＳ１４０３に戻り、次の線幅情報についての処理を行う。
【０１２２】
一方、ステップＳ１４０３においてフラグ配列ＡＤＪＵＳＴの全ての要素について処理が終了したと判断されると、処理はステップＳ１４０９へ進む。ステップＳ１４０９においては、変化数ｃｏｕｎｔが奇数であるか否かを判定し、奇数であればステップＳ１４１０へ進み、偶数であればステップＳ１４１２へ進む。
【０１２３】
ステップＳ１４１０においては、描画終了時にその線幅情報が有効であるので、最終輪郭制御点番号ｎを有効範囲の終了点として一時格納用バッファ配列に格納する。そしてステップＳ１４１１において、有効範囲の変化数ｃｏｕｎｔを１増加させる。
【０１２４】
次にステップＳ１４１２に進み、有効範囲の変化数ｃｏｕｎｔについて２で除算した数が有効範囲の数になるので、ｃｏｕｎｔ／２の値をｎｒａｎｇｅに代入する。そして、ステップＳ１４１３において、ｎｒａｎｇｅ及び一時格納用バッファ配列に格納した各線幅情報の有効範囲情報を出力する。そしてステップＳ１４１４において、ループカウンタｉを１増加させ、ステップＳ１４０２に戻って次の制御点についての処理を行う。
【０１２５】
以上説明した様にして、図１４に示す形式での出力が得られる。
【０１２６】
以上説明した様に第２実施例によれば、各線幅情報の有効範囲を各線幅情報毎に輪郭制御点番号にて保持することにより、描画過程における線幅情報の有効範囲を示すことが可能になる。従って、上述した第１実施例において出力した配列よりも低容量の出力で、第１実施例と同等の高品位な文字出力を行うことが可能になる。
【０１２７】
＜第３実施例＞
以下、本発明に係る第３実施例について説明する。
【０１２８】
第３実施例においては、本発明を社団法人日本事務機械工業会発行「文書記述・フォントＪＩＳ原案作成委員会・技術セミナー／文書関連ＪＩＳ企画説明会資料」（１９９４年３月１０日）に記載のＪＩＳＸ４１６３原案「第３部グリフ形状表現」にて規定されている規格（以降本願ではＸ４１６３と呼ぶことにする）への応用例を示す。ここでは、該規格（Ｘ４１６３）の詳細な説明は割愛する。上述した第１実施例及び第２で示した線幅情報は、即ちＸ４１６３におけるヒント域に対応する。同様に、水平線幅情報がＸ４１６３のｈｓｔｅｍ、垂直線幅情報がＸ４１６３のｖｓｔｅｍに対応している。第３実施例では、ｖｓｔｅｍ及びｈｓｔｅｍの２情報を、説明の簡便化および明確化のため、まとめてＳＴＥＭとして取り扱う。
【０１２９】
また、上述した第１実施例における有効範囲の終了条件は、Ｘ４１６３における重複ヒント域の置き換え条件に等しい。更に、Ｘ４１６３において一度宣言されたヒント域に関する命令は重複ヒント域の置き換え命令の直前まで有効であるので、第１実施例における有効範囲が適用できる。
【０１３０】
図１６に、Ｘ４１６３における描画命令の定義の一部を示す。各命令の機能の詳細については省略するが、Ｘ４１６３の一般的な描画命令は、基準点および送りを宣言する命令ｘｒｐｅに始まり、文字描画の終了を宣言する命令ｅｎｄｇｌｙｐｈで終る。その間に輪郭座標値情報がもつ輪郭が描画される。また、各輪郭描画はｈｍｏｖｅｔｏ、ｖｍｏｖｅｔｏあるいはｒｍｏｖｅｔｏの輪郭の開始点への移動命令で始まり、輪郭の終了命令ｃｌｏｓｅｐａｔｈで終わる。
【０１３１】
以上の一連の描画命令の際、前述のヒント域置き換え条件に合致した場合、ｘ４１６３における重複ヒント域の置き換え命令が発効される。本実施例では簡便化および明確化のため、Ｘ４１６３におけるこの機能をＣＨＡＮＧＥという命令で表すとする。
【０１３２】
また、同様に移動命令（ｈｍｏｖｅｔｏ，ｖｍｏｖｅｔｏ，ｒｍｏｖｅｔｏ）をまとめてＭＯＶＥＴＯ、直線描画（ｈｌｉｎｅｔｏ，ｖｌｉｎｅｔｏ，ｒｌｉｎｅｔｏ）をまとめてＬＩＮＥＴＯ、曲線描画（ｈｖｃｕｒｖｅｔｏ，ｖｈｃｕｒｖｅｔｏ，ｒｒｃｕｒｖｅｔｏ）をまとめてＣＵＲＶＥＴＯとして扱うとする。
【０１３３】
図１７〜図１９に、第３実施例における有効範囲出力処理のフローチャートを示す。第３実施例においては、上述した図２に示す輪郭座標値情報、図４に示す線幅情報テーブル、図８に示す形式で出力された配列情報、及び初期基準点ＲＰ，文字送り量ＷＩＤ等のメトリクス情報を用いて、処理を行う。
【０１３４】
まず図１７におけるステップＳ１６０１で初期設定として、描画中有効な線幅情報を示すフラグ配列ＨＩＮＴ、及び読み込んだ点に対する有効な線幅情報を格納するためのフラグ配列ＡＤＪＵＳＴをすべてオフに設定する。また、端点から端点までの１描画の間に読み込んだ制御点の数（制御点番号）を示す値ＮＰを「１」とする。次にステップＳ１６０２において、初期基準点ＲＰおよび文字送り量ＷＩＤを読み込み、ステップＳ１６０３でＸ４１６３におけるｘｒｐｅ命令を出力する。そしてステップＳ１６０４において、Ｘ４１６３における移動量計算のため、現在点を表す変数ＣＰに初期基準点ＲＰの座標値を代入し、ステップＳ１６０５に進む。
【０１３５】
以降、ステップＳ１６０５〜ステップＳ１６１２までの処理は、座標点および線幅情報入力のための処理である。
【０１３６】
まずステップＳ１６０５において、１文字分の処理が終了したかどうかを判断し、終了していればステップＳ１６０６へ進み、文字描画の終了を宣言する命令ｅｎｄｇｌｙｐｈを出力して第３実施例の処理を終了する。一方、ステップＳ１６０５において１文字分の処理が終了していなければステップＳ１６０７へ進む。ステップＳ１６０７において、輪郭の終了点まで読み込んだか否かを判定し、読み込んでいなければステップＳ１６０８へ進む。ステップＳ１６０８においては、第１実施例によって出力された図８に示す配列から制御点番号ＮＰに対応する座標値情報を読み込み、Ｐ（ＮＰ）に格納する。そしてステップＳ１６０９において、図８に示す配列から制御点番号ＮＰに対応する線幅情報のフラグ配列を読み込む。そして読み込んだフラグ配列と配列ＡＤＪＵＳＴとのＯＲをとり、その結果を新たにフラグ配列ＡＤＪＵＳＴに格納する。これにより、フラグ配列ＡＤＪＵＳＴが、次の描画命令を出力する前に出力すべき線幅情報を示すフラグ配列となる。
【０１３７】
続いてステップＳ１６１０において、Ｐ（ＮＰ）が端点であるか否かを判定し、端点であれば図１８のステップＳ１６１３へ進み、端点でない、即ち中間点ならばステップＳ１６１１へ進み、ＮＰを１増加させる。
【０１３８】
一方、ステップＳ１６０７で輪郭終了であればステップＳ１６１２に進み、輪郭の開始点を読み込んでＰ（ＮＰ）とする。尚、輪郭の開始点は必ず端点である。
【０１３９】
以降、図１８に示すステップＳ１６１３からステップＳ１６２０までは、第３実施例における線幅情報の有効範囲決定のための処理である。
【０１４０】
ステップＳ１６１３において、２つのフラグ配列ＨＩＮＴ及びＡＤＪＵＳＴの各要素について、対応する線幅を示す各要素（ＨＣＯＵＮＴ＋ＶＣＯＵＮＴ）個分について、配列ＨＩＮＴから配列ＡＤＪＵＳＴを減じる。そしてステップＳ１６１４において、ステップＳ１６１３での減算結果（ＨＩＮＴ−ＡＤＪＵＳＴ）が正になったもの（ＡＤＪＵＳＴの要素値がオフに変化したもの）が１つでもあれば、有効範囲が終了したと判断してステップＳ１６１５へ進む。ステップＳ１６１５では、有効範囲が終了したのでＸ４１６３におけるヒント域の置き換えを行うために、ＣＨＡＮＧＥ命令を出力する。そしてステップＳ１６１６において、ヒント域置き換え後の有効な線幅情報として、ＡＤＪＵＳＴをＨＩＮＴに代入する。次にステップＳ１６１７で、ＨＩＮＴにより有効であると示された線幅情報について、Ｘ４１６３におけるヒント域定義命令ＳＴＥＭを出力する。
【０１４１】
一方、ステップＳ１６１４において差が正になったものが１つもなければ、ヒント域置き換えの必要がないとしてステップＳ１６１８へ進み、同様にステップＳ１６１３における減算結果が負になったもの（ＡＤＪＵＳＴの要素値がオンに変化したもの）が１つでもあるかを判定する。差が負となるものが１つでもあれば、新たにヒント域を定義する要素があると判断してステップＳ１６１９へ進み、１つもなければ図１９に示すステップＳ１６２１へ進む。ステップＳ１６１９においては、ステップＳ１６１３における減算結果が負となった線幅情報について、Ｘ４１６３におけるヒント域定義命令ＳＴＥＭを出力する。そしてステップＳ１６２０において、ＨＩＮＴとＡＤＪＵＳＴのＯＲをとり、その結果を現在有効な線幅情報を示すフラグ配列としてＨＩＮＴに代入する。
【０１４２】
以降、図１９に示すステップＳ１６２１からステップＳ１６２８までは、第３実施例における命令出力のための処理である。
【０１４３】
ステップＳ１６２１において最後に読み込んだ制御点が輪郭の開始点である場合はステップＳ１６２２へ進み、そうでなければステップＳ１６２３へ進む。ステップＳ１６２２においては、最後に読み込んだ制御点Ｐ（ＮＰ）と現在点ＣＰから移動量を計算してＸ４１６３における移動命令ＭＯＶＥＴＯを出力し、ステップＳ１６２９に進む。
【０１４４】
ステップＳ１６２３では、曲線命令を出力するか否かを判定する。端点間に中間点が含まれていれば、曲線命令を出力するとしてステップＳ１６２４へ進み、現在点ＣＰと、読み込まれた制御点Ｐ（ＮＰ）までのＮＰ個の制御点により、Ｘ４１６３における曲線命令ＣＵＲＶＥＴＯを出力し、ステップＳ１６２７へ進む。
【０１４５】
曲線命令を出力しない場合にはステップＳ１６２５へ進み、直線命令を出力するか否かを判定する。ここで、輪郭の終了点から開始点への直線描画を行う際には直線命令を出力せずにステップＳ１６２７へ進む。また、それ以外の場合にステップＳ１６２６へ進み、現在点ＣＰと最初に読み込まれた点Ｐ（１）により、Ｘ４１６３における直線命令ＬＩＮＥＴＯを出力してステップＳ１６２７へ進む。
【０１４６】
ステップＳ１６２７では、すでに輪郭の最終制御点まで読み込んだか否かを判定し、読み込んでいればステップＳ１６２８へ進み、読み込んでいなければステップＳ１６２９へ進む。ステップＳ１６２８では、Ｘ４１６３における輪郭の終了を示す命令ｃｌｏｓｅｐａｔｈを出力する。、
以降、ステップＳ１６２９からステップＳ１６３１までは、第３実施例における次の命令出力のための初期化処理である。
【０１４７】
まずステップＳ１６２９において、フラグ配列ＡＤＪＵＳＴの要素をすべてオフに設定し、次にステップＳ１６３０において、最後に読み込んだ制御点の座標値を現在点ＣＰに代入する。そして、ステップＳ１６３１において、ＮＰを「１」に設定し、処理は図１７のステップＳ１６０５に戻る。
【０１４８】
以上説明した様に第３実施例によれば、描画過程および線幅情報の有効範囲をＸ４１６８の命令形式にて示すことができる。従って、同時に適用すべきでない輪郭座標値補正情報を分割するように有効範囲を決定してＸ４１６３に応用することにより、高品位な文字出力が可能になる。
【０１４９】
尚、以上説明した第３実施例に対して、上述した第２実施例で示した補正情報有効範囲出力を適用することも、もちろん可能である。
【０１５０】
尚、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器から成る装置に適用しても良い。また、本発明はシステム或は装置にプログラムを供給することによって達成される場合にも適用できることはいうまでもない。この場合、本発明に係るプログラムを格納した記憶媒体が、本発明を構成することになる。そして、該記憶媒体からそのプログラムをシステムあるいは装置に読みだすことによって、そのシステム或いは装置が、あらかじめ定められたし方で動作する。
【発明の効果】
以上説明した様に本発明によれば、輪郭座標補正情報についてその補正情報を適用する有効範囲を決定し、該有効範囲に従って補正を行うことにより、同時に実行されるべきでない複数の高品位化処理機能が同時に機能しないように制御することができ、補正後の文字の字形を高品位に保つことが可能となる。
【０１５１】
また、輪郭座標の有効な補正情報をより少ないデータ量で出力することが可能となるため、メモリ効率を向上させることが可能となる。
【０１５２】
【図面の簡単な説明】
【図１】本発明に係る一実施例における文字処理装置の概略構成を説明す図である。
【図２】本実施例における輪郭座標点情報のデータ構造を示す図である。
【図３】本実施例の２次元平面における左下座標について説明するための図である。
【図４】本実施例における線幅補正の様子を示す図である。
【図５】本実施例における補正情報のデータ構造を示す図である。
【図６】本実施例における線幅情報テーブルのデータ構造を示す図である。
【図７】本実施例における線幅情報が保持する変数を説明するための図である。
【図８】本実施例における有効範囲の出力形式を示す図である。
【図９】本実施例における有効範囲決定処理を示すフローチャートである。
【図１０】本実施例における有効範囲決定処理を示すフローチャートである。
【図１１】本実施例における線幅検出処理を示すフローチャートである。
【図１２】本実施例における有効範囲終了確認処理を示すフローチャートである。
【図１３】本実施例における重複判定処理を示すフローチャートである。
【図１４】本発明に係る第２実施例における有効範囲の出力形式を示す図である。
【図１５】第２実施例における有効範囲出力処理を示すフローチャートである。
【図１６】本発明に係る第３実施例においてＪＩＳＸ４１６３の代表的な命令を示す図である。
【図１７】第３実施例における有効範囲出力処理を示すフローチャートである。
【図１８】第３実施例における有効範囲出力処理を示すフローチャートである。
【図１９】第３実施例における有効範囲出力処理を示すフローチャートである。
【符号の説明】
１０１  ＣＰＵ（中央演算ユニット）
１０２  ＲＯＭ
１０３  ＲＡＭ
１０５  ＫＢ（キーボード）
１０７  ＰＤ（ポインティングデバイス）
１０９  ＣＲＴ
１０１１  外部記憶装置（ＦＤ，ＨＤ）
１０１３  ＰＲＴ
【図１】
0003563829.tif 000002
【図２】
0003563829.tif 000003
【図３】
0003563829.tif 000004
【図４】
0003563829.tif 000005
【図５】
0003563829.tif 000006
【図６】
0003563829.tif 000007
【図７】
0003563829.tif 000008
【図８】
0003563829.tif 000009
【図９】
0003563829.tif 000010
【図１０】
0003563829.tif 000011
【図１１】
0003563829.tif 000012
【図１２】
0003563829.tif 000013
【図１３】
0003563829.tif 000014
【図１４】
0003563829.tif 000015
【図１５】
0003563829.tif 000016
【図１６】
0003563829.tif 000017
【図１７】
0003563829.tif 000018
【図１８】
0003563829.tif 000019
【図１９】
0003563829.tif 000020