(57)【特許請求の範囲】
【請求項１】
文字の骨格形状を骨格点とそれらを直線で結んだ骨格線として表した字体骨格形状情報と、文字を構成する構成要素の骨格形状を骨格点とそれらを直線で結んだ骨格線として書体ごとにまとめた要素骨格形状情報と、文字を構成する構成要素の輪郭形状の情報、構成要素における輪郭形状の輪郭点と骨格形状の骨格点の対応を示す情報、及び要素骨格形状が変更された場合にそれに合わせて要素輪郭形状を変更する際の輪郭点の移動条件を示す変形方式の情報を書体ごとにまとめた要素輪郭形状情報とをあらかじめ記憶した記憶部と、
前記字体骨格形状情報に合わせて前記要素骨格形状情報を変更する要素骨格形状変更部と、
構成要素の輪郭形状を変更する際の輪郭点の移動条件を前記変形方式の情報に基づいて判定する変更方式判定部と、
前記変更方式判定部により判定された輪郭点の移動条件に従い、要素骨格形状の変更に合わせて要素輪郭形状情報の各輪郭点を移動させる要素輪郭形状変更部と、
変更された輪郭形状情報を用いて文字パターンを生成する生成部と、を備えてなることを特徴とする文字パターン生成装置。
【請求項２】
前記変形方式の情報が、所定の変形方式のうちの一つである場合、要素輪郭形状変更部は、要素骨格形状の変更に合わせて要素輪郭形状情報内の輪郭点を移動させる際の移動条件として、
移動対象となっている輪郭点から骨格線に向けて移動前と移動後に共に垂線をおろし、
そのおろした垂線と骨格線との交点どうしの距離及び交点から骨格点までの距離の比を移動前と移動後で等しくし、
移動対象となっている輪郭点とそれに対応する骨格線との距離を移動前と移動後で等しくするように輪郭点を移動させることを特徴とする請求項１記載の文字パターン生成装置。
【請求項３】
前記変形方式の情報が、所定の変形方式のうちの別の一つである場合、要素輪郭形状変更部は、要素骨格形状の変更に合わせて要素輪郭形状情報内の輪郭点を移動させる際の移動条件として、
移動対象となっている輪郭点から骨格線に向けて移動前と移動後に共に垂線をおろし、
そのおろした垂線と骨格線との交点から骨格点までの距離を移動前と移動後で等しくし、
移動対象となっている輪郭点とそれに対応する骨格線との距離を移動前と移動後で等しくするように輪郭点を移動させることを特徴とする請求項１記載の文字パターン生成装置。
【請求項４】
前記変形方式の情報が、所定の変形方式のうちのさらに別の一つである場合、要素輪郭形状変更部は、要素骨格形状の変更に合わせて要素輪郭形状情報内の輪郭点を移動させる際の移動条件として、
輪郭点と骨格点との距離のＸ軸成分及びＹ軸成分を移動前と移動後で等しくするように輪郭点を移動させることを特徴とする請求項１記載の文字パターン生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、文字をアウトラインフォントで持ち、ストローク厚の異なる多種の文字パターンを生成する文字パターン生成装置に関する。
【０００２】
【従来の技術】
上記のような文字パターン生成装置には、太めの文字パターンや細めの文字パターンを生成する文字パターン生成装置があるが、このような文字パターン生成装置としては、特開平４−２４６８９号公報に示されているように、文字の輪郭を構成する点列を、各点における輪郭の傾きに対して垂直方向に、予め定めた一定の移動量だけ、輪郭の外側または内側に移動するという方法がある。
【０００３】
また、特開平４−１３６８９８号公報に示されているように、文字の輪郭を直線／曲線近似したデータに、その各近似直線／曲線の実情に応じた属性を付加し、付加された属性を利用して、ストロークの線幅の変更や輪郭形状を部分的に変える変形を行うという方法がある。
【０００４】
【発明が解決しようとする課題】
しかしながら、上記した特開平４−２４６８９号公報や特開平４−１３６８９８号公報に記載の方法では、各輪郭点を移動させる際に、角度計算を含む複雑な処理が必要であり、計算量が多い。さらに、移動量が一定のため、本来デザインされた文字に存在するストロークの太い部分や細い部分が単調になってしまい、品位が低下してしまう。また、輪郭点全てに対し、移動方向、移動量等の変形／補正情報を付加しておく必要があるため、データ付加に関する工数、およびフォントデータ量が大きくなる。
【０００５】
また、従来の文字パターン生成装置としては、特公平８−１２５４４号公報に記載されているような、文字図形の骨格を示す線図形で記述された字体情報と、文字図形の書体を構成する基本要素の輪郭形状を複数のパラメータとして記憶し、字体情報に基づいて構成要素の形状を文字種ごとに変形し、組み合わせることにより文字図形を生成する方法が知られている。
【０００６】
しかしながら、構成要素の形状情報を、輪郭を形成する複数の要素パラメータとして保存する方法では、これらを設計し登録するには要素パラメータと登録操作に関する専門的な知識を必要とし、専門的な技術知識のない人、例えば書体のデザイナーなどには、これらの構成要素の変更は困難であった。また、この方法では、書体としての文字の品位を保つために、屈曲部、うろこ等の形状に対して、多くの修正を必要としていた。
【０００７】
本発明は、かかる課題を解決するためになされたものであって、太めの文字パターンや細めの文字パターンを生成するために必要な、データ作成工数および、データ容量を少なくし、かつ少ない計算量により高品位なフォントを作成する文字パターン生成装置を提供するものである。
【０００８】
また、本発明は、デザイン的制約のない高品位フォントを、少ない工数により多種類生成する文字パターン生成装置を提供するものである。
【０００９】
【課題を解決するための手段】
本発明に係る文字パターン生成装置は、文字の骨格形状を骨格点とそれらを直線で結んだ骨格線として表した字体骨格形状情報と、文字を構成する構成要素の骨格形状を骨格点とそれらを直線で結んだ骨格線として書体ごとにまとめた要素骨格形状情報と、文字を構成する構成要素の輪郭形状の情報、構成要素における輪郭形状の輪郭点と骨格形状の骨格点の対応を示す情報、及び要素骨格形状が変更された場合にそれに合わせて要素輪郭形状を変更する際の輪郭点の移動条件を示す変形方式の情報を書体ごとにまとめた要素輪郭形状情報とをあらかじめ記憶した記憶部と、前記字体骨格形状情報に合わせて前記要素骨格形状情報を変更する要素骨格形状変更部と、構成要素の輪郭形状を変更する際の輪郭点の移動条件を前記変形方式の情報に基づいて判定する変更方式判定部と、前記変更方式判定部により判定された輪郭点の移動条件に従い、要素骨格形状の変更に合わせて要素輪郭形状情報の各輪郭点を移動させる要素輪郭形状変更部と、変更された輪郭形状情報を用いて文字パターンを生成する生成部と、を備えてなることを特徴とする。
【００１０】
本発明において、要素骨格形状変更部、変更方式判定部、要素輪郭形状変更部及び生成部としては、ＲＯＭ，ＲＡＭ，Ｉ／Ｏポートを含むマイクロプロセッサを用いるのが便利であり、記憶部としては、通常、その中のＲＯＭが用いられる。
【００１１】
本発明によれば、字体骨格形状情報に合わせて要素骨格形状情報を変更した後、変更方式判定部により輪郭点の移動条件を判別し、その判定された移動条件に従って要素輪郭形状情報の各輪郭点を移動させるようにしたので、構成要素の輪郭形状に応じた最適な移動方法で要素輪郭形状情報の各輪郭点を移動させることができ、これにより高品位な文字パターンを生成することができる。
【００１２】
上記構成においては、要素輪郭形状変更部を、要素輪郭形状情報内の輪郭点を移動させる際、移動対象となっている輪郭点とそれに対応する骨格線との距離を固定とし、移動対象となっている輪郭点から骨格線に向けておろした垂線とその骨格線との交点と骨格点との距離を要素骨格の変更に合わせて拡大縮小し、それに付随して輪郭点を移動させるように構成することが好ましい。
【００１３】
また、要素輪郭形状変更部を、要素輪郭形状情報内の輪郭点を移動させる際、移動対象となっている輪郭点とそれに対応する骨格線との距離を固定とするとともに、移動対象となっている輪郭点から骨格線に向けておろした垂線とその骨格線との交点と骨格点との距離を固定として輪郭点を移動させるように構成することが好ましい。
【００１４】
さらに、要素輪郭形状変更部を、要素輪郭形状情報内の輪郭点を移動させる際、輪郭点と骨格点との距離と角度を固定として輪郭点を移動させるように構成することが好ましい。
【００１５】
【発明の実施の形態】
以下、図面を参照して本発明の実施例１及び実施例２を説明する。なお、これによってこの発明が限定されるものではない。本発明の文字パターン生成装置は、通常、日本語ワードプロセッサやパーソナルコンピュータに組み込んで用いられる。
【００１６】
〔実施例１〕
図２は本発明による文字パターン生成装置の実施例１の概略構成を示すブロック図である。この図において、文字パターン生成装置は、キーボード１０、補助メモリ１１、ＣＰＵ１２、主メモリ１３、ビットマップメモリ１４、及び、レーザープリンタ、熱転写プリンタ等からなる出力装置１５を備えている。
【００１７】
キーボード１０からは、生成する文字を示す文字コードと、書体コードが入力される。補助メモリ１１には、文字の形状を表す字体骨格形状情報と、文字を構成する構成要素の骨格形状を表す要素骨格形状情報と、文字を構成する構成要素の輪郭形状を表す要素輪郭形状情報が予め記憶されている。
【００１８】
ＣＰＵ１２は、指定された書体コードから太さ変更を行うか否かを判定する機能を有する太さ判定部と、１つの構成要素毎に太さ変更処理を行うのかまたは要素置き換え処理を行うのかを判定する機能を有する太さ変更処理判定部と、輪郭形状の太さを変更する機能を有する要素輪郭太さ変更部と、文字の骨格形状に合わせて要素骨格形状と要素輪郭形状を変更する機能を有する要素骨格形状・要素輪郭形状変更部と、文字パターンを生成する機能を有する生成部とを備えている。
【００１９】
また、ＣＰＵ１２は、プログラム用のメモリとワーク用のメモリを有しており、補助メモリ１１と主メモリ１３との各データにより文字パターンを生成するための制御を行う。この文字パターンは、ビットマップメモリ１４上でビットマップデータに展開され、レーザープリンタ、熱転写プリンタ等の出力装置１５により印刷されて出力される。
【００２０】
主メモリ１３は、補助メモリ１１から読み出された文字情報を一時格納するための入力用バッファと、形状の変更された要素輪郭形状データを一時格納するための出力用バッファと、太さの変更された要素輪郭形状データを記憶する記憶部を有している。
【００２１】
ここで、文字の輪郭形状を記憶する方法としては、（１）文字の輪郭線を直線近似で記憶する方法、（２）文字の輪郭線を直線と円弧で記憶する方法、（３）文字の輪郭線を直線と曲線で記憶する方法等をあげることができるが、文字品位、データ容量の効率等を考慮した場合、上記（３）の方法が最も文字パターンの生成に適している。この点を考慮して、本実施例では、上記（３）の方法で文字の輪郭線を記憶しており、このように直線と曲線で記憶した文字の輪郭線のデータが、要素輪郭形状情報における輪郭点座標データとして補助メモリ１１に記憶されている。
【００２２】
次に、補助メモリ１１の記憶内容を説明する。図３は字体骨格形状情報の記憶内容の一例を示す説明図である。字体骨格形状情報としては、字種を区別する文字コード３０と、一つの字体骨格形状情報から生成される書体種の数３１と、文字の字体を構成する要素の数３２とが記憶されている。また、書体コードと構成要素ごとに、要素貼付け情報と太さ変更処理判定情報が記憶されている。
【００２３】
この要素貼付け情報は、文字の構成要素数と生成書体数を掛けた数だけ記憶されており、構成要素に対応する要素輪郭形状を指示する要素コード３５と、構成要素を形成する骨格点数３６と、骨格点座標データへのポインタ３７とからなっている。
【００２４】
要素貼付け情報群のあとには、太さ変更処理判定情報が続いて記憶されている。この太さ変更処理判定情報は、文字の構成要素数と生成書体数を掛けた数だけ記憶されており、文字を太めにする際に構成要素の要素置き換え処理を行うのか否かを示す太め用の要素置き換え判定コード６０と、文字を細めにする際に構成要素の要素置き換え処理を行うのか否かを示す細め用の要素置き換え判定コード６１と、要素置き換え処理を行う場合の要素コードの変更に用いる太め用の代替要素コード６２と、同じく要素置き換え処理を行う場合の要素コードの変更に用いる細め用の代替要素コード６３とからなっている。
【００２５】
太さ変更処理判定情報群のあとには、骨格点座標データが続いて記憶されている。この骨格点座標データは、一文字分の骨格点数３８のあとに、各構成要素の骨格点座標データ３９が記憶された形となっている。図４にキーボード１０から入力された一文字分の字体骨格形状情報の幾何情報の例を示す。この例では、文字コード（ここでは、ＪＩＳ区点コードに準ずる）として、１６４３番「伊」を指定している。
【００２６】
図５は要素骨格形状情報の記憶内容の一例を示す説明図である。要素骨格形状情報としては、書体種を区別する書体コード４０と、その書体に用意された要素の数４１とが記憶され、その後に、例えば要素数をＭ個とすれば、１〜Ｍまでの各要素骨格情報が記憶されている。
【００２７】
すなわち、要素骨格情報は、要素の数だけあり、要素コード４２と、骨格を形成する骨格点数４３と、骨格点座標データへのポインタ４４とからなっている。要素骨格情報群のあとには、総骨格点数４５と、各要素の骨格点座標データ４６が記憶されている。
【００２８】
ここで、各要素の骨格点は、その要素本来の形状が持つ各骨格点のＸ座標と、Ｙ座標の値を、すべてＹ座標が０となるよう座標変換した上で記憶されている。要素本来の形状を示す骨格点と、座標変換後の骨格点の対応を図６を用いて説明する。この図において、点Ｋ０，Ｋ１，Ｋ２，Ｋ３，Ｋ４は、要素骨格形状情報内の一構成要素が持つ本来の骨格点を示すものであり、前述の図４（「伊」の字体骨格形状情報）において、「人偏」を構成する「はらい部」に対応する要素の骨格点である。
【００２９】
骨格点Ｋ０，Ｋ１，Ｋ２，Ｋ３，Ｋ４を結ぶ線分を、それぞれＫ０−Ｋ１，Ｋ１−Ｋ２，Ｋ２−Ｋ３，Ｋ３−Ｋ４とし、それぞれの長さを、Ｌ０，Ｌ１，Ｌ２，Ｌ３とする。
【００３０】
まず、骨格点Ｋ０が座標値（０，０）となるように移動させ、これをＫ０′とする。次に、Ｋ０′からＸ軸方向に距離Ｌ０だけ進んだ位置にＫ１′を置く。同様に、Ｋ１′からＸ軸方向に距離Ｌ１だけ進んだ位置にＫ２′を置き、Ｋ２′からＸ軸方向に距離Ｌ２だけ進んだ位置にＫ３′を置き、Ｋ３′からＸ軸方向に距離Ｌ３だけ進んだ位置にＫ４′を置く。このように座標変換を行った骨格点Ｋ０′，Ｋ２′，Ｋ３′，Ｋ４′を骨格点座標データとして、要素骨格形状情報内に記憶させる。
【００３１】
図７は要素輪郭形状情報の記憶内容の一例を示す説明図である。要素輪郭形状情報としては、書体種を区別する書体コード５０と、その書体に用意された要素の数５１とが記憶され、その後に、例えば要素数をＭ個とすれば、１〜Ｍまでの各要素輪郭情報が記憶されている。
【００３２】
すなわち、要素輪郭情報は、要素の数だけあり、要素コード５２と、輪郭を形成する輪郭点数５３と、輪郭点座標データへのポインタ５４とからなっている。要素輪郭情報群のあとには、総輪郭点数５５と、各要素の輪郭点座標データ５６が記憶されている。
【００３３】
要素の輪郭点座標データ５６の中には、要素輪郭形状変更情報７０と、太さ変更属性情報７１が含まれている。要素輪郭形状変更情報７０は、要素コードが等しい要素における、要素輪郭形状の輪郭点と、要素骨格形状の骨格点との対応を示すものであり、各輪郭点が所属する骨格点の番号として記憶されている。太さ変更属性情報７１は、太さ変更処理の際、輪郭点の移動方式を示す移動方式判定コードとして記憶されている。
【００３４】
１つの構成要素における要素輪郭形状変更情報、すなわち要素輪郭形状の輪郭点と要素骨格形状の骨格点との対応を図８を用いて説明する。この図において、点Ｋ０，Ｋ１，Ｋ２，Ｋ３，Ｋ４は、要素骨格形状情報内の一構成要素が持つ本来の骨格点を示すものであり、前述の図４（「伊」の字体骨格形状情報）において、「人偏」を構成する「はらい部」に対応する要素の骨格点である。また、点Ｐ０，Ｐ１，Ｐ２，Ｐ３，Ｐ４，Ｐ５，Ｐ６，Ｐ７，Ｐ８，Ｐ９は、要素輪郭形状情報内の一構成要素が持つ輪郭点を示すものであり、前述の図４（「伊」の字体骨格形状情報）において、「人偏」を構成する「はらい部」に対応する要素の輪郭点である。
【００３５】
骨格点Ｋ０，Ｋ１，Ｋ２，Ｋ３，Ｋ４を結ぶ線分を、それぞれＫ０−Ｋ１，Ｋ１−Ｋ２，Ｋ２−Ｋ３，Ｋ３−Ｋ４とする。各輪郭点Ｐ０，Ｐ１，Ｐ２，Ｐ３，Ｐ４，Ｐ５，Ｐ６，Ｐ７，Ｐ８，Ｐ９から見て、最短距離で到達できる線分を求め、その線分の始点となる骨格点の番号を、輪郭点が所属する骨格点番号とする。このようにして求めた各骨格点番号を、要素輪郭形状変更情報として要素輪郭形状情報内に記憶させる。要素骨格形状の変形に付随して要素輪郭形状を変更する処理においては、１個の骨格点の座標値が変化した場合、その前後の骨格点により定義される２本の線分を求め、それぞれの始点となっている２個の骨格点の番号を求める。そして、２個の骨格点の番号と同じものを要素輪郭形状変更情報として持っている輪郭点すべてを、移動の対象とする。
【００３６】
要素輪郭形状情報内の各要素は、それぞれに対応する要素骨格形状が、本来の形状が持つ骨格点のＸ座標と、Ｙ座標の値を、すべてＹ座標が０となるよう座標変換されているのに付随して、輪郭点を移動させることにより形状を予め変更している。すなわち、前述の図８にて説明した、要素骨格形状情報における線分Ｋ０−Ｋ１，Ｋ１−Ｋ２，Ｋ２−Ｋ３，Ｋ３−Ｋ４の移動に合わせて、要素輪郭形状情報における輪郭点Ｐ０−Ｐ９を移動させている。
【００３７】
輪郭点の移動を図９を用いて説明する。ここでは、説明を容易にするために線分Ｋ３−Ｋ４のみが移動している場合を示す。線分Ｋ３−Ｋ４が線分Ｋ３′−Ｋ４′に移動した場合、輪郭形状変更情報により、輪郭点Ｐ５，Ｐ６，Ｐ７が移動の対象となる（輪郭点Ｐ５，Ｐ６，Ｐ７の所属する骨格点の番号が（Ｋ３）であるため）。輪郭点Ｐ５，Ｐ７の移動時の条件は次のとおりである。
【００３８】
（１）輪郭点Ｐ５とＰ７から線分Ｋ３−Ｋ４に降ろした垂線と、線分Ｋ３−Ｋ４との交点をＣＰ１、ＣＰ２とし、点Ｋ３−ＣＰ１間の線分の長さをＬ１、点ＣＰ１−ＣＰ２間の長さをＬ２、点ＣＰ２−Ｋ４間の長さをＬ３とする。
【００３９】
そして、長さＬ１対Ｌ２対Ｌ３の比率と等しくなるように、線分Ｋ３′−Ｋ４′上に点ＣＰ１′、ＣＰ２′を生成する（骨格点Ｋ３′は骨格点Ｋ３と同じ位置である）。ここで、線分Ｋ３′−ＣＰ１′の長さをＬ１′、線分ＣＰ１′−ＣＰ２′の長さをＬ２′、線分ＣＰ２′−Ｋ４′の長さをＬ３′としておく。
【００４０】
（２）線分Ｋ３−Ｋ４から点Ｐ５、Ｐ７までの距離をＤ５、Ｄ７とし、（１）で求めた点ＣＰ１′、ＣＰ２′から線分Ｋ３′−Ｋ４′に対し垂直方向に距離Ｄ５、Ｄ７だけ離れたところに点Ｐ５とＰ７の移動後の点Ｐ５′、Ｐ７′を置く。
【００４１】
すなわち、図９において、点Ｐ５、Ｐ７の移動条件とは、
（ａ）長さの比Ｌ１：Ｌ２：Ｌ３＝Ｌ１′：Ｌ２′：Ｌ３′
（ｂ）距離Ｄ５＝Ｄ５′かつＤ７＝Ｄ７′
である。
【００４２】
輪郭点Ｐ６についても移動条件は同一であるが、図９においては、骨格点Ｋ４と同一の座標値を持っているため、輪郭点Ｐ６の移動後の輪郭点Ｐ６′もまた、骨格点Ｋ４の移動後の骨格点Ｋ４′と同じ位置に移る。
【００４３】
上記（ａ）と（ｂ）の条件を満たす輪郭点移動により、要素骨格形状の座標変換に即した、要素輪郭形状の変更が行える。このようにして変更を加えた輪郭点を輪郭点座標データとして、要素輪郭形状情報内に記憶させる。要素輪郭形状情報の一構成要素の本来の輪郭形状の例を図１０（ａ）に、変更後の輪郭形状の例を図１０（ｂ）に、それぞれ示す。
【００４４】
以上の如く構成された文字パターン生成装置の動作を、図１１および図１２に示すフローチャートに従い説明する。
【００４５】
まず、キーボード１０から生成すべき書体の文字コードと書体コードが入力される（ステップＳ１）。ＣＰＵ１２は、文字コードに従い、補助メモリ１１から生成処理に用いられる一文字分の字体骨格形状情報と、書体コードに対応する要素骨格形状情報と要素輪郭形状情報を主メモリ１３の入力バッファに読み込む（ステップＳ２）。
【００４６】
次いで、ＣＰＵ１２は、太さ判定部において、ステップＳ１にて入力された書体コードから、生成すべき書体が、太さ変更を行うべき書体であるのか否かを判別する（ステップＳ３）。太さ変更を必要としない書体の場合、ステップＳ４へ進み、太さ変更を必要とする書体の場合、ステップＳ６へ進む。
【００４７】
ステップＳ４では、ステップＳ２にて読み込んだ字体骨格形状情報の中か  ら、一構成要素分の要素貼付け情報と、骨格点座標データを、入力バッファからＣＰＵ１２内のワーク用メモリに取り込む。
【００４８】
ステップＳ５において、ＣＰＵ１２は、入力バッファに読み込んだ要素骨格形状情報と要素輪郭形状情報から、要素コード３５に対応する要素の骨格点座標データ３９と、輪郭点座標データ５６をＣＰＵ１２内のワーク用メモリに取り込む。
【００４９】
次にステップＳ１５に進む。ここでＣＰＵ１２は、要素骨格形状・要素輪郭形状変更部において、ステップＳ４にてＣＰＵ１２内のワーク用メモリに取り込んだ字体骨格形状情報の中の構成要素の骨格点座標データに基づき、要素骨格形状情報の各骨格点の座標値を、拡大縮小回転等の手段を用いて、骨格点座標データの値に一致させる。
【００５０】
そして、前述の図８にて説明した、要素骨格形状情報における線分Ｋ０−Ｋ１，Ｋ１−Ｋ２，Ｋ２−Ｋ３，Ｋ３−Ｋ４の移動条件に合わせて、要素輪郭形状情報における輪郭点Ｐ０〜Ｐ９を移動させる。輪郭点の移動条件については、図９において記述した内容と全く同一である。
【００５１】
一構成要素の輪郭点全てについての移動処理が済んだ後、ステップＳ１６で移動後の輪郭点Ｐ０′〜Ｐ９′を主メモリ１３の出力バッファに出力する。
【００５２】
上記ステップＳ３にて、生成すべき書体が、太さ変更を必要とすると判定された場合には、以下のような処理を行う。ステップＳ６において、ステップＳ２にて読み込んだ字体骨格形状情報の中から、一構成要素分の要素貼付け情報と、太さ変更処理判定情報と、骨格点座標データをＣＰＵ１２内のワーク用メモリに取り込む。
【００５３】
次にステップＳ７に進み、ＣＰＵ１２は、太さ変更処理判定部において、太さ変更処理判定情報内の要素置き換え判定コードを判別し、要素置き換えを行うか否かを判定する。書体コードにより指定された書体が、太め文字パターンならば、要素置き換え判定コード（太め用）６０を用い、細め文字パターンならば、要素置き換え判定コード（細め用）６１を用いる。要素置き換えを行う場合にはステップＳ１４に進み、要素置き換えを行わず太さ変更処理を行う場合にはステップＳ８に進む。
【００５４】
ステップＳ８では、ＣＰＵ１２は、入力バッファに読み込んだ要素骨格形状情報と要素輪郭形状情報から、要素コード３５に対応する要素の骨格点座標データ４６と、輪郭点座標データ５６をＣＰＵ１２内のワーク用メモリに取り込む。次にＣＰＵ１２は、要素輪郭太さ変更部において、輪郭点座標データの中から１個の輪郭点と、それに対応する太さ変更属性情報を取り出す（ステップＳ９）。
【００５５】
ステップＳ１０において、ＣＰＵ１２は、太さ変更属性情報を判別し、太さ変更処理の際、輪郭点の座標値をＸ座標は固定のままでＹ座標のみ変更するのか、またはＸ座標、Ｙ座標共に固定のままかを判定する。Ｘ座標は固定でＹ座標のみ変更する場合ステップＳ１１に進む。Ｘ座標、Ｙ座標共に固定のままの場合、輪郭点の移動は行わず、ステップＳ１２に進む。
【００５６】
太さ変更処理における輪郭点の移動を、図１３を用いて説明する。この図において、点Ｋ０，Ｋ１，Ｋ２は、要素骨格形状情報内の一構成要素が持つ座標変換後の骨格点を示すものであり、前述の図４（「伊」の字体骨格形状情報）において、「人偏」を構成する「はらい部」に対応する要素の骨格点である。また、点Ｐ０，Ｐ１，Ｐ２，Ｐ３，Ｐ４は要素輪郭形状情報内の一構成要素が持つ座標変換後の輪郭点を示すものであり、前述の図４（「伊」の字体骨格形状情報）において、「人偏」を構成する「はらい部」に対応する要素の輪郭点である。ただし、図１３では、説明を容易にするため、図８および図９と比べ、説明に直接関係のない骨格点と輪郭点を省略している。点Ｐ０とＰ３は輪郭形状にとって始点と終点であり、本実施例においては、Ｘ座標、Ｙ座標共に固定とする。点Ｐ１，Ｐ２，Ｐ４の移動方式判定コードは、Ｘ座標は固定のままでＹ座標のみ変更することを示しているものとする。
【００５７】
骨格点Ｋ０とＫ１を結ぶ線分をＫ０−Ｋ１とし、Ｋ１とＫ２を結ぶ線分をＫ１−Ｋ２とする。要素骨格形状情報の各骨格点は、すべてＹ座標が０となるよう座標変換しているので、これらの線分はＸ軸上に並んでいる。輪郭点Ｐ１，Ｐ２，Ｐ４から見て最も近い線分までの距離を、それぞれＤ１，Ｄ２，Ｄ４とする。要素輪郭形状情報の各輪郭点は、要素骨格形状情報の座標変換に合わせて変更されているので、距離Ｄ１，Ｄ２，Ｄ４の値は、すなわち各輪郭点のＹ座標値の絶対値に等しい。
【００５８】
距離Ｄ１の値に対し、ＣＰＵ１２のプログラム用メモリ内にあらかじめ定義された太さ変更定数を掛けたものを距離Ｄ１′とする。そして、この距離Ｄ１′に正負の判定を加えた後に、移動後の輪郭点Ｐ１′のＹ座標とする（ステップＳ１１）。
【００５９】
次にＣＰＵ１２は、輪郭点Ｐ１′を主メモリ１３の記憶部に記憶する（ステップＳ１２）。ここで太さ定数は、生成すべき書体毎に一つ決められた定数であり、太め文字パターンの場合は１より大きく、細め文字パターンの場合１未満となる。
【００６０】
ＣＰＵ１２は、１個の輪郭点を移動させる毎に、一構成要素の輪郭点すべてについて太さ変更処理を施したかどうか判断する（ステップＳ１３）。全輪郭点の処理が済んでいない場合はステップＳ９に戻り、次の輪郭点の処理に移る。
【００６１】
図１３では、点Ｐ１′と同様に点Ｐ２′とＰ４′が移動後の輪郭点となる。
【００６２】
次に、ステップＳ１５に進み、要素骨格形状・要素輪郭形状変更部において、ＣＰＵ１２内のワーク用メモリに取り込んだ字体骨格形状情報の中の構成要素の骨格点座標データに基づき、要素骨格形状情報の各骨格点の座標値を、拡大縮小回転等の手段を用いて、骨格点座標データの値に一致させる。そして、要素骨格形状の変形に付随して、主メモリ１３の記憶部に記憶されている太さ変更後の輪郭点を移動させる。輪郭点の移動条件については、図９において記述した内容と全く同一である。
【００６３】
一構成要素の太さ変更後の輪郭点全てについての移動処理が済んだ後、ステップＳ１６で移動後の輪郭点を主メモリ１３の出力バッファに出力する。
【００６４】
上記ステップＳ７において、構成要素の要素置き換えを行うと判定された場合には、以下のような処理を行う。
【００６５】
ステップＳ１４において、ＣＰＵ１２は、字体骨格形状情報内の要素コード３５に対応する代替要素コードを認識する。生成すべき書体が、太め文字パターンの場合、代替要素コード（太め用）６２を認識し、細め文字パターンの場合、代替要素コード（細め用）６３を認識する。そして、代替要素コードに対応する要素の骨格座標データ点４６と、輪郭点座標データ５６をＣＰＵ１２内のワーク用メモリに取り込む。
【００６６】
次に、ステップＳ１５に進み、要素骨格形状・要素輪郭形状変更部において、ＣＰＵ１２内のワーク用メモリに取り込んだ字体骨格形状情報の中の構成要素の骨格点座標データに基づき、要素骨格形状情報の各骨格点の座標値を、拡大縮小回転等の手段を用いて、骨格点座標データの値に一致させる。そして、要素骨格形状の変形に付随して、要素輪郭形状情報における輪郭点を移動させる。輪郭点の移動条件については、図９において記述した内容と全く同一である。
【００６７】
一構成要素の輪郭点全てについての移動処理が済んだ後、ステップＳ１６で移動後の輪郭点を主メモリ１３の出力バッファに出力する。
【００６８】
図４で例示した字体骨格形状情報である「伊」の骨格形状に合わせた、要素輪郭形状情報の変更後の幾何情報を図１４に示す。また、「伊」の骨格形状における要素の太さ変更および輪郭形状変更後の幾何情報を図１５に示す。
【００６９】
ステップＳ１７にて、ＣＰＵ１２は、１文字分の全構成要素についての処理を行ったか否かの判断を行う。ここで、ＹＥＳの場合、ステップＳ１８に進み、主メモリ１３の出力バッファ内のデータをビットマップメモリ１４に転送して、この処理を終了する。ＮＯの場合、ステップＳ３に戻り、書体コードの判別を行う。
【００７０】
ビットマップメモリ１４に転送された輪郭点データは、ビットマップデータに展開された後、レーザープリンタ、熱転写プリンタ等の出力装置１５により印刷されて出力される。
【００７１】
このようにして、文字の構成要素の太さ変更を行う場合には、計算によって構成要素の太さ変更を行うのか、構成要素を太いもの（あるいは細いもの）に置き換えるのかを判断し、それに応じて、計算あるいは代替により、字体骨格形状情報に合わせて要素骨格形状情報を変更するとともに要素輪郭形状を変更し、変更した輪郭形状を用いて文字パターンを生成する。
【００７２】
これにより、すべての文字パターンをデザインする必要のある従来のフォント開発と比較した場合、構成要素の輪郭を表す要素輪郭形状をデザインするだけで文字パターンを生成できるので、より少ない工数で書体を開発することが可能となる。
【００７３】
また、文字の輪郭を生成する手段が、各構成要素毎に骨格形状の変更と、構成要素に対応する輪郭形状を指示する要素コードを持つことを前提とする要素貼付けであるため、従来の、文字の骨格形状を表す骨格点の座標と、各骨格点における単一の線幅パラメータとして保存する方法と比較して、字形を設計する際に形状的な制約が発生することがなく、書体デザインの自由化を阻害しない。
【００７４】
さらに、字体骨格形状情報の中に、太さ変更処理判定情報を持っているため、１つの構成要素に対して、太さ変更処理による形状変化か、または要素置き換えによる形状変化のどちらか最適な方式を選択させることが可能であり、非常に高品位な太め細め文字パターンを生成することができる。
【００７５】
また、要素輪郭形状情報の中に太さ変更属性情報を持っているため、１つ１つの輪郭点に対して移動方式が選択可能であり、太さ変更処理の際、輪郭形状の微妙な調整をすることにより高品位な太め細め文字パターンを生成することができる。
【００７６】
また、要素輪郭形状を変更する際に用いる輪郭形状変更情報を記憶し、輪郭形状を、歪みを発生させずに変形する手段を備えているため、要素輪郭形状の共通化を図ることができ、一書体の開発に必要な要素輪郭形状を削減することが可能となる。
【００７７】
また、要素骨格形状と要素輪郭形状を、予めＸ軸方向に沿うよう座標変換した上で記憶しているため、要素骨格形状と要素輪郭形状の変更時および、太さ変更時に、角度計算等の高度な計算量を削減することができ、高速に文字パターンを生成することができる。
【００７８】
そして、太さ変更処理の中では、Ｙ座標の値を単純な乗算により調節することで、構成要素の太さを変更できるため、非常に高速に太め細め文字パターンを生成することができる。
【００７９】
なお、この実施例においては、文字の太さ変更の判定については、指定された書体コードから文字の太さ変更を行うか否かを判定するようにしているが、文字の太さを任意に指定できるようにし、その指定に応じて文字の太さを変更するようにしてもよい。あるいは、太め文字、通常文字、細め文字等の３段階や、太め文字、やや太め文字、通常文字、やや細め文字、細め文字の５段階等にあかじめクラスを設定しておき、その中から使用者が任意のクラスを選択できるようにしてもよい。もちろん、その場合には、代替要素もそれなりのものを用意しておくようにする。
【００８０】
また、どの構成要素であれば計算で太さを変更し、どの構成要素であれば代替要素による要素の置き換えを行うのかという判断については、例えば、文字の太さの変更を計算で行った場合に文字の品位が低下するような要素については、代替要素を用意してそれに置き換えるようにすれば、非常に高品位で均一な太め細め文字パターンを生成することができる。
【００８１】
〔実施例２〕
図１６は本発明による文字パターン生成装置の実施例２の概略構成を示すブロック図である。この図において、文字パターン生成装置は、キーボード等からなる入力装置１０ａ、補助メモリ１１ａ、ＣＰＵ１２ａ、主メモリ１３ａ、ビットマップメモリ１４ａ、及び、レーザープリンタ、熱転写プリンタ等からなる出力装置１５ａを備えている。
【００８２】
入力装置１０ａは、生成する文字の文字コードと書体コードを入力するために用いられる。補助メモリ１１ａには、字体骨格形状情報と、要素骨格形状情報と、要素輪郭形状情報が記憶されている。
【００８３】
ＣＰＵ１２ａは、要素骨格形状を字体骨格形状に合わせて変更する機能を有する要素骨格形状変更部と、要素輪郭形状を変更する機能を有する要素輪郭形状変更部と、要素輪郭形状変更の際の変更方式を判定する機能を有する変更方式判定部と、文字パターンを生成する機能を有する生成部を備えている。
【００８４】
また、ＣＰＵ１２ａは、プログラム用のメモリとワーク用のメモリを有しており、補助メモリ１１ａと主メモリ１３ａとの各データにより文字パターンを生成するための制御を行う。この文字パターンは、ビットマップメモリ１４ａ上でビットマップデータに展開され、レーザープリンタ、熱転写プリンタ等の出力装置１５ａにより印刷されて出力される。
【００８５】
主メモリ１３ａは、補助メモリ１１ａから読み出された文字情報を一時格納するための入力用バッファと、形状の変更された要素輪郭形状データを一時格納するための出力用バッファと、形状の変更された要素骨格形状情報と輪郭形状変更情報をそれぞれ記憶する記憶部を有する。
【００８６】
ここで、文字の輪郭形状を記憶する方法としては、（１）文字の輪郭線を直線近似で記憶する方法、（２）文字の輪郭線を直線と円弧で記憶する方法、（３）文字の輪郭線を直線と曲線で記憶する方法等をあげることができるが、文字品位、データ容量の効率等を考慮した場合、上記（３）の方法が最も文字パターンの生成に適している。従って、本実施例では上記（３）の方法によるデータが要素輪郭形状情報における輪郭点座標データとして補助メモリ１１ａに記憶されている。
【００８７】
次に、補助メモリ１１ａの記憶内容を説明する。
【００８８】
図１７は字体骨格形状情報の記憶内容の一例を示す説明図である。字体骨格形状情報としては、字種を区別する文字コード３０ａと、一つの字体骨格形状情報から生成される書体種の数３１ａと、文字の字体を構成する要素の数３２ａとが記憶されている。また、文字コードと構成要素ごとに要素貼付け情報が記憶されている。
【００８９】
この要素貼付け情報は、文字の構成要素数と生成書体数を掛けた数だけ記憶されており、構成要素に対応する要素輪郭形状を指示する要素コード３５ａと、構成要素を形成する骨格点数３６ａと、骨格点座標データへのポインタ３７ａからなっている。
【００９０】
貼付け情報群のあとには骨格点座標データがつづいて記憶されている。この骨格点座標データは、一文字分の骨格点数３８ａのあとに、各構成要素の骨格点座標データ３９ａが記憶されている。図１８に一文字分の字体骨格形状情報の幾何情報の例を示す。
【００９１】
要素骨格形状情報については、ここでは説明を省略するが、実施例１で説明したものと同じ内容のものが記憶されている。
【００９２】
図１９は要素輪郭形状情報の記憶内容の一例を示す説明図である。要素輪郭形状情報としては、書体種を区別する書体コード５０ａと、その書体に用意された要素の数５１ａとが記憶され、その後に、例えば要素数をＭ個とすれば、１〜Ｍまでの各要素情報が記憶されている。
【００９３】
すなわち、要素情報は、要素の数だけあり、要素コード５２ａと、輪郭を形成する輪郭点数５３ａと、輪郭点座標データへのポインタ５４ａからなっている。要素情報群のあとには、総輪郭点数５５ａと、各要素の輪郭点座標データ５６ａが記憶されている。
【００９４】
各要素の輪郭点座標データ５６ａの中には、要素輪郭形状変更情報７０ａと、始点・終点判別コード７２と、要素輪郭形状属性情報７３が含まれている。要素輪郭形状変更情報７０ａは、要素コードが等しい要素における、要素輪郭形状の輪郭点と要素骨格形状の骨格点の対応を示すものであり、各輪郭点が所属する骨格点の番号として記憶されている。要素輪郭形状属性情報７３は、要素の輪郭形状を変更する際の、輪郭点の移動条件を示す変形方式コードとして記憶されている。この変形方式コードには、通常属性、相対位置保存属性、絶対位置保存属性のものがある。各属性の具体的な変形方法については後述する。要素輪郭形状情報における一要素分の幾何情報の例を図２０の（ａ）及び（ｂ）に示す。
【００９５】
以上の如く構成された文字パターン生成装置の動作を、図２１に示すフローチャートに従い説明する。説明を具体化するために、ここでは、前述の図１８で示した「旭」の字体骨格形状情報を適用して説明する。
【００９６】
まず、入力装置１０ａ（例えばキーボード）から生成すべき文字の文字コード（ＪＩＳコードでは「旭」の文字コードは「１６１６」）と書体コード（例えば「０１」）が入力される（ステップＳ１ａ）。ＣＰＵ１２ａは、文字コードに従い、補助メモリ１１ａから生成処理に用いられる一文字分の字体骨格形状情報と、書体コードに対応する要素骨格形状情報と要素輪郭形状情報を主メモリ１３ａの入力バッファに読み込む（ステップＳ２ａ）。
【００９７】
次いで、ＣＰＵ１２ａは、ステップＳ２ａにて読み込んだ字体骨格形状情報の中から、一構成要素分の要素貼付け情報と、構成要素の骨格点座標データを、入力バッファからＣＰＵ１２ａ内のワーク用メモリに取り込む（ステップＳ３ａ）。
【００９８】
ステップＳ４ａにおいて、ＣＰＵ１２ａは、入力バッファに読み込んだ要素骨格形状情報と要素輪郭形状情報から、要素コード３５ａに対応する要素の骨格点座標データ３９ａと、輪郭点座標データ５６ａをＣＰＵ１２ａ内のワーク用メモリに取り込む。
【００９９】
ステップＳ５ａでは、ＣＰＵ１２ａは、ワーク用メモリに取り込んだ字体骨格形状情報の中の構成要素の骨格点座標データに基づき、要素骨格形状情報の各骨格点の座標値を、拡大縮小回転等の手段を用いて、骨格点座標データの値に一致させる。
【０１００】
一つの構成要素における要素輪郭形状変更情報、すなわち要素輪郭形状の輪郭点と、要素骨格形状の骨格点との対応を図２２を用いて説明する。
【０１０１】
この図において、点Ｋ０，Ｋ１，Ｋ２，Ｋ３，Ｋ４は、要素骨格形状情報内の一構成要素が持つ骨格点を示すものであり、前述の図１８（「旭」の字体骨格形状情報）において「丿（はらい）」の部分に対応する要素の骨格点である。次に、点Ｐ０，Ｐ１，Ｐ２，Ｐ３，Ｐ４，Ｐ５，Ｐ６，Ｐ７，Ｐ８，Ｐ９は要素輪郭形状情報内の一構成要素が持つ輪郭点を示すものであり、前述の図１８（「旭」の字体骨格形状情報）において「丿（はらい）」の部分に対応する要素の輪郭点である。
【０１０２】
骨格点Ｋ０，Ｋ１，Ｋ２，Ｋ３，Ｋ４を結ぶ線分を、それぞれＫ０−Ｋ１，Ｋ１−Ｋ２，Ｋ２−Ｋ３，Ｋ３−Ｋ４とする。各輪郭点Ｐ０，Ｐ１，Ｐ２，Ｐ３，Ｐ４，Ｐ５，Ｐ６，Ｐ７，Ｐ８，Ｐ９から見て、最短距離で到達できる線分を求め、その線分の始点となる骨格点の番号を、輪郭点が所属する骨格点番号とする。
【０１０３】
このようにして求めた各骨格点番号を、要素輪郭形状変更情報として要素輪郭形状情報内に記憶させる。要素骨格形状の変形に付随して要素輪郭形状を変更する処理においては、１個の骨格点の座標値が変化した場合、その前後の骨格点により定義される２本の線分を求め、それぞれの始点となっている２個の骨格点の番号を求める。そして、２個の骨格点の番号と同じものを、要素輪郭形状変更情報として持っている輪郭点すべてを、移動の対象とする。
【０１０４】
ステップＳ６ａにおいて、ＣＰＵ１２ａは、輪郭点座標データの中から、ひとつの輪郭点とそれに対応する要素輪郭形状属性情報を取り出す。
【０１０５】
次に、ステップＳ７ａにおいて、ＣＰＵ１２ａは、要素輪郭形状属性情報を判別し、要素輪郭形状の変更における輪郭点の移動条件を設定する。この要素輪郭形状属性情報の判別においては、変形方式コードが、通常属性ならステップＳ８ａへ、相対位置保存属性ならステップＳ９ａへ、絶対位置保存属性ならステップＳ１０ａへ、それぞれ進み、各処理を行う。
【０１０６】
ステップＳ８ａにおける輪郭点の移動を図２３を用いて説明する。この図は、前述の図１８（「旭」の字体骨格形状情報）において「丿（はらい）」の部分に対応する要素の骨格点と要素の輪郭点である。ここで、線分Ｋ３−Ｋ４が線分Ｋ３′−Ｋ４′に移動した場合、輪郭形状変更情報により、Ｐ５とＰ６とＰ７（輪郭点が属する骨格点の番号（Ｋ３））が移動の対象となる。Ｐ５とＰ７の移動時の条件は次のとおりである。
【０１０７】
（１）Ｐ５とＰ７から線分Ｋ３−Ｋ４に降ろした垂線と、線分Ｋ３−Ｋ４との交点をＣＰ１、ＣＰ２とし、Ｋ３−ＣＰ１の長さをＬ１、ＣＰ１−ＣＰ２の長さをＬ２、ＣＰ２−Ｋ４の長さをＬ３とする。
【０１０８】
このとき、輪郭点Ｐ５とＣＰ１とＫ３によって形成される角を角Ａとする。同じく、輪郭点Ｐ７とＣＰ２とＫ３によって形成される角を角Ｂとする。
【０１０９】
長さＬ１対Ｌ２対Ｌ３の比率と等しくなるように、線分Ｋ３′−Ｋ４′上に点ＣＰ１′、ＣＰ２′を生成する。（骨格点Ｋ３′は骨格点Ｋ３と同じ位置である）。なお、Ｋ３′−ＣＰ１′の長さをＬ１′、ＣＰ１′−ＣＰ２′の長さをＬ２′、ＣＰ２′−Ｋ４′の長さをＬ３′としておく。
【０１１０】
（２）線分Ｋ３−Ｋ４からＰ５、Ｐ７までの距離をＤ５、Ｄ７とし、（１）で求めた点ＣＰ１′、ＣＰ２′から線分Ｋ３′−Ｋ４′に対し垂直方向に距離Ｄ５、Ｄ７だけ離れたところにＰ５とＰ７の移動後の点Ｐ５′、Ｐ７′を置く。このとき、輪郭点Ｐ５′とＣＰ１′とＫ３′によって形成される角を角Ａ′とする。同じく、輪郭点Ｐ７′とＣＰ２′とＫ３′によって形成される角を角Ｂ′とする。
【０１１１】
すなわち、図２３において、Ｐ５、Ｐ７の移動条件とは、
（ａ）長さの比Ｌ１：Ｌ２：Ｌ３＝Ｌ１′：Ｌ２′：Ｌ３′
（ｂ）距離Ｄ５＝Ｄ５′かつＤ７＝Ｄ７′
（ｃ）角Ａ＝角Ａ′＝９０°、角Ｂ＝角Ｂ′＝９０°
である。（ａ）と（ｂ）と（ｃ）の条件を満たす輪郭点移動処理により、字体骨格形状情報に即した、要素輪郭形状の変更が行える。輪郭点Ｐ６においても移動条件は同一であるが、図２３においては、骨格点Ｋ４と同一の座標値を持っているため、輪郭点Ｐ６の移動後の輪郭点Ｐ６′もまた、骨格点Ｋ４の移動後の骨格点Ｋ４′と同じ位置に移る。
【０１１２】
ステップＳ９ａにおける輪郭点の移動を図２４を用いて説明する。この図は、前述の図１８（「旭」の字体骨格形状情報）において「乙偏」の屈曲部分に対応する要素の骨格点と要素の輪郭点である。ただし、図２４では説明を容易にするため、図２２及び図２３と比べ、説明に直接関係のない骨格点と輪郭点を省略している。
【０１１３】
ここで、線分Ｋ１−Ｋ２が線分Ｋ１′−Ｋ２′に移動した場合、輪郭形状変更情報により、Ｐ１とＰ２（輪郭点が属する骨格点の番号（Ｋ１））が移動の対象となる。Ｐ１とＰ２の移動時の条件は次のとおりである。
【０１１４】
（１）Ｐ１とＰ２から線分Ｋ１−Ｋ２に降ろした垂線と、線分Ｋ１−Ｋ２との交点をＣＰ１、ＣＰ２とし、Ｋ１−ＣＰ１の距離をｄｘ１、Ｐ１−ＣＰ１の距離をｄｙ１、ＣＰ２−Ｋ２の距離をｄｘ２、Ｐ２−ＣＰ２の距離をｄｙ２とする。
【０１１５】
このとき、輪郭点Ｐ１とＣＰ１とＫ１によって形成される角を角Ａとする。同じく、輪郭点Ｐ２とＣＰ２とＫ２によって形成される角を角Ｂとする。
【０１１６】
（２）骨格点Ｋ１′、Ｋ２′から、ｄｘ１＝ｄｘ１′となるようにＣＰ１′を生成する。同じく、ｄｘ２＝ｄｘ２′となるようにＣＰ２′を生成する。ＣＰ１′、ＣＰ２′から線分Ｋ１′−Ｋ２′に対し垂直方向に距離ｄｙ１＝ｄｙ１′、ｄｙ２＝ｄｙ２′だけ離れたところにＰ１とＰ２の移動後の点Ｐ１′、Ｐ２′を置く。
【０１１７】
このとき、輪郭点Ｐ１′とＣＰ１′とＫ１′によって形成される角を角Ａ′とする。同じく、輪郭点Ｐ２′とＣＰ２′とＫ２′によって形成される角を角Ｂ′とする。
【０１１８】
すなわち、図２４において、Ｐ１、Ｐ２の移動条件とは、
（ａ）距離ｄｘ１＝ｄｘ１′、ｄｙ１＝ｄｙ１′
（ｂ）距離ｄｘ２＝ｄｘ２′、ｄｙ２＝ｄｙ２′
（ｃ）角Ａ＝角Ａ′＝９０°、角Ｂ＝角Ｂ′＝９０°
である。（ａ）と（ｂ）と（ｃ）の条件を満たす輪郭点移動処理により、字体骨格形状情報に即した、要素輪郭形状の変更が行える。
【０１１９】
ステップＳ１０ａにおける輪郭点の移動を図２５を用いて説明する。この図は、前述の図１８（「旭」の字体骨格形状情報）において「丿（はらい）」のうろこ部分に対応する要素の骨格点と要素の輪郭点である。ただし、図２５では説明を容易にするため、図２２及び図２３と比べ、説明に直接関係の無い骨格点と輪郭点を省略している。
【０１２０】
ここで、線分Ｋ０−Ｋ１が線分Ｋ０′−Ｋ１′に移動した場合、輪郭形状変更情報により、Ｐ０とＰ１とＰ２（輪郭点が属する骨格点の番号（Ｋ０））が移動の対象となる。Ｐ０とＰ１とＰ２の移動時の条件は次のとおりである。
【０１２１】
（１）骨格点Ｋ０から輪郭点Ｐ１、Ｐ２のそれぞれの距離のＸ成分、Ｙ成分をｄｘ１、ｄｙ１、ｄｘ２、ｄｙ２とする。
【０１２２】
（２）骨格点Ｋ０′からｄｘ１＝ｄｘ１′となるようにＣＰ１′を生成する。同じく、ｄｘ２＝ｄｘ２′となるようにＣＰ２′を生成する。
【０１２３】
すなわち、図２５において、Ｐ１とＰ２の移動条件とは、
（ａ）距離ｄｘ１＝ｄｘ１′、ｄｙ１＝ｄｙ１′
（ｂ）距離ｄｘ２＝ｄｘ２′、ｄｙ２＝ｄｙ２′
である。（ａ）と（ｂ）の条件を満たす輪郭点移動処理により、字体骨格形状情報に即した、要素輪郭形状の変更が行える。輪郭点Ｐ０においても移動条件は同一であるが、図２５においては、骨格点Ｋ０と同一の座標値を持っているため、輪郭点Ｐ０の移動後の輪郭点Ｐ０′もまた、骨格点Ｋ０の移動後の骨格点Ｋ０′と同じ位置に移る。
【０１２４】
そして、一構成要素の輪郭点全てについての移動処理が済めば（ステップＳ１１ａ）、移動後の輪郭点を主メモリ１３ａの出力バッファに出力する（ステップＳ１２ａ）。
【０１２５】
そして、ステップＳ１３ａにて、一文字中の全構成要素について、処理を行ったのか否かの判断を行う。Ｙｅｓの場合、ステップＳ１４ａに進んで、主メモリ１３ａの出力バッファ内のデータをビットマップメモリ１４ａに転送して、この処理を終了する。Ｎｏの場合、ステップＳ３ａに戻り、次の構成要素に関する要素貼付け情報と骨格点座標データを、入力バッファからＣＰＵ１２ａ内のワーク用メモリに取り込む。
【０１２６】
ビットマップメモリ１４ａに転送された輪郭点データは、ビットマップデータに展開された後、レーザープリンタ、熱転写プリンタ等の出力装置１５ａにより印刷されて出力される。
【０１２７】
このようにして、変形方式コードが、通常属性であるのか、相対位置保存属性であるのか、絶対位置保存属性であるのかを判定し、それに応じて輪郭点を移動して、要素輪郭形状を変更し、変更した輪郭形状情報を用いて文字パターンを生成する。
【０１２８】
これにより、すべての文字パターンをデザインする必要のある従来のフォント開発と比較した場合、構成要素の輪郭を表す要素輪郭形状をデザインするだけで文字パターンを生成できるので、より少ない工数で書体を開発することが可能となる。さらに、要素輪郭形状を変更する手段を備えているため、要素輪郭形状の共通化を図ることができ、一書体の開発に必要な要素輪郭形状を削減させることが可能となる。
【０１２９】
また、要素輪郭部のストロークの厚みを変えずにストローク長を変更できるので、輪郭形状を変更した後の文字パターンにおいて、縦棒、横棒、はらい等を高品位に生成できる。
【０１３０】
また、骨格点に対する輪郭点の距離と角度を保存できるので、輪郭形状を変更した後の文字パターンにおいて、屈曲部等を高品位に生成できる。骨格線分に対する輪郭点の距離を保存できるので、輪郭形状を変更した後の文字パターンにおいて、うろこ等を高品位に生成できる。
【０１３１】
【発明の効果】
この発明によれば、字体骨格形状情報と要素骨格形状情報と要素輪郭形状情報とをあらかじめ記憶しておき、文字の太さを変更する場合には、太さの変更を計算で行うのか代替要素による要素置き換えで行うのかを判定し、それに応じて要素輪郭形状の太さを変更するようにした場合には、要素に応じた最適な方法で要素の形状を変更することができ、これにより、比較的少ない容量で、非常に高品位な太め細め文字パターンを生成することができる。
【０１３２】
また、字体骨格形状情報に合わせて要素骨格形状情報を変更した後、変更方式判定部により輪郭点の移動条件を判別し、その判定された移動条件に従って要素輪郭形状情報の各輪郭点を移動させるようにした場合には、構成要素の輪郭形状に応じた最適な移動方法で要素輪郭形状の各輪郭点を移動させることができるので、これにより高品位な文字パターンを生成することができる。
【図面の簡単な説明】
【図１】この発明の構成を示すブロック図である。
【図２】本発明による文字パターン生成装置の実施例１の概略構成を示すブロック図である。
【図３】実施例１における字体骨格形状情報の記憶内容の一例を示す説明図である。
【図４】実施例１における一文字分の字体骨格形状情報の幾何情報の一例を示す説明図である。
【図５】実施例１における要素骨格形状情報の記憶内容の一例を示す説明図である。
【図６】実施例１における要素骨格形状情報の座標変換による骨格点の移動を示す説明図である。
【図７】実施例１における要素輪郭形状情報の記憶内容の一例を示す説明図である。
【図８】実施例１における要素輪郭形状の輪郭点と要素骨格形状の骨格点との対応を示す説明図である。
【図９】実施例１における要素輪郭形状の変更時の輪郭点の移動を示す説明図である。
【図１０】実施例１における要素輪郭形状情報における一要素の本来の輪郭形状の例と、座標変換後の輪郭形状の例とを示す説明図である。
【図１１】実施例１の動作を示すフローチャートである。
【図１２】実施例１の動作を示すフローチャートである。
【図１３】実施例１における太さ変更処理時の輪郭点の移動を示す説明図である。
【図１４】実施例１における要素輪郭形状情報の輪郭形状変更後の幾何情報の一例を示す説明図である。
【図１５】実施例１における要素輪郭形状情報の太さ変更および輪郭形状変更後の幾何情報の一例を示す説明図である。
【図１６】本発明による文字パターン生成装置の実施例２の概略構成を示すブロック図である。
【図１７】実施例２における字体骨格形状情報の記憶内容の一例を示す説明図である。
【図１８】実施例２における一文字分の字体骨格形状情報の幾何情報の一例を示す説明図である。
【図１９】実施例２における要素輪郭形状情報の記憶内容の一例を示す説明図である。
【図２０】実施例２における要素輪郭形状情報の一要素分の幾何情報の例を示す説明図である。
【図２１】実施例２の動作を示すフローチャートである。
【図２２】実施例２における要素輪郭形状の輪郭点と要素骨格形状の骨格点との対応を示す説明図である。
【図２３】実施例２における通常属性の場合の輪郭点の移動を示す説明図である。
【図２４】実施例２における相対位置保存属性の場合の輪郭点の移動を示す説明図である。
【図２５】実施例２における絶対位置保存属性の場合の輪郭点の移動を示す説明図である。
【符号の説明】
１０    キーボード
１０ａ  入力装置
１１，１１ａ  補助メモリ
１２，１２ａ  ＣＰＵ
１３，１３ａ  主メモリ
１４，１４ａ  ビットマップメモリ
１５，１５ａ  出力装置
３０，３０ａ  文字コード
３１，３１ａ  書体数
３２，３２ａ  構成要素数
３５，３５ａ  要素コード
３６，３６ａ  骨格点数
３７，３７ａ  骨格点座標データへのポインタ
３８，３８ａ  一文字分の骨格点数
３９，３９ａ  構成要素の骨格点座標データ
４０    書体コード
４１    要素数
４２    要素コード
４３    骨格点数
４４    骨格点座標データへのポインタ
４５    総骨格点数
４６    要素の骨格点座標データ
５０，５０ａ  書体コード
５１，５１ａ  要素数
５２，５２ａ  要素コード
５３，５３ａ  輪郭点数
５４，５４ａ  輪郭点座標データへのポインタ
５５，５５ａ  総輪郭点数
５６，５６ａ  各要素の輪郭点座標データ
６０    要素置き換え判定コード（太め用）
６１    要素置き換え判定コード（細め用）
６２    代替要素コード（太め用）
６３    代替要素コード（細め用）
７０，７０ａ  要素輪郭形状変更情報
７１    太さ変更属性情報
７２    始点・終点判別コード
７３    要素輪郭形状属性情報
【図１】
0003792171.tif 000002
【図２】
0003792171.tif 000003
【図３】
0003792171.tif 000004
【図４】
0003792171.tif 000005
【図５】
0003792171.tif 000006
【図６】
0003792171.tif 000007
【図７】
0003792171.tif 000008
【図８】
0003792171.tif 000009
【図９】
0003792171.tif 000010
【図１０】
0003792171.tif 000011
【図１１】
0003792171.tif 000012
【図１２】
0003792171.tif 000013
【図１３】
0003792171.tif 000014
【図１４】
0003792171.tif 000015
【図１５】
0003792171.tif 000016
【図１６】
0003792171.tif 000017
【図１７】
0003792171.tif 000018
【図１８】
0003792171.tif 000019
【図１９】
0003792171.tif 000020
【図２０】
0003792171.tif 000021
【図２１】
0003792171.tif 000022
【図２２】
0003792171.tif 000023
【図２３】
0003792171.tif 000024
【図２４】
0003792171.tif 000025
【図２５】
0003792171.tif 000026