(57)【特許請求の範囲】
【請求項１】
既存する通常の文字フォントを１文字分読み出すと共に、この文字を構成する最外郭の輪郭、その内部に存在する輪郭のような入れ子構造を解析し、入れ子毎に連続する輪郭を単位としてサンプリングし、それを離散的な周波数分解によって文字の輪郭を離散的な空間周波数成分の集合体で表現して成る周波数フォントに変換するフォント変換手段と、
前記空間周波数成分の集合体のうち高域の周波数成分を削除し、文字の大体の形状を支配する低域の周波数成分のみから成る変形フォントを生成する変形フォント生成手段と、
この変形フォント生成手段によって生成された変形フォントを逆変換することによって元の座標データを生成する逆変換手段と、
この逆変換手段によって生成された座標データに基づいて文字フォントを展開出力する出力手段とを具備したことを特徴とする文字フォント変形出力装置。
【請求項２】
既存する通常の文字フォントを１文字分読み出すと共に、この文字の輪郭を辿ってサンプリングし、それを離散的な周波数分解によって文字の輪郭を離散的な空間周波数成分の集合体で表現して成る周波数フォントに変換するフォント変換手段と、
前記周波数フォントを構成する空間周波数成分の集合体のうち、文字の大体の形状を支配する低域の周波数成分以外を削除し、この低域周波数成分とサンプリング周波数に近い高周波数成分との組み合せから成る変形フォントを生成する変形フォント生成手段と、
この変形フォント生成手段によって生成された変形フォントを逆変換することによって元の座標データを生成する逆変換手段と、
この逆変換手段によって生成された座標データに基づいて文字フォントを展開出力する出力手段と、
を具備したことを特徴とする文字フォント変形出力装置。
【請求項３】
既存する通常の文字フォントを１文字分読み出すと共に、この文字の輪郭を辿ってサンプリングし、それを離散的な周波数分解によって文字の輪郭を離散的な各周波数成分毎に複素数平面上における実数軸部分を虚数軸部分とに分けてその大きさを表わした数値情報の集合体で表現して成る周波数フォントに変換するフォント変換手段と、
空間周波数成分の集合体のうち中位の周波数成分にその値を変更する所定の変形処理を施してその実数軸部分または虚数軸部分を極性反転した値に変更すると共に、前記集合体内の対応する中位の周波数成分を前記変形処理された中位の周波数成分に置き換えた変形フォントを生成する変形フォント生成手段と、
この変形フォント生成手段によって生成された変形フォントを逆変換することによって元の座標データを生成する逆変換手段と、
この逆変換手段によって生成された座標データに基づいて文字フォントを展開出力する出力手段と、
を具備したことを特徴とする文字フォント変形出力装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、文字の輪郭を定義する文字フォントを変形出力する文字フォント変形出力装置およびそのプログラム記録媒体に関する。
【０００２】
【従来の技術】
従来、ワードプロセッサやパーソナルコンピュータ等の文書データ処理装置においては、入力された文書データを出力する際に、文字の形状をドットの集合で表現するビットマップフォントや文字の輪郭を部分毎に基準点とそれを結ぶ直線やベジェ曲線などの集合で表現するアウトライン（ベクトル）フォントを読み出して表示出力／印字出力するようにしているが、アウトラインフォントはビットマップフォントに比べ、回転や斜体、拡大縮小といった変形が容易であり、変形後も輪郭が滑らかであるという利点がある。
【０００３】
【発明が解決しようとする課題】
しかしながら、アウトラインフォントでも文字を構成するフォントの基本輪郭を大きく変えるような変形には適しておらず、従来、そのような要求があれば、個別に特殊なフォントとして予め用意しておく必要があった。このような場合、たとえフォントを部品化することで構造的にデータを圧縮記憶したとしても限界があり、データ容量は大きなものとなっていた。更に、アウトラインフォントは一般的に輪郭が滑らかな場合には、データ容量は小さいが、細かく変化（振動）するような形状ではデータ容量が爆発的に大きくなるため、実用上そのような形状のフォントは予め用意されていないのが現状であった。この発明の課題は、文字の輪郭を離散的な空間周波数成分の集合体で表現して成る周波数フォントを通常の文字フォントを用いて生成する周波数フォント生成機能と、この周波数フォントに基づいて文字の輪郭を変形した変形フォントを生成する変形フォント生成機能を単に組み込むだけで、データ量の増大を抑えながら、文字の基本輪郭を大幅に変更したり、多彩な表現を付加する等、文字の形状を自由に変形できるようにすることである。
【０００４】
【課題を解決するための手段】
この発明の態様のひとつである文字フォント出力装置は、既存する通常の文字フォントを１文字分読み出すと共に、この文字を構成する最外郭の輪郭、その内部に存在する輪郭のような入れ子構造を解析し、入れ子毎に連続する輪郭を単位としてサンプリングし、それを離散的な周波数分解によって文字の輪郭を離散的な空間周波数成分の集合体で表現して成る周波数フォントに変換するフォント変換手段と、前記空間周波数成分の集合体のうち高域の周波数成分を削除し、文字の大体の形状を支配する低域の周波数成分のみから成る変形フォントを生成する変形フォント生成手段と、この変形フォント生成手段によって生成された変形フォントを逆変換することによって元の座標データを生成する逆変換手段と、この逆変換手段によって生成された座標データに基づいて文字フォントを展開出力する出力手段と、を有するように構成することによって前述した課題を解決する。
こうすることによって、１文字全体を１部品とすることができ、線分の交点部分がなめらかに接続され、人が毛筆で描いたような墨だまりを表現できるので、その文字フィントを個別に予め用意することなく、標準文字に比して複雑な変形文字を形成することが可能となる。
また、この発明の別の態様である文字フォント出力装置は、既存する通常の文字フォントを１文字分読み出すと共に、この文字の輪郭を辿ってサンプリングし、それを離散的な周波数分解によって文字の輪郭を離散的な空間周波数成分の集合体で表現して成る周波数フォントに変換するフォント変換手段と、前記周波数フォントを構成する空間周波数成分の集合体のうち、文字の大体の形状を支配する低域の周波数成分以外を削除し、この低域周波数成分とサンプリング周波数に近い高周波数成分との組み合せから成る変形フォントを生成する変形フォント生成手段と、この変形フォント生成手段によって生成された変形フォントを逆変換することによって元の座標データを生成する逆変換手段と、この逆変換手段によって生成された座標データに基づいて文字フォントを展開出力する出力手段と、を有するように構成することによって前述した課題を解決する。
こうすることによって、文字全体に絵筆で描いたような丸みとにじみで表現できるので、その文字フィントを個別に予め用意することなく、標準文字に比して複雑な変形文字を形成することが可能となる。
また、この発明の別の態様のひとつである文字フォント出力装置は、既存する通常の文字フォントを１文字分読み出すと共に、この文字の輪郭を辿ってサンプリングし、それを離散的な周波数分解によって文字の輪郭を離散的な各周波数成分毎に複素数平面上における実数軸部分を虚数軸部分とに分けてその大きさを表わした数値情報の集合体で表現して成る周波数フォントに変換するフォント変換手段と、空間周波数成分の集合体のうち中位の周波数成分にその値を変更する所定の変形処理を施してその実数軸部分または虚数軸部分を極性反転した値に変更すると共に、前記集合体内の対応する中位の周波数成分を前記変形処理された中位の周波数成分に置き換えた変形フォントを生成する変形フォント生成手段と、この変形フォント生成手段によって生成された変形フォントを逆変換することによって元の座標データを生成する逆変換手段と、この逆変換手段によって生成された座標データに基づいて文字フォントを展開出力する出力手段と、を有するように構成することによって前述した課題を解決する。
こうすることによって、文字を構成する部品のそれぞれの輪郭を、円周上の１点を固定して、この円を転がしたときの軌跡である雲のようなサイクロイド曲線で表現できるので、その文字フィントを個別に予め用意することなく、標準文字に比して複雑な変形文字を形成することが可能となる。
【０００６】
【発明の実施の形態】
（第１実施形態）
以下、図１〜図１４を参照してこの発明の第１実施形態を説明する。
図１（Ａ）は文書データ処理装置の全体構成を示したブロック図である。
ＣＰＵ１はＲＡＭ２内にロードされている各種プログラムにしたがってこの文書データ処理装置の全体動作を制御する中央演算処理装置である。記憶装置３はオペレーティングシステムや各種アプリケーションプログラム、データファイル、文字フォントデータ等が予め格納されている記憶媒体４やその駆動系を有している。この記憶媒体４は固定的に設けたもの、もしくは着脱自在に装着可能なものであり、フロッピーディスク、ハードディスク、光ディスク、ＲＡＭカード等の磁気的・光学的記憶媒体、半導体メモリによって構成されている。また、記憶媒体４内のプログラムやデータは、必要に応じてＣＰＵ１の制御により、ＲＡＭ２にロードされる。更に、ＣＰＵ１は通信回線等を介して他の機器側から送信されて来たプログラム、データを受信して記憶媒体４に格納したり、他の機器側に設けられている記憶媒体に格納されているプログラム、データを通信回線等を介して使用することもできる。そして、ＣＰＵ１にはその入出力周辺デバイスである入力装置５、表示装置６、印刷装置７がバスラインを介して接続されており、入出力プログラムにしたがってＣＰＵ１はそれらの動作を制御する。
【０００７】
入力装置５は文字列データ等を入力したり、各種コマンドを入力するキーボード、マウス等のポインティングデバイスやイメージリーダを有している。ここで、文書作成時に入力装置５から文書データが入力されると、表示装置６のテキスト画面に表示出力されると共に、かな漢字変換によって確定された確定文字列は、ＲＡＭ２内に格納される。なお、表示装置６は多色表示を行う液晶表示装置やＣＲＴ表示装置あるいはプラズマ表示装置等であり、また印刷装置７はフルカラープリンタ装置で、熱転写やインクジェットなどのノンインパクトプリンタあるいはインパクトプリンタであり、文書データをカラー出力する。なお、上述したに入力装置５内のイメージリーダは手書き文字や印刷文字をビットマップイメージとして読み取るものである。
【０００８】
このような構成の文書データ処理装置においては、システム内に常駐あるいは外部供給された通常の文字フォント（ビットマップフォント／アウトラインフォント）や入力装置５内のイメージリーダによって読み取られたビットマップイメージを基にこの実施形態固有の周波数フォントに変換するようにしている。すなわち、この実施形態においては、周波数分解による展開方式、つまり離散的フーリエ変換（ＤＦＴ）を高速化した高速フーリエ変換（ＦＦＴ）の展開方式にしたがって既存文字フォント（ビットマップフォントやアウトラインフォント）の輪郭を離散的な空間周波数成分の集合体で表現して成るデータ構造を持った周波数フォントに変換し、この周波数フォントをＲＡＭ２に格納したのち、記憶装置３に登録保存するようにしている。周波数フォントは離散的フーリエ変換の展開方式にしたがって表現されたデータ構造であり、文字を構成する各パーツは、その輪郭（閉曲線）を１周する周期を持つ連続関数で表わすことができるので輪郭を１周する際に１回振動する周波数をＦＦＴの基本周波数とし、この基本周波数とその整数倍の周波数との組み合せの集合体で周波数フォントが表現されている。なお、ＦＦＴ処理によって得られた変換結果の最大次数は、サンプリング定理に応じたものとなっている。
【０００９】
図１（Ｂ）はＲＡＭ２の主要構成を示したもので、このＲＡＭ２には各種のメモリ領域が割り当てられている。文字列格納部２−１はＦＦＴ処理の対象となる文字列が一時記憶されるもので、ＣＰＵ１はこの文字列を構成する各文字コードをその先頭から読み出して記憶装置３内の通常フォント格納部３−１を検索し、該当する文字フォントを取り込む。通常フォント格納部３−１はビットマップフォントやアウトラインフォントを各種文字に対応付けて記憶するもので、ＣＰＵ１はこの通常フォント格納部３−１から読み出した文字フォントをパーツ毎にＦＦＴ処理するが、その際、周波数変換ワーク部２−２が用いられる。周波数変換ワーク部２−２は１パーツ毎の変換結果を一時記憶する作業域であり、その内容は周波数フォント格納部２−３に格納される。周波数フォント格納部２−３はＦＦＴ処理によって生成された周波数フォントを１文字毎に記憶するものでＣＰＵ１は周波数フォントを構成するデータを加工することによって文字の輪郭を変形した変形フォントを生成し、変形フォント格納部２−４に書き込む。変形フォント格納部２−４は例えば、文字の輪郭の太さや基本字形を変えたり、輪郭に細かな振動を与えたり、人が直筆したような揺らぎを施す等、多彩な変形を加えた変形フォントを一時記憶するもので、ＣＰＵ１はこの変形フォントをフーリエ逆変換することによっても元の座標データを生成したのち、この座標データに基づいてビットマップデータを印刷バッファ２−５に展開する。
【００１０】
図２は周波数フォントのデータ構造を説明するための図で、周波数フォント格納部２−３の内容は図２に示す如くとなっている。なお、通常のアウトラインフォントの場合には、そのパーツ数が定義されていると共に、各パーツ毎（１画毎）に基準点座標値および直線、ベジェ曲線等の属性が定義されているが、この実施形態における周波数フォントの場合には、アウトラインフォントの座標、属性の記述部分が空間周波数成分の数表となっている。つまり、周波数フォント格納部２−３は文字コード、パーツ数、パーツ番号に対応付けてパーツ毎にＦＦＴ処理結果として、直流成分、基本周波数成分、それを整数倍した周波数成分とを記述した数表を記憶する構成となっている。ここで、ＦＦＴによる処理結果は複素数として表現され、複素数平面上における実数軸部分と虚数軸部分とに分けてその大きさが離散的に求められたもので、図中、「Ｘｒｌ」は複素平面上においてＸ軸方向の実数軸部分の値を示し、「Ｘｉｍ」は虚数軸部分の値を示している。同様に「Ｙｒｌ」、「Ｙｉｍ」はＹ軸方向における実数軸部分の値、虚数軸部分の値である。また、図中「Ｆ０」は直流成分であって、その実数部分に輪郭の中心点座標が記述されている。なお、「Ｆ０」の虚数軸部分には常に「ゼロ」の値が記述されている。「Ｆ１」はパーツの輪郭を１周する際に１回振動する周波数を表わした基本周波数成分であり、パーツの大きさや方向はこの値によって支配される。「Ｆ２」はパーツの輪郭を１周する際に２回振動する周波数成分（２次高周波成分）であり、パーツの形状はこの値によって支配され大きく曲がっているパーツではこの値が大きくなる。以降の「Ｆ３」、「Ｆ４」……は３次、４次の高周波成分であり、その最大次数は変換対象パーツの輪郭をサンプリングした際における座標の数の半分である。これは前半部分の値から正負の反転、逆順を行うだけで後半部分の値を容易に導けるためである。
【００１１】
図３は周波数フォントの作成過程を概念的に示した図である。処理対象フォント（この場合、アウトラインフォント）の１パーツ分を描画し、このビットマップの輪郭をプロットする。ここで、１パーツをプロットする点数は、どれだけ細かく変換したいかによって決定するが、離散的フーリエ変換の場合ならば、「２」の乗数から選び、例えば「５１２」などであり、この数でパーツの輪郭をプロットし、その点Ｐ０、Ｐ１、Ｐ２……毎にＸＹ座標値を取り込み、この座標値をＦＦＴ処理する。これによってプロット座標値を周波数分布に変換した値が得られ、これがフォントデータとして周波数フォント格納部２−３へ蓄積される。なお、ＦＦＴによる変換結果は、演算精度を厳密に求めなければ、可逆性があり、フーリエ変換によって元の座標値に戻すことができる。
他方、この実施形態においては図２に示すようにＥＥＴ処理結果をそのまま周波数フォント格納部２−３に格納したが、周波数フォントのデータ構造は図４に示すように振幅と位置に組み直してもよい。これは複素平面上において原点からの距離と成す角であるので、Ｘ軸方向ならば、Ｘ振幅＝√（Ｘｒｌ２＋Ｘｉｍ２）、Ｘ位相角＝ｔａｎ−１（Ｘｉｍ／Ｘｒｌ）となり、Ｙ軸方向においても同様である。
【００１２】
次に、文書データ処理装置の動作を図５〜図１０に示すフローチャートにしたがって説明する。ここで、これらのフローチャートに記述されている各機能を実現するためのプログラムは、ＣＰＵ１が読み取り可能なプログラムコードの形態で記憶媒体４に記憶されており、その内容がＲＡＭ２内にロードされている。なお、後述する他の実施形態におけるフローチャートにおいても同様である。
図５は文字列を印刷出力する際の全体動作を示したフローチャートである。すなわち、通常の文字フォント（アウトラインフォント）を周波数フォントに変換すると共に、この周波数フォントを構成するデータを加工することによって変形フォントを生成し、この変形フォントをフーリエ逆変換することによって元の座標データに戻し、この座標データに基づいて文字展開を行って印刷出力する動作を示したフローチャートである。先ず、文字ポインタを先頭位置にリセットしたのち（ステップＡ１）、このポインタ値で文字列格納部２−１をアクセスし、文字コードを取得する（ステップＡ２）。そして、この文字コードに基づいて通常フォント格納部３−１をアクセスし、該当する文字フォントを読み出したのち、１文字分の周波数フォントを作成する処理に移る（ステップＡ３）。この１文字作成処理は後述する図６のフローチャートにしたがって実行され、通常フォントをＦＦＴ処理することによって周波数フォントに変換する。これによって生成された周波数フォントに基づいて、次のステップＡ４ではフォントの変形処理が行われる。この変形処理は後述する図７のフローチャートにしたがって実行され、周波数フォントを構成するデータを加工することによって文字の輪郭を変形するための変形フォントを生成する。そして、この変形フォントをフーリエ逆変換することによって元の座標データに戻し、この座標データに基づいて文字フォントを１文字分印刷パターンデータとして展開させる（ステップＡ５）。この１文字印刷展開処理は図１０に示すフローチャートにしたがって実行される。このようにして１文字分の処理が終ると、文字ポインタを歩進してその値を更新し（ステップＡ６）、その値で文字列格納部２−１をアクセスし、全文字終了かを調べ（ステップＡ７）、終了するまでステップＡ２に戻り、１文字毎に上述の動作を繰り返す。
【００１３】
ここで、上述の１文字作成処理を図６のフローチャートにしたがって詳述する。先ず、処理対象の文字フォント（アウトラインフォント）を構成するパーツ数を取得し（ステップＢ１）、これを周波数フォント格納部２−３に格納すると共に（ステップＢ２）、その１パーツ目をＲＡＭ２内のビットマップ上に描画する（ステップＢ３）。そして、描画したパーツの輪郭をプロットする（ステップＢ４〜Ｂ７）。図１１はこの場合の動作を図式化したもので、図中、矩形の集合は描画した各ドットであり、１つの矩形は１ドットに対応している。ここで、図中左上を原点として左上から左下にスキャンし、最下部に達したら１つ右のドット列をその上から下に向かってスキャンしてゆき、描画されたドットが見つかるまで上述のスキャン動作を繰り返す（図１１（Ａ）参照）。なお、このようなスキャン方向には意味があり、日本語、特に手書きに近いフォントの場合、文字を構成する線は横棒にしろ、跳ね上げ、振り下ろしにしろ、左側から書かれていることが多く、サンプリングを開始する位置を文字の書き始めに合わせることで、後述のフォント変形が好都合となるからである。なお上述したような上下方向へのスキャン（縦方向スキャン）に対し、仮に左右方向へのスキャン（横方向スキャン）を行うものとすると、文字の書き始めがサンプリングの開始とならない場合が多いため、この実施形態においては縦方向スキャンを行うようにしている。また、文字の書き始めの位置は書き終りの位置と同義であるため、サンプリングを開始する位置を文字の書き終りの位置としてもよく、この位置から時計回りの方向へ文字の輪郭を辿ってサンプリング動作を行う。
【００１４】
このようなスキャン動作を繰り返すことによってステップＢ４では最初のドットを探し、この点を開始点としてその輪郭を辿ってその周囲の長さをカウントする（ステップＢ５）。この場合、図１１（Ｃ）に示すように、現在着目しているドットの周囲を調べ、四方のいずれかにドットが存在していれば、そのドット方向に着目点を移動することで輪郭線上を辿るようにしているが、周囲に複数のドットが存在しているときには図１１（Ｂ）に示す順番（数字１、２、３、４の順）にしたがうものとしている。いま、ドット開始点の周囲において、「１」の方向にはドットが存在しないため、「２」の方向を調べるが、その方向にはドットが存在するため、開始点から図中右方向に着目点を移動させる（図１１（Ｃ）参照）。そして、次のドットからは、いま進んだ方向から左９０度回った方向（「２」の方向だったら「１」の方向、「１」の方向だったら「４」の方向）を基準として周囲を調べ、以下、同様に着目点を移動させることにより輪郭線上を時計方向に回りながら１周することができる。この過程において、１周するまでの軌跡上に何ドット存在するかをカウントしてゆくことで輪郭の長さを求めることができる。これによって求められたカウント値（１パーツ分の輪郭の長さ）に基づいてサンプリングステップ数を決定する（ステップＢ６）。この場合、予め任意に設定したサンプリング数とこのカウント値（長さ）とを照合することによって適切なサンプリング間隔を決定する。図１１（Ｃ）は全体の長さ（３２ドット）に対して４ドットおきのドットをサンプル対象とし、全体で８サンプルすることを表わしている。ここで、図中、クロスハッチがかかったところがサンプル対象を示し、ドット開始点から４ドット間隔となる。そして、輪郭線の周囲を辿ってサンプル対象点の各座標値をサンプリングする（ステップＢ７）。
【００１５】
このようにしてサンプリングされた各点の座標値をＦＦＴ処理する（ステップＢ８〜Ｂ１５）。この場合、ＦＦＴ計算はＸ座標成分、Ｙ座標成分に分けて行われるため、先ずサンプリングされた座標のＸ成分を周波数変換ワーク部２−２に格納する（ステップＢ８）。ここで、図３に示すように周波数変換ワーク部２−２はＲｅａｌパート、ＩｍａｇパートをＦ０、Ｆ１、Ｆ２……に対応付けた構成で、先ず、サンプリングされたＸ座標は実数データであるため、このＸ座標値を周波数変換ワーク部２−２内のＲｅａｌパートに格納し（ステップＢ８）、また周波数変換ワーク部２−２内のＩｍａｇパートに全て「０」を代入する（ステップＢ９）。そして、この周波数変換ワーク部２−２の内容に基づいて通常と同様のＦＦＴ計算を行い、その変換結果の全てをＲｅａｌパート、Ｉｍａｇパートの値としてＦ０、Ｆ１、Ｆ２……に対応付けて周波数変換ワーク部２−２に一時記憶させたのち（ステップＢ１０）、この周波数変換ワーク部２−２の内容を周波数フォント格納部２−３にＸ方向実数軸部分の値・虚数軸部分の値として格納する（ステップＢ１１）。このようにしてＸ座標成分の変換格納処理が終ると、Ｙ座標成分についても同様の変換格納処理を行う。すなわち、サンプリングしたＹ座標を周波数変換ワーク部２−２のＲｅａｌパートに格納すると共に（ステップＢ１２）、周波数変換ワーク部２−２のＩｍａｇパートに全て「０」を代入する（ステップＢ１３）。そして、この周波数変換ワーク部２−２の内容に基づいてＦＦＴ計算を行い、その変換結果を周波数変換ワーク部２−２に格納すると共に（ステップＢ１４）、この周波数変換ワーク部２−２の内容を周波数フォント格納部２−３にＹ軸方向の実数軸部分の値Ｙｒｌ、虚数軸部分の値Ｙｉｍとして格納する（ステップＢ１５）。
【００１６】
そして、１パーツ分のフォント変換処理が終ると、ステップＢ１６に進み、１文字分の全てのパーツを処理したかを調べ、処理終了でなければステップＢ３に戻り、次のパーツを描画し、上述の動作を１パーツ毎に繰り返す。図１２は文字「和」が１パーツ毎に分解されてＦＦＴ処理される様子を示したもので、その「のぎ偏」を構成する縦長のパーツと、その「囗」を構成する大きく曲がっているパーツについて着目し、各パーツ毎にＦＦＴ処理することによって得られた実数部分の値と、虚数部分の値を周波数軸上に離散的に分布させた図表を示している。この周波数分布において、縦長のパーツは基本周波数Ｆ１にその特徴が表われ、大きく曲がっているパーツは基本周波数Ｆ１の他に次の周波数Ｆ２にその特徴が表われている。
図１３は文字「和」をＦＦＴ処理することによって得られたＸ軸方向の実数軸部分、虚数軸部分、Ｙ軸方向の実数軸部分、虚数軸部分の具体的な数値を示すと共に、文字「和」を構成する各パーツとパーツ毎の周波数データとの対応関係を示した図である。ここで、図中「１」〜「７」で示すようにこの文字「和」は７パーツから成るため、それに対応する空間周波数成分の集合体は、７パーツ分の周波数フォント格納部２−３に格納される。なお、Ｆ０の虚数は常に「ゼロ」であることは上述した通りであり、また図７はＦ０〜Ｆ９までを例示したが、実際にはサンプリングした数によって特定される最大次数までその値は続いている。
【００１７】
他方、この実施形態においては上述のように文字を１画毎にパーツとして分解したが、例えば文字「乙」のように１画が長く、大きく折れ曲がっているような文字の場合には、その文字全体を直線に近い３本の線分に分解した方が後述の変形加工（特に太さの制御）が確実かつ容易なものとなる。すなわち、元のフォント（ビットマップフォントやアウトラインフォント）が直線を基本とした連続する筆運び部分の線分毎に分解されている場合には、この文字をパーツ毎にサンプリングしてＦＦＴ処理すると共にパーツ毎に太さの制御を行えば、「乙」のような文字であってもその全体の形を崩さずに太さだけを変えてその字形を再現することができる。
【００１８】
次に、図７のフローチャートにしたがって上述のフォント変形処理（図５のステップＡ４）を詳述する。先ず、周波数フォントを変形する変形の種類および変形の度合をユーザが任意に指定するためのウインドウ画面が表示出力され、このウインドウ画面に一覧表示されている選択項目を任意にカーソル指定することで、変形の種類およびその度合を指定する（ステップＣ１）。ここで、選択項目としては、「フィルタ種類」、「カットオフ周波数」、「カットオフ特性値」、「加算値ソース種類」、「加算周波数」、「Ｘ実数部係数」、「Ｘ虚数部係数」、「Ｙ実数部係数」、「Ｙ虚数部係数」がメニュー表示される。ここで、「フィルタ種類」とは、周波数フォントを構成する空間周波数成分の集合体のうちどの帯域の周波数成分を削除／抽出するかのフィルタの種類を指定する項目で、この実施形態ではローパスフィルタ、バンドカットフィルタの何れかを選択するようにしており、「カットオフ周波数」によってその帯域が指定される。「カットオフ特性値」は、例えばカットオフ周波数Ｆ３＝２π×３とＦ４＝２π×４の間における変形度合を指定するものである。「加算値ソース種類」および「加算周波数」は、例えば、周波数フォントを構成する空間周波数成分の集合体のうち、文字の大体の形状を支配する低域の周波数成分以外を削除し、この低域周波数成分と特定の高周波数成分との組み合せから成る変形フォントを生成する場合において、この高周波数成分を「加算周波数成分」とし、この加算周波数成分の値を一定値にするが、あるいは他の周波数成分をソースとしてその値を加算周波数成分の値に反映させるか等を指定するためのパラメータである。このようなウインドウ画面内に必要項目の内容を任意に指定することによって変形の種類やその度合を指定すると、フィルタの種類に応じて周波数フォント格納部２−３の内容を選択的に変形フォント格納部２−４にコピーする処理が行われると共に（ステップＣ２）、「加算値ソース種類」、「加算周波数」に基づいて加算周波数の値を変更するデータ加算処理が行われ（ステップＣ３）、これによってユーザの好みに応じた変形フォントが生成される。
【００１９】
図８は変形フォント格納部２−４へのコピー処理（図７のステップＣ２）を詳述したフローチャートである。先ず、周波数の次数カウンタに初期値Ｆ０をセットしておく（ステップＤ１）。そして、フィルタの種類を判別し（ステップＤ２）、ローパスフィルタであれば、現在着目している周波数（次数カウンタの値）がカットオフ周波数未満（ステップＤ３、Ｄ４でＮＯ）であることを条件に、次数カウンタの値で示される周波数成分を周波数フォント格納部２−３から読み出して変形フォント格納部２−４にコピーする（ステップＤ５）。そして、次数カウンタの値をインクリメントし（ステップＤ６）、その値が周波数フォント格納部２−３内の最大次数を越えたことがステップＤ７で検出されるまでステップＤ２に戻る。ここで、ローパスフィルタの場合において、着目周波数がカットオフ周波数と一致すればカットオフ特定値をその周波数に掛け（ステップＤ８）、それによって得られた周波数成分を変形フォント格納部２−４にコピーする（ステップＤ５）。また、着目周波数がカットオフ周波数を越えていれば、その高域周波数を削除するためにステップＤ５のコピー処理はスキップされる。一方、バンドカットフィルタの場合であれば、ステップＤ９に進み、着目周波数がカットオフ周波数のとき、それにカットオフ特定値を掛けて変形フォント格納部２−４にコピーする（ステップＤ８、Ｄ５）。また、ステップＤ９で不一致が検出されれば、コピー処理はスキップされる。これによってバンドカットフィルタの場合には特定周波数成分のみがコピーされず、その他はそのままコピーされる。なお、フィルタの種類が指定されていなければ、周波数フォントがそのまま変形フォント格納部２−４にコピーされる。
【００２０】
図９はデータ加算処理（図７のステップＣ３）を詳述したフローチャートである。このデータ加算処理は所定の周波数成分の値を変更することによって文字の輪郭を振動させたり、太さを変える等、文字の形状を任意に変形するための処理である。なお、図９はこの加算処理の内容を概念的に示したもので、この加算処理によって文字の形状がどのように変化するかの具体的な例示は後述する他の実施形態で説明するものとし、ここでは加算の態様を中心に説明するものとする。先ず、任意に指定された加算周波数ｆ（次数）を取り込むと共に（ステップＥ１）、加算値リース種類を判別する（ステップＥ２〜Ｅ４）。すなわち、加算周波数に加算される値を「０」とするか、つまり加算値なしか（ステップＦ２）、加算値として一定値を加算すべきことが指定されているか（ステップＥ３）、加算周波数自身の値を加算値として累積するか（ステップＥ４）、他の低域周波数（Ｆ１とＦ２）の値を平均化し、それを加算周波数の値に反映させるかを判別し、その判別結果に応じて加算値Ｑを決定する処理が行われる（ステップＥ５〜Ｅ８）。ここで、ＱＸｒｌ、ＱＸｉｍ、ＱＹｒｌ、ＱＹｉｍはＸＹ方向の実数軸部分、虚数軸部分に加算される加算値であり、加算なしの場合（変形なしの場合）にはそれらに「０」がセットされる（ステップＥ５）。また一定値の場合（例えば輪郭を振動させる場合）にはそれらに一定値がセットされ（ステップＥ６）、自分自身の場合（例えば、太さを変える場合）には次数ｆで示される加算周波数の値ＦｆＸｒｌ、ＦｆＸｉｍ、ＦｆＹｒｌ、ＦｆＹｉｍがそれらにセットされ（ステップＥ７）、更に低域周波数成分の値を反映させる場合（例えば、輪郭を自然に振動させる場合）には、その平均値がそれらにセットされる（ステップＥ８）。そして、この加算値ＱＸｒｌ、ＱＸｉｍ、ＱＹｒｌ、ＱＹｉｍに対応する係数Ｋ１、Ｋ２、Ｋ３、Ｋ４を掛け、その値を加算周波数の値に加算する（ステップＥ９）。なお、元の加算周波数の値が「０」の場合にはＱの値がそのままその周波数成分の値として代入される。
【００２１】
図１０は変形フォントに基づいて文字印刷する際の動作（図５のステップＡ５で示した１文字印刷展開処理）を詳述したフローチャートであり、図１４に示す手順を踏めばよい。先ず、変形フォント格納部２−４を検索して、変形フォントを読み出し、それをＲＡＭ２内のワークメモリに格納する（ステップＦ１）。そして、このワークメモリ内から周波数成分を１パーツ毎に読み出し、それをフーリエ逆変換（ＩＦＦＴ）すると、プロットしたときの座標に戻る（ステップＦ２）。これをショートベクトルとして印刷バッファ２−５に描画する（ステップＦ３）。すなわち、ＩＦＦＴによって生成された座標をショートベクトルとするアウトラインフォントを生成し、印刷バッファ２−５に展開する。ここで、文字を出力するときのプロット間隔は周波数フォントを生成するときのプロット数とは関係せず、任意に制御可能である。すなわち、ＦＦＴ変換時において、そのデータ数（次数）はプロット数に関係するため、文字出力時において高次側に「０」のデータを付け加えてＩＦＦＴを行えば、プロット間隔は狭くなり、逆にデータ数（次数）を減らせばプロット間隔を広ろげることができる。
【００２２】
このようにこの第１実施形態においては、文字の輪郭を離散的な空間周波数成分の集合体で表現して成る周波数フォントを通常の文字フォントを用いて生成する周波数フォント生成機能と、この周波数フォントに基づいて文字の輪郭を変形した変形フォントを生成する変形フォント生成機能を単に組み込むだけで、データ量の増大を抑えながら、文字の基本輪郭や太さを大幅に変更したり、多彩な表現を付加する等、文字の形状を自由に変形することができる。したがって、既存のワードプロセッサ等にこのような機能を組み込むだけで所望する文字を自由に変形することが可能となる。ここで、文字の大きさを変更するときには、通常のアウトラインフォントと同様に、全ての数値に係数を掛ければ、拡大、縮小することが可能となり、文字の大きさを自由に変更することができる。更に、デジタルフィルタによって高周波成分をカットすれば、丸い文字を出力することができ、更に低域周波数と特定の高域周波数とを組み合せれば、文字の輪郭に細かい変化（振動）を付加することができ、また、輪郭の太さを制御する場合には、Ｆ１、Ｆ２の低域周波数成分の所定値を変更（定数倍）すればよい等、多彩な変形が可能となる。特に従来のアウトラインフォントでは事実上実装が不可能であった複雑な輪郭形状をフォントとして実装しておかなくても、周波数フォントを構成するデータを加工するだけでどのような複雑な形状であっても容易に変形することができる。したがって、複雑な形状をアウトラインフォントとして実装する場合に比べ、データ量を大幅に削減することができる。また、周波数フォントは、各周波数成分毎に複素平面上における実数軸部と虚数軸部とに分けてその大きさを表わしたから、高速処理に向いた形となる。また、各周波数成分毎にその値を振幅および位相成分として表わせば、低域を観念的に理解しやすくなり、変形を任意に指定する際に有効なものとなる。また、サンプリングを行う単位は文字を構成する１画毎であり、１画毎に周波数成分の集合体に変換するようにしたから文字の大体の形状を支配する低域周波数のみを持つフォントの場合、その変形が素直になり、基本字形が保たれる。また、「乙」のように文字を構成する要素が１画であっても、直線を基本とした連続する筆運び毎に３分割してサンプリングを行えば、基本字形を保つことができ、またサンプリングの開始位置を文字の書き始めあるいは書き終りの位置とすることで、文字の太さや基本字形を変える変形を行う際に、日本語の特性上その変形制御が容易なものとなる。
【００２３】
（第２実施形態）
以下、図１５〜図１９を参照してこの発明の第２実施形態を説明する。なお、上述した第１実施形態は変形の種類およびその度合を任意に指定するようにしたが、変形の種類として文字全体に丸みを持たせてその変形の度合も固定した例を示すと共に、その変形の具体的な手法を示したものである。すなわち、周波数フォントを構成する空間周波数成分の集合体のうち高域の周波数成分をカットし、文字の大体の形状を支配する低域の周波数成分のみから成る変形フォントを生成することによって文字全体に丸みを持たせるようにしたものである。
図１５は上述した図８と基本的に同様のフローチャートであるが、この場合、フィルタの種類としてはローパスフィルタに固定され、カットオフ周波数および特定値もシステム上固定された値となっている。そして、ステップＧ１〜Ｇ６はＦ０から最大次数の周波数成分を１つずつ着目しながらカットオフ周波数未満の周波数成分のみを抽出し、それ以上の高周波数成分をカットするもので、これによって抽出された周波数成分は変形フォント格納部２−４に格納される。
【００２４】
ここで、図１６（Ａ）〜（Ｅ）はこの場合の変形例を示したもので、カットオフ周波数としてどの値が固定的に設定されているかによって変形度合は図示の如く異なる。すなわち、図１６（Ａ）はカットオフ周波数が設定されていない場合の元字、つまり、変形フォントを生成せずに周波数フォントをそのまま展開出力させた場合の元字を示し、この元字に対してカットオフ周波数を２π×１５（Ｆ１５）にすると（Ｂ）に示す字形となり、２π×７（Ｆ７）にすると（Ｃ）、２π×４（Ｆ４）にすると（Ｄ）、２π×３（Ｆ３）にすると（Ｅ）に示す文字形となり、文字全体に丸みを持たせた変形が可能となる。ここで、図１５において、着目周波数がカットオフ周波数に一致したときに、その着目周波数に特性値を掛けるようにすれば、中間の変形度合を実現することができる（ステップＧ７）。例えば、図１６に示すカットオフ周波数＝２π×３と２π×４の中間の変形を得る場合には、カットオフ周波数を２π×３に設定し、特性値を「０．５」に固定することで中間の変形が可能となる。
図１７は直流成分Ｆ０の他に基本周波数である最低周波数Ｆ１のみを抽出した場合で、この場合の変形フォントは図１７（Ａ）に示すデータ構造となり、（Ｂ）に示す元字に対して極端に丸みを帯びた字形に変形されるので、遊びの用途として最適なフォントとなる。
【００２５】
図１８はこの第２実施形態を更に発展させた場合の動作を示すフローチャートである。すなわち、周波数フォントを構成する周波数成分の集合体のうち文字の大体の形状を支配する低域の周波数成分以外を削除し、この低域周波数成分とサンプリング周波数に近い高周波数成分との組み合せから成る変形フォントを生成することによって、文字全体に絵筆で描いたような丸みとにじみを持たせるようにしたものである。ここで、ステップＨ１〜Ｈ７は図１５のステップＧ１〜Ｇ７と同様のフィルタ処理を示している。ここで、変形フォント格納部２−４に格納された低域周波数成分に対してどのような高周波数を組み合せるかはシステム上固定的に決められており、ステップＨ８はそれを加算周波数ｆ（次数）として取り込む。この場合、図１８においては、組み合せられる加算周波数を２種類とした場合で、ステップＨ８ではその１種類目、ステップＨ１１ではその２種類目を示している。そして、次のステップＨ９ではこの周波数に加算される値Ｑを求めるが、この場合、一定値ではなく、低域のＦ１とＦ２の値を平均化し、その値を加算値Ｑとする。なお、加算値ＱはＸ方向、Ｙ方向の実数軸部分、虚数軸部分に分けてそれぞれ求めるようにしているが、実数軸部分のみ虚数軸部分のみを求めるようにしてもよい。そして、次のステップＨ１０ではこの加算値に係数Ｋ１（変形度合定数Ｋ１）を掛け、その結果を加算周波数に加算する処理が行われる。なお、ステップＨ１１に示す２種類目の加算周波数に対してもステップＨ９、Ｈ１０と同様の加算処理が行われる（ステップＨ１２、Ｈ１３）。ここで、係数Ｋ２は変形度合定数を示す。このように、この第２実施形態では低域のＦ１とＦ２の値を平均化すると共に、それに係数を掛け、その結果を加算周波数に加える。すなわち、低域のＦ１とＦ２の値を反映させた値を加算する。このとき、実数軸部分あるいは虚数軸部分の一方のみに加算するようにしてもよい。このような加算処理を行うのは、文字の輪郭に表われる“にじみ”（細かな振動）の向きを低域のＦ１とＦ２の向き（つまり文字を構成する要素の方向）に合わせるような変形を行わせるためである。
【００２６】
図１９はこの場合の変形を説明するための図で、（Ａ）はカットオフ周波数を２π×３とした場合で、それに組み合せられる高周波数がない場合の変形例を示している。（Ｂ）はカットオフ周波数を２π×３、加算周波数を最大次数の周波数、加算値Ｑを求めるためのソースは固定値（例えば、Ｆ１またはＦ２）で、ＸＹ方向共、その実数軸部分、虚数軸部分に対して加算処理を行った場合である。（Ｃ）は上述の（Ｂ）の場合と同様にカットオフ周波数を２π×３、加算周波数を最大とするが、ここではソースをＦ１とＦ２とし、その平均値をＸＹ方向の実数軸部分のみに加算した場合であり、（Ｂ）の変形に比べ、“にじみ”の状態が自然なものとなり、人が絵筆で描いたような文字を得ることが可能となる。
【００２７】
（第３実施形態）
以下、図２０〜図２２を参照してこの発明の第３実施形態を説明する。なお、上述した第２実施形態においては低域周波数成分と特定の高周波数成分とを組み合せた変形フォントを生成するようにしたが、この第３実施形態においては、周波数フォントを構成する各周波数成分の集合体（Ｆ０〜最大次数まで）を変形フォントとする他に、そのうち中位の周波数成分の値を変形度合に応じて変更するようにしたものである。すなわち、周波数成分の集合体のうち中位の周波数成分（加算周波数）にその値を変更する所定の変形処理を施すと共に、その集合体内の対応する中位の周波数を変形処理された中位の周波数成分に置き換えた変形フォントを生成することによって、人が毛筆で描いたような自然なゆらぎ要素を文字全体に持たせるようにしたものである。
図２０はこの場合のフォント変形処理を示したもので、ステップＪ１〜Ｊ６は上述した図１８のステップＨ８〜Ｈ１３に対応する同様の処理を行うもので、その説明は省略するものとする。なお、この場合においても中位の周波数成分を２種類としたが、１種類だけとしてもよく、また低域のＦ１とＦ２の平均値を中位の周波数成分の実数軸部分、虚数軸部分に加算するようにしているが、実数軸部分、虚数軸部分のいずれか一方のみに加算するようにしてもよい。ここで、中位の周波数成分としては例えば２π×２０程度、つまりやや低めの周波数成分として定められている。
図２１はこの場合の変形を説明するための図で、（Ａ）は変形をかける前の元字を示している。（Ｂ）はＸ方向のみに変形をかけた例を示し、図２０のフローチャートでは、Ｘ方向、Ｙ方向の両方に加算処理を行うようにしているが、Ｘ方向のみの加算、つまり、ｋ１Ｙｒｌ、ｋ１Ｙｉｍ、ｋ２Ｙｒｌ、ｋ２Ｙｉｍの値を「０」とした場合の変形例、（Ｃ）はＸＹ両方に加算を行った場合の変形例を示している。これによって人が毛筆で描いたようなゆらぎ要素を文字全体に持たせることができるが、特に図２１（Ｂ）に示すようにＸ方向のみを加算した場合には、（Ｃ）の変形に比べ安定した印象の変形が可能となる。
【００２８】
図２２はこの第３実施形態を更に発展させた場合の動作を示したフローチャートである。すなわち、中位の周波数成分を固定化せず、中位の周波数成分をその文字を構成する各要素毎に輪郭の長さに応じて決定するようにしたものである。先ず、周波数フォント格納部２−３から１文字分のパーツ数を取得すると共に（ステップＫ１）、１文字中の各パーツに対応する輪郭の長さのうちその最大値を取り出す（ステップＫ２）。ここで、上述した第１実施形態で説明したようにサンプリング動作時に各パーツ毎の輪郭の長さが求められるので、それを各パーツに対応付けて登録保存しておけば、その中から最大値を取り出すことができる。この状態において、先ず、最初の第１パーツの輪郭の長さを取り出し（ステップＫ３）、その長さに応じて加算周波数の次数ｆを決定する（ステップＫ４）。すなわち、ステップＫ３で取り出した該当パーツの輪郭の長さとステップＫ２で取り出した最大値とに基づいて最大値に対する該当パーツの長さの比率を求め、その値に基本周波数成分Ｆ１の値を掛けることによって加算周波数成分の次数を求める。
なお、上述のような演算結果に端数が生じた場合には四捨五入、切り上げ、切り下げ等の端数処理を行うようにしている。そして、ステップＫ５に進み、次数ｆで示される周波数成分の値にＦ１とＦ２の平均値（図２０のステップＪ２によって求められた値Ｑ）を加算する（ステップＫ５）。これによって得られた周波数成分を周波数フォントを構成する集合体内の対応する周波数成分と置き換えることによって変形フォントとして登録する（ステップＫ６）。そして、全てのパーツに対して上述のような処理を終了するまで（ステップＫ７）、次のパーツの輪郭の長さを取り出し（ステップＫ８）、以下、ステップＫ４に戻り上述の動作を繰り返す。このようにパーツの輪郭の長さに比例した周波数を加算周波数成分として決定するようにしたから、文字の変形は見た目上振動周期が一定となり、人が描いたような自然なゆらぎを持つことになる。
【００２９】
（第４実施形態）
以下、図２３〜図２５を参照してこの発明の第４実施形態を説明する。この第４実施形態は周波数フォントを構成する周波数成分高位の周波数成分（加算周波数）にその値を変更する所定の変形処理を施してその成分を強めの値に変更すると共に、前記集合体内の対応する高位の周波数成分を前記変形処理された高位の周波数成分に置き換えた変形フォントを生成するようにしたものである。図２３はこの場合の変形処理を示し、加算周波数をサンプリング周波数の近く（例えば、サンプリング周波数／２近辺）に持ってゆき（ステップＬ１）、この加算周波数のＸＹ実数軸部、虚数軸部の値にそれぞれ異なる係数（変形度合定数Ｋ１、Ｋ２、Ｋ３、Ｋ４）を加算する（ステップＬ２）。また、次の加算周波数についてもそれぞれ異なる定数Ｋ５、Ｋ６、Ｋ７、Ｋ８を加算する（Ｌ３、Ｌ４）。ここで、高い周波数成分にそれぞれ異なる値を強めに加算することによって文字全体に激しい振動を持つ動きのある要素を持たせる。図２４はこの場合の変形を説明するための図で、変形前の元字（Ａ参照）に対して変形後の文字は図２４（Ｂ）に示す如く、激しい振動となる。図２５は加算周波数に定数を加算せず、上述した各実施形態で説明したように、低域のＦ１とＦ２の実数軸部分に係数を掛け、これを高い周波数成分の実数軸部分に加算した場合で、これによって振動の位相をＦ１、Ｆ２に合わせることができる。
【００３０】
（第５実施形態）
以下、図２６〜図２８を参照してこの発明の第５実施形態を説明する。なお、上述した各実施形態においては文字の輪郭をサンプリングする際に、文字を構成する要素１画を単位として１画毎にサンプリングするようにしたが、この第５実施形態においては、「国」の字のように最外郭の輪郭「囗」、その内部に存在する輪郭「玉」のような入れ子構造を解析し、入れ子毎に連続する輪郭を単位としてサンプリングを行うようにしたものであり、これによってサンプリングされた単位毎にＦＦＴ処理し、周波数フォントとして登録するようにしたものである。
【００３１】
図２６は第５実施形態における１文字作成処理を示したフローチャートであり、図２７はこの場合の具体例を示した図である。
先ず、１文字分の通常フォント全体を描画すると共に（ステップＭ１）、パーツ数を計数するカウンタ値を「０」とする（ステップＭ２）。ここで、図２７（Ａ）は文字「国」が描画された状態を示し、最初のドット（「囗」の左上角部のドット）をサンプリングし、以下、図６のステップＢ５〜Ｂ１５と同様の処理（ステップＭ４〜Ｍ１４）を実行し、「囗」を１つのパーツとしてＦＦＴ処理して周波数フォント格納部２−３に格納する。そして、処理した輪郭の内部を白く塗ると共に（ステップＭ１５）、それをＲＡＭ２内の作業域に保存する（ステップＭ１６）。図２７（Ｂ）はこれによって保存された矩形の輪郭（最外郭）を示している。次に、ステップＭ１７に進み、パーツ数をプラス「１」したのちステップＭ３に戻る。この場合、輪郭の内部にはドットは存在しないため、ステップＭ１８に進み、保存されている描画結果を呼び戻し、その周囲を黒で塗りつぶすと共に（図２７（Ｃ）参照）、次のステップＭ１９ではこの結果を白黒反転する（図２７（Ｄ）参照）。そして、全部白かを調べるが（ステップＭ２０）、いま、「玉」の近辺は黒であるから、ステップＭ３に戻る。これによって最初のドット有りが検出されるので、以下、ステップＭ４〜Ｍ１４が実行され、１パーツ分のデータが周波数フォント格納部２−３に登録される。そして、いま処理した輪郭の内部を白く塗ると共に（ステップＭ１５）、図２７（Ｅ）に示す矩形の輪郭「囗」の内郭線）が描画結果として保存される（ステップＭ１６）。更に、パーツ数をインクリメントし（ステップＭ１７）、最初のドットを探すが（ステップＭ３）、この場合もステップＭ１８に進み、描画結果の周囲を黒く塗りつぶしたのち白黒を反転する（ステップＭ１９）。これによって図２７（Ｆ）に示すように「玉」の部分のみが黒くなる。そして、ステップＭ３に戻り、ステップＭ４〜Ｍ１７が実行されるが、この場合、「王」の部分が１パーツ分のデータとして処理され（図２７（Ｇ）参照）、続けてステップＭ４〜Ｍ１７が実行され、「点」の部分が１パーツ分のデータとして処理される（図２７（Ｈ）参照）。したがって、「王」の部分と「点」の部分がそれぞれ別パーツとして登録される。このような処理が終ると、図２７（Ｉ）に示すように全部白となるので、ステップＭ２１に進み、パーツ数が周波数フォント格納部２−３に登録される。
このような処理は「国」の字に限らず、全ての文字についても同様であるが、「十」の文字については、内部に白抜き部分を持たないので、最外郭を処理すれば、図２６のフローチャートはその時点で終了となる。これによって生成された周波数フォントに基づいてそれを変形する場合には、上述したようにこの周波数フォントにローパスフィルタをかけることによって変形フォントを生成すれば、図２８に示す如く、「十」の文字の交点部分に“にじみ”が生まれる。すなわち、図２８（Ａ）は「十」の文字を上述した他の実施形態のように１画毎に部品としてサンプリングした場合の周波数フォントに対し、その高域周波数成分をカットした場合の変形文字を示し、図２８（Ｂ）はこの第５実施形態の変形例を示し、１文字全体を１部品とすることによって交点部分はなめらかに接続され、人が毛筆で描いたような「墨だまり」が発生する。
【００３２】
（第６実施形態）
以下、図２９、図３０を参照してこの発明の第６実施形態を説明する。この第６実施形態は周波数フォントを構成する周波数成分の集合体のうち高位の周波数成分（加算周波数）にその値を変更する所定の変形処理を施してその成分の値を強めの値に変更すると共に、前記集合体内の対応する高位の周波数成分を前記変形処理された高位の周波数成分に置き換えた変形フォントを生成するようにしたものである。図２９はこの場合の変形処理を示したフローチャートで、ステップＮ１では加算周波数をサンプリング周波数の半分近くの高位の周波数とし、それに、Ｆ１とＦ２の値を反映させるために、Ｆ１、Ｆ２の平均値を加算周波数成分に加算する（ステップＮ２、Ｎ３）。
図３０はこの場合の変形を説明するための図で、（Ａ）に示す元字に対し、この第６実施形態では、半紙に黒がにじんだような変形効果が得られる（図３０（Ｂ）参照）。
【００３３】
（第７実施形態）
以下、図３１、図３２を参照してこの発明の第７実施形態を説明する。この第７実施形態は、周波数フォントを構成する周波数成分の集合体のうち最も近い周波数成分にその値を変更する所定の変形処理を施してその虚数軸部分の値を定数倍した値に変更すると共に、前記集合体内の対応する最低周波数成分を前記変形処理された最低周波数成分に置き換えた変形フォントを生成することによって太さを変えるようにしたものである。図３１はこの場合の変形処理を示したもので、Ｆ１の実数軸部分に定数Ｋ１を掛けて定数倍する（ステップＰ１）。この場合、サンプリング開始を文字の書き始めあるいは書き終りとしたので、最低周波数成分の虚数データを定数倍したが、このようなサンプリングではない場合には、実数軸部分のデータを定数倍すればよい。また、１画であってもパーツの単位を直線を基本とした連続する筆運び毎（直線）毎とすれば、太の制御が最も容易となるが、パーツを１画毎例えば、「九」の右側の１画を１パーツとしているため、この第７実施形態においては最低周波数（Ｆ１）の次の周波数（Ｆ２）についてもステップＰ１と同様の加算処理を行うようにしている（ステップＰ２）。このＦ２は文字の形状を支配するベースとなるからである。図３２（Ａ）は元字、（Ｂ）は太さを変えた変形例を示し、その左側は定数＞１とすることで太く変形した場合、右側は定数＜１とすることで細く変形した場合である。
【００３４】
（第８実施形態）
以下、図３２、図３３を参照してこの発明の第８実施形態を説明する。この第８実施形態は周波数フォントを構成する周波数成分の集合体のうち最も低い周波数成分にその値を変更する所定の変形処理を施してその実数軸部分の値を定数倍することで、文字の勢いを変えるようにしたものである。図３３はこの場合の変形処理を示したもので、Ｆ１の虚数軸部分はそのままとし、その実数軸部分に定数Ｋ１を掛けて定数倍する（ステップＱ１）。この場合、サンプリング開始を文字の書き始めあるいは書き終りとしたので、最低周波数成分の実数データを定数倍としたが、このようなサンプリングではない場合には虚数軸部分のデータを定数倍すればよい。また、第７実施形態と同様に、１画であってもパーツの単位を直線を基本とした連続する筆運び毎（直線毎）とすれば、勢いの制御が最も容易となるが、パーツを例えば、「九」の右側の１画を１パーツとしているため、この第８実施形態においても最低周波数（Ｆ１）の次の周波数（Ｆ２）についてもステップＱ１と同様の加算処理を行うようにしている（ステップＱ２）。図３２（Ａ）は元字、（Ｃ）は勢いを変えた変形例を示し、その左側は定数＞１とすることで、勢いを強く自由奔放な印象を与える変形となり、右側は定数＜１とすることで、おとなしい印象を与える変形となる。なお、図３３の変形処理によって変化するのは、フォントの長手方向の大きさであり、それを構成する個々のパーツが大きいと勢いを強く感じ、小さいと勢いが弱く感じるようになるからである。
【００３５】
（第９実施形態）
以下、図３４、図３５を参照してこの発明の第９実施形態を説明する。この第９実施形態は周波数フォントを構成する周波数成分の集合体のうち中位の周波数成分にその値を変更する所定の変形処理を施してＸ方向の実数軸部分の値から一定値を減算し（極性を反転し）、他は一定値を加算し、前記集合体内の対応する中位の周波数成分を前記変形処理された中位の周波数成分に置き換えた変形フォントを生成することで、文字全体に雲のような輪郭を与えるようにしたものである。図３４はこの場合の変形処理を示したフローチャートであり、加算周波数として中位（２π×４０〜５０程度）の周波数を決定し（ステップＲ１）、そのＸ方向の実数軸部分の値に一定値Ｋ１を減算し、他は一定値Ｋ１を加算する（ステップＲ２）。この場合、実数軸部分の値のみを減算するようにしたのは、サンプリング動作が上述したように時計回りであるからで、反時計回りにサンプリングを行ったものとすると、Ｙ方向の虚数軸部分のデータのみを減算すればよい。また、このような変形処理を行う際には、変形処理される周波数成分を文字を構成する各要素毎にその長さに応じて決定し、決定された周波数に対して所定の変形処理をそれぞれ施すことにより文字の各構成要素毎に文字の輪郭に表われる振動の回数を見た目上揃えることができる。このような最適化処理は図２２のフローチャートと基本的に同様であるためその説明は省略する。図３５はこの場合の変形例を示し、（Ａ）は変形前、（Ｂ）は変形後、（Ｃ）は変形後塗りつぶしを行った場合であり、各パーツの輪郭にはサイクロイド曲線が表われ、雲のような変形が得られる。ここで、図３４のフローチャートでは更に他の中程度の周波数成分を加算周波数として決定し（ステップＲ３）、そのＸ方向の実数軸部分の値は一定値の減算、他は加算するようにしている（ステップＲ４）。これによって周期が異なる２種類のサイクロイド曲線が表われ、更に複雑な変形となる。
【００３６】
（第１０実施形態）
以下、図３６〜図３８を参照してこの発明の第１０実施形態を説明する。この第１０実施形態は第９実施形態と基本的には同様であるが、この第１０実施形態では逆サイクロイド曲線を各輪郭に表現することで、ひいらぎの葉のような変形を行うものである。図３６はこの場合の変形処理を示したフローチャートであり、中位の周波数成分を加算周波数とするが（ステップＳ１）、そのＸ方向の虚数軸部分の値から一定値を減算し（極性を反転し）他は加算する（ステップＳ２）。また、他の中位の周波数を加算周波数成分として決定し（ステップＳ３）、そのＸ方向の虚数軸部分は一定値を減算し、他は加算する（ステップＳ４）。なお、サンプリング方向に応じてＹ方向の実数軸部分を減算し、他を加算するようにしてもよいことは第９実施形態と同様である。
図３７はこの場合の変形例を示し、（Ａ）に示す文字に対し（Ｂ）は一定周波数に加算処理を行った場合で、各パーツの輪郭線の長さによって逆サイクロイド曲線の周期が変わる。（Ｃ）は各パーツの輪郭の長さに応じて加算周波数を決定するようにしたもので、この場合、加算周波数を基本周波数、その２倍の周波数、４倍の周波数の３種類とした場合であり、各パーツの輪郭の長さに応じて振動の周期は見た目上一定に近くなる。更に、図２２のフローチャートにしたがった最適化処理を行えば見た目上の周期はより一定に近づく。図３８はこの場合の変形例を示し、（Ａ）は元字前、（Ｂ）は変形後、（Ｃ）は変形後、塗りつぶしを行った場合である。
なお、上述した各実施形態の変形例に限らず、それらを組み合せた変形等、自由な変形も可能である。
【００３７】
【発明の効果】
この発明によれば、文字の輪郭を離散的な空間周波数成分の集合体で表現して成る周波数フォントを通常の文字フォントを用いて生成する周波数フォント生成機能と、この周波数フォントに基づいて文字の輪郭を変形した変形フォントを生成する変形フォント生成機能を単に組み込むだけで、データ量の増大を抑えながら、文字の基本輪郭を大幅に変更したり、文字の形状を多彩な表現で自由に変形することができ、ワードプロッサ等に容易に適用することが可能となる効果を奏する。
【図面の簡単な説明】
【図１】（Ａ）は文書データ処理装置の全体構成を示したブロック図、（Ｂ）はＲＡＭ２の主要構成を示した図。
【図２】周波数フォント格納部２−３の構成を示すと共に周波数フォントを構成する各周波数成分毎に複素平面上における実数部と虚数部に分けてその大きさを表わしたデータ構造を示した図。
【図３】通常フォントの輪郭をパーツ毎にサンプリングすると共にＦＦＴ処理して周波数フォントを生成して周波数フォント格納部２−３に登録するまでの過程を示した図。
【図４】周波数フォントを構成する各周波数成分毎に、その値を振幅および位相成分で表わした他のデータ構造を示した図。
【図５】変形文字列出力時における全体動作を示したフローチャート。
【図６】図５のステップＡ３（１文字作成処理）を詳述したフローチャート。
【図７】図５のステップＡ４（フォント変形処理）を詳述したフローチャート。
【図８】図７のステップＣ２（変形フォント格納部へのコピー処理）を詳述したフローチャート。
【図９】図７のステップＣ３（データ加算処理）を詳述したフローチャート。
【図１０】図５のステップＡ５（１文字印刷展開処理）を示したフローチャート。
【図１１】（Ａ）〜（Ｃ）は１パーツ分描画されたビットマップ上をその輪郭を辿ってサンプリングする場合の動作を説明するための図。
【図１２】１文字をパーツ毎に分解してＦＦＴ処理される様子を示すと共に、ＦＦＴ処理することによって得られた実数部分の値と虚数部分の値を周波数軸上に離散的に分布された周波数分布図を示した図。
【図１３】周波数フォントを構成する各パーツの具体的な数値を示すと共に、どのパーツがどのデータに対応しているかの対応関係を示した図。
【図１４】周波数フォントをＩＦＦＴ処理して文字印刷するまでの過程を示した図。
【図１５】第２実施形態におけるフォント変形処理を示したフローチャート。
【図１６】（Ａ）〜（Ｅ）は図１５の変形処理によって得られる変形例を説明するための図。
【図１７】第２実施形態において他の例を説明するための図で、（Ａ）はこの場合における周波数フォントのデータ構造を示し、（Ｂ）はその変形例を説明するための図。
【図１８】第２実施形態において更に他の例におけるフォント変形処理を示したフローチャート。
【図１９】（Ａ）〜（Ｃ）は図１８の変形処理によって得られる変形例を説明するための図。
【図２０】第３実施形態におけるフォント変形処理を示したフローチャート。
【図２１】（Ａ）〜（Ｃ）は図２０の変形処理によって得られる変形例を説明するための図。
【図２２】第３実施形態における他の例のフォント変形処理を示したフローチャート。
【図２３】第４実施形態におけるフォント変形処理を示したフローチャート。
【図２４】（Ａ）、（Ｂ）は図２３の変形処理によって得られる変形例を説明するための図。
【図２５】（Ａ）、（Ｂ）は第４実施形態における他の例のフォント変形処理によって得られる変形例を説明するための図。
【図２６】第５実施形態における１文字作成処理を詳述したフローチャート。
【図２７】図２６の作成処理をその処理過程順に具体的に説明するための図。
【図２８】（Ａ）、（Ｂ）は図２６の作成処理後、フォント変形処理を行うことによって得られる変形例を説明するための図。
【図２９】第６実施形態におけるフォント変形処理を示したフローチャート。
【図３０】（Ａ）、（Ｂ）は図２９の変形処理によって得られる変形例を説明するための図。
【図３１】第７実施形態におけるフォント変形処理を示したフローチャート。
【図３２】（Ａ）は元字、（Ｂ）は第７実施形態の変形例を示した図、（Ｃ）は第８実施形態の変形例を示した図。
【図３３】第８実施形態におけるフォント変形処理を示したフローチャート。
【図３４】第９実施形態におけるフォント変形処理を示したフローチャート。
【図３５】（Ａ）〜（Ｃ）は第９実施形態における変形例を説明するための図。
【図３６】第１０実施形態におけるフォント変形処理を示したフローチャート。
【図３７】（Ａ）〜（Ｃ）は第１０実施形態における変形例を説明するための図。
【図３８】（Ａ）〜（Ｃ）は第１０実施形態において、他のフォント変形処理によって得られる変形例を説明するための図。
【符号の説明】
１  ＣＰＵ
２  ＲＡＭ
２−１  文字列格納部
２−２  周波数変換ワーク部
２−３  周波数フォント格納部
２−４  変形フォント格納部
２−５  印刷バッファ
３  記憶装置
３−１  通常フォント格納部
４  記憶媒体
５  入力装置
６  表示装置
７  印刷装置
【図１】
0003567748.tif 000002
【図２】
0003567748.tif 000003
【図３】
0003567748.tif 000004
【図４】
0003567748.tif 000005
【図５】
0003567748.tif 000006
【図６】
0003567748.tif 000007
【図７】
0003567748.tif 000008
【図８】
0003567748.tif 000009
【図９】
0003567748.tif 000010
【図１０】
0003567748.tif 000011
【図１１】
0003567748.tif 000012
【図１２】
0003567748.tif 000013
【図１３】
0003567748.tif 000014
【図１４】
0003567748.tif 000015
【図１５】
0003567748.tif 000016
【図１６】
0003567748.tif 000017
【図１７】
0003567748.tif 000018
【図１８】
0003567748.tif 000019
【図１９】
0003567748.tif 000020
【図２０】
0003567748.tif 000021
【図２１】
0003567748.tif 000022
【図２２】
0003567748.tif 000023
【図２３】
0003567748.tif 000024
【図２４】
0003567748.tif 000025
【図２５】
0003567748.tif 000026
【図２６】
0003567748.tif 000027
【図２７】
0003567748.tif 000028
【図２８】
0003567748.tif 000029
【図２９】
0003567748.tif 000030
【図３０】
0003567748.tif 000031
【図３１】
0003567748.tif 000032
【図３２】
0003567748.tif 000033
【図３３】
0003567748.tif 000034
【図３４】
0003567748.tif 000035
【図３５】
0003567748.tif 000036
【図３６】
0003567748.tif 000037
【図３７】
0003567748.tif 000038
【図３８】
0003567748.tif 000039