(57)【特許請求の範囲】
【請求項１】
ストロークを組み合わせて文字パターンを生成する文字生成装置であって、
第１の水平ストロークと第２の垂直ストロークとの重なり部分に、はみ出しが存在するか否かを判定する判定手段と、
前記判定手段により、はみ出しが存在すると判定された場合、第１の水平ストロークを構成する線分、及び第２の垂直ストロークを構成する線分より交点を求め、求めた交点を第１の水平ストロークのコントロールポイントまたは第２の垂直ストロークのコントロールポイントの新たなコントロールポイントとするようにストロークを表す文字データを修正する修正手段と、
前記修正手段により修正された文字データに基づき文字パターンを生成する生成手段とを有することを特徴とする文字生成装置。
【請求項２】
ストロークを組み合わせて文字パターンを生成する文字生成装置であって、
第１の水平ストロークと第２の水平ストロークとの重なり部分に、欠けが存在するか否かを判定する判定手段と、
前記判定手段により、欠けが存在すると判定された場合、第１の水平ストロークを構成する線分、及び第２の垂直ストロークを構成する各線分より交点を求め、求めた交点を第２の垂直ストロークのコントロールポイントの新たなコントロールポイントとするようにストロークを表す文字データを修正する修正手段と、
前記修正手段により修正された文字データに基づき文字パターンを生成する生成手段とを有することを特徴とする文字生成装置。
【請求項３】
前記文字データは、ベクトル形式で記憶され、ストロークの数を特定する情報、ストロークを特定する情報、ストロークを配置する座標情報、ストロークの幅情報を含むことを特徴とする請求項１、または２記載の文字生成装置。
【請求項４】
前記修正手段は、はみ出し量が所定の値より大きい場合、ストロークを表す文字データを修正することを特徴とする請求項１記載の文字生成装置。
【請求項５】
前記生成手段により生成された文字パターンを出力する出力手段を有することを特徴とする請求項１、または２記載の文字生成装置。
【請求項６】
前記出力手段は、プリンタ、或は、ディスプレイを含むことを特徴とする請求項５記載の文字生成装置。
【請求項７】
前記文字パターンの書体はゴシック系書体であることを特徴とする請求項１、または２記載の文字生成装置。
【請求項８】
前記修正手段は、第１のストロークを構成する線分、及び第２のストロークを構成する線分より直線式を導出し連立方程式を解くことにより、交点を求め、求めた交点を新たなコントロールポイントとするようにストロークを表す文字データを修正することを特徴とする請求項１、または２記載の文字生成装置。
【請求項９】
ストロークを組み合わせて文字パターンを生成する文字生成方法であって、
第１の水平ストロークと第２の垂直ストロークとの重なり部分に、はみ出しが存在するか否かを判定する判定工程と、
前記判定工程により、はみ出しが存在すると判定された場合、第１の水平ストロークを構成する線分、及び第２の垂直ストロークを構成する線分より交点を求め、求めた交点を第１の水平ストロークのコントロールポイントまたは第２の垂直ストロークのコントロールポイントの新たなコントロールポイントとするようにストロークを表す文字データを修正する修正工程と、
前記修正工程により修正された文字データに基づき文字パターンを生成する生成工程とを有することを特徴とする文字生成方法。
【請求項１０】
ストロークを組み合わせて文字パターンを生成する文字生成方法であって、
第１の水平ストロークと第２の垂直ストロークとの重なり部分に、欠けが存在するか否かを判定する判定工程と、
前記判定工程により、欠けが存在すると判定された場合、第１の水平ストロークを構成する線分、及び第２の垂直ストロークを構成する線分より交点を求め、求めた交点を第２の垂直ストロークのコントロールポイントの新たなコントロールポイントとするようにストロークを表す文字データを修正する修正工程と、
前記修正工程により修正された文字データに基づき文字パターンを生成する生成工程とを有することを特徴とする文字生成方法。
【請求項１１】
前記文字データは、ベクトル形式で記憶され、ストロークの数を特定する情報、ストロークを特定する情報、ストロークを配置する座標情報、ストロークの幅情報を含むことを特徴とする請求項９、または１０記載の文字生成方法。
【請求項１２】
前記修正工程は、はみ出し量が所定の値より大きい場合、ストロークを表す文字データを修正することを特徴とする請求項９記載の文字生成方法。
【請求項１３】
前記文字パターンの書体はゴシック系書体であることを特徴とする請求項９、または１０記載の文字生成方法。
【請求項１４】
前記修正工程は、第１のストロークを構成する線分、及び第２のストロークを構成する線分より直線式を導出し連立方程式を解くことにより、交点を求め、求めた交点を新たなコントロールポイントとするようにストロークを表す文字データを修正することを特徴とする請求項９、または１０記載の文字生成方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
ストロークを組み合わせて文字パターンを生成する生成装置及び方法に関する。
【０００２】
【従来の技術】
従来、フォントデータ容量を削減するためフォントを、文字構成要素（以後ストローク）を最小単位とするエレメントに分割し記憶し、それらを組み合わせて文字を生成するストローク合成フォント方式が用いられてきた。しかし、合成する際の処理に於て演算誤差やデータ作成時のミス等によりストロークの重なり部分にはみ出しや欠けが発生し、文字品位が落ちるという問題がある。
【０００３】
【発明が解決しようとしている課題】
本発明の目的は、フォントデータを削減するためフォントデータを、ストロークを最小単位とするエレメントに分割し記憶し、それらを組み合わせて文字を生成する文字生成装置及び方法であって、ストローク同士の重なり部分に発生するはみ出しや欠けを補正する事により文字品位の大幅な向上を可能とする、文字生成装置及び方法を提供することにある。
【０００４】
【課題を解決するための手段】
上記目的を達成するために本発明の文字生成装置は、
ストロークを組み合わせて文字パターンを生成する文字生成装置であって、
第１の水平ストロークと第２の垂直ストロークとの重なり部分に、はみ出しが存在するか否かを判定する判定手段と、
前記判定手段により、はみ出しが存在すると判定された場合、第１の水平ストロークを構成する線分、及び第２の垂直ストロークを構成する線分より交点を求め、求めた交点を第１の水平ストロークのコントロールポイントまたは第２の垂直ストロークのコントロールポイントの新たなコントロールポイントとするようにストロークを表す文字データを修正する修正手段と、
前記修正手段により修正された文字データに基づき文字パターンを生成する生成手段とを有することを特徴とする。
また、ストロークを組み合わせて文字パターンを生成する文字生成装置であって、
第１の水平ストロークと第２の垂直ストロークとの重なり部分に、欠けが存在するか否かを判定する判定手段と、
前記判定手段により、欠けが存在すると判定された場合、第１の水平ストロークを構成する線分、及び第２の垂直ストロークを構成する線分より交点を求め、求めた交点を第２の垂直ストロークのコントロールポイントの新たなコントロールポイントとするようにストロークを表す文字データを修正する修正手段と、
前記修正手段により修正された文字データに基づき文字パターンを生成する生成手段とを有することを特徴とする。
【０００５】
また、本発明の文字生成方法は、
ストロークを組み合わせて文字パターンを生成する文字生成方法であって、
第１の水平ストロークと第２の垂直ストロークとの重なり部分に、はみ出しが存在するか否かを判定する判定工程と、
前記判定工程により、はみ出しが存在すると判定された場合、第１の水平ストロークを構成する線分、及び第２の垂直ストロークを構成する線分より交点を求め、求めた交点を第１の水平ストロークのコントロールポイントまたは第２の垂直ストロークのコントロールポイントの新たなコントロールポイントとするようにストロークを表す文字データを修正する修正工程と、
前記修正工程により修正された文字データに基づき文字パターンを生成する生成工程とを有することを特徴とする。
ストロークを組み合わせて文字パターンを生成する文字生成方法であって、
第１の水平ストロークと第２の垂直ストロークとの重なり部分に、欠けが存在するか否かを判定する判定工程と、
前記判定工程により、欠けが存在すると判定された場合、第１の水平ストロークを構成する線分、及び第２の垂直ストロークを構成する線分より交点を求め、求めた交点を第２の垂直ストロークのコントロールポイントの新たなコントロールポイントとするようにストロークを表す文字データを修正する修正工程と、
前記修正工程により修正された文字データに基づき文字パターンを生成する生成工程とを有することを特徴とする。
【０００７】
【実施例】
次に本発明の実施例について説明する。
【０００８】
なお、本発明は複数の機器からなるシステムにおいて達成されても良く、１つの機器からなる装置に置いて達成されても良い。また、システムあるいは装置にプログラムを供給することにより、本発明が達成される場合にも適用されることは言うまでもない。
【０００９】
図１は本発明にかかる本システムの基本的な構成を示すブロック図である。本システムは日本語ワードプロセッサであっても良いし、プリンタ単体、ワークステーションあるいはコンピュータシステムであっても良い。図１においては１はＣＰＵ、即ち中央処理装置であり、このシステム全体の制御及び演算処理などを行うものである。２はＲＯＭ即ち読み出し専用メモリであり、後述するフローチャートに係るプログラム、システム起動プログラム及び文字フォント・データなどの記憶領域である。３はＲＡＭ即ちランダムアクセスメモリであり、使用制限のないデータ記憶領域であり、様々な処理毎に各々のプログラム及びデータがロードされ、実行される領域である。４はＫＢＣ即ちキーボード制御部であり、５のＫＢ即ちキーボードよりキー入力データを受け取りＣＰＵ１へ伝達する。６はＣＲＴＣ即ちディスプレイ制御部であり、７はＣＲＴ即ちディスプレイ装置であり、６のＣＲＴＣよりデータを受け取り表示する。９はＦＤ即ちフロッピーディスク装置あるいはＨＤ即ちハードディスク装置などの外部記憶装置であり、プログラム及びデータを記憶させておき、実行時必要に応じて参照またはＲＡＭへロードする。８はＤＫＣ即ちディスク制御部であり、データ伝送などの制御を行うものであり、１０はＰＲＴＣ即ちプリンタ制御部であり、１１はＰＲＴ即ちインクジェットやレーザービームプリンタ等のプリンタ装置である。１２はシステムバスであり、上述の構成要素間のデータの通路となるべきものである。
【００１０】
なお、本発明は、ディスプレイ、プリンタ一体型の装置、または、ディスプレイ、プリンタ単体の装置に適応できる。
【００１１】
以上の構成からなる本実施例の動作を図２のフローチャートを用いて説明する。
【００１２】
なお、本実施例に係るシステムにおいて用いるストローク合成フォント方式とは、図３に示されるように、その文字の骨格となる横棒、縦棒といった基本文字形成要素とその始点、終点部に局部輪郭を組み合わせることによりストロークを形成し、ストロークを組み合わせることにより文字を構成するものである。もちろん、基本文字形成要素のみでストロークを構成することも可能である。ストロークの形成を規定するデータは、図４に示すようにストロークの芯線を直線により表し、輪郭をそこからの距離で表現する「芯線＋太さ」型であり、各ストロークは、幅情報（以後ウェイト情報）を持ち、本特許の適用書体は基本文字構成要素が、矩形となるゴシック系の書体である。ゴシック系の書体はストロークの端部に飾りがないため端部のはみ出しや欠けが特に目立つため本処理を適用すると特に有効であるが、明朝体等の他の書体に対しても適用できる。
【００１３】
また、各ストロークには、ストロークＩＤが割り振られており、各文字コードに１対１に対応したストローク組み合わせ情報には、その文字を合成するためのストロークＩＤ及びストローク配置情報が記憶されており、それを用いてストロークの合成を行う。
【００１４】
図２は、本実施例に係るシステムの基本動作手順を示すフローチャートである。
【００１５】
同図のステップ２−１は、ストローク組み合わせ情報登録処理であり、ＣＰＵ１が、ＲＯＭ２、または、外部記憶装置に記憶されている複数のフォントファイルよりストローク組み合わせ情報を読みだしＲＡＭ３上にセットする。
【００１６】
ステップ２−２は、文字情報選択処理であり書体、文字コード、文字サイズ、ウェイト情報より、読み出すべきストローク組み合わせ情報を決定する。
【００１７】
ステップ２−３は、ストローク組み合わせ情報読み出し処理でありＲＡＭ３上にあるストローク組み合わせ情報より、決定された組み合わせ情報を読み出す。
【００１８】
ステップ２−４は文字生成処理でありストローク組み合わせ情報により文字をＲＡＭ３のワークエリアに生成し文字データをＲＡＭ３の出力バッファにセットする。図５はストローク組み合わせ情報の構造を示した図であり、要素としてＳＴＲＯＫＥ＿ＣＯＵＮＴはフォントを構成するストローク数を示し、ＳＴＲＯＫＥ＿ＳＴ、ＳＴＲＯＫＥ＿ＥＮＤ、ＳＴＲＯＫＥ＿Ｗｅｉｇｈｔはフォントデザイン座標系（本発明では、８００＊８００とする）でのストロークの芯線の両端点を基準とした配置座標、幅情報を示し、ストロークＩＤよりストロークデータを検索することにより各ストロークのストロークデザイン座標系での大きさＤ＿ＳＴＲＯＫＥ＿ＳＩＺＥ、ウェイト情報Ｄ＿ＳＴＲＯＫＥ＿Ｗｅｉｇｈｔ、制御点データＤ＿ＳＴＲＯＫＥ＿ＰＯＩＮＴ〔  〕を読み出す。
【００１９】
図６は文字生成処理を示すフローであり、ステップ６−１は、文字展開終了判定処理であり、展開を終了したストローク数とＳＴＲＯＫＥ＿ＣＯＵＮＴとの比較を行い、全ストロークの展開が終了していなければステップ６−２に、終了していなければステップ２−５に進む。
【００２０】
ステップ６−２は、配置座標算出処理であり、文字出力座標系でのストローク配置座標０＿ＳＴＲＯＫＥ＿ＳＴ、０＿ＳＴＲＯＫＥ＿ＥＮを、０＿ＳＴＲＯＫＥ＿ＳＴ＝ＳＴＲＯＫＥ＿ＳＴ  Ｘ（ＯＵＴ＿ＳＩＺＥ／８００）で求める。
【００２１】
ステップ６−３は、制御点データスケール変換処理であり、Ｓｃａｌｅ＝ａｂｓ（０＿ＳＴＲＯＫＥ＿ＳＴ−０＿ＳＴＲＯＫＥ＿ＥＮ）／ａｂｓ（Ｄ＿ＳＴＲＯＫＥ＿ＳＴ−Ｄ＿ＳＴＲＯＫＥ＿ＥＮ）
によりスケールを求め、ＳｃａｌｅＸ  Ｄ＿ＳＴＲＯＫＥ＿ＰＯＩＮＴ〔  〕によりストロークのスケール変換を行い０＿ＳＴＲＯＫＥ＿ＰＯＩＮＴ〔  〕にセットする。
【００２２】
ステップ６−４は、ストロークウェイト情報調整処理であり、文字出力座標でのウェイトを０−Ｗｅｉｇｈｔとすると、Ｗｅｉｇｈｔ＿Ｓｃａｌｅ＝０−Ｗｅｉｇｈｔ／Ｄ  ＳＴＲＯＫＥ  Ｗｅｉｇｈｔよりウェイト変換スケールを求め、ストロークのウェイトを調整を、０＿ＳＴＲＯＫＥ＿ＰＯＩＮＴ〔  〕に施す。
【００２３】
ステップ６−５は、ストロークはみだし補正処理である。
【００２４】
図７はストロークはみだし補正処理を示すフローであり、ステップ７−１、７−２は、ストローク領域判定処理であり、水平ストロークに垂直ストロークを重ねる場合、図８における水平ストロークＡの基本文字構成要素を構成する制御点Ａ１、Ａ２、Ａ３、Ａ４に対して垂直ストロークＢの基本文字構成要素を構成する４点、Ｂ１，Ｂ２，Ｂ３，Ｂ４のＹ座標Ｂ１．ｙ，Ｂ２．ｙに対して第１次領域判定を行い、Ｂ２．ｙ＜Ａ２．ｙ＜Ａ３．ｙ＜Ｂ１．ｙ…（条件１）の条件を満たしていた場合、第２次判定としてＸ座標に対して、ストロークＡの基本文字構成要素Ａ１，Ａ２，Ａ３，Ａ４のＸ座標Ａ１．ｘ，Ａ２．ｘ、ストロークＢの基本文字構成要素を構成する制御点Ｂ１，Ｂ２，Ｂ３，Ｂ４のＸ座標Ｂ２．ｘ、Ｂ３．ｘに対して、Ａｌ．ｘ＜Ｂ２．ｘ＜Ｂ３．ｘ＜Ａ２．ｘ…（条件２）により条件１、２の両者を満たしていた場合ストローク同士の重なりありとして判定する。
【００２５】
ここで、ストロークの重なりが確認されたら、ステップ７−３の、ストロークのはみ出し量判定処理に進む。
【００２６】
ストロークのはみ出し量は前ステップで用いた座標を用いて垂直方向においては、Ａ２．ｙ−Ｂ３．ｙ及びＢ４．ｙ−Ａ３．ｙにより求め、水平方向においては、Ａ２．ｘ−Ｂ３．ｘ及びＢ２．ｘ−Ａ１．ｘにより求める。
【００２７】
ここで、はみ出し量（図８における斜線部）が規定以上であった場合、それをストロークのはみ出しとして判定する。
【００２８】
ステップ７−４は、はみ出し部削除処理であり、図８に於けるストロークのはみ出しストロークを構成する線分Ａ−１２，Ａ−３４，Ｂ−１２，Ｂ−３４より直線式を導出し連立方程式を解くことにより、交点Ａ、Ｂ、Ｃを求め、その点を新たなコントロールポイントとすることによりストロークのはみ出し部分を削除する（図９）。
【００２９】
これにより、特別な座標データを持たずにストロークのはみ出しを補正でき高品位なストロークフォントの出力が可能となる。もちろん、ストローク領域の判定処理の変わりにストロークの重なりが発生するストロークに対してフラグを付加し本処理を用いても本発明が有効なのは言うまでもない。
【００３０】
ステップ６−６は、ストロークを出力バッファにセットする処理である。もちろん、全ストロークを展開後、文字データとしてＲＡＭ３の出力バッファにセットしても良い。
【００３１】
係るシステムの基本動作は、上述の処理を経てステップ２−５、つまり、生成したビットマップデータをＲＡＭ３の出力バッファにセットし、ＣＲＴ１０６やＰＲＴ１１０に所定の文字出力を行う。
【００３２】
以上説明したように、本実施例によれば、ストローク合成文字生成方式におけるストローク同士のはみ出しを防ぐことが可能となり文字品位の大幅な向上が可能である。また、本発明はフォント部首（以後ラディカル）、ラディカルを構成するストロークといった階層構造を用いて記憶しデータの圧縮性を一層高めたシステムにおいても有効なのは言うまでもない。
【００３３】
（他の実施例２）
次に、本発明の第２の実施例について述べる。
【００３４】
ここで扱うのは、ストローク同士の重なりに部分に発生する欠けを補正する処理である。
【００３５】
本実施例では、前記実施例におけるステップ６−５のストロークのはみ出し補正処理に対しストロークの欠け処理ステップを入れ替えることにより、ストロークの欠け補正を行う方法について説明する。
【００３６】
図１０はストロークはみ出し補正処理を示すフローであり、ステップ１０−１、１０−２は、ストローク領域判定処理であり、水平ストロークに垂直ストロークを重ねる場合、図１１における水平ストロークＡの基本文字構成要素を構成する制御点Ａ１，Ａ２，Ａ３，Ａ４に対して垂直ストロークＢの基本文字構成要素を構成する４点、Ｂ１，Ｂ２，Ｂ３，Ｂ４のＹ座標Ｂ１．ｙ，Ｂ２．ｙに対して第１次領域判定を行いＡ２．ｙ＜Ｂ２．ｙ＜Ａ３．ｙ＜Ｂ１．ｙ…（条件１）Ｂ２．ｙ＜Ａ２．ｙ＜Ｂ１．ｙ＜Ａ３．ｙ…（条件２）の条件を満たしていた場合、第２次判定としてＸ座標に対して、ストロークＡの基本文字構成要素Ａ１，Ａ２，Ａ３，Ａ４のＸ座標Ａ１．ｘ，Ａ２．ｘ、ストロークＢの基本文字構成要素を構成する制御点Ｂ１，Ｂ２，Ｂ３，Ｂ４のＸ座標Ｂ２．ｘ，Ｂ３．ｘに対してＡ１．ｘ＜Ｂ２．ｘ＜Ａ２．ｘ＜Ｂ３．ｘ…（条件３）Ｂ２．ｘ＜Ａ１．ｘ＜Ｂ３．ｘ＜Ａ２．ｘ…（条件４）により条件１と３、条件１と４、条件２と３、条件２と４、の何れかを満たしていた場合ストローク同士の欠けありとして判定する。
【００３７】
ステップ１０−３は、欠け部補正処理であり、図１１に於けるストロークの欠けを構成する線分Ａ−１２，Ａ−３４，Ｂ−１２，Ｂ−３４より直線式を導出し連立方程式を解くことにより、交点Ｄ，Ｅを求め、その点を新たなコントロールポイントとすることによりストロークの欠け部分を補正する（図１２）。
【００３８】
これにより、特別な座標データを持たずにストロークの欠けを補正でき高品位なストロークフォントの出力が可能となる。もちろん、ストロークの欠け判定処理の変わりにストロークの欠けが発生するストロークに対してフラグを付加し本処理を用いても本発明が有効なのは言うまでもない。
【００３９】
また、欠け部分に対し円弧等の所定の形状により補正することにより、書体に適した補正がおこなえる。
【００４０】
また、重なり部分の状態に応じてストロークはみ出し部補正処理とストローク欠け部補正処理とを行うようにしてもよい。
【００４１】
また、本実施例における処理は文字出力時に行ってもよいが、フォントデータを作成するエディタに適応すると特に有効である。
【００４２】
【発明の効果】
以上説明したように、本発明によれば、フォントデータ要領を削減するためフォントを、文字構成要素（以後ストローク）を最小単位とするエレメントに分割し記憶し、それらを組み合わせて文字を生成するストローク合成フォント方式において、文字生成過程にストロークはみ出し補正処理を設けることにより特別な補正データを持たずにストロークのはみ出し補正が可能となり、また、ストロークはみ出し補正処理のかわりに欠け補正処理を用いることによりストロークの欠けについても対応でき、文字品位の大幅な向上が可能となる。
【図面の簡単な説明】
【図１】本発明の実施例に係るシステムの構成を示すブロック図である。
【図２】実施例に係るシステムでの基本動作を示すフローチャートを示す図である。
【図３】基本文字構成要素、局部輪郭データを規定する図である。
【図４】ストロークデータを規定する図である。
【図５】ストローク配置データを規定する図である。
【図６】ストローク生成動作を示すフローチャートを示す図である。
【図７】ストロークはみ出し補正を示すフローチャートを示す図である。
【図８】ストロークのはみ出しを示す図である。
【図９】ストロークはみ出し補正の効果を示す図である。
【図１０】ストローク欠け補正を示すフローチャートを示す図である。
【図１１】ストロークの欠けを示す図である。
【図１２】ストローク欠け補正の効果を示す図である。
【符号の説明】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  ＫＢＣ
５  キーボード
６  ＣＲＴＣ
７  ＣＲＴ
８  ＤＫＣ
９  外部記憶装置
１０  ＰＲＴＣ
１１  ＰＲＴ
１２  システムバス
【図１】
0003787372.tif 000002
【図２】
0003787372.tif 000003
【図３】
0003787372.tif 000004
【図４】
0003787372.tif 000005
【図５】
0003787372.tif 000006
【図６】
0003787372.tif 000007
【図７】
0003787372.tif 000008
【図８】
0003787372.tif 000009
【図９】
0003787372.tif 000010
【図１０】
0003787372.tif 000011
【図１１】
0003787372.tif 000012
【図１２】
0003787372.tif 000013