(57)【特許請求の範囲】
【請求項１】
文字の輪郭の太め処理を行い、太め処理された輪郭に基づき文字を発生させる文字発生装置であって、
太め処理された対象輪郭点とその両隣の輪郭点のなす角度が鋭い角度であるか否かを判別する判別手段と、
前記判別手段により、太め処理された対象輪郭点とその両隣の輪郭点のなす角度が鋭い角度であると判別された場合、前記太め処理された対象輪郭点を補正する補正手段とを有し、
前記補正手段は、前記太め処理の太め量が負の場合、前記太め処理された対象輪郭点を、前記対象輪郭点と当該対象輪郭点の処理前の輪郭点とを結ぶ直線上で、処理前の輪郭点側の新たな輪郭点に移動させることを特徴とする文字発生装置。
【請求項２】
前記補正手段は、前記太め処理の太め量が正の場合、太め処理された対象輪郭点および当該対象輪郭点の処理前の輪郭点とを結ぶ直線に直角に交わる直線と前記対象輪郭点およびその両隣の輪郭点を結ぶ二つの直線との交点を新たな輪郭点として求め、当該新たな輪郭点に前記対象輪郭点を置き換えることにより対象輪郭点を補正することを特徴とする請求項１に記載の文字発生装置。
【請求項３】
前記補正手段は、角を丸める必要がある場合、前記求められた新たな輪郭点に基づき曲線構成点を求めることを特徴とする請求項２に記載の文字発生装置。
【請求項４】
前記太め処理により太められた輪郭点の座標値を元の文字の文字枠の幅と太め量とに基づき調整する調整手段をさらに有することを特徴とする請求項１に記載の文字発生装置。
【請求項５】
文字の輪郭の太め処理を行い、太め処理された輪郭に基づき文字を発生させる文字発生方法であって、
太め処理された対象輪郭点とその両隣の輪郭点のなす角度が鋭い角度であるか否かを判別する判別ステップと、
前記判別ステップにより、太め処理された対象輪郭点とその両隣の輪郭点のなす角度が鋭い角度であると判別された場合、前記太め処理された対象輪郭点を補正する補正ステップとを有し、
前記補正ステップは、前記太め処理の太め量が負の場合、前記太め処理された対象輪郭点を、前記対象輪郭点と当該対象輪郭点の処理前の輪郭点とを結ぶ直線上で、処理前の輪郭点側の新たな輪郭点に移動させることを特徴とする文字発生方法。
【請求項６】
前記補正ステップは、前記太め処理の太め量が正の場合、太め処理された対象輪郭点および当該対象輪郭点の処理前の輪郭点とを結ぶ直線に直角に交わる直線と前記対象輪郭点およびその両隣の輪郭点を結ぶ二つの直線との交点を新たな輪郭点として求め、当該新たな輪郭点に前記対象輪郭点を置き換えることにより対象輪郭点を補正することを特徴とする請求項５に記載の文字発生方法。
【請求項７】
前記補正ステップは、角を丸める必要がある場合、前記求められた新たな輪郭点に基づき曲線構成点を求めることを特徴とする請求項６に記載の文字発生方法。
【請求項８】
前記太め処理により太められた輪郭点の座標値を元の文字の文字枠の幅と太め量とに基づき調整する調整ステップをさらに有することを特徴とする請求項５に記載の文字発生方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、輪郭の座標データでコード化された字の太さを変換する文字発生装置および方法に関する。
【０００２】
【従来の技術】
従来、輪郭の座標データで格納されたデータをビットマップに展開して文字を出力する場合、ＲＯＭやハードディスクに格納された輪郭の座標データを読み出し、その座標データに拡大縮小率をかけて所望のサイズに変換した後にドット形式に変換して文字データを得ていた。
【０００３】
この場合、同一の書体でもウエイト（太さ、肉厚量）が異なればそれぞれに対して１つずつ座標データを持つ必要がある。しかし和文書体の場合１書体当り８０００文字程度あり、その１書体に必要な輪郭データの容量は１Ｍバイトから３Ｍバイトほど必要である。そしてそれぞれのウエイトに対して輪郭の座標データを持たせることになればその容量は膨大な容量になってしまうという問題点があった。
【０００４】
このため、１つの書体のデータから同一書体で異なるウエイトのデータを発生させるときに、座標の対象座標と隣接する２点の３点から太め量あるいは細め量を基準にして計算して求めていた（本出願人が先に出願した特願平５−３０９５５５号及び特願平５−３０９５５６号参照）。
【０００５】
【発明が解決しようとする課題】
しかしながら上記の場合、３点のなす角度が例えば３０度以下のような鋭く折れている直線を変換しようとすると、対象点が、文字領域をはみ出してしまったり、著しく文字の形を損ねてしまうという問題点があった。
【０００６】
本発明は、上記の問題点を解消するためになされたもので、少なくとも１つの書体のデータから同一書体での異なるウエイト（太さ）のデータを良好な品質で発生させ、少ないメモリ容量で、様々なウエイトの書体のデータを発生させることを可能とすることを目的としたものである。
【０００７】
【課題を解決するための手段】
本発明は、このような目的を達成するために、請求項１に記載の発明は、文字の輪郭の太め処理を行い、太め処理された輪郭に基づき文字を発生させる文字発生装置であって、太め処理された対象輪郭点とその両隣の輪郭点のなす角度が鋭い角度であるか否かを判別する判別手段と、前記判別手段により、太め処理された対象輪郭点とその両隣の輪郭点のなす角度が鋭い角度であると判別された場合、前記太め処理された対象輪郭点を補正する補正手段とを有し、前記補正手段は、前記太め処理の太め量が負の場合、前記太め処理された対象輪郭点を、前記対象輪郭点と当該対象輪郭点の処理前の輪郭点とを結ぶ直線上で、処理前の輪郭点側の新たな輪郭点に移動させることを特徴とするものである。
【０００８】
また、請求項２に記載の発明は、請求項１に記載の文字発生装置であって、太め処理された対象輪郭点および当該対象輪郭点の処理前の輪郭点とを結ぶ直線に直角に交わる直線と前記対象輪郭点およびその両隣の輪郭点を結ぶ二つの直線との交点を新たな輪郭点として求め、当該新たな輪郭点に前記対象輪郭点を置き換えることにより対象輪郭点を補正することを特徴とするものである。
【０００９】
また、請求項３に記載の発明は、請求項２に記載の発明であって、前記補正手段は、角を丸める必要がある場合、前記求められた新たな輪郭点に基づき曲線構成点を求めることを特徴とするものである。
【００１０】
また、請求項４に記載の発明は、請求項１に記載の文字発生装置であって、前記太め処理により太められた輪郭点の座標値を元の文字の文字枠の幅と太め量とに基づき調整する調整手段をさらに有することを特徴とするものである。
【００１１】
また、請求項５に記載の発明は、文字の輪郭の太め処理を行い、太め処理された輪郭に基づき文字を発生させる文字発生方法であって、太め処理された対象輪郭点とその両隣の輪郭点のなす角度が鋭い角度であるか否かを判別する判別ステップと、前記判別ステップにより、太め処理された対象輪郭点とその両隣の輪郭点のなす角度が鋭い角度であると判別された場合、前記太め処理された対象輪郭点を補正する補正ステップとを有し、前記補正ステップは、前記太め処理の太め量が負の場合、前記太め処理された対象輪郭点を、前記対象輪郭点と当該対象輪郭点の処理前の輪郭点とを結ぶ直線上で、処理前の輪郭点側の新たな輪郭点に移動させることを特徴とする。
【００１２】
また、請求項６に記載の発明は、請求項５に記載の文字発生方法であって、前記太め処理の太め量が正の場合、太め処理された対象輪郭点および当該対象輪郭点の処理前の輪郭点とを結ぶ直線に直角に交わる直線と前記対象輪郭点およびその両隣の輪郭点を結ぶ二つの直線との交点を新たな輪郭点として求め、当該新たな輪郭点に前記対象輪郭点を置き換えることにより対象輪郭点を補正することを特徴とする。
【００１３】
また、請求項７に記載の発明は、請求項６に記載の文字発生方法であって、前記補正ステップは、角を丸める必要がある場合、前記求められた新たな輪郭点に基づき曲線構成点を求めることを特徴とする。
【００１４】
また、請求項８に記載の発明は、請求項５に記載の文字発生方法であって、前記太め処理により太められた輪郭点の座標値を元の文字の文字枠の幅と太め量とに基づき調整する調整ステップをさらに有することを特徴とする。
【００２０】
【作用】
本発明は、入力された太字量または細字量に基づいて、輪郭データの座標値を変換し、調整すべき座標を抽出し、座標値を調整し、調整された輪郭データに基づいて太いまたは細い文字パターンを発生させるので、少ない文字データから肉厚量の異なる高品質な太字または細字文字を発生するものである。
【００２１】
本発明においては、入力された太字量または細字量に基づいて、変換するいずれかの文字データ候補を決定し、該決定された文字データに対応する輪郭データの座標値を変換し、該座標変換された輪郭データに基づいて、太いまたは細い文字パターンを発生して、文字データ資源を生かして最良の太字または細字の文字データを発生させるものである。
【００２２】
本発明においては、決定は、入力された太字量または細字量に近い肉厚量の文字データを変換する文字データ候補として、より厳密な太字または細字の文字データを発生させるものである。
【００２３】
また、本発明においては、変換は、対象座標に隣接する２点の座標値を参照して１つの変換座標を決定することにより行うので、バランスのとれた太いまたは細字の文字パターンを発生するものである。
【００２４】
本発明においては、変換は、抽出した各輪郭データを入力された太字量または細字量をｘ方向およびｙ方向に対して独立して可変するにより行うので、書体毎の特徴を生かした太字または細字の文字パターンを発生するものである。
【００２５】
本発明においては、判定は、対象座標と隣接する２点の座標値を参照して３点のなす角度および入力された値が太字量あるいは細字量であるかおよび対象書体によって決定することにより行うので、良好な品質の太字または細字の文字パターンを発生するものである。
【００２６】
本発明においては、座標調整は、太字量が指定されたときに対象点に新たな点を挿入することにより行うので、良好な品質の太字の文字パターンを発生するものである。
【００２７】
本発明においては、座標調整は、太字量が指定されたときに対象点に新たな点を挿入した後、角を丸めることによって行うので、書体毎の特徴を生かした良好な太字の文字パターンを発生するものである。
【００２８】
本発明においては、座標調整は、細字量が指定されたときに対象点を移動させることによって行うので、良好な品質の細字の文字パターンを発生するものである。
【００２９】
本発明においては、データの発生は、変換された輪郭データに基づいてビットマップフォント、輪郭データ、グレイスケールフォントのいずれかを出力して、種々の出力手段に適切なデータ形式で太字または細字の文字データを供給するものである。
【００３０】
前記輪郭データは、交差するストロークによる複数の輪郭データで構成されていてもよいし、交差しない複数の文字の輪郭データで構成されていてもよい。
【００３１】
【実施例】
次に、本発明の実施例について図を参照して説明する。
【００３２】
図１は本発明に使用するシステムの基本的な構成を示すブロック図である。本発明に使用するシステムは、日本語ワードプロセッサであってもよいし、ワークステーションあるいはコンピュータシステムであってもよい。
【００３３】
図１において、１はＣＰＵ、すなわち中央処理装置であり、この装置全体の制御および演算処理等を行うものである。２はＲＯＭすなわち読み出し専用メモリであり、システム起動プログラムおよび文字パターン・データ等の記憶領域である。３はＲＡＭすなわちランダムアクセスメモリであり、使用制限のないデータ記憶領域であり、様々な処理毎に各々のプログラムおよびデータが記憶され、実行される領域である。４はＫＢＣすなわちキーボード制御部であり、５のＫＢすなわちキーボードよりキー入力データを受け取りＣＰＵ１へ伝達する。６はＣＲＴＣすなわちディスプレイ制御部であり、７はＣＲＴすなわちディスプレイ装置であり、６のＣＲＴＣよりデータを受け取り表示する。９はＦＤすなわちフロッピーディスク装置あるいはＨＤすなわちハードディスク装置等の外部記憶装置であり、プログラムおよびデータを記憶させておき、実行時必要に応じて参照またはＲＡＭへロードする。８はＤＫＣすなわちディスク制御部であり、データ伝送等の制御を行うものであり、１０はＰＲＴＣすなわちプリンタ制御部であり、１１はＰＲＴすなわちプリンタ装置である。１２はシステムバスであり、上述の構成要素間のデータの通路となるべきものである。
【００３４】
また、図２も本発明にかかる本システムの基本的な構成を示すブロック図である。本システムはホストコンピュータ（図示せず）より印刷データ（イメージデータ、文字コード、コマンド等）を受け取り印刷を行うレーザビームプリンタであってもよいし、インクジェットプリンタあるいは熱転写等の出力機であってもよい。図２において２１はＣＰＵ、すなわち中央処理装置であり、この装置全体の制御および演算処理等を行うものである。２２はＲＯＭすなわち読み出し専用メモリであり、システム起動プログラムおよび文字パターン・データ等の記憶領域である。２３はＲＡＭすなわちランダムアクセスメモリであり、使用制限のないデータ記憶領域であり、様々な処理毎に各々のプログラムおよびデータが記憶され、実行される領域である。１０はＰＲＴＣすなわち出力制御部であり、１１はＰＲＴすなわち印刷装置であり、１０のＰＲＴＣよりデータを受け取り印刷する。
【００３５】
〔第１実施例〕
次に、本発明の一実施例の詳細を図３のフローチャートを用いて説明する。図３は、字を構成するストロークごとにそのストロークを構成する輪郭の座標データで文字データが表現されている場合における、全体の流れを示すフローチャートである。このストロークで構成された輪郭は、それぞれ交差する輪郭である。ここで説明する例は、ウエイト（肉厚量）の異なる同一の書体がシステムに１つ存在するとき、そのデータを用いて異なるウエイトのデータを発生させるときの例である。
【００３６】
ステップ３−１において図１のシステムにより実行されるアプリケーションプログラム、あるいは、図２のシステムにデータを供給するホストコンピュータ（図示せず）より入力パラメータを受け取る。ここで入力パラメータとしては出力すべき文字の文字コード、書体、ウエイト、出力サイズ、出力形式等がある。文字コードとしてはＪＩＳコード、シフトＪＩＳコード、ＥＵＣコード、ＵＮＩコード等のあらかじめ対象となるシステムがどの文字コード体系によって定められているかによって決まる。また書体としては明朝体、ゴシック体、丸ゴシック体等のシステムがあらかじめ内蔵しているデータあるいはオプションとして加えられたデータの中から選ばれる。ウエイトは前記書体の線の太さ情報であり、ここでは極細、細、中、太、極太等の情報が与えられる。出力サイズは実際にフォントデータを出力する際にどれ位の大きさで出力するかの情報である。出力形式は所望とするフォントの出力データ形式であり、輪郭の座標データ出力、ビットマップ出力等の要求が出される。
【００３７】
次にステップ３−２において対象文字の座標データを読み込む。このデータはＲＯＭ、ＲＡＭ、ハードディスク、フロッピーディスク等にあらかじめ格納されており、ステップ３−１で取り込んだ入力情報の書体情報や文字コード情報から検索して必要分読み込む。このとき取り込む入力情報は、図４に示すように、文字の輪郭の特徴点を抽出した座標情報であり、それぞれの点に対して直線データ／曲線データ判別フラグ、輪郭開始点／終了点フラグ等の属性情報を持つ。そしてここで扱う曲線データの補間式は２次あるいは２次Ｂスプライン曲線であったり、２次あるいは３次ベジェ曲線であったりするが、どの補間式を使用しているかはあらかじめ決定されている。また、文字枠を示す座標の最小値は０、最大値は８００等で表現されている。また、各ストロークの枠の基準点への文字の原点からのオフセット情報を持つ。この座標データは、図５に示すようなフォーマットでＲＯＭ等に格納されている。
【００３８】
そして、ステップ３−３においては取り込んだ座標データを入力パラメータのウエイト情報に応じて太め／細め処理を行う。この時の処理は図１０のフローチャートを用いて後で詳述するが、この太め／細め処理を行った結果、各々の輪郭線が太め／細め座標に変換される。図６には、図４に示す字形を太めの座標に変換した文字が示されている。このとき、太め／細め処理前と太め／細め処理後の座標点は１対１に対応しており、それぞれの点の持つ属性フラグは変化しない。そしてステップ３−４において、ステップ３−３で得られた太めた／細めた座標データを入力パラメータの出力サイズに応じて拡大縮小処理を行う。この時の計算方法は、要求出力サイズを（Ａｘ，Ａｙ）、ステップ３−３で得られたそれぞれの座標値を（ｘ，ｙ）、拡大縮小処理後のそれぞれの座標値を（Ｘ，Ｙ）、格納されている文字枠のサイズを（Ｍｘ，Ｍｙ）とすると、
【００３９】
【数１】
（Ｘ，Ｙ）＝（ｘ×Ａｘ／ＭＸ，ｙ×Ａｙ／Ｍｙ）
となる。上記計算を１文字が持つすべての座標列において計算する。また、このときステップ３−３で得られた各座標点における属性フラグは変化しない。
【００４０】
ステップ３−５においては、入力パラメータの出力形式で判定し、出力形式が輪郭の座標データ出力であれば、ステップ３−６に進み、ステップ３−４で得られた拡大縮小後の座標点および座標点属性のデータ列を要求側へ返す。出力される輪郭の座標データのフォーマットは図５と同様である。
【００４１】
ステップ３−５において、ビットマップ出力が要求されていれば、ステップ３−７へ進む。ステップ３−７からステップ３−１３においては、実際に座標データからビットマップのデータを作成する処理である。ステップ３−７においては、対象となる座標データが直線であるかあるいは曲線であるかを判定する。対象となる座標データが直線である場合は、その座標点を直線のスタート点とし、次の座標点を直線のエンド点としてステップ３−８へ進む。対象となるデータが曲線データである場合はその座標点から曲線終了フラグが付されている座標データまでを曲線データとしてステップ３−９へ進む。
【００４２】
ステップ３−８においては、曲線を発生させる処理を行う。このときの直線発生方法はＤＤＡ（Ｄｉｇｉｔａｌ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ａｌｇｏｒｉｔｈｍ）によって発生させる。そしてＤＤＡによって発生させた座標データは図７に示すように打点テーブルに格納する。図７に示す打点テーブルは出力領域の各ｙ座標に対して、ｘ座標のスタート座標／ストップ座標を格納していく。ＤＤＡによって同一のｙ座標に対して複数のｘ座標が存在する場合は、ストロークの輪郭に対して最も外側になるようにｘ座標を設定する。なお、図７の打点テーブルは、曲線データによる塗りつぶしデータも入力されている。
【００４３】
ステップ３−９においては、曲線データを短い直線（ショートベクトル）の集合に変換する処理を行う。図８に３次ベジェ曲線をショートベクトルの集合に変換する様子を示している。点Ａ，Ｂ，Ｃ，Ｄはステップ３−３より得られた座標変換後の曲線データ（３次ベジェ曲線構成点）であり、これらの点からまず各点を結んだ直線の中点である点ａ，点ｂ，点ｃを求める。点ａは点Ａと点Ｂの中点、点ｂは点Ｂと点Ｃの中点、点ｃは点Ｃと点Ｄの中点である。そして次に点ｘ，点ｙ，点ｚを求める。また、点ａ〜ｃを結んだ中点を求める。点ｘは点ａと点ｂの中点、点ｚは点ｂと点ｃの中点、点ｙは点ｘと点ｚの中点である。そうすると点列Ａａｘｙが新しい１つの３次ベジェ構成点、そして点列ｙｚｃＤがもう１つの３次ベジェ構成点となる。そしてそれぞれのベジェ構成点を同様な操作で細分化してき、ある判定基準を満たしたらそのとき細分化を中止する。そしてそれまでにできた３次ベジェの構成点列がショートベクトルの集合となる。
【００４４】
そしてステップ３−１０において、ステップ３−９で求めたショートベクトルの集合に基づいて、打点テーブルに格納する。このテーブルに対する格納方法は、ステップ３−８で示した方法とまったく同様であり、すべてのショートベクトルに対して処理を終了するまで繰り返す。そしてステップ３−１１において１つの輪郭の座標データがすべて終了したかどうかを判定し、処理が終了していればステップ３−１３へ進み、処理が終了していなければステップ３−１２に進む。ステップ３−１２においては次のデータを処理するために現在の座標データへのポインタを更新する。直線の場合であれば次の座標データへポインタを更新し、曲線データであれば曲線の終了座標点までポインタを更新する。そしてステップ３−７に戻って新たに直線／曲線判定をして打点を行っていく。ステップ３−１３においては１文字分すべての座標データに対して処理を終了したかどうかを判定し、すべての輪郭に対して処理を終了していればステップ３−１５に進み、処理を終了していなければステップ３−１４に進む。そしてステップ３−１４においては、１輪郭が終了した後なので次の輪郭の先頭にポインタを進めステップ３−７に戻る。そして、最終的に、図７に示す打点テーブルが完成する。
【００４５】
ステップ３−１５においてはすべての座標データに対して打点処理が終了しているので、図９に示すように、ステップ３−８およびステップ３−１０で打点テーブルに格納された各ｙ座標に対するｘ座標に対してノンゼロワイディング方式で塗りつぶしを行う。この方式は各スキャンラインの左側からスキャンしていき、スタート点であればフラグの値をインクリメントし、エンド点であればデクリメントする。そしてフラグの値が０でなければその間は１として塗りつぶし処理を行う。そしてステップ３−１６において要求側の指定する領域にステップ３−１５で求められた１文字分のデータを返して処理を終了する。なお、要求側がＰＲＴＣ１０であればＰＲＴＣ１０にデータを返し、ＰＲＴ１１により印刷を行う。また、要求側がＣＲＴＣ６であればＣＲＴＣ６にデータを返し、ＣＲＴ７により表示を行う。
【００４６】
次に、図１０のフローチャートを用いて、図３のステップ３−３における太め／細め処理の実施例を詳述する。本発明における太め／細めの処理は、ストロークに対応して太める／細めることにより、パラメータを変化させ、それぞれの輪郭点座標を変更する。図１０のステップ１０−１ではウエイトに応じて輪郭の太さのパラメータを決定する。太さを決定するパラメータは輪郭に大してそれぞれｘ方向、ｙ方向の独立に値を持ち、横線の太め量および縦線の太め量をそれぞれ独立に管理する。例えば、明朝体を太めようとした場合、明朝体の横線はさほど太くせずに済むのに縦線は大きく太める必要があるため、ｘ方向およびｙ方向に対してそれぞれ異なる値を設定する必要があるからである。これは例えば、図１１の中明朝と太明朝とを比較すると明白である。一方、図１２に示すように丸ゴシック体の場合は、横方向および縦方向はほぼ同じ量だけ太らせる必要がある。従って、それぞれの書体に対しても太めるべき値を変化させる必要がある。そこで、図１３に示すように、それぞれの書体とウエイトにおける横線と縦線に対して線の中心から輪郭までの標準値のデータをあらかじめテーブルでもたせ、入力された対象座標データの書体およびウエイトと出力したい座標データのウエイトから輪郭の太め量をそれぞれｘ方向およびｙ方向に対して決定する。このときこの太め量が正の値となる場合は太め処理が行われ、太め量が負の値となる場合には細め処理が行われることになる。
【００４７】
ステップ１０−２においては、各ストロークのオフセット情報を太さパラメータに応じて変化させる。この値は、オフセットのｘ座標およびｙ座標から太さパラメータのｘ値およびｙ値を減じることによって求められる。
【００４８】
ステップ１０−３からステップ１０−１４までの間で１輪郭構成点のすべての座標点列に対して、太め／細め処理を行う。ステップ１０−３では、まず処理を施すための対象点を取り込む。そしてステップ１０−４で対象点の両隣の点を取り込む。ステップ１０−５において、対象点とその両隣の点のなす角度を求める。この時の計算式は以下のようになる。対象点を点ａとし、その両隣の点をそれぞれ点ｂ，点ｃとすると、ベクトルａｂとベクトルａｃからその間の角度をθとすると、
【００４９】
【数２】
0003576611.tif 000002
【００５０】
となり、θを求めることができる。そしてステップ１０−６に進み、θの角度によって移動すべき点の動きを変化させる。この角度が鋭くない角（たとえばθの値が３０度以上）のときはステップ１０−７に進み、また角度が鋭い角（たとえばθの値が３０未満）のときはステップ１０−８に進む。
【００５１】
ステップ１０−７ではθが鋭くない角のときの太め処理を行う。この処理を図１４に示す図を用いて説明する。対象点をＢ、対象点の１つ前の点をＡ、対象点の次の点をＣとすると、ベクトルＡＢ、およびベクトルＢＣをなす角を２分する方向に対して、輪郭の外側に向けて移動する。その移動量は、ステップ１０−１で求めたｘ太め量、ｙ太め量によってその斜辺となるように決定する。このとき求められた座標値は１ストロークの枠に対する座標値であるので、ステップ１０−２で求めたオフセット座標を加えて文字の原点からの座標値とする。
【００５２】
ステップ１０−８ないしステップ１０−１４におけるθが鋭い角ではある場合（θの値が３０度未満）の太めの処理の説明を行う。ただし、太め量が正の値であるか負の値であるかによって処理を変える必要がある。そこでステップ１０−８において、太め量が正の値であるか負の値であるかを判定する。太め量が正のときはステップ１０−９へ進み、太め量が負の値である場合にはステップ１０−１３へ進む。
【００５３】
ステップ１０−９からステップ１０−１２で太め量が正の値のときの処理を行う。まずステップ１０−９において、単純に鋭くない角のときと同様に、太め処理のための移動点Ｂ（図１５参照）を求める。図１５において、点ａ〜ｃは元の輪郭、点Ａ〜Ｃは単純に太め処理をした輪郭の点である。しかし、鋭い角であるためこの移動点Ｂは元の点から大きく移動してしまい、ときには文字領域からはみだしてしまう場合がある。これを防ぐために、中間に新たな２点を設けて元の点から極端にはなれないよう処理を施す。
【００５４】
ステップ１０−１０において、その新たな２点を計算によって求める処理を行う。この処理を図１５を用いて説明する。図１５において、元の輪郭の３点（点ａ，点ｂ，点ｃ）と単純に太め処理をした対応する輪郭の３点（点Ａ，点Ｂ，点Ｃ）を用いて、ベクトルｂＢと同方向に距離が太め量の２倍の点Ｄを求める。ベクトルｂＤに垂直なベクトルでストロークをカットし、単純に太め処理を行った線分ＡＢおよび線分ＢＣと交わる点をそれぞれ点Ｅおよび点Ｆとすると、この２つの点Ｅおよび点Ｆを新たな太め処理した点として登録する。このようにして求められた座標点、点Ａ，点Ｅ，点Ｆ，点Ｃが太め処理を施した新たな輪郭点として登録される。そしてステップ１０−１１において対象とする書体が丸ゴシック体のように角を丸める必要がある書体であるのかどうかを判定する。角を丸める必要がなければ、点Ａ，点Ｅ，点Ｆ，点Ｃをそのまま太め処理後の構成点として登録しステップ１０−１５に進み、角を丸める必要がある書体であれば、ステップ１０−１２へ進み、角を丸める処理を行う。ステップ１０−１２においては、図１６に示すように、線分ＥＦの中間に新たな点Ｇをとりそして線分ＥＧあるは線分ＧＦと同じ長さの点をそれぞれ線分ＥＡ上に点Ｈを、線分ＦＣ上に点Ｉをとる。そして線分ＨＥ、線分ＥＧ、線分ＧＦおよび線分ＦＩの中点それぞれ点Ｊ，点Ｋ，点Ｌおよび点Ｍとすると、点列Ｈ，Ｊ，Ｋ，Ｇおよび点列Ｇ，Ｌ，Ｍ，Ｉをそれぞれベジェの構成点として表現することが可能となり、直線点列Ａ，Ｈ、ベジェ曲線構成点列Ｈ，Ｊ，Ｋ，Ｇ、ベジェ曲線構成点列Ｇ，Ｌ，Ｍ，Ｉ、直線点列Ｉ，Ｃが角を丸めた新たな太め処理を施した輪郭構成点として登録される。以上ステップ１０−９からステップ１０−１２において鋭い角度のとき、かつ太め量が正の場合の処理について説明した。
【００５５】
次にステップ１０−１３からステップ１０−１４における、太め量が負の場合の処理について図１７を用いて説明する。図１７の各点の符号の意味は図１５と同様である。ステップ１０−１３において、単純に鋭くない角のときと同様に太め処理のための移動点Ｂを求める。しかし、鋭い角であるためこの移動点は元の点から大きく移動してしまい、時にはストロークの線分をなくしてしまう場合がある。よってこれを防ぐために、点列ａ，ｂ，ｃから求められた単純な太め用移動点列Ａ，Ｂ，Ｃの点Ｂを点ｂに近づけるように配置し、ストロークの特徴を残す必要がある。そこでステップ１０−１４その近づけるための計算を行う。この計算方法は、ベクトルｂＢと同方向に距離が太め量の２倍の点Ｄを求め、この点を新たな太め処理の構成点とする。つまり点列Ａ，Ｄ，Ｃが鋭い角度のとき、かつ太め量が負の場合のときの新たな輪郭構成点として登録される。以上のようにしてステップ１０−８からステップ１０−１４において、太め処理の対象となる点が鋭い角をなしているときに太め量が正の場合、負の場合のそれぞれについて説明した。
【００５６】
ステップ１０−３からステップ１０−１４の処理を全輪郭点に対して処理することになる。１０−１５において１輪郭分のすべての座標点において処理を行っていればステップ１０−１７に進み、まだ処理すべき輪郭点が存在する場合には、ステップ１０−１６に進み、次の輪郭点へポインタを進めて再度太め処理を行う。
【００５７】
ステップ１０−１７においては、１文字分のすべての輪郭において処理を行ったかどうかを判定し、すべて処理を行っていればステップ１０−１８へ進み、まだ処理すべき輪郭が存在するときは、次の輪郭にポインタを進めて再度太め処理を行う。そしてすべての輪郭座標点において太め処理が施されたときに、ステップ１０−１８に進む。
【００５８】
太め／細め処理を行ったことにより、図１８に示すように、文字の全体の枠が太め処理の場合大きくなり、細め処理の場合は小さくなってしまう。よって元の文字の全体枠に大きさを調整する必要がある。ステップ１０−１８においてその処理を行う。その調整のための拡大／縮小量は、ステップ１０−１で求めた輪郭の太め量（細めの場合は負の値）の２倍分だけ太まっている。そこで、元の文字枠のＸ幅をＢｘ、輪郭の太め量の横の値をＦｘとし、Ｙ幅をＢｙ、輪郭の太め量の縦の値をＦｙとし、太め処理を行った座標を（ｘ，ｙ）、調整後の座標を（Ｘ，Ｙ）とすると、
【００５９】
【数３】
（Ｘ，Ｙ）＝（（ｘ＋Ｆｘ）×Ｂｘ／（Ｂｘ＋Ｆｘ×２），（ｙ＋Ｆｙ）×Ｂｙ／（Ｂｙ＋Ｆｙ×２））
で計算することができる。そしてこの計算を１文字分すべての座標点列において処理することによって図１０に示した太め処理を終了する。
【００６０】
〔第２実施例〕
次に他の実施例について説明する。ここで説明するのはあるウエイトの書体を要求したとき、同一の書体がシステムに２つ以上存在したときの例である。このときは要求するウエイトを複数ある同一の書体の中からどのウエイトの書体を基にして処理するかが重要である。従って基準となるウエイトの書体が決定すれば、その後のウエイト変換処理は前記実施例で示したものと同様の処理ができるので、ここでは、基準となるウエイトの選択方法のみついて説明し、それ以外は省略する。
【００６１】
図１９は、その詳細な処理の流れを示すフローチャートである。
【００６２】
まず、記憶装置にどの書体のどのウエイトが格納されているかを検索する必要がある。そこで、図１９におけるステップ１９−１において、各書体のヘッダ部に記憶されているヘッダ情報を参照してテーブルにデータ存在情報を格納する。図２０にそのテーブル及びデータ存在情報を示す。図２０では、記憶装置に、明朝体のウエイト３とウエイト７、丸ゴシック体のウエイト５、角ゴシック体のウエイト６、楷書体のウエイト４とウエイト８が格納されている例である。ステップ１９−２では、要求されたウエイトの情報がすでにＲＯＭあるいはハードディスク装置等の記憶装置に格納されているか否かを判定する。判定はステップ１９−１で作成されたテーブルを検索していき、要求された書体とウエイトの情報により、データが記憶装置に格納されているか否かが分かる。要求されたウエイトの情報が記憶装置に格納されていれば、ステップ１９−３へ進み、格納されていなければステップ１９−４へ進む。
【００６３】
ステップ１９−３は要求されたウエイトの情報がすでに記憶装置に格納されていた場合であり、太め／細め処理を行う必要がないので記憶装置から座標データを読み込み、その座標データから出力サイズに応じて拡大縮小を行い、ビットマップフォントを作成して処理を終了する。
【００６４】
ステップ１９−４では、要求されたウエイトの情報が記憶装置にはない場合であり、太め／細め処理を行って要求されたウエイトの文字を出力する必要がある。そこで、その太め／細め処理を行う元となるデータを選択する必要がある。一般に細め処理を行う場合に比べて太め処理を行ったほうが品質的に劣化が少なくて済むので、要求されたウエイトよりも小さいウエイトの情報が記憶装置に格納されているか否かをステップ１９−１で作成したテーブルを基に判定を行う。そして要求されたウエイトよりも小さいウエイトの情報が記憶装置に格納されていれば、ステップ１９−５に進み、要求されたウエイトの情報が記憶装置に格納されていなければステップ１９−６に進む。例えばウエイト５の明朝体を出力したい場合には、ウエイト３の明朝体が記憶装置に存在するのでステップ１９−５に進み、ウエイト３の角ゴシック体を出力したい場合にはそれより小さいウエイトの角ゴシック体は存在しないのでステップ１９−６に進む。ステップ１９−５においては太め処理の元となるウエイトの書体の選択を行い、その太め処理のｘ方向、ｙ方向のパラメータの設定を行う。ウエイト５の明朝体の出力要求の場合、ウエイト３の明朝体が存在するのでウエイト３とウエイト５の輪郭におけるｘ方向、ｙ方向の差分を太めパラメータとしてセットする。ステップ１９−６においては細め処理の元となるウエイトの書体の選択を行い、その細め処理の輪郭についてｘ方向、ｙ方向のパラメータの設定を行う。ウエイト３の角ゴシック体の出力要求の場合、ウエイト６の角ゴシック体が存在するのでウエイト３とウエイト６の輪郭におけるｘ方向、ｙ方向の差分を細めパラメータとしてセットする。
【００６５】
以上のように、ステップ１９−５およびステップ１９−６で太めあるいは細めのパラメータのセットをした後は、前記第１の実施例で説明した通り処理を行い、所望のウエイトの文字を出力する。ここでは対象文字よりウエイトが小さい書体のデータが存在するか否かについて説明したが、対象文字よりもウエイトが大きい書体のデータが存在するか否かについて判定を行っても良い。また、対象文字のウエイトに最も近いウエイトのデータを選択して、そのデータを基にウエイト変換処理を行っても良い。
【００６６】
〔第３実施例〕
次に他の実施例について説明する。ここで説明するのは前記第１、第２の実施例で説明した太め処理をグレイスケールフォントに対しても適用できることを説明する。ビットマップフォントの各ドットの値が０または１の２値のフォントであるのに対して、グレイスケールフォントは各ドットが０〜３あるいは０〜１５あるいは０〜２５５等多値を扱うことが可能な多値フォントである。そしてこのグレイスケールフォントを生成するための方法として、一般には図２１に示すようにｎ２  階調のグレイスケールフォントを出力するときは、図３のステップ３−４において出力サイズ要求の縦方向、横方向をそれぞれｎ倍して、その出力サイズによってビットマップフォントを作成する。そして図２１に示すように縦横ｎビットで分割していきそれぞれのｎ×ｎの分割矩形領域の中に何ビット１が含まれているかによってグレイスケールの１ドットに対する多値の値が決定される。第１の実施例をグレイスケールフォントに応用した場合、図２２に示すフローチャートのようになる。このフローチャートは、前記第１の実施例で説明したビットマップフォント発生あるいは輪郭座標出力のフローとほとんど同様であり、それぞれのステップは図３のステップとほぼ一致しているので、ここではグレイスケールフォント発生させることによって処理が異なるステップのところのみを説明する。異なるステップはステップ２２−１、ステップ２２−４であり、ステップ２２−１６およびステップ２２−１７は追加である。ステップ２２−１においては、入力パラメータの取り込みであり、入力パラメータにグレイスケール情報が追加される。パラメータは、文字コード、書体、ウエイト情報、文字の出力サイズ、グレイのレベル、出力形式、出力器の特性等である。文字コードとしてはＪＩＳコード、シフトＪＩＳコード、ＥＵＣコード、ＵＮＩコード等のあらかじめ対象となるシステムがどの文字コード体系によって定められているかによって決まる。また書体としては、明朝体、ゴシック体、丸ゴシック体等のシステムがあらかじめ内蔵しているデータあるいはオプションとして加えられたデータの中から選ばれる。そしてこの時のデータの内容は、グレイスケールフォント発生のための特別なデータは格納されておらず、ビットマップフォント発生のときのデータとまったく同様である。ウエイト情報は、前記書体の線の太さ情報であり、ここでは極細、細、中、太、極太等の情報が与えられる。文字の出力サイズとしては、実際にフォントデータを出力する際にどれくらいの大きさで出力するかの情報であり、ｘ方向、ｙ方向のサイズが要求される。グレイのレベルは、グレイスケールフォントを発生させる際に何階調でグレイスケールフォントを作成するのかの情報である。これは４階調、１６階調、２５６階調等出力器の特性に応じて設定される。出力形式は、所望するフォントの出力データ形式であり、座標データ出力、ビットマップフォント出力、グレイスケールフォント出力、１ドットの表現形式等がある。１ドットの表現形式は例えばグレイスケールフォントの場合は、１ドットを１バイトで表現するのか、あるいは２ドットや４ドットを１バイトで表現するのかといった表現形式の指定である。出力器の特性は、グ��イスケールフォントを作成する際にどのようにしてグレイ値を決定すると対象とする出力器に対しても最も最適なグレイスケールフォントが得られるかといった情報である。ステップ２２−４においては、出力サイズとグレイスケールフォントのグレイレベルによって、ステップ２２−２で読み込んだ座標データに対して拡大縮小処理を行う。このとき拡大縮小するための計算式は、要求出力サイズを（Ａｘ，Ａｙ）、グレイレベルをｎ、ステップ２２−３で得られたそれぞれの座標値を（ｘ，ｙ）、拡大縮小処理後のそれぞれの座標値を（Ｘ，Ｙ）、格納されているデータの文字枠のサイズを（Ｍｘ，Ｍｙ）とすると、
【００６７】
【数４】
（Ｘ，Ｙ）＝（ｘ×√ｎ×Ａｘ／Ｍｘ，ｙ×√ｎ×Ａｙ／Ｍｙ）
となる。
【００６８】
ステップ２２−１６、およびステップ２２−１７においては、ステップ２２−１５で作成されたビットマップフォントからグレイスケールフォントを作成する処理を行う。まずステップ２２−１６においては、入力パラメータとして得られた出力器の特性によって、グレイスケール変換テーブルの選択を行う。グレイスケールフォント変換テーブルは、図２３に示すように、１６階調の場合４×４のマスクであらかじめ出力器の特性を表現するための値を格納しておく。図２３の（ａ）の例では出力器の輝度特性がすべて均一になっている場合の例である。図２３（ｂ）の場合は、輝度がドットの中心部が高く周辺部が低い場合の例である。また図２３（ｃ）の場合は、輝度がドットの周辺部が高く中心部が低い場合の例である。これらの中から最も出力器の輝度特性に適したテーブルを選択する。そしてステップ２２−１７において、ステップ２２−１６で選択されたテーブルを元にグレイスケールフォントを作成する。この様子を図２４を例にとって説明する。図２４は、ステップ２２−１５で求められたビットマップフォントであり、その縦横のサイズはそれぞれグレイレベルｎに対して、√ｎ倍で作成されている。従って、縦横をそれぞれ√ｎで分割して、√ｎ×√ｎのます目を抽出し、そのます目の１つに注目し、そのます目のビットの値とステップ２２−１６で求められたテーブルのます目の値とをそれぞれ対応するます目どうしを掛算する。そしてその結果の合計を取ることによって、対象となるドットのグレイスケール値が求められる。図２４の例では、１６階調のグレイスケールフォントを出力する場合の例であり、４×４のます目に対して図２３（ｂ）のテーブルが選択された場合の例を示した。この操作をすべてのます目に対して行うことによって、図２５に示すようなグレイスケールフォントが生成される。そしてステップ２２−１８で出力形式に応じてグレイスケールフォントを格納して要求側へデータを返す。このとき出力形式が１ドットに対して１バイトの要求であればそれぞれのます目の値を１バイトに詰めて格納する。また隣り合う２点を１バイトに詰める要求であれば、１ドットを４ビットに詰めてデータを格納し、要求側へ返して処理を終了する。
【００６９】
〔第４実施例〕
第１実施例〜第３実施例は、字を構成するストロークごとにそのストロークを構成する座標データでベクトルデータが表現されている場合におけるウエイト（太さ）の変換であった。
【００７０】
これから説明する実施例は、ベクトルデータが、字の輪郭の座標データで表現されている場合についてのウエイトの変換である。その字形を図２６に示す。これで分かるように、この輪郭は交差していない。図２６に示されている字形を図２７に示されるように、例えば太くする処理について説明する。ここで用いる字の輪郭の座標データのＲＯＭ等に格納されているフォーマットは、例えば図２８に示されている。これらは、ストロークごとにそのストロークを構成する座標データでベクトルデータを構成している字形を示している図４〜図６と比較すると理解が容易である。図２８において、格納されているデータは、文字の輪郭の特徴点を抽出した座標情報であり、それぞれの点に対して直線データ／曲線データ判別フラグ、輪郭開始点／終了点フラグ等の属性情報を持つ。そしてここで扱う曲線データの補間式は２次あるいは２次Ｂスプライン曲線であったり、２次あるいは３次ベジェ曲線であったりするが、どの補間式を使用しているかはあらかじめ決定されている。また、文字枠を示す座標の最小値は０、最大値は８００等で表現されている。
【００７１】
この様なデータにおいて、ウエイトの変換処理を説明したのが図２９に示したフローチャートである。図２９に示したフローチャートは、図３のフローチャートと同じ部分が多いので、相違する処理ステップのみ説明する。ステップ２９−１からステップ２９−７までは、図３におけるステップ３−１からステップ３−７までと、処理の対象とするデータは相違しているが、ステップ２９−３の太め／細め処理を除いて、各ステップの処理は同様であるので説明を省略する。ステップ２９−３の処理は後で図３４のフローチャートを用いて詳細に説明する。
【００７２】
ステップ２９−８において、直線を発生させる処理を行うが、この処理は、図３のステップ３−８とは、直線の発生の仕方は同様のＤＤＡで行っているが、このとき２つの平面に対して行うことが異なっている。その１つの平面は塗りつぶし用ＸＯＲ平面であり、もう１つの平面は輪郭用ＯＲ平面である。輪郭用ＯＲ平面は、塗りつぶし用ＸＯＲ平面で抜けたビットを補うために設けている。これを図３０の塗りつぶし用ＸＯＲ平面を示す図及び図３１の輪郭用ＯＲ平面を示す図を用いて説明する。図３０の塗りつぶし用ＸＯＲ平面には、１つのＹ座標に対してＸ座標を１つのみ打点する。これは、後で説明する塗りつぶしの処理（ステップ２９−１６）において、各ラインで左側から右側にスキャンしていき、奇数個の目の１から偶数個目の１までの間を１で塗りつぶすため、１つのＹ座標に対して１つのＸ座標にしておかないと、うまく塗りつぶすことができないためである。そして、このときの塗りつぶし用ＸＯＲ平面に打点する方法は、対象とする座標点における塗りつぶし用ＸＯＲ平面の値と１との排他的論理和（ＸＯＲ）の論理演算を行い、その結果を塗りつぶし用ＸＯＲ平面上の対象とする座標点に格納することで行う。そして、もう一つの平面は図３１に示した輪郭用ＯＲ平面であり、この平面に対して打点するときは、１つのＹ座標に対して直線にかかっている全てのＸ座標を１とする。この輪郭用ＯＲ平面で、塗りつぶし用ＸＯＲ平面で抜けたビットを補うことができる。
【００７３】
ステップ２９−９及びステップ２９−１０で曲線の発生させる処理を行うが、直線と同様に２平面に対して打点処理を行うことを除いて図３のステップ３−９及びステップ３−１０と同様であるので、説明を省略する。
【００７４】
ステップ２９−１１から２９−１４までのステップも図３のステップ３−１１から３−１４までのステップと同様の処理なので説明を省略する。
【００７５】
ステップ２９−１５で塗りつぶし用平面に対して塗りつぶし処理を行う。この処理を図３２を用いて説明する。図３２の矢印に示すように、塗りつぶし用平面で各スキャンライン単位で左側からスキャンしていき、奇数個目の１から偶数個目の１までの間を１で塗りつぶす処理を行う。この処理を全てのスキャンラインに対して行う。ステップ２９−１６で、ステップ２９−１５で求めた塗りつぶしＸＯＲ平面と輪郭用ＯＲ平面とのＯＲをとって１文字のビットマップデータを完成させる。この様子を示したのが図３３である。ステップ２９−１７において例えば要求側の指定する記憶領域にステップ２９−１６で求めた１文字分のビットマップデータを返して処理を終了する。
【００７６】
次に図３４のフローチャートを用いて、図２９のステップ２９−３における太め／細め処理を詳細述する。この処理は図１０で説明した処理と重複する部分が多いので、異なる処理を行っている部分のみ説明する。
【００７７】
まず、文字を構成する輪郭において、外側の輪郭と内側の輪郭のそれぞれの場合によって太める／細めるパラメータが異なっているため、輪郭の区別を判別する必要がある。そして、外輪郭に対しては外輪郭太め／細めパラメータ、内輪郭に対しては内輪郭太め／細めパラメータを適用して太め／細め処理を行う。この処理が図１０の処理と異なっている。この処理は、ステップ３４−１からステップ３４−５で行っている。
【００７８】
さて、輪郭を構成する外側の輪郭点列は左まわりで構成されているとする。そして内側の輪郭点は逆の右まわりで構成されているとする。この場合は輪郭点のまわり方を判定することにより、外側の輪郭であるか、内側の輪郭であるかを判定する。なお、この逆、即ち右まわりの場合を外輪郭、左まわりの場合を内輪郭としてもよい。
【００７９】
ステップ３４−１からステップ３４−３でその判定をするための前処理を行っている。この処理を図３５を参照しながら説明する。まず、ステップ３４−１において、図３５に示すスタート点Ｓを取り出し、次にステップ３４−２において、図３５のスタート点Ｓの両側の２点Ａ，Ｂを抽出する。点Ａはスタート点Ｓの一つ前の点（その輪郭の最後の点）、点Ｂはスタート点の一つ後の点である。図３５において、ベクトルＡＳ及びベクトルＳＢのなす角度を２分割する方向に前処理用の点を設ける。この点は、外輪郭であるとき即ち左まわりのときはベクトルの方向に向かって右側に、内輪郭であるとき即ち右まわりのときはベクトルの方向に向かって左側に、スタート点からある定められた値離れた点である。これがステップ３４−３の処理である。そして、ステップ３４−４において、この点を基に対象とする輪郭が外輪郭であるのか、内輪郭であるのか判定する。この処理を後で図４０のフローチャートを用いて詳しく説明する。
【００８０】
そして、ステップ３４−５でウエイトに応じて外輪郭の太さ及び内輪郭の太さのパラメータを決定する。太さを決定するパラメータは、外輪郭及び内輪郭に対してｘ方向、ｙ方向それぞれ独立に値を持ち、横線の太め量及び縦線の太め量をそれぞれ独立に管理する。これは、例えば図３６に示すように、明朝体を太めようとした場合、明朝体の横線はさほど太くせずに済むのに縦線は大きく太める必要があるため、ｘ方向，ｙ方向に対し、それぞれ異なる値を設定する必要があるからである。また、図３７に示すように丸ゴチック体の場合は、横方向及び縦方向はほぼ同じ量だけ太らせている。この考え方は、図１０のステップ１０−１及び図１１，図１２と同様である。図３８に示すように、それぞれの書体とウエイトにおける横線と縦線に対して線の中心から外輪郭あるいは内輪郭までの標準値のデータを予めテーブルに持たせ、入力された対象座標データの書体及びウエイトの出力したい座標データのウエイトから外輪郭及び内輪郭の太め量をそれぞれｘ方向、ｙ方向に対して決定する。
【００８１】
ステップ３４−６〜ステップ３４−２１の処理は、対象とする座標データは相違しているが、処理の流れは図１０のおける処理と同様なので説明を省略する。ただし、これらの処理で、外輪郭、内輪郭を考慮していることが図１０の処理と異なっている。これは、鋭くない角のときの太め処理を行うステップ３４−１０において、外輪郭即ち左まわりのときは右側に移動する（図３９参照）。なお、外輪郭が右まわりとなっているときは左側に移動する。
【００８２】
さて、図４０のフローチャートを用いて、図３４のステップ３４−４における外輪郭／内輪郭判定処理について説明する。この処理を図４１に示すように、輪郭を形成する座標点ＡＢＣＤＥに対して、ある点Ｚからの２点に対する角θ１  〜角θ４  を左まわりを正として角度を求めて、角θ１  〜角θ４  の合計の角度が２πになるとき、ある点Ｚは輪郭の内側にあると判定する。また、図４２に示すように、同様に輪郭を形成する点Ａ〜Ｄとある点Ｚとでなす角θ１  〜角θ４  の合計の角度が０である場合は、ある点Ｚは輪郭の外側にあると判定する。この処理を示したのが図４０のフローチャートである。ある点Ｚは、図３４のステップ３４−１〜ステップ３４−３で求めているので、図４０のフローチャートはその点からの角度の総和を求める処理を行う。ステップ４０−１において、まず、角度の総和を０として初期化を行う。ステップ４０−２において隣り合った２点を抽出し、ステップ４０−３である点Ｚと抽出した２点とをベクトルで結び、間の角度を求める。その角度は外積を計算することで求めることができる。その求めた値をステップ４０−４で角度の総和に加える。ステップ４０−５では１輪郭の全ての点を２点づつ抽出したか判定し、全ての点に対して計算を終了したときはステップ４０−６に進み、終了していないときはステップ４０−２の戻って再度計算を行う。ステップ４０−６で、総和が０か２πかを判定し、０であれば外輪郭と判定し外輪郭フラグを立て、２πであれば内輪郭であると判定し内輪郭フラグを立てる。あとの処理では、このフラグで外輪郭であるか内輪郭であるかを判別する。
【００８３】
〔第５実施例〕
第５実施例は、先に説明した第２実施例に対応するもので、交差しない輪郭により座標データが表現されている場合における同一の書体がシステムに２以上存在したときの例である。このときも図１９のフローチャートと同様に、細め処理を行ったときに比較して太め処理を行ったときの方が品質の劣化が少ないので、要求されたウエイトより小さい輪郭の座標データを選択する。この処理は図１９のフローチャートにおける処理と同様であるので説明を省略する。
【００８４】
なお、このとき使用する図２０に示したテーブルに対応するものを、図４３に示す。
【００８５】
〔第６実施例〕
第６実施例は、先に説明した第３実施例と対応するもので、交差しない輪郭により座標データが表現されている場合におけるグレースケールフォントに太め処理をした場合を説明するものである。この処理は図４４のフローチャートに示されている。この図４４のフローチャートは、図２２に示されているフローチャートとは、図２９のフローチャートと同様に２平面に対して処理をしていることが異っているだけで、同様の処理を行っている。従ってこの処理の説明を省略する。この図４４の処理は、図３と図２９との相違を理解して、図２２を参照すると明白である。
【００８６】
なお、本発明は複数の機器からなるシステムにおいて、達成されても良く、１つの機器からなる装置において達成されても良い。また、システムあるいは装置にプログラムを供給することにより、本発明が達成される場合にも適用されることは言うまでもない。
【００８７】
【発明の効果】
以上説明したように、本発明によれば、入力された太字量または細字量に基づいて、輪郭データの座標値を変換し、調整すべき座標を抽出し、座標値を調整し、調整された輪郭データに基づいて太いまたは細い文字パターンを発生させるので、少ない文字データから肉厚量の異なる高品質な太字または細字文字を発生することができる。
【００８８】
本発明によれば、入力された太字量または細字量に基づいて、変換するいずれかの文字データ候補を決定し、該決定された文字データに対応する輪郭データの座標値を変換し、該座標変換された輪郭データに基づいて、太いまたは細い文字パターンを発生しているので、文字データ資源を生かして最良の太字または細字の文字データを発生させることができる。
【００８９】
本発明によれば、決定は、入力された太字量または細字量に近い肉厚量の文字データを変換する文字データ候補として、より厳密な太字または細字の文字データを発生させることができる。
【００９０】
また、本発明によれば、変換は、対象座標に隣接する２点の座標値を参照して１つの変換座標を決定することにより行うので、バランスのとれた太いまたは細字の文字パターンを発生することができる。
【００９１】
本発明によれば、変換は、抽出した各輪郭データを入力された太字量または細字量をｘ方向およびｙ方向に対して独立して可変するにより行うので、書体毎の特徴を生かした太字または細字の文字パターンを発生することができる。
【００９２】
本発明によれば、判定は、対象座標と隣接する２点の座標値を参照して３点のなす角度および入力された値が太字量あるいは細字量であるかおよび対象書体によって決定することにより行うので、良好な品質の太字または細字の文字パターンを発生することができる。
【００９３】
本発明によれば、座標調整は、太字量が指定されたときに対象点に新たな点を挿入することにより行うので、良好な品質の太字の文字パターンを発生することができる。
【００９４】
本発明によれば、座標調整は、太字量が指定されたときに対象点に新たな点を挿入した後、角を丸めることによって行うので、書体毎の特徴を生かした良好な太字の文字パターンを発生することができる。
【００９５】
本発明によれば、座標調整は、細字量が指定されたときに対象点を移動させることによって行うので、良好な品質の細字の文字パターンを発生することができる。
【００９６】
本発明によれば、データの発生は、変換された輪郭データに基づいてビットマップフォント、輪郭データ、グレイスケールフォントのいずれかを出力して、種々の出力手段に適切なデータ形式で太字または細字の文字データを供給することができる。
【００９７】
前記輪郭データは、交差するストロークによる複数の輪郭データで構成されていてもよいし、交差しない複数の文字の輪郭データで構成されていてもよい。
【００９８】
従って、少ないメモリ容量で、様々な肉厚量の各書体の文字データを良好に発生できるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の内部構成を示すブロック図である。
【図２】本発明の他の内部構成を示すブロック図である。
【図３】本発明のストロークによるアウトラインフォントに対する処理全体の流れを示すフローチャートである。
【図４】本発明に用いるストロークによるアウトラインフォントを説明する図である。
【図５】ストロークによる輪郭の座標データのフォーマットを示す図である。
【図６】本発明によって変換されたアウトラインフォントを示す図である。
【図７】座標データから塗りつぶしテーブルを作成する様子を示す図である。
【図８】３次ベジェ曲線を分解する様子を示す図である。
【図９】塗りつぶしテーブルからビットマップフォントを作成する様子を示す図である。
【図１０】太め処理の詳細を示すフローチャートである。
【図１１】明朝体の太め処理結果を示す図である。
【図１２】丸ゴシック体の太め処理を示す図である。
【図１３】太めパラメータを決定するために用いるテーブルを示す図である。
【図１４】太め処理を行っている様子を示す図である。
【図１５】太め量が正で鋭い角度のとき点を分割する様子を示す図である。
【図１６】分割した点を丸接合する様子を示す図である。
【図１７】太め量が負のときの鋭い角度の対応を示す図である。
【図１８】太め処理によって不都合が生じる様子を示す図である。
【図１９】本発明の他の実施例の全体の流れを示すフローチャートである。
【図２０】太めパラメータを決定するために用いるテーブルを示す図である。
【図２１】グレイスケールフォントにするために作成するビットマップを示す図である。
【図２２】本発明の他の実施例の全体の流れを示すフローチャートである。
【図２３】グレイスケールフォントに変換するための基本概念図である。
【図２４】グレイスケースフォントに変換するための様子を示す図である。
【図２５】グレイスケールフォントに変換された様子を示す図である。
【図２６】本発明に用いる交差しない輪郭によるアウトラインフォントを説明する図である。
【図２７】本発明によって変換された交差しない輪郭によるアウトラインフォントを示す図である。
【図２８】交差しない輪郭による座標データのフォーマットを示す図である。
【図２９】本発明の交差しない輪郭によるアウトラインフォントに対する処理全体の流れを示すフローチャートである。
【図３０】座標データから塗りつぶし用ＸＯＲ平面を示す図である。
【図３１】座標データから輪郭用ＯＲ平面を示す図である。
【図３２】塗りつぶし用平面で塗りつぶしを行う様子を示す図である。
【図３３】ビットマップフォントを発生する様子を示す図である。
【図３４】交差しない輪郭による輪郭データの太め処理の詳細を示すフローチャートである。
【図３５】スタート点の仮移動を説明する図である。
【図３６】明朝体の太め処理結果を示す図である。
【図３７】丸ゴシック体の処理結果を示す図である。
【図３８】太めパラメータを決定するために用いるテーブルを示す図である。
【図３９】太め処理を行っている様子を示す図である。
【図４０】内輪郭／外輪郭を判定する処理を示すフローチャートである。
【図４１】内輪郭を判定を説明する図である。
【図４２】外輪郭を判定を説明する図である。
【図４３】太め又目ータを決定するためのテーブルを示す図である。
【図４４】グレイスケールフォントを生成するためのフローチャートである。
【符号の説明】
１  ＣＰＵ（中央処理装置）
２  ＲＯＭ（読み出し専用メモリ）
３  ＲＡＭ（ランダムアクセスメモリ）
４  ＫＢＣ（キーボード制御部）
５  ＫＢ（キーボード）
６  ＣＲＴＣ（ディスプレイ制御部）
７  ＣＲＴ（ディスプレイ装置）
８  ＤＫＣ（ディスク制御部）
９  外部記憶装置
１０  ＰＲＴＣ（プリンタ制御部）
１１  ＰＲＴ（プリンタ装置）
１２  システムバス
【図１】
0003576611.tif 000003
【図２】
0003576611.tif 000004
【図３】
0003576611.tif 000005
【図４】
0003576611.tif 000006
【図５】
0003576611.tif 000007
【図６】
0003576611.tif 000008
【図７】
0003576611.tif 000009
【図８】
0003576611.tif 000010
【図９】
0003576611.tif 000011
【図１０】
0003576611.tif 000012
【図１１】
0003576611.tif 000013
【図１２】
0003576611.tif 000014
【図１３】
0003576611.tif 000015
【図１４】
0003576611.tif 000016
【図１５】
0003576611.tif 000017
【図１６】
0003576611.tif 000018
【図１７】
0003576611.tif 000019
【図１８】
0003576611.tif 000020
【図１９】
0003576611.tif 000021
【図２０】
0003576611.tif 000022
【図２１】
0003576611.tif 000023
【図２２】
0003576611.tif 000024
【図２３】
0003576611.tif 000025
【図２４】
0003576611.tif 000026
【図２５】
0003576611.tif 000027
【図２６】
0003576611.tif 000028
【図２７】
0003576611.tif 000029
【図２８】
0003576611.tif 000030
【図２９】
0003576611.tif 000031
【図３０】
0003576611.tif 000032
【図３１】
0003576611.tif 000033
【図３２】
0003576611.tif 000034
【図３３】
0003576611.tif 000035
【図３４】
0003576611.tif 000036
【図３５】
0003576611.tif 000037
【図３６】
0003576611.tif 000038
【図３７】
0003576611.tif 000039
【図３８】
0003576611.tif 000040
【図３９】
0003576611.tif 000041
【図４０】
0003576611.tif 000042
【図４１】
0003576611.tif 000043
【図４２】
0003576611.tif 000044
【図４３】
0003576611.tif 000045
【図４４】
0003576611.tif 000046