(57)【要約】【課題】  錯視により文字列が傾いて見える現象を軽減することである。【解決手段】  ページメモリに描画された文字列から検出した階段状の文字列が、３文字か４文字以上かをＣＰＵが判断する（Ｓ８１）。そして、ＣＰＵが検出した文字が３文字である場合に、その文字列が階段状に変化する方向をＣＰＵが特定する（Ｓ８３）。そして、特定された方向に適応して、ＣＰＵが文字の描画位置を修正する（Ｓ８４〜Ｓ９４）ことを特徴とする。【選択図】  図８
2009251711.tif 000002
【特許請求の範囲】
【請求項１】
メモリに展開される文字情報を出力する文字処理装置であって、
前記メモリに展開される所定数の文字列が階段状に変化するかどうかを判断する判断手段と、
前記判断手段により階段状に変化すると判断した場合、当該階段状に変化する方向が第１の方向に変化しているのか、前記第１の方向とは逆向きの第２の方向に変化しているのかを特定する特定手段と、
前記特定手段により特定された方向に従い、前記メモリに展開されている特定の文字を基準として隣接する文字の描画形態を修正する修正手段と、
を備えることを特徴とする文字処理装置。
【請求項２】
前記修正手段は、前記特定手段により特定された方向に従い、前記メモリに展開されている特定の文字を基準として隣接する文字の描画位置を修正することを特徴とする請求項１記載の文字処理装置。
【請求項３】
前記修正手段は、前記特定手段により特定された方向に従い、前記メモリに展開されている特定の文字を基準として隣接する文字の大きさを修正することを特徴とする請求項１記載の文字処理装置。
【請求項４】
前記修正手段は、前記特定手段により特定された方向に従い、前記メモリに展開されている特定の文字を基準として隣接する文字の形状を修正することを特徴とする請求項１記載の文字処理装置。
【請求項５】
前記判断手段は、前記メモリに展開される文字列の描画方向を判断し、当該判断された描画方向に所定数の文字列の描画状態が階段状に変化するかどうかを判断することを特徴とする請求項１記載の文字処理装置。
【請求項６】
前記判断手段は、前記文字列の描画方向が横方向か、縦方向かを判断して、前記メモリに展開される所定数の文字列の描画状態が階段状に変化するかどうかを判断することを特徴とする請求項１記載の文字処理装置。
【請求項７】
前記メモリに展開される文字情報は、入力される印刷情報に基づいて生成したことを特徴とする請求項１記載の文字処理装置。
【請求項８】
前記メモリに展開される文字情報は、読み取られる原稿画像に基づいて生成したことを特徴とする請求項１記載の文字処理装置。
【請求項９】
前記修正手段により修正された文字列を出力する出力手段を備えることを特徴とする請求項１記載の文字処理装置。
【請求項１０】
前記出力手段は、修正された文字列を表示手段に出力することを特徴とする請求項９記載の文字処理装置。
【請求項１１】
前記出力手段は、修正された文字列を印刷手段に出力することを特徴とする請求項９記載の文字処理装置。
【請求項１２】
メモリに展開される文字情報を出力する文字処理装置における文字処理方法であって、
前記メモリに展開される所定数の文字列が階段状に変化するかどうかを判断する判断ステップと、
前記判断ステップにより階段状に変化すると判断した場合、当該階段状に変化する方向が第１の方向に変化しているのか、前記第１の方向とは逆向きの第２の方向に変化しているのかを特定する特定ステップと、
前記特定ステップにより特定された方向に従い、前記メモリに展開されている特定の文字を基準として隣接する文字の描画形態を修正する修正ステップと、
を備えることを特徴とする文字処理方法。
【請求項１３】
前記修正ステップは、前記特定ステップにより特定された方向に従い、前記メモリに展開されている特定の文字を基準として隣接する文字の描画位置を修正することを特徴とする請求項１２記載の文字処理方法。
【請求項１４】
前記修正ステップは、前記特定ステップにより特定された方向に従い、前記メモリに展開されている特定の文字を基準として隣接する文字の大きさを修正することを特徴とする請求項１２記載の文字処理方法。
【請求項１５】
前記修正ステップは、前記特定ステップにより特定された方向に従い、前記メモリに展開されている特定の文字を基準として隣接する文字の形状を修正することを特徴とする請求項１２記載の文字処理方法。
【請求項１６】
前記判断ステップは、前記メモリに展開される文字列の描画方向を判断し、当該判断された描画方向に所定数の文字列の描画状態が階段状に変化するかどうかを判断することを特徴とする請求項１２記載の文字処理方法。
【請求項１７】
前記判断ステップは、前記文字列の描画方向が横方向か、縦方向かを判断して、前記メモリに展開される所定数の文字列の描画状態が階段状に変化するかどうかを判断することを特徴とする請求項１２記載の文字処理方法。
【請求項１８】
前記メモリに展開される文字情報は、入力される印刷情報に基づいて生成したことを特徴とする請求項１２記載の文字処理方法。
【請求項１９】
前記メモリに展開される文字情報は、読み取られる原稿画像に基づいて生成したことを特徴とする請求項１２記載の文字処理方法。
【請求項２０】
前記修正ステップにより修正された文字列を出力する出力ステップを備えることを特徴とする請求項１２記載の文字処理方法。
【請求項２１】
前記出力ステップは、修正された文字列を表示手段に出力することを特徴とする請求項２０記載の文字処理方法。
【請求項２２】
前記出力ステップは、修正された文字列を印刷手段に出力することを特徴とする請求項２０記載の文字処理方法。
【請求項２３】
請求項１２〜２２のいずれか１項に記載の文字処理方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字情報を処理する文字処理装置の文字出力処理に関するものである。
【背景技術】
【０００２】
ワードプロセッサ、パーソナルコンピュータ（ＰＣ）の普及により、文書を作成する場合に、美しくデザインされた文字フォントを使用して文書が作成できるようになった。
【０００３】
また、その文書をディスプレィに表示したり、画像として記録媒体に出力したりすることが容易にできるようになった。
【０００４】
しかしながら、漢字のように、字体の輪郭がほぼ矩形であり、縦棒、横棒のはっきりした文字が隣接した場合に、隣接した文字間で文字配列方向の縦棒横棒が、文字配列方向と垂直に階段状にずれていることにより、文字列が斜めに傾いて見える場合がある。これを傾斜錯視という。
【０００５】
例えば、文字列として『二年生』と『二学年』をゴシック体で印字した場合などである。なお、詳細は実施形態の説明において行う。
【０００６】
この傾斜錯視については、以下の非特許文献１に詳細が記載されている。
【非特許文献１】新井仁之、新井しのぶ：文字列傾斜錯視の解析２、ウェーブレット解析を用いた文字列傾斜錯視の作成、視覚数学ｅ研究室報告Ｎ０．２、２００５．
【発明の開示】
【発明が解決しようとする課題】
【０００７】
このように従来の文字出力処理において、同じサイズの文字列を出力させても、連続する文字列中の横棒の位置が、段々と階段状に変化する場合や、縦の幅が少しずつ変化する文字が続く場合に、文字列全体が斜め右上がり又は右下がりに見えてしまうという現象が発生していた。
【０００８】
なお、このような現象は、人間の錯視によるものが要因であることが従来から指摘されているところである。
【０００９】
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、錯視により文字列が傾いて見える現象を軽減できる仕組みを提供することである。
【課題を解決するための手段】
【００１０】
上記目的を達成する本発明の文字処理装置は以下に示す構成を備える。
【００１１】
メモリに展開される文字情報を出力する文字処理装置であって、前記メモリに展開される所定数の文字列が階段状に変化するかどうかを判断する判断手段と、前記判断手段により階段状に変化すると判断した場合、当該階段状に変化する方向が第１の方向に変化しているのか、前記第１の方向とは逆向きの第２の方向に変化しているのかを特定する特定手段と、前記特定手段により特定された方向に従い、前記メモリに展開されている特定の文字を基準として隣接する文字の描画形態を修正する修正手段とを備えることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、錯視により文字列が傾いて見える現象を軽減することができる。
【発明を実施するための最良の形態】
【００１３】
次に本発明を実施するための最良の形態について図面を参照して説明する。
【００１４】
＜システム構成の説明＞
〔第１実施形態〕
図１は、本実施形態を示す文字処理装置の一例を示すブロック図である。本例は、文字処理装置をホストコンピュータ９０と双方向に通信して画像出力処理、画像入力処理を行う画像処理装置に適用した例である。なお、本実施形態では、出力手段として、プリンタ部６０、操作部２０を備え、描画される文字情報を表示又は印刷させることが可能に構成されている。
【００１５】
図１において、ホストコンピュータ９０は、画像出力装置のプリント機能を使用して文書を印刷する場合に、インストールされているプリンタドライバを介して画像データを、インタフェースケーブル１５を介して送信する。また、ホストコンピュータ９０は、画像処理装置に登録されている画像データを外部機器に送信する指示等を行えるように構成されている。また、ホストコンピュータ９０は、アプリケーションを実行して作成した文書情報、あるいは、後述するＨＤＤにユーザが登録している印刷情報を再印刷する指示を行うことも可能である。
【００１６】
ここで、インタフェースケーブル１５は、ホストコンピュータ９０と画像出力装置を双方向に接続している。インタフェースケーブル１５は、ネットワークケーブル、無線ＬＡＮ機器等を使用することが可能である。
【００１７】
操作部２０は、画像表示部とキ−入力部とから成り立ち、ユーザの操作指示を受け付けるものである。また、画像処理装置の情報をユーザに表示する機能も含む。
【００１８】
ＨＤＤ３０は、入出力するデータおよび画像を記憶しておくためのものである。スキャナ部４０は、図示しない原稿台に積置された原稿の画像を光学的に読み取る。コントローラ部５０は、本画像処理装置の制御を行う。プリンタ部６０は、本画像処理装置にて形成された画像を、記録媒体に印刷出力する。
【００１９】
なお、図１の画像処理装置はいわゆる複合機を構成するものである。よって、ホストコンピュータ９０より送信された画像テータを、コントローラ部５０で処理し、プリンタ部６０にて出力するプリンタ機能の他に、以下の機能を備える。
【００２０】
その１つの機能は、スキャナ部４０にて読み取った画像をプリンタ部６０にて複製出力するコピー機能であり、さらにもう１つの機能は、スキャナ部４０にて読み取った画像をホストコンピュータ９０に取り込むスキャナ機能である。
【００２１】
次に、コントローラ部５０の構成について説明する。
【００２２】
コントローラ部５０において、ホストＩ／Ｆ１００は、ホストコンピュータ９０とのデータインタフェースであり、コネクタ、データバッファから成り立っている。
【００２３】
操作部Ｉ／Ｆ２００は、操作部２０にて入力したキ−情報、ユーザに提示する情報の出し入れを行うインタフェースであり、コネクタ、データバッファから成り立っている。
【００２４】
ＨＤＤＩ／Ｆ３００は、ＨＤＤ３０とのインタフェースであり、コネクタ、データバッファから成り立っている。スキャナＩ／Ｆ４００は、スキャナ部４０にて読み取った画像情報のインタフェースであり、コネクタ、データバッファから成り立っている。
【００２５】
なお、ＨＤＤ３０には、プログラム領域と、データ領域とを備え、データ領域にはユーザの情報、ジョブ情報が記憶され、プログラム領域には、ＣＰＵ５００が実行すべき後述するフローチャートに示す制御手順に基づく制御プログラムが記憶される。
【００２６】
ＣＰＵ５００は、他のブロックとバス１０００を介して接続され、各ブロック間にデータ、命令を伝達して、本画像処理装置を制御する。
【００２７】
ＲＯＭ６００には、ＣＰＵ５００が実行すべきプログラム、文字フォント等のデータを記憶している。
【００２８】
ＲＡＭ７００は、各種データ、画像を一時的に記憶しておくワークエリアで、各種の演算を行う。ページメモリ８００は、入力または出力する画像をそのままビットマップで展開できるメモリである。プリンタＩ／Ｆ９００は、プリンタ部６０にて印刷する画像情報のインタフェースであり、コネクタ、データバッファから成り立っている。
【００２９】
次に、図１の画像処理装置の基本動作を、図２に示すフローチャートにて説明する。
【００３０】
図２は、本実施形態を示す画像処理装置におけるデータ処理手順の一例を示すフローチャートである。本例は、図１に示した画像出力装置のＣＰＵ５００がＲＯＭ６００、ＨＤＤ３０等に記憶される制御プログラムをＲＡＭ７００にロードして実行することで実現される。なお、Ｓ２１〜Ｓ２９は各ステップを示す。
【００３１】
まず、画像処理装置本体の電源が立ち上がると、Ｓ２１にて、ＣＰＵ５００は、装置全体の初期設定を行う。具体的には、ＲＡＭ７００のクリア、各種Ｉ／Ｆ（１００、２００、３００、４００、９００）のバッファをクリアする。
【００３２】
また、ＣＰＵ５００は、ページメモリ８００のチェックを行い、ＣＰＵ５００が実行すべきプログラムを、ＲＯＭ６００よりロードする。なお、プログラムをＨＤＤ３０に格納して置く場合には、ＨＤＤ３０からプログラムをＲＡＭ７００にロードする。
【００３３】
続いて、スキャナ部４０、プリンタ部６０に、初期化、立ち上げ動作の指示を出す。スキャナ部４０、プリンタ部６０の動作準備が整ったら、Ｓ２２に移る。
【００３４】
そして、Ｓ２２では、ＣＰＵ５００は、ホストＩ／Ｆ１００を通じて、ホストコンピュータ９０からの入力信号を待つと同時に、操作部Ｉ／Ｆ２００を通じて、操作部２０からの操作入力信号を待つ。ここで、入力信号が無いとＣＰＵ５００が判断した場合は、入力待ちに戻る。
【００３５】
一方、Ｓ２２で、入力信号があるとＣＰＵ５００が判断した場合は、Ｓ２３に進み、Ｓ２２にて入力された信号の内容を解釈する。そして、Ｓ２４にて、装置の動作を指示するものか、他のものかをＣＰＵ５００が判断する。ここで、装置の動作を指示するものでないとＣＰＵ５００が判断した場合は、Ｓ２５に分岐する。ここで、装置の動作を指示するものでない場合とは、装置そのものの設定である場合と、動作以外をエラーにする場合である。
【００３６】
そして、Ｓ２５では、ＣＰＵ５００は、装置の設定または、エラー表示を行い、次の操作指示入力を待つため、Ｓ２２に戻る。
【００３７】
一方、Ｓ２４にて装置の動作を指示するものであるとＣＰＵ５００が判断した場合は、Ｓ２６にて、実行可能な機能に基づく動作のうち、いずれの機能に基づく動作であるかをＣＰＵ５００が判断する。ここで、コピー動作であるとＣＰＵ５００が判断した場合はＳ２７に、プリント動作であるとＣＰＵ５００が判断した場合はＳ２８に、スキャン動作であるとＣＰＵ５００が何した場合はＳ２９に、それぞれ進み、それぞれの動作を行う。その後、Ｓ２２に戻り次の入力を待つ。
【００３８】
上記の説明は、いわゆる複合機を含む画像出力装置の一般的な構成とフローの説明であり、公知の技術である。また、コピー動作、プリント動作、スキャン動作についても、公知の技術であるので、説明は省略する。
【００３９】
次に、錯視の起こりやすい文字列について、図３〜図５を参照して説明する。
【００４０】
図３は、図２に示した画像出力装置で出力される文字列の一例を示す図である。特に、錯視の起こりやすい文字列の例である。
【００４１】
図３において、１、３列目は『二年生』、２、４列目は『二学年』を繰り返し、ゴシック体で印字したものである。通常の横書き文書であるが、１、３列目は、右上がり、２、４列目は右下がりに見えやすい例を示す。
【００４２】
ここで、錯視が起こる原因は、図４に示すように、横書きの場合は文字の横棒について、隣り合う文字間で階段状に変化しているところ（図中の破線で囲まれるところ）を、人間の目が注目してしまい、図３のように右上がりや右下がりに見えてしまうと考えられる。
【００４３】
しかし、横棒が階段状に変化していれば全て錯視が起きるわけではない。横棒が階段状に変化する文字列の例を、図５の（１）、（２）、（３）、（４）に示す。この中で、錯視が起きやすいのは、図５の（１）、（２）であり、図５（３）、（４）は錯視が起こりにくい。
【００４４】
これらの文字列を含む実験より、錯視が起きる条件をまとめると、以下のようになる。なお、横書きの例について説明する。
【００４５】
（１）文字の最上段または最下段の横棒の高さ位置が、図４に示すように隣り合う文字の横棒高さ位置とずれがある場合。
【００４６】
（２）、（１）の文字間のずれは図４に示すように２つ以上（３文字分以上）増加、または減少が階段状に続く場合。
【００４７】
（３）、（２）の階段状のずれは図４に示すように同じ方向へ続けて２回以上続く場合。
【００４８】
以上説明したように、錯視が起こりやすい文字列は、文字の輪郭位置、特に横棒の位置を検出することにより推定できることが分かる。
【００４９】
次に、本実施形態における文字の横棒の位置を検出する方法を述べる。
【００５０】
図６は、本実施形態を示す文字処理装置における文字処理状態を説明する図である。本例は、文字フォントをページメモリ８００にビットマップに展開したところを示している。また、（１）から（８）は、文字のフォントデータから水平方向の画素数をカウントして得られる画素ヒストグラムで、縦方向の破線は、しきい値ＴＨを示す。また、画素ヒストグラムの右側の水平方向の矢印が横棒の位置を示している。
【００５１】
図６の（Ａ）は文字『二』、（Ｂ）は文字『年』、（Ｃ）は文字『生』である。それぞれ文字形成枠の中で、左下を描画のための文字原点としている。
【００５２】
それぞれ文字のフォントデータから水平方向の画素数をカウントし、そしてあるしきい値ＴＨ以上の分布のある部分を横棒の位置とする。
【００５３】
図６に示す例では、それぞれの文字枠の中で、展開した文字画素を右に寄せていき水平方向の画素数ヒストグラムを取る。そしてあるしきい値ＴＨ以上の長さのある部分を横棒（図６の（１）から（８））と判断する。そして、それぞれの横棒の中心位置を、文字原点からの高さで表し、それぞれＲＡＭ７００上に記憶する。
【００５４】
なお、上記方法で検出した横棒のうち、１つの文字内で複数の横棒が検出された場合は、その長さが同程度ならば、最上部のものと、最下部のものを対象にし、中間にあるものは、錯視の対象にならないため、横棒の高さの記憶を削除することが可能である。
【００５５】
図６の場合は、横棒（４）と（７）である。ただし、中間にある横棒であっても、一番長いものか同程度長いものはそのまま記憶しておく。
【００５６】
次に、横棒位置の階段状の変化を検出する方法を述べる。
【００５７】
上記の方法で抽出した横棒を、隣接する文字間の最も近いもの同士で高さを比較する。図６では、横棒（１）と横棒（３）、横棒（２）と横棒（５）、横棒（３）と横棒（６）、横棒（５）と横棒（８）、さらに横棒（６）と横棒（１）、横棒（８）と横棒（２）である。その結果、図４に示すように、高さは（１）＜（３）、（２）＜（５）、（３）＞（６）、（５）＞（８）、（６）＜（１）、（８）＜（２）の関係を満たす状態となっている。
【００５８】
よって、この３文字『二年生』が横方向に繰り返し並んだ場合は、（６）＜（１）＜（３）、（８）＜（２）＜（５）となり、『生二年』と３文字を１つのセットとして右上がりに階段状に並んでいることがわかる。
【００５９】
同様に、図４の『二学年』についても、『学年二』の順に下方の横棒が右下がりに並んでいることがわかる。
【００６０】
ここで、再度図５に示す出力文字列を見れば、図５の（１）、（２）で錯視が起こりやすく、図５の（３）、（４）で起こりにくいことが理解できる。
【００６１】
次に、錯視が起きやすい文字列が検出できたら、それを防止する方法について以下に述べる。
【００６２】
錯視が起きやすい文字列は、上記のように、隣接する横棒に階段状のずれが３文字以上続くことが主な原因であるので、該当する文字の横棒のずれをなくすか、大きな段差にすれば錯視効果が起こりにくくなる。
【００６３】
具体的には、横書きの文字列において、階段状のずれが２文字以下になるように、該当する文字列のいずれかの文字を、上下方向にシフトすればよい。具体的な修正方法を、図７にて説明する。
【００６４】
図７は、本実施形態を示す文字処理装置における文字処理状態を説明する模式図である。本例は、横書きの文字列において、階段状のずれが２文字以下になるように、該当する文字列のいずれかの文字を、上下方向にシフトして修正する例である。
【００６５】
〔右上がりの修正方法〕
まず、文字３、４、５の３文字が右上がりの場合の例である。右上がりの階段状をくずすためにいくつかの方法があるが、本実施形態では以下の優先順位で文字を修正する。
【００６６】
第１に、文字１〜７の文字列のなかで、真中の文字４の該当する横棒が左の文字３の横棒と同じ高さになるように、位置Ｐ１へ、文字全体を下げる。ただし、移動後の文字の最下部が印字文字枠の範囲を超える場合は移動しない。
【００６７】
第２に、真中の文字４の該当する横棒が右の文字の横棒と同じ高さになるように、位置Ｐ２へ、文字全体を上げる。ただし、移動後の文字の最上部が印字文字枠の範囲を超える場合は移動しない。
【００６８】
第３に、左側の文字３の該当する横棒が右の文字の横棒と同じ高さになるように、位置Ｐ３へ、文字全体を上げる。ただし、移動後の文字の最上部が印字文字枠の範囲を超える場合は移動せず、また、文字３の横棒を位置Ｐ３に置くと、文字１、２、３が階段状になる場合は文字３を移動しない。
【００６９】
第４に、右側の文字５の該当する横棒が左の文字の横棒と同じ高さになるように、位置Ｐ４へ、文字全体を下げる。ただし、文字５の横棒を位置Ｐ４に置くと、文字５、６、７が階段状になる場合は文字５を移動しない。
【００７０】
第５に、第１から第４のいずれもできない場合は、第１または第２うち、枠から出る量が少ない方を選ぶ。なお、どちらも同じ移動量の場合は、下げる方を選ぶ。
【００７１】
〔右下がりの修正方法〕
以下、右下がりの場合の修正方法を、図７の文字８、９、１０を参照して説明する。以下に、本例の場合の修正処理における優先順位を示す。
【００７２】
第１に、真中の文字９の該当する横棒が左の文字の横棒と同じ高さになるように、位置Ｐ１１へ、文字全体を上げる。ただし、移動後の文字の最上部が印字文字枠の範囲を超える場合は移動しない。
【００７３】
第２に、真中の文字９の該当する横棒が右の文字の横棒と同じ高さになるように、位置Ｐ１２へ、文字全体を下げる。ただし、移動後の文字の最下部が印字文字枠の範囲を超える場合は移動しない。
【００７４】
第３に、左側の文字８の該当する横棒が右の文字の横棒と同じ高さになるように、位置Ｐ１３へ、文字８全体を下げる。ただし、文字８の横棒を位置Ｐ１３に置くと、前の２文字と階段状になる場合は文字８を移動しない。
【００７５】
第４に、右側の文字１０の該当する横棒が左の文字９の横棒と同じ高さになるように、位置Ｐ１４へ、文字１０全体を上げる。ただし、文字１０の横棒を位置Ｐ１４に置くと、後の２文字と階段状になる場合は文字１０を移動しない。
【００７６】
第５に、第１から第４のいずれもできない場合は、第１または第２のうち、枠から出る量が少ない方を選ぶ。なお、どちらも同じ移動量の場合は、上げる方を選ぶ。
【００７７】
図８は、本実施形態を示す文字処理装置における第１のデータ処理手順の一例を示すフローチャートである。本例は、隣接する複数の文字列の描画位置特性に応じて、各文字の描画位置を修正する処理例である。なお、Ｓ８１〜Ｓ９４は各ステップを示す。また、各ステップは、図１に示したＣＰＵ５００がＲＡＭ７００に制御プログラムをロードして実行することで実現される。また、本実施形態では、後述するＳ８１、Ｓ８３により、ページメモリ８００に描画された所定数、例えば３文字から構成される文字列が階段状に変化するかをＣＰＵ５００が判断する。ここで、ＣＰＵ５００は、特定の文字、例えば３文字である場合は、中間に位置する文字を基準として、隣合う各文字の横棒の位置を判別することで、第１の方向（右上がり）に変化しているのか、第２の方向（右下がり）に変化しているのかを特定する。なお、ここでは、文字列の描画方向が横方向、すなわち、横書きに文書が記載されている場合を想定しているが、後述する他の実施形態に示すように、描画状態を判別する基準を縦方向として適応させることで、縦書きの文書にも本発明を適用可能である。なお、第１の方向と、第２の方向とは、上記のように逆向きの関係となっている。
【００７８】
まず、Ｓ８１において、検出した階段状の文字列が、３文字か４文字以上かをＣＰＵ５００が判断する。ここで、４文字以上であるとＣＰＵ５００が判断した場合は、Ｓ８２すなわち別のフローに進む。
【００７９】
一方、Ｓ８１において、３文字であるとＣＰＵ５００が判断した場合は、Ｓ８３に移り、右上がりか右下がりかをページメモリ８００に展開されている対象としている文字列について、各文字列の上記横棒の位置をＣＰＵ５００がそれぞれ比較して判断する。ここで、上述したように右下がりであるとＣＰＵ５００が判断した場合は、Ｓ９０に移る。
【００８０】
一方、Ｓ８３で、右上がりであるとＣＰＵ５００が判断した場合は、Ｓ８４に移る。
【００８１】
そして、Ｓ８４において、真中の２文字目の横棒が左隣の文字の横棒と同じ高さになるように高さ方向に下方に移動しても、移動後の文字位置が文字枠の中に収まるかどうかをＣＰＵ５００が判断する。ここで、移動可能であるとＣＰＵ５００が判断した場合は、Ｓ８９に進み、ページメモリ８００に展開された対象とする文字位置を修正して、本処理を終了する。なお、移動後の文字位置が文字枠の中に収まるかどうかは、各文字展開処理において、文字サイズ等により決定される領域情報をＣＰＵ５００が参照することで判断することができる。
【００８２】
一方、Ｓ８４で移動できないとＣＰＵ５００が判断した場合は、Ｓ８５に移動して、２文字目の横棒が右隣の文字の横棒と同じ高さになるように高さ方向に上方に移動しても、移動後の文字位置が文字枠の中に収まるかどうかをＣＰＵ５００が判断する。ここで、移動可能であるとＣＰＵ５００が場合は、Ｓ８９に進み、文字位置を修正して、本処理を終了する。
【００８３】
一方、Ｓ８５で、移動できないとＣＰＵ５００が判断した場合は、Ｓ８６に進み、１文字目の横棒が右隣の文字の横棒と同じ高さになるように高さ方向に上方に移動しても、移動後の文字位置が文字枠の中に収まるかどうかをＣＰＵ５００が判断する。さらに、移動後の文字位置によって左の２文字と新たな階段状にならないことをＣＰＵ５００が判断する。ここで、ＣＰＵ５００が移動可能であると判断した場合は、Ｓ８９に進み、文字位置を修正して、本処理を終了する。
【００８４】
一方、Ｓ８６で移動できないとＣＰＵ５００が判断した場合は、Ｓ８７に進み、３文字目の横棒が左隣の文字の横棒と同じ高さになるように高さ方向に下方に移動しても、移動後の文字位置が文字枠の中に収まるかどうかをＣＰＵ５００が判断する。さらに、ＣＰＵ５００は、移動後の文字位置によって、右の２文字と新たに階段状にならないことを判断する。
【００８５】
ここで、移動可能であるとＣＰＵ５００が判断した場合は、Ｓ８９に進み、文字位置を修正して、本処理を終了する。
【００８６】
一方、Ｓ８７で、移動できないとＣＰＵ５００が判断した場合は、Ｓ８８に進み、２文字目を移動して、本処理を終了する。なお、Ｓ８８では、Ｓ８４およびＳ８５により文字の最上部か最下部が文字枠を超えることが分かっているので、枠を越える量が少ない方を選んで移動するため、２文字目を移動する。
【００８７】
一方、Ｓ８３で右下がりとＣＰＵ５００が判断した場合は、Ｓ９０において、真中の２文字目の横棒が左の文字の横棒と同じ高さになるように高さ方向に上方に移動しても、移動後の文字位置が文字枠の中に収まるかどうかをＣＰＵ５００が判断する。
【００８８】
ここで、移動可能であるとＣＰＵ５００が判断した場合は、Ｓ８９に進み、文字位置を修正して、本処理を終了する。
【００８９】
一方、Ｓ９０で、移動できないとＣＰＵ５００が判断した場合は、Ｓ９１に進み、２文字目の横棒が右の文字の横棒と同じ高さになるように高さ方向に下方に移動しても、移動後の文字位置が文字枠の中に収まるかどうかをＣＰＵ５００が判断する。ここで、移動可能であるとＣＰＵ５００が判断した場合は、Ｓ８９に進み、文字位置を修正して、本処理を終了する。
【００９０】
一方、Ｓ９１で、移動できないと判断した場合は、Ｓ９２に進み、１文字目の横棒が右の文字の横棒と同じ高さになるように高さ方向に下方に移動しても、移動後の文字位置が文字枠の中に収まるかどうかをＣＰＵ５００が判断する。さらに、ＣＰＵ５００は移動後の文字位置によって左の２文字と新たな階段状にならないことを判断する。ここで、移動可能であるとＣＰＵ５００が判断した場合は、Ｓ８９に進み、文字位置を修正して、本処理を終了する。
【００９１】
一方、Ｓ９２で移動できないとＣＰＵ５００が判断した場合は、Ｓ９３に進み、３文字目の横棒が左の文字の横棒と同じ高さになるように高さ方向に上方に移動しても、移動後の文字位置が文字枠の中に収まるかどうかをＣＰＵ５００が判断する。さらに、ＣＰＵ５００は、移動後の文字位置によって、右の２文字と新たに階段状にならないことを判断する。ここで、移動可能であるとＣＰＵ５００が判断した場合は、Ｓ８９に進み、文字位置を修正して、本処理を終了する。
【００９２】
一方、Ｓ９３で、移動できないとＣＰＵ５００が判断した場合は、Ｓ９４に移動して、２文字目を移動して、本処理を終了する。Ｓ９４では、Ｓ９０およびＳ９１により文字の最上部か最下部が文字枠を超えることが分かっているので、枠を越える量が少ない方を選んで移動するため、２文字目を移動する。以上が３文字列の修正方法の説明である。上記方法により、修正した文字の例を図９に示す。
【００９３】
図９は、本実施形態を示す文字処理装置における文字修正状態を説明する図である。なお、上部が修正前の通常の文字出力状態に対応し、下部が修正後の文字位置修正済みの文字出力状態に対応する。
【００９４】
図９の修正後に示すように、階段状の文字列の、真中の文字を右上がりでは下へ、右下がりでは上方へそれぞれ移動している。
【００９５】
なお、階段状の文字列が４文字の場合は、２文字目と３文字目を横棒が同じ高さになるように移動する。
【００９６】
また、階段状の文字列が５文字の場合は、２、３、４文字目を横棒が同じ高さになるように移動する。さらに、６文字以上についても同様に中間の文字を増やしていけば良い。
【００９７】
次に、以上説明した錯視が起きやすい文字列の検出と、それを防止する修正方法を文字処理装置の例で説明する。
【００９８】
なお、一般的な複合機の動作とは、図示しない操作部２０のスイッチによりモードを切り換えるのは言うまでもない。
【００９９】
また、本実施形態では、文字列を修正する手段として、ページメモリ８００に描画される文字の描画位置を設定されている描画領域内に納める範囲で修正する場合について説明した。
【０１００】
しかしながら、本発明は、傾斜錯視による描画状態を相殺するように、描画形態を修正すれば、上記描画位置の修正に限るものではない。すなわち、基準となる文字に隣接する各文字の描画形態として、文字の大きさ、文字の形状を修正して、傾斜錯視による描画状態を相殺するように構成してもよい。
【０１０１】
したがって、文字の描画形態として、文字全体ではなく、文字の階段状で目立つ部分に対して集中的に修正したりする構成としてもよい。
【０１０２】
図１０は、本実施形態を示す文字処理装置における第２のデータ処理手順の一例を示すフローチャートである。本例は、錯視を軽減させるプリント機能使用時における、各文字の描画位置を修正する処理例（入力される印刷情報から生成される文字情報の修正処理例）である。なお、Ｓ１０１〜Ｓ１０９は各ステップを示す。また、各ステップは、図１に示したＣＰＵ５００がＲＡＭ７００に制御プログラムをロードして実行することで実現される。
【０１０３】
まず、Ｓ１０１にて、ホストコンピュータ９０よりインタフェースケーブル１５、ホストコンピュータＩ／Ｆ１００を介して印刷データを取得する。ここで、取得したデータは、一旦ＨＤＤ３０に格納する。ここで、印刷データには、ホストコンピュータ９０のプリンタドライバが生成した印刷制御情報を含む印刷データである。
【０１０４】
Ｓ１０２では、その印刷データを１ページ分ずつＨＤＤ３０より読み出し、その印刷データをＣＰＵ５００が解釈して、ページメモリ８００に、ビットマップに展開する。ここで、ＣＰＵ５００は、印刷データのうち文字データについては必要な文字フォントを、ＲＯＭ６００より読み出し、ＲＡＭ７００に展開する。そして、Ｓ１０３で、文字毎に、水平方向の画素数をカウントして、横棒の位置を決定し、原点からの高さを算出し、文字と対応させて、横棒の高さをＲＡＭ７００のワークメモリに記憶する。
【０１０５】
次に、Ｓ１０４にて隣接する前の文字との間に、横棒の高さにずれがあるかを算出し、ＲＡＭ７００のワークに記憶する。次に、Ｓ１０５にて、横棒のずれが２つ以上すなわち３文字分以上続くか否かをＣＰＵ５００が確認する。ここで、３文字分以上続く階段状の横棒がないとＣＰＵ５００が判断した場合には、Ｓ１０８に進む。
【０１０６】
一方、Ｓ１０５で、３文字分以上続く階段状の横棒があるとＣＰＵ５００が判断した場合には、Ｓ１０６にて、３文字分以上続く階段状の横棒が２回以上続くか否かをＣＰＵ５００が確認する。ここで、３文字分以上続く階段状の横棒が２回以上続かないと判断した場合は、Ｓ１０８に進む。
【０１０７】
一方、Ｓ１０６で、３文字分以上続く階段状の横棒が２回以上続くとＣＰＵ５００が判断した場合は、Ｓ１０７にて該当する文字列に修正を行う。ここで、修正処理は、前述のように図８に示したフローに従って行うので、処理の詳細は説明しない。
【０１０８】
このようにして１ページ分の修正が終わったら、ＲＡＭ７００に展開し修正した文字列を、ページメモリ８００に送り、Ｓ１０２にて展開した画像に合成する。
【０１０９】
そして、Ｓ１０８に進み、修正処理するページが残っていないか否かをＣＰＵ５００が確認する。ここで、修正処理するページが残っていないとＣＰＵ５００が確認した場合は、Ｓ１０９に進み、ページメモリ８００に合成した印刷データを、プリンタＩ／Ｆ９００を介してプリンタ部６０に送り、画像を印刷して、本処理を終了する。
【０１１０】
一方、Ｓ１０８で、修正処理するページが残っているとＣＰＵ５００が判断した場合は、Ｓ１０２に戻り、次のページの印刷データをＨＤＤ３０より取得する。
【０１１１】
〔第２実施形態〕
図１１は、本実施形態を示す文字処理装置における第３のデータ処理手順の一例を示すフローチャートである。本例は、錯視を軽減させるスキャン機能使用時における、各文字の描画位置を修正する処理例（読み取られる原稿画像データの中から文字を切り出して生成される文字情報の修正処理例）である。なお、Ｓ１１１〜Ｓ１２０は各ステップを示す。また、各ステップは、図１に示したＣＰＵ５００がＲＡＭ７００に制御プログラムをロードして実行することで実現される。
【０１１２】
まず、Ｓ１１１にて、ＣＰＵ５００は、スキャナ部４０より読み取り画像データを取得し、一旦ＨＤＤ３０に格納する。Ｓ１１２で、ＣＰＵ５００は、ＨＤＤ３０に格納した読み取り画像データをページメモリ８００に、１ページ単位で保存する。
【０１１３】
そして、Ｓ１１３で、ＣＰＵ５００は、所定の画像処理プログラムを実行して、ページメモリ８００に記憶された画像データから文字列部分を抽出し、ＲＡＭ７００に一旦記憶し、さらに文字単位で切り出す。
【０１１４】
次に、Ｓ１１４で、ＣＰＵ５００は、切り出した文字の水平方向の画素数をカウントして、横棒の位置を決定し、原点からの高さを算出し、文字と対応させて、横棒の高さをＲＡＭ７００に記憶する。
【０１１５】
次に、Ｓ１１５で、隣接する文字間に、横棒の高さにずれがあるかをＣＰＵ５００が算出しＲＡＭ７００に記憶する。次に、Ｓ１１６で、横棒のずれが２つ以上すなわち３文字分以上続くかをＣＰＵ５００が確認する。ここで、ＣＰＵ５００が３文字分以上続く階段状の横棒がないと判断した場合には、Ｓ１１９に進む。
【０１１６】
一方、Ｓ１１６で、３文字分以上続く階段状の横棒があるとＣＰＵ５００が判断した場合には、Ｓ１１７で、３文字分以上続く階段状の横棒が２回以上続くか否かをＣＰＵ５００が確認する。ここで、３文字分以上続く階段状の横棒が２回以上続かないとＣＰＵ５００が判断した場合は、Ｓ１１９に進む。
【０１１７】
一方、Ｓ１１７で、３文字分以上続く階段状の横棒が２回以上続くとＣＰＵ５００が判断した場合は、Ｓ１１８で、ＣＰＵ５００は該当する文字列に修正を行う。ここでの修正は、前述のように図８に示したフローに従って行う。
【０１１８】
このようにして１ページ分の修正が終わったら、ＲＡＭ７００にて修正した文字列を、ページメモリ８００に送り、Ｓ１１２にて記憶した画像の文字部分に上書き合成する。
【０１１９】
そして、Ｓ１１９に進み、読み取り画像データの最終ページの修正処理が終わったかどうかをＣＰＵ５００が確認する。ここで、最終ページの修正処理が終わっているとＣＰＵ５００が判断した場合は、Ｓ１２０で、修正処理したスキャンしたデータを、ホストコンピュータ９０に送信し、スキャン機能動作を終了する。
【０１２０】
一方、Ｓ１１９で、最終ページの修正処理が終わっていないとＣＰＵ５００が判断した場合は、Ｓ１１２に戻り、次のページの読み取り画像データをＨＤＤ３０より取得する。
【０１２１】
〔第３実施形態〕
本実施形態を示す文字処理装置において、修正した文字画像を表示する場合、ページメモリ８００に記憶した１ページ分の画像データを操作部Ｉ／Ｆ２００を介して操作部２０に表示する。以下、ホストからの印刷データを表示する場合と、スキャンした画像を表示する場合の画像データの作成処理について説明する。
【０１２２】
また、ホストからの印刷データを表示する場合は、図１０に示したプリント機能使用時のフローチャートに従って表示する画像データを作成する。
【０１２３】
また、スキャンした画像を表示する場合は、図１１に示したスキャン機能使用時のフローチャートに従って画像データを作成する。
【０１２４】
〔第４実施形態〕
上記各実施形態では、横書きの文字列を出力する場合の傾斜錯視について説明したが、もちろん、縦書きの文字列にも本発明を適用することが可能である。以下、その実施形態について説明する。
【０１２５】
図１２は、本実施形態を示す文字処理装置における縦書きの文字列による錯視の例を説明する図である。
【０１２６】
図１２に示すように、縦書きの場合も、横書きと同様に、文字配列方向の縦棒が、隣接文字間で、文字配列方向と垂直な向きすなわち左右に階段状にずれることによって文字列が斜めに傾いて見える現象が起こる。
【０１２７】
よって、前述の横書きの文字列の説明における修正処理において、横棒として説明した箇所を縦棒とし、さらに、上下として説明した箇所を左右とし、高さとして説明した箇所を原点からのずれと読み換えることにより、縦書き文書の錯視を修正することができる。
【０１２８】
以下、図１３に示すメモリマップを参照して本発明に係る文字処理装置で読み取り可能なデータ処理プログラムの構成について説明する。
【０１２９】
図１３は、本発明に係る文字処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【０１３０】
なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０１３１】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、各種プログラムをコンピュータにインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０１３２】
本実施形態における図８、図１０、図１１に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０１３３】
以上のように、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１３４】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１３５】
従って、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０１３６】
プログラムを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【０１３７】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１３８】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、該ホームページから本発明のコンピュータプログラムそのもの、もしくは、圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバやｆｔｐサーバ等も本発明の請求項に含まれるものである。
【０１３９】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１４０】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけではない。例えばそのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行う。そして、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１４１】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込ませる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１４２】
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。
【０１４３】
本発明の様々な例と実施形態を示して説明したが、当業者であれば、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるのではない。
【図面の簡単な説明】
【０１４４】
【図１】本実施形態を示す文字処理装置の一例を示すブロック図である。
【図２】本実施形態を示す画像出力装置におけるデータ処理手順の一例を示すフローチャートである。
【図３】図２に示した画像出力装置で出力される文字列の一例を示す図である。
【図４】錯視の起こりやすい文字列の一例を示す図である。
【図５】錯視の起こりやすい文字列及び起こりにくい文字列の一例を示す図である。
【図６】本実施形態を示す文字処理装置における文字処理状態を説明する図である。
【図７】本実施形態を示す文字処理装置における文字処理状態を説明する模式図である。
【図８】本実施形態を示す文字処理装置における第１のデータ処理手順の一例を示すフローチャートである。
【図９】本実施形態を示す文字処理装置における文字修正状態を説明する図である。
【図１０】本実施形態を示す文字処理装置における第２のデータ処理手順の一例を示すフローチャートである。
【図１１】本実施形態を示す文字処理装置における第３のデータ処理手順の一例を示すフローチャートである。
【図１２】本実施形態を示す文字処理装置における縦書きの文字列による錯視の例を説明する図である。
【図１３】本発明に係る文字処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【符号の説明】
【０１４５】
９０  ホストコンピュータ
２０  操作部
３０  ＨＤＤ
４０  スキャナ部
５０  コントローラ部
６０  プリンタ部
５００  ＣＰＵ
６００  ＲＯＭ
７００  ＲＡＭ
８００  ページメモリ
【図１】
2009251711.tif 000003
【図２】
2009251711.tif 000004
【図３】
2009251711.tif 000005
【図４】
2009251711.tif 000006
【図５】
2009251711.tif 000007
【図６】
2009251711.tif 000008
【図７】
2009251711.tif 000009
【図８】
2009251711.tif 000010
【図９】
2009251711.tif 000011
【図１０】
2009251711.tif 000012
【図１１】
2009251711.tif 000013
【図１２】
2009251711.tif 000014
【図１３】
2009251711.tif 000015