(57)【要約】【課題】表示される文字の大きさを変えずに、禁則処理を実行する。【解決手段】文字処理方法は、文書データを読み出すステップ（Ｓ１０２）と、メモリ上に文書を配置した時のレイアウト情報を取得するためのステップ（Ｓ２００）と、追い込み処理が必要と判断されると（Ｓ１０８にてＹＥＳ）、行頭文字を表示するための必要領域を算出するステップ（Ｓ４００）と、行末に文字を表示することができる表示可能領域を算出するステップ（Ｓ５００）と、追い込み処理の実行が可能であると判断されると（Ｓ１１４にてＹＥＳ）、行頭文字を前行の行末に移動する追い込み処理を実行するステップ（Ｓ６００）と、全ての文書データの処理が完了すると（Ｓ１１８にてＹＥＳ）、文書データをモニタに出力するステップ（Ｓ１２０）とを含む。【選択図】　　　　図３
2004110095.tif 000002
【特許請求の範囲】
【請求項１】
文字の禁則処理を実行するための文字処理装置であって、
処理対象の複数の文字から構成される文章についての文章情報と、各前記複数の文字についての固有情報とを記憶するための記憶手段と、
前記記憶手段に接続され、前記文章情報に基づいて、第１の行と前記第１の行の次行である第２の行とに前記文章を配置した場合の、前記複数の文字の配置についての配置情報を、予め取得するための取得手段と、
前記記憶手段および前記取得手段に接続され、前記配置情報および前記固有情報に基づいて、前記第１の行の行末に配置された文字が前記行末への配置を禁止された行末禁則文字であるか否か、および前記第２の行の行頭に配置された文字が前記行頭への配置を禁止された行頭禁則文字であるか否かのいずれかを判断するための判断手段と、
前記記憶手段および前記判断手段に接続され、前記配置された文字が前記行末禁則文字および前記行頭禁則文字のいずれかであると判断されると、前記行末の空白領域を表示可能領域として算出するための第１の算出手段と、
前記行頭に配置された文字が、１つの文字を表示するために予め定められた領域に対して占有する領域を、必要領域として算出するための第２の算出手段と、前記第１の算出手段および前記第２の算出手段に接続され、前記表示可能領域および前記必要領域に基づいて、前記行頭に配置された文字の位置を前記行末に変更するための変更手段とを含む、文字処理装置。
【請求項２】
前記変更手段は、前記表示可能領域が必要領域を上回ることに基づいて、前記行頭に配置された文字の位置を前記行末に変更するための手段を含む、請求項１に記載の文字処理装置。
【請求項３】
前記第２の算出手段は、前記固有情報に基づいて、前記必要領域を算出するための手段を含む、請求項１または２に記載の文字処理装置。
【請求項４】
前記文字処理装置は、前記配置された文章に含まれる文字の表示に関する情報を、表示情報として検出するための検出手段をさらに含み、
前記第２の算出手段は、前記表示情報に基づいて、前記必要領域を算出するための手段を含む、請求項１または２に記載の文字処理装置。
【請求項５】
前記検出手段は、前記文章に含まれる文字を走査することにより、前記表示情報を検出するための手段を含む、請求項４に記載の文字処理装置。
【請求項６】
前記第１の算出手段は、前記第１の行に配置される文字の位置を変更することにより、前記表示可能領域を算出するための手段を含み、
前記文字処理装置は、前記算出された表示可能領域を前記第１の行末に生成するように、前記配置される文字の位置を変更するための位置変更手段をさらに含む、請求項１〜５のいずれかに記載の文字処理装置。
【請求項７】
文字の禁則処理を実行するための文字処理方法であって、
処理対象の複数の文字から構成される文章についての文章情報と、各前記複数の文字についての固有情報とを予め準備する準備ステップと、
前記文章情報に基づいて、第１の行と前記第１の行の次行である第２の行とに前記文章を配置した場合の、前記複数の文字の配置についての配置情報を、予め取得する取得ステップと、
前記配置情報および前記固有情報に基づいて、前記第１の行の行末に配置された文字が前記行末への配置を禁止された行末禁則文字であるか否か、および前記第２の行の行頭に配置された文字が前記行頭への配置を禁止された行頭禁則文字であるか否かのいずれかを判断する判断ステップと、
前記配置された文字が前記行末禁則文字および前記行頭禁則文字のいずれかであると判断されると、前記行末の空白領域を表示可能領域として算出する第１の算出ステップと、
前記行頭に配置された文字が、１つの文字を表示するために予め定められた領域に対して占有する領域を、必要領域として算出する第２の算出ステップと、
前記表示可能領域および前記必要領域に基づいて、前記行頭に配置された文字の位置を前記行末に変更する変更ステップとを含む、文字処理方法。
【請求項８】
前記変更ステップは、前記表示可能領域が必要領域を上回ることに基づいて、前記行頭に配置された文字の位置を前記行末に変更するステップを含む、請求項７に記載の文字処理方法。
【請求項９】
前記第２の算出ステップは、前記固有情報に基づいて、前記必要領域を算出するステップを含む、請求項７または８に記載の文字処理方法。
【請求項１０】
前記文字処理方法は、前記配置された文章に含まれる文字の表示に関する情報を、表示情報として検出する検出ステップをさらに含み、
前記第２の算出ステップは、前記表示情報に基づいて、前記必要領域を算出するステップを含む、請求項７または８に記載の文字処理方法。
【請求項１１】
前記検出ステップは、前記文章に含まれる文字を走査することにより、前記表示情報を検出するステップを含む、請求項１０に記載の文字処理方法。
【請求項１２】
前記第１の算出ステップは、前記第１の行に配置される文字の位置を変更することにより、前記表示可能領域を算出するステップを含み、前記文字処理方法は、前記算出された表示可能領域を前記第１の行末に生成するように、前記配置される文字の位置を変更する位置変更ステップをさらに含む、請求項７〜１１のいずれかに記載の文字処理方法。
【請求項１３】
文字の禁則処理を実行する文字処理方法をコンピュータに実現させるためのプログラムであって、前記プログラムは前記コンピュータに、処理対象の複数の文字から構成される文章についての文章情報と、各前記複数の文字についての固有情報とを予め準備する準備ステップと、
前記文章情報に基づいて、第１の行と前記第１の行の次行である第２の行とに前記文章を配置した場合の、前記複数の文字の配置についての配置情報を、予め取得する取得ステップと、
前記配置情報および前記固有情報に基づいて、前記第１の行の行末に配置された文字が前記行末への配置を禁止された行末禁則文字であるか否か、および前記第２の行の行頭に配置された文字が前記行頭への配置を禁止された行頭禁則文字であるか否かのいずれかを判断する判断ステップと、
前記配置された文字が前記行末禁則文字および前記行頭禁則文字のいずれかであると判断されると、前記行末の空白領域を表示可能領域として算出する第１の算出ステップと、
前記行頭に配置された文字が、１つの文字を表示するために予め定められた領域に対して占有する領域を、必要領域として算出する第２の算出ステップと、
前記表示可能領域および前記必要領域に基づいて、前記行頭に配置された文字の位置を前記行末に変更する変更ステップとを実行させる、プログラム。
【請求項１４】
請求項１３に記載のプログラムを記録したコンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、文字の禁則処理を実行する技術に関し、特に、行頭禁則処理および行末禁則処理を実行する技術に関する。
【０００２】
【従来の技術】
文書を作成するソフトウェアは、その機能として、文字の配置を整える機能を含む。その機能には、特定の文字を特定の位置に表示することを禁止する、いわゆる禁則処理機能が含まれる。
【０００３】
たとえば、文字を配置した結果、読点“。”が行の先頭に配置された場合、その読点は、その行の前行の最後に移動されることがある。あるいは、前括弧“（”が、行の最後に配置された場合、その前括弧は、その行の次行の先頭に移動されることがある。これらの移動は、予め設定された禁則処理機能に基づいて行なわれる。その結果、文書は、表示装置上において見やすく表示される。
【０００４】
この表示装置には、ＰＣ（Ｐｅｒｓｏｎａｌ　Ｃｏｍｐｕｔｅｒ）のディスプレイ装置などの比較的大きな表示領域を含む装置に加えて、携帯電話、あるいは、ＰＤＡ（Ｐｅｒｓｏｎａｌ　Ｄｉｇｉｔａｌ　Ａｓｓｉｓｔａｎｔ）のような比較的小さな表示領域を含む装置（以下、携帯端末という。）がある。この携帯端末が普及した結果、従来の禁則処理機能に加えて、小さな表示領域にできるだけ多くの文字を見やすく表示する要請が高まっている。すなわち、文字を次行に移動する処理ではなく、前行に詰めることにより多くの文字を表示する処理が求められている。
【０００５】
特開平５−３３４２８７号公報（特許文献１）は、このような禁則処理を実行する表示装置を開示する。この公報に開示された表示装置は、行の先頭に存在する文字が行頭禁則文字であるか否かを判定する回路と、行末に存在する文字が全角文字であり、半角に変換できるか否かを判定する回路と、その行頭禁則文字が半角で表示できるか否かを判定する回路と、行末の文字を半角で表示する回路と、行頭禁則文字を半角で行末に表示する回路と、行の先頭に行頭禁則文字が位置付けられた場合に、その直前行の末尾に存在する文字が半角で表示可能であって、かつ、行頭禁則文字自身が半角で表示可能であるときには、直前行の末尾の文字を半角で表示し、行頭禁則文字も半角で直前の行の末尾の文字に続けて表示する表示回路とを含む。
【０００６】
この装置によると、行の先頭に存在する文字が行頭禁則文字の場合であって、その文字を半角に変換することが可能であり、その直前行の末尾の文字も半角に変換することが可能であると判断されると、表示回路は、その末尾の文字と行頭禁則文字とを半角に変換して、行末に表示する。このようにして、半角にて表示することができる行頭禁則文字を行末に表示することができる。
【０００７】
【特許文献１】
特開平５−３３４２８７号公報（第２頁、第２図）
【０００８】
【発明が解決しようとする課題】
しかしながら、上記公報に開示された技術によると、禁則文字の位置を変更するためには、その文字および移動先の行末にある文字のいずれもが半角で表示可能でなければならない。したがって、これらの文字のいずれかが半角で表示できない場合には、その文字の位置を変更できないことになり、禁則処理を適用できる範囲が制限されるという問題がある。
【０００９】
本発明は、上述の課題を解決するためになされたものであって、禁則処理が適用される範囲を拡張することができる文字処理装置、文字処理方法、その方法を実現するためのプログラムおよび記録媒体を提供することである。
【００１０】
【課題を解決するための手段】
第１の発明に係る文字処理装置は、処理対象の複数の文字から構成される文章についての文章情報と、各複数の文字についての固有情報とを記憶するための記憶手段と、記憶手段に接続され、文章情報に基づいて、第１の行と第１の行の次行である第２の行とに文章を配置した場合の、複数の文字の配置についての配置情報を、予め取得するための取得手段と、記憶手段および取得手段に接続され、配置情報および固有情報に基づいて、第１の行の行末に配置された文字が行末への配置を禁止された行末禁則文字であるか否か、および第２の行の行頭に配置された文字が行頭への配置を禁止された行頭禁則文字であるか否かのいずれかを判断するための判断手段と、記憶手段および判断手段に接続され、配置された文字が行末禁則文字および行頭禁則文字のいずれかであると判断されると、行末の空白領域を表示可能領域として算出するための第１の算出手段と、行頭に配置された文字が、１つの文字を表示するために予め定められた領域に対して占有する領域を、必要領域として算出するための第２の算出手段と、第１の算出手段および第２の算出手段に接続され、表示可能領域および必要領域に基づいて、行頭に配置された文字の位置を行末に変更するための変更手段とを含む。
【００１１】
第１の発明によると、文字処理装置は、文字の禁則処理を実行する。この文字処理装置の記憶手段は、処理の対象となる複数の文字から構成される文章についての文章情報と、それらの文字に固有な情報（たとえば、禁則処理の対象となる文字であるか否か）を記憶する。取得手段は、その文章情報に基づいて、第１の行とその行の次行である第２の行とに、その文章を配置した場合の、それぞれの文字の配置についての配置情報を予め取得する。すなわち、実際に文字が表示装置などに表示される前に、取得手段は、たとえば、メモリ上などに文章を仮想的に配置することにより、行末に行末禁則文字が配置されているか否か、あるいは、行頭に行頭禁則文字が配置されているか否かなどの情報を取得する。判断手段は、第１の行の行末（以下、「行末」と表わす。）に配置された文字が行末禁則文字であるか否か、あるいは、第２の行の行頭（以下、「行頭」と表わす。）に配置された文字が行頭禁則文字であるか否かを判断する。行末あるいは行頭の文字がその位置への配置を禁止された禁則文字であると判断されると、第１の算出手段は、行末に文字を表示できる領域を表示可能領域として算出する。たとえば、当初より文字が配置されていない空白の領域、あるいは、文字の表示に不要な領域（たとえば、文字の輪郭が占有しない領域）等が、表示可能領域となる。第２の算出手段は、行頭に配置された文字が、予め定められた領域に対して占有する領域（たとえば、文字の輪郭が占有する領域）を必要領域として算出する。変更手段は、表示可能領域と必要領域とに基づいて（たとえば、表示可能領域が必要領域を上回ることに基づいて）、行頭に配列される予定であった文字の位置を行末に変更する。行末禁則文字が行末に配置される予定であった場合（行末禁則の場合）と、行頭禁則文字が行頭に配置される予定であった場合（行頭禁則の場合）とのいずれかの場合、行頭に配置される予定であった文字は、行末に移動される。すなわち、行末禁則の場合、文字処理装置は、行末禁則文字の後に続く表示可能領域に、次行の先頭から移動した文字を配置して、行末禁則の状態を回避する。一方、行頭禁則の場合、文字処理装置は、行頭禁則文字を前行の行末の表示可能領域に移動して、行頭禁則の状態を回避する。このとき、文字処理装置は、移動する文字を半角にする必要がないため、禁則処理の対象は、半角に縮小できる文字だけに限定されない。これにより、禁則処理の適用範囲を拡張することができる文字処理装置を提供することができる。
【００１２】
第２の発明に係る文字処理装置は、第１の発明の構成に加えて、変更手段は、表示可能領域が必要領域を上回ることに基づいて、行頭に配置された文字の位置を行末に変更するための手段を含む。
【００１３】
第２の発明によると、第２の行の行頭文字を表示するために必要な領域が、第１の行の行末文字の後に生成されるとき、その行頭文字は、行末文字の後に移される。したがって、行末文字が行末禁則文字である場合、移された行頭文字が行末に配置され、行末禁則の状態が回避される。一方、行頭文字が行頭禁則文字である場合、その行頭禁則文字が行末に配置され、行頭禁則の状態が回避される。
【００１４】
第３の発明に係る文字処理装置は、第１または第２の発明の構成に加えて、第２の算出手段は、固有情報に基づいて、必要領域を算出するための手段を含む。
【００１５】
第３の発明によると、必要領域は、予め記憶された、文字についての固有情報（たとえば、予め記憶された必要領域、あるいは、その領域を算出するための比率など）に基づいて算出される。文字処理装置は、このようにして算出された必要領域と表示可能領域とに基づいて、禁則処理を実行する。
【００１６】
第４の発明に係る文字処理装置は、第１または第２の発明の構成に加えて、配置された文章に含まれる文字の表示に関する情報を、表示情報として検出するための検出手段をさらに含む。第２の算出手段は、表示情報に基づいて、必要領域を算出するための手段を含む。
【００１７】
第４の発明によると、文字を走査することなどにより、配置された文章に含まれる文字の表示に関する情報が、表示情報として検出される。この情報とは、たとえば、文字の輪郭が占有する領域の大きさ、あるいは、文字を表示するために少なくとも必要な列の幅、もしくは行の高さなどである。必要領域は、このような表示情報に基づいて算出される。このように、文字処理装置は、文字情報が不十分である文字に対して、情報を検出し、その情報に基づいて、禁則処理を実行することができる。
【００１８】
第５の発明に係る文字処理装置は、第４の発明の構成に加えて、検出手段は、文章に含まれる文字を走査することにより、表示情報を検出するための手段を含む。
【００１９】
第５の発明によると、表示情報は、文字の走査により検出される。たとえば、その文字が占有する領域が表示情報として検出される。したがって、文字処理装置は、文字の表示情報を適時検出して、禁則処理を実行することができる。
【００２０】
第６の発明に係る文字処理装置は、第１〜５のいずれかの発明の構成に加えて、第１の算出手段は、第１の行に配置される文字の位置を変更することにより、表示可能領域を算出するための手段を含む。文字処理装置は、算出された表示可能領域を第１の行末に生成するように、配置される文字の位置を変更するための位置変更手段をさらに含む。
【００２１】
第６の発明によると、第１の算出手段は、第１の行に配置された文字の位置を変更することにより（たとえば、文字の間隔を縮減して変更することにより）、表示可能領域を算出する。第１の行に文字が配置されると、そのようにして算出された表示可能領域が行末に生成される。したがって、第２の行の行頭の文字は、生成された第１の行の行末に移動される。このように、行末文字の後の領域が、次行の行頭文字を表示するために不十分であるとき、文字処理装置は、第１の行における文字の位置を変更することにより、行末文字の後に、文字の表示に十分な領域を生成することができる。
【００２２】
第７の発明に係る文字処理方法は、処理対象の複数の文字から構成される文章についての文章情報と、各複数の文字についての固有情報とを記憶する記憶ステップと、文章情報に基づいて、第１の行と第１の行の次行である第２の行とに文章を配置した場合の、複数の文字の配置についての配置情報を、予め取得する取得ステップと、配置情報および固有情報に基づいて、第１の行の行末に配置された文字が行末への配置を禁止された行末禁則文字であるか否か、および第２の行の行頭に配置された文字が行頭への配置を禁止された行頭禁則文字であるか否かのいずれかを判断する判断ステップと、配置された文字が行末禁則文字および行頭禁則文字のいずれかであると判断されると、行末の空白領域を表示可能領域として算出する第１の算出ステップと、行頭に配置された文字が、１つの文字を表示するために予め定められた領域に対して占有する領域を、必要領域として算出する第２の算出ステップと、表示可能領域および必要領域に基づいて、行頭に配置された文字の位置を行末に変更する変更ステップとを含む。
【００２３】
第７の発明によると、文字処理方法は、文字の禁則処理を実行する。この文字処理方法の準備ステップは、処理の対象となる複数の文字から構成される文章についての文章情報と、それらの文字に固有な情報（たとえば、禁則処理の対象となる文字であるか否か）を予め準備する。取得ステップは、その文章情報に基づいて、第１の行とその行の次行である第２の行とに、その文章を配置した場合の、それぞれの文字の配置についての配置情報を予め取得する。すなわち、実際に文字を表示装置などに表示する前に、たとえば、メモリ上などに仮想的に配置することにより、行末に行末禁則文字が配置されているか否か、あるいは、行頭に行頭禁則文字が配置されているか否かなどの情報を取得する。判断ステップは、第１の行の行末（以下、「行末」と表わす。）に配置された文字が行末禁則文字であるか否か、あるいは、第２の行の行頭（以下、「行頭」と表わす。）に配置された文字が行頭禁則文字であるか否かを判断する。行末あるいは行頭の文字がその位置への配置を禁止された禁則文字であると判断されると、第１の算出ステップは、行末に文字を表示できる領域を表示可能領域として算出する。たとえば、当初より文字が配置されていない空白の領域、あるいは、文字の表示に不要な領域（たとえば、文字の輪郭が占有しない領域）等が、表示可能領域となる。第２の算出ステップは、行頭に配置された文字が、予め定められた領域に対して占有する領域（たとえば、文字の輪郭が占有する領域）を必要領域として算出する。変更ステップは、表示可能領域と必要領域とに基づいて（たとえば、表示可能領域が必要領域を上回ることに基づいて）、行頭に配列される予定であった文字の位置を行末に変更する。行末禁則文字が行末に配置される予定であった場合（行末禁則の場合）と、行頭禁則文字が行頭に配置される予定であった場合（行頭禁則の場合）とのいずれかの場合、行頭に配置される予定であった文字は、行末に移動される。すなわち、行末禁則の場合、文字処理方法は、行末禁則文字の後に続く表示可能領域に、次行の先頭から移動した文字を配置して、行末禁則の状態を回避する。一方、行頭禁則の場合、文字処理方法は、行頭禁則文字を前行の行末の表示可能領域に移動して、行頭禁則の状態を回避する。このとき、文字処理装置は、移動する文字を半角にする必要がないため、禁則処理の対象は、半角に縮小できる文字だけに限定されない。これにより、禁則処理の適用範囲を拡張することができる文字処理方法を提供することができる。
【００２４】
第８の発明に係る文字処理方法は、第７の発明の構成に加えて、変更ステップは、表示可能領域が必要領域を上回ることに基づいて、行頭に配置された文字の位置を行末に変更するステップを含む。
【００２５】
第８の発明によると、第２の行の行頭文字を表示するために必要な領域が、第１の行の行末文字の後に生成されるとき、その行頭文字は、行末文字の後に移される。したがって、行末文字が行末禁則文字である場合、移された行頭文字が行末に配置され、行末禁則の状態が回避される。一方、行頭文字が行頭禁則文字である場合、その行頭禁則文字が行末に配置され、行頭禁則の状態が回避される。
【００２６】
第９の発明に係る文字処理方法は、第７または第８の発明の構成に加えて、第２の算出ステップは、固有情報に基づいて、必要領域を算出するステップを含む。
【００２７】
第９の発明によると、必要領域は、予め記憶された、文字についての固有情報（たとえば、予め記憶された必要領域、あるいは、その領域を算出する比率など）に基づいて算出される。文字処理方法は、このようにして算出された必要領域と表示可能領域とに基づいて、禁則処理を実行する。
【００２８】
第１０の発明に係る文字処理方法は、第７または第８の発明の構成に加えて、配置された文章に含まれる文字の表示に関する情報を、表示情報として検出する検出ステップをさらに含む。第２の算出ステップは、表示情報に基づいて、必要領域を算出するステップを含む。
【００２９】
第１０の発明によると、文字を走査することなどにより、配置された文章に含まれる文字の表示に関する情報が、表示情報として検出される。この情報とは、たとえば、文字の輪郭が占有する領域の大きさ、あるいは、文字を表示するために少なくとも必要な列の幅、もしくは行の高さなどである。必要領域は、このような表示情報に基づいて算出される。このように、文字処理方法は、文字情報が不十分である文字に対して、情報を検出し、その情報に基づいて、禁則処理を実行することができる。
【００３０】
第１１の発明に係る文字処理方法は、第１０の発明の構成に加えて、検出ステップは、文章に含まれる文字を走査することにより、表示情報を検出するステップを含む。
【００３１】
第１１の発明によると、表示情報は、文字の走査により検出される。たとえば、その文字が占有する領域が表示情報として検出される。したがって、文字処理方法は、文字の表示情報を適時検出して、禁則処理を実行することができる。
【００３２】
第１２の発明に係る文字処理方法は、第７〜１１のいずれかの発明の構成に加えて、第１の算出ステップは、第１の行に配置される文字の位置を変更することにより、表示可能領域を算出するステップを含む。文字処理方法は、算出された表示可能領域を第１の行末に生成するように、配置される文字の位置を変更する位置変更ステップをさらに含む。
【００３３】
第１２の発明によると、第１の算出ステップは、第１の行に配置された文字の位置を変更することにより（たとえば、文字の間隔を縮減して変更することにより）、表示可能領域を算出する。第１の行に文字が配置されると、そのようにして算出された表示可能領域が行末に生成される。したがって、第２の行の行頭の文字は、生成された第１の行の行末に移動される。このように、行末文字の後の領域が、次行の行頭文字を表示するために不十分であるとき、文字処理方法は、第１の行における文字の位置を変更することにより、行末文字の後に、文字の表示に十分な領域を生成することができる。
【００３４】
第１３の発明に係るプログラムは、コンピュータに、処理対象の複数の文字から構成される文章についての文章情報と、各複数の文字についての固有情報とを予め準備する準備ステップと、文章情報に基づいて、第１の行と第１の行の次行である第２の行とに文章を配置した場合の、複数の文字の配置についての配置情報を、予め取得する取得ステップと、配置情報および固有情報に基づいて、第１の行の行末に配置された文字が行末への配置を禁止された行末禁則文字であるか否か、および第２の行の行頭に配置された文字が行頭への配置を禁止された行頭禁則文字であるか否かのいずれかを判断する判断ステップと、配置された文字が行末禁則文字および行頭禁則文字のいずれかであると判断されると、行末の空白領域を表示可能領域として算出する第１の算出ステップと、行頭に配置された文字が、１つの文字を表示するために予め定められた領域に対して占有する領域を、必要領域として算出する第２の算出ステップと、表示可能領域および必要領域に基づいて、行頭に配置された文字の位置を行末に変更する変更ステップとを実行させる。
【００３５】
第１３の発明によると、このプログラムは、文字の禁則処理を実行する文字処理方法を実現する。この文字処理方法の準備ステップは、処理の対象となる複数の文字から構成される文章についての文章情報と、それらの文字に固有な情報（たとえば、禁則処理の対象となる文字であるか否か）を予め準備する。取得ステップは、準備された文字情報に基づいて、第１の行とその行の次行である第２の行とに、その文章を配置した場合の、それぞれの文字の配置についての配置情報を予め取得する。すなわち、実際に文字を表示装置などに表示する前に、たとえば、メモリ上などに仮想的に配置することにより、行末に行末禁則文字が配置されているか否か、あるいは、行頭に行頭禁則文字が配置されているか否かなどの情報を取得する。判断ステップは、第１の行の行末（「行末」）に配置された文字が行末禁則文字であるか否か、あるいは、第２の行の行頭（「行頭」）に配置された文字が行頭禁則文字であるか否かを判断する。行末あるいは行頭の文字がその位置への配置を禁止された禁則文字であると判断されると、第１の算出ステップは、行末に文字を表示できる領域を表示可能領域として算出する。たとえば、当初より文字が配置されていない空白の領域、あるいは、文字の表示に不要な領域（たとえば、文字の輪郭が占有しない領域）等が、表示可能領域となる。第２の算出ステップは、行頭に配置された文字が、予め定められた領域に対して占有する領域（たとえば、文字の輪郭が占有する領域）を必要領域として算出する。変更ステップは、表示可能領域と必要領域とに基づいて（たとえば、表示可能領域が必要領域を上回ることに基づいて）、行頭に配列される予定であった文字の位置を行末に変更する。行末禁則文字が行末に配置される予定であった場合（行末禁則の場合）と、行頭禁則文字が行頭に配置される予定であった場合（行頭禁則の場合）とのいずれかの場合、行頭に配置される予定であった文字は、行末に移動される。すなわち、行末禁則の場合、文字処理方法は、行末禁則文字の後に続く表示可能領域に、次行の先頭から移動した文字を配置して、行末禁則の状態を回避する。また、行頭禁則の場合、文字処理方法は、行頭禁則文字を前行の行末に移動して、行頭禁則の状態を回避する。このとき、移動される文字は半角にする必要がないため、禁則処理は半角可能な文字だけに限定されない。これにより、禁則処理の適用範囲を拡張することができる文字処理方法を実現するプログラムを提供することができる。
【００３６】
第１４の発明に係る記録媒体は、第１３の発明に係るプログラムを記録した記録媒体である。
【００３７】
第１４の発明によると、記録媒体には、文字の禁則処理を行う文字処理方法を実現するプログラムが記録される。このプログラムを用いて、コンピュータに文字処理方法を実現させることができる。
【００３８】
【発明の実施の形態】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００３９】
図１に、本発明の実施の形態に係る文字処理装置を示す。この文字処理装置は、たとえば文書作成ソフトを含むパーソナルコンピュータ、あるいは文書を表示することができる携帯端末である。
【００４０】
この文字処理装置１００は、相互にバスで接続されたＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）１０２と、固定ディスク１０４と、モニタ１０８と、マウス１１２と、キーボード１１４と、メモリ１１６と、ＦＤ（Ｆｌｅｘｉｂｌｅ　Ｄｉｓｋ）駆動装置１１８と、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ　Ｄｉｓｋ　−　Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）駆動装置１２０とを含む。ＦＤ駆動装置１１８にはＦＤ１２２が装着される。ＣＤ−ＲＯＭ駆動装置１２０にはＣＤ−ＲＯＭ１２４が装着される。
【００４１】
この文字処理装置１００における処理は、コンピュータハードウェアとＣＰＵ１０２とにより実行されるソフトウェアとにより実現される。一般に、このようなソフトウェアは、ＦＤ１２２、ＣＤ−ＲＯＭ１２４などの記録媒体に格納されて流通し、ＦＤ駆動装置１１８またはＣＤ−ＲＯＭ駆動装置１２０などにより記録媒体から読取られて固定ディスク１０４に一旦格納される。さらに、固定ディスク１０４からメモリ１１６に読出されて、ＣＰＵ１０２により実行される。図１に示したコンピュータのハードウェア自体は一般的なものである。したがって、本発明の最も本質的な部分は、ＦＤ１２２、ＣＤ−ＲＯＭ１２４、固定ディスク１０４などの記録媒体に記録されたソフトウェアである。
【００４２】
なお、図１に示したコンピュータ自体の動作は周知であるので、ここでは、その詳細な説明は繰り返さない。
【００４３】
図２に、文字処理装置１００の固定ディスク１０４に記憶される、禁則文字およびそれぞれの文字に関する文字情報を示す。
【００４４】
図２（Ａ）は、禁則文字とその文字を表示するために必要な領域の割合αを示す。たとえば、句点「、」は、１つの文字を表示するために予め定められた領域（たとえば、予め定められた大きさで表わされる全角文字を表示するための領域）に対して、４０％の領域が必要である。たとえば、予め定められた領域が１０ポイントである場合、句点「、」を表示するためには、列の幅として４ポイントが必要となる。
【００４５】
図２（Ｂ）は、図２（Ａ）に示された文字について、割合（α）と予め定められた領域との関係を表わす図である。たとえば、句点「、」は、標準の領域の左端から行方向に４０％の領域を使用することを示す。したがって、ある行に、標準の領域に対して４０％以上の領域がある場合、句点「、」を表示することができる。
【００４６】
なお、この関係は、図２（Ａ）あるいは（Ｂ）に示された、文章が横書きである場合に限られず、たとえば、文章が縦書きの場合、文字の高さ（あるいは行の高さ）について、同様な割合を設定してもよい。これにより、縦書きおよび横書きのいずれについても、禁則処理を実行することができる。
【００４７】
また、このように設定された割合に基づいて領域を算出するための基点は、図２（Ｂ）に示すような左端に限定されず、たとえば、その文字の左端（あるいは上端）を基点にしてもよい。すなわち、図２（Ｂ）において、文字として表示されている部分（文字の輪郭部分）について、その部分の左端を基点としてもよい。こうすることにより、文字が表示されない空白の部分を、その他の文字を表示するために使用することができる。
【００４８】
図３を参照して、本実施の形態に係る文字処理装置１００において実行されるプログラムは、以下のような制御構造を有する。
【００４９】
ステップ（以下、ステップをＳと略す。）１０２にて、ＣＰＵ１０２は、固定ディスク１０４に記憶された文章データをメモリ１１６に読出す。この文章データは、後述のステップにて実行される禁則処理の対象となるデータである。その処理が実行された後、文章データは、モニタ１０８に表示される。
【００５０】
Ｓ２００にて、ＣＰＵ１０２は、後述する文章レイアウト処理を実行する。この処理が実行されると、文章データに含まれる各文字の位置データが算出される。この位置データとは、文章データがモニタ１０８の１行分に相当するメモリ領域に予め配置された場合のデータ（たとえば、その文字は、行頭から何ポイント目に配置されるかを表わすデータ）である。
【００５１】
Ｓ３００にて、ＣＰＵ１０２は、後述する禁則文字判定処理を実行する。この処理が実行されると、行頭文字は行頭禁則文字であるか否か、あるいは行末文字は行末禁則文字であるか否かが判定される。この判定は、Ｓ２００にて算出された位置データと、文章データに含まれるそれぞれの文字に関する情報（たとえば、その文字は行末禁則文字であることを表わす情報など）とに基づいて行なわれる。
【００５２】
Ｓ１０８にて、ＣＰＵ１０２は、追い込み処理が必要であるか否かを判断する。この判断は、Ｓ３００にて判定された結果に基づいて行なわれる。すなわち、行頭に配置される予定の文字が行頭禁則文字である場合、あるいは、行末に配置される予定の文字が行末禁則文字である場合、追い込み処理が必要であると判断される。なお、「追い込み処理」とは、禁則状態を回避するために、行の先頭にある文字をその行の前行の行末に移動することをいう。追い込み処理が必要であると判断されると（Ｓ１０８にてＹＥＳ）、処理はＳ４００に移される。そうでないと（Ｓ１０８にてＮＯ）、処理はＳ１１８にて移される。
【００５３】
Ｓ４００にて、ＣＰＵ１０２は、後述する必要領域算出処理（Ａ）を実行する。この処理が実行されると、追い込み処理の対象となる文字を表示するために必要な領域（必要領域）が算出される。その算出は、固定ディスク１０４に記憶された文字の情報と、メモリ１１６に文章データを配置することにより予め取得された情報（位置データ）とに基づいて行なわれる。
【００５４】
Ｓ５００にて、ＣＰＵ１０２は、後述する表示可能領域算出処理を実行する。この処理が実行されると、行末に文字を表示することができる領域（表示可能領域）が算出される。この領域は、行末文字の表示に不要な領域と、行末文字の後に残された行端までの空白領域とを含む。そのような領域の算出は、固定ディスク１０４に記憶された文字の情報と、メモリ１１６に文章データを配置することにより予め取得された情報とに基づいて行なわれる。
【００５５】
Ｓ１１４にて、ＣＰＵ１０２は、追い込み処理の実行が可能であるか否かを判断する。この判断は、Ｓ４００にて算出された必要領域と、Ｓ５００にて算出された表示可能領域とに基づいて行なわれる。追い込み処理の実行が可能であると判断されると（Ｓ１１４にてＹＥＳ）、処理はＳ６００に移される。そうでないと（Ｓ１１４にてＮＯ）、処理はＳ１１８に移される。
【００５６】
Ｓ６００にて、ＣＰＵ１０２は、追い込み処理を実行する。この処理が実行されると、行末禁則文字が行末に配置される予定であった場合、その次の行の先頭にある文字がその行末に移動される。これにより、行末禁則文字は、行末の位置から１文字前の位置に配置され、行末禁則の状態が回避される。同様に、行頭禁則文字が行頭に配置される予定であった場合、その文字は、その前の行の行末に移動され、その文字の次の文字が行頭に配置される。これにより、行頭文字は、行頭禁則文字ではなくなり、行頭禁則の状態が回避される。
【００５７】
Ｓ１１８にて、ＣＰＵ１０２は、読出した文章データのすべての処理が完了したか否かを判断する。この判断は、たとえば、メモリ１１６に文章データを配置したときの末尾に付した制御記号（たとえば、ＥＯＦ（Ｅｎｄ　ｏｆ　Ｆｉｌｅ））まで処理が完了したか否か、あるいは、文章データの読み込み時にブランクが読み込まれたか否か等に基づいて行なわれる。すべてのデータの処理が完了したと判断すると（Ｓ１１８にてＹＥＳ）、処理はＳ１２０に移される。そうでないと（Ｓ１１８にてＮＯ）、処理はＳ２００に戻される。
【００５８】
Ｓ１２０にて、ＣＰＵ１０２は、処理を完了した文章データをモニタ１０８に出力する。モニタ１０８に表示される文書は、禁則処理が実行された後の文書である。
【００５９】
図４を参照して、本実施の形態に係る文字処理装置１００が実行する文章レイアウト処理（図３におけるＳ２００の処理）は、以下のような制御構造を有する。
【００６０】
Ｓ２０２にて、ＣＰＵ１０２は、モニタ１０８の１行分のメモリ領域をメモリ１１６に確保する。この領域は、モニタ１０８と同じ条件（文字の大きさ、文字の間隔など）に設定され、文書を構成する文字を配置して、配置結果を予め取得するために使用される。
【００６１】
Ｓ２０４にて、ＣＰＵ１０２は、文字数カウンタ（ｉ）を初期化する。この文字数カウンタは、配置される文字の数を表わす。この初期化により、文字数カウンタの値は“１”となる。
【００６２】
Ｓ２０６にて、ＣＰＵ１０２は、位置カウンタ（ＰＯＳ）を初期化する。この位置カウンタは、次の文字を配置する位置を表わす。この初期化により、文字数カウンタの値は、“１”が代入される。すなわち、処理の開始時における次の文字（すなわち、最初の文字）は、行頭から１番目の位置に配置される。
【００６３】
Ｓ２０８にて、ＣＰＵ１０２は、その行に次の文字を配置することが可能か否かを判断する。この判断は、たとえば、次の文字を配置する位置（ＰＯＳ）の値に、１つの文字を表示するために予め定められた領域を加算してその文字の最後の位置を算出し、その位置が行末位置を超えるか否かに基づいて行なわれる。その位置が行末位置を超えない限り、その行に次の文字を配置することができる。その行に次の文字を配置することが可能であると判断すると（Ｓ２０８にてＹＥＳ）、処理はＳ２１０に移される。そうでないと（Ｓ２０８にてＮＯ）、処理はメイン処理に戻される。
【００６４】
Ｓ２１０にて、ＣＰＵ１０２は、ｉ番目の文字の配置を開始する位置として、位置カウンタ（ＰＯＳ）の値を設定する。
【００６５】
Ｓ２１２にて、ＣＰＵ１０２は、位置カウンタ（ＰＯＳ）の値を更新する。すなわち、現在の位置カウンタの値に、１つの文字を表示するために予め定められた領域と、文字の間隔とを加算して、位置カウンタの値を新たに算出する。なお、この予め定められた領域は、文字処理装置の利用者が任意に設定するようにしてもよい。たとえば、表示する文字のサイズが変更されると、その変更に対応して、この領域が変更されるように設定してもよい。また、文字の間隔は、たとえば、固定ディスク１０４に予め記憶されている値である。この間隔は、特定の値に固定されるものではなく、利用者の指示に基づいて変更できるようにしてもよい。
【００６６】
Ｓ２１４にて、ＣＰＵ１０２は、文字数カウンタの値を更新する。その後、処理はＳ２０８に戻される。
【００６７】
図５を参照して、本実施の形態に係る文字処理装置１００が実行する禁則文字判定処理（図３におけるＳ３００の処理）は、以下のような制御構造を有する。
【００６８】
Ｓ３０２にて、ＣＰＵ１０２は、行頭文字が行頭禁則文字であるか否かを判断する。この判断は、メモリ１１６に配置された文字と、固定ディスク１０４から読出された文字に関する情報に基づいて行なわれる。行頭文字は行頭禁則文字であると判断されると（Ｓ３０２にてＹＥＳ）、処理はＳ３０４に移される。そうでないと（Ｓ３０２にてＮＯ）、処理はＳ３０６に移される。
【００６９】
Ｓ３０４にて、ＣＰＵ１０２は、行頭文字の追い込み禁則処理を実行する必要があると判定し、その後の処理を決定するために、判定結果をメモリ１１６に一時的に保存する。
【００７０】
Ｓ３０６にて、ＣＰＵ１０２は、行頭文字の追い込み禁則処理を実行する必要がないと判定し、その後の処理を決定するために、判定結果をメモリ１１６に一時的に保存する。
【００７１】
Ｓ３０８にて、ＣＰＵ１０２は、行末文字が行末禁則文字であるか否かを判断する。この判断は、メモリ１１６に配置された文字と、メモリ１１６から読出された、その行末文字に関する情報とに基づいて行なわれる。行末文字は行末禁則文字であると判断されると（Ｓ３０８にてＹＥＳ）、処理はＳ３１０に移される。そうでないと（Ｓ３０８にてＮＯ）、処理はＳ３１２に移される。
【００７２】
Ｓ３１０にて、ＣＰＵ１０２は、行末文字の追い込み禁則処理を実行する必要があると判定し、その後の処理を決定するために、判定結果をメモリ１１６に一時的に保存する。
【００７３】
Ｓ３１２にて、ＣＰＵ１０２は、行末文字の追い込み禁則処理を実行する必要がないと判定し、その後の処理を決定するために、判定結果をメモリ１１６に一時的に保存する。
【００７４】
図６を参照して、本実施の形態に係る文字処理装置１００が実行する必要領域算出処理（Ａ）（図３におけるＳ４００の処理）は、以下のような制御構造を有する。
【００７５】
Ｓ４０２にて、ＣＰＵ１０２は、固定ディスク１０４から、文字情報を読出す。この情報は、文字に固有な情報であり、以後の判断処理に使用される。たとえば、その文字がプロポーショナルフォントであるか否か、文字を表示するために少なくともどれぐらいの領域が必要であるかを表わす情報などである。これらの情報に基づいて、その文字を表示するために必要な領域が算出される。なお、プロポーショナルフォントとは、文字ごとに異なった表示のための幅を持つフォントをいう。このようなフォントは、情報として、文字間隔を調整するデータを備え、そのデータに基づいて、バランスよく表示したり印刷することができる。
【００７６】
Ｓ４０４にて、ＣＰＵ１０２は、読み出した情報に基づいて、行頭に配置された文字はプロポーショナルフォントであるか否かを判断する。行頭に配置された文字がプロポーショナルフォントであるとき（Ｓ４０４にてＹＥＳ）、処理はＳ４１０に移される。そうでないと（Ｓ４０４にてＮＯ）、処理はＳ４０６に移される。
【００７７】
Ｓ４０６にて、ＣＰＵ１０２は、行頭に配置された文字の情報は固定ディスク１０４に含まれるか否かを判断する。ここで、文字の情報とは、１つの文字を表示するために予め割り当てられた領域（たとえば、全角サイズの領域）において、大きさを変えることなくその文字を表示するために必要な領域を表わす情報（たとえば、ポイント数、あるいは、領域に対する比率など）である。行頭に配置された文字の情報が固定ディスク１０４に記憶されているとき（Ｓ４０６にてＹＥＳ）、処理はＳ４０８に移される。そうでないと（Ｓ４０６にてＮＯ）、処理はＳ４１０に移される。
【００７８】
Ｓ４０８にて、ＣＰＵ１０２は、比率αとして、固定ディスク１０４から読出した値を設定する。なお、比率αは、１つの文字を表示するために予め設定された領域（たとえば、全角１０ポイントのサイズ）に対して、ある文字がどの程度の領域を必要とするかを表わす。たとえば、ある文字が半分の領域に表示できる場合、比率αは５０（％）となる。
【００７９】
Ｓ４１０にて、ＣＰＵ１０２は、比率αとして、１００（％）を設定する。したがって、この場合、その文字を、予め割り当てられた領域に表示すると、文字の表示に使用されない領域（たとえば、空白領域）は残らないことになる。
【００８０】
Ｓ４１２にて、ＣＰＵ１０２は、設定されたαに基づいて、必要領域Ｗを算出する。この算出は、予め設定された大きさの文字を表示するために割り当てられた領域（たとえば、列のサイズ、行の高さなど）に、設定された比率αを乗じることにより行なわれる。
【００８１】
図７を参照して、本実施の形態に係る文字処理装置１００が実行する表示可能領域算出処理（図３におけるＳ５００の処理）は、以下のような制御構造を有する。
【００８２】
Ｓ５０２にて、ＣＰＵ１０２は、追い込まれる行（以下、行（１）と表わす。）の文字数（Ｎ）を取得する。なお、追い込まれる行とは、行末に次行の行頭文字が配置される行である。
【００８３】
Ｓ５０４にて、ＣＰＵ１０２は、行（１）の文字の間隔の和（Ｄ）を算出する。この値は、文字の間隔×（Ｎ−１）により算出される。なお、文字の間隔は、前述のＳ４０２にて読み出されたデータである。
【００８４】
Ｓ５０６にて、ＣＰＵ１０２は、算出された文字の間隔の和にＮ番目の文字（すなわち、行末文字）から行末までの間隔（以下、行末間隔（ｄ）という。）を加算する。これにより、行（１）における表示可能領域が算出される。
【００８５】
図８を参照して、本実施の形態に係る文字処理装置１００が実行する追い込み処理（図３におけるＳ６００の処理）は、以下のような制御構造を有する。
【００８６】
Ｓ６０２にて、ＣＰＵ１０２は、Ｎ番目の文字から行末までの間隔（行末間隔（ｄ））が、必要な領域（Ｗ）を上回るか否かを判断する。この判断は、行末間隔（ｄ）だけで、次行の行頭文字を表示することが可能か否かを確認するために行なわれる。行末間隔が必要な領域を上回るとき（Ｓ６０２にてＹＥＳ）、処理はＳ６０８に移される。そうでないと（Ｓ６０２にてＮＯ）、処理はＳ６０４に移される。
【００８７】
Ｓ６０４にて、ＣＰＵ１０２は、行（１）における文字の位置の変更量Ｖを算出する。文字の位置の変更は、行（１）に配置されるＮ個の文字の間隔を縮減することにより行なわれる。したがって、たとえば、文字の間隔を等間隔だけ縮減する場合、その変更量Ｖは、ｗ÷（Ｎ−１）により算出される。なお、これにより算出された変更量Ｖが、整数ではないときは、その値を上回る最小の整数を変更量とすればよい。たとえば、Ｖ＝０．８となる場合、「１」を変更量Ｖとすればよい。また、この算出は、縮減する文字の間隔を等間隔となるように算出する方法に限定されない。したがって、縮減される間隔を、たとえば文字ごとに可変になるようにしてもよい。
【００８８】
Ｓ６０６にて、ＣＰＵ１０２は、算出された変更量Ｖに基づいて、行（１）に配置される文字を移動する。たとえば、文章データが横書きである場合、それらの文字は左に移される。また、文章データが縦書きである場合、それらの文字は、上方に移される。
【００８９】
Ｓ６０８にて、ＣＰＵ１０２は、行（２）から行頭の文字（以下、「Ｃ」と表わす。）を取得する。この文字（Ｃ）が行（１）に移動される文字となる。なお、行（２）は、行（１）の次行である。
【００９０】
Ｓ６１０にて、ＣＰＵ１０２は、行（１）に配置される予定であった行末文字の後に、文字（Ｃ）を移動する。これにより、行（１）に配置される文字の数は、Ｎ＋１となる。
【００９１】
Ｓ６１２にて、ＣＰＵ１０２は、行（２）の文字数（Ｎ’）を取得する。Ｎ’の値は、文字（Ｃ）の移動前の文字数−１となる。
【００９２】
Ｓ６１４にて、ＣＰＵ１０２は、行（２）の文字を移動する。すなわち、文字（Ｃ）が移動されたことにより生じた１文字分の領域と文字間隔とを詰めるように、行（２）に残された「Ｎ’」個の文字が移動される。たとえば、文章データが横書きである場合、それらの文字は左に移される。また、文章データが縦書きである場合、それらの文字は上方に移される。この場合、行（２）の行末に１文字の領域が生じることから、その次の行の先頭にある文字が移動される。
【００９３】
以上のような構造およびフローチャートに基づく、本実施の形態に係る文字処理装置１００の動作について説明する。文字の間隔を縮減しない場合と縮減する場合とについて、行頭禁則処理および行末禁則処理の動作を説明する。
【００９４】
［文字の間隔を縮減しない行頭禁則処理］
この処理は、行（１）の文字の間隔を縮減することなく、行（１）の行末に生成された表示可能領域に、行（２）の先頭に配置される予定であった文字を移動する処理である。
【００９５】
文章データが、固定ディスク１０４からメモリ１１６に読出されると（Ｓ１０２）、文章レイアウト処理が実行される（Ｓ２００）。この処理により、文章データに含まれる文字の位置が算出される。
【００９６】
算出された文字の位置と読み出された文字情報とに基づいて、行頭に配置される文字（以下、行頭文字という。）が行頭禁則文字であると判断されると（Ｓ３０２にてＹＥＳ）、行頭文字の追い込み禁則処理を実行する必要があると判定される（Ｓ３０４）。追い込み処理が必要であるとき（Ｓ１０８にてＹＥＳ）、固定ディスク１０４から文字情報が読出される（Ｓ４０２）。
【００９７】
メモリ１１６に配置された文字の位置データと、固定ディスク１０４から読出された文字情報とに基づいて、行頭文字を行末に表示するための必要領域が算出される（Ｓ４１２）。行（１）の文字の間隔の和（Ｄ）と行末間隔（ｄ）とに基づいて、表示可能領域（Ｄ＋ｄ）が算出される（Ｓ５０６）。
【００９８】
表示可能領域が必要領域（ｗ）を上回ることにより、追い込み処理の実行が可能であると判断されると（Ｓ１１４にてＹＥＳ）、行末間隔が必要領域よりも大きいとき（Ｓ６０２にてＹＥＳ）、行頭文字（Ｃ）が取得され（Ｓ６０８）、行（１）の行末に移される（Ｓ６１０）。
【００９９】
その後、行（２）の先頭に生じた空白を埋めるように、行（２）の残りの文字が移動され（Ｓ６１４）、読出された文章データに含まれるすべての文字について禁則処理が完了すると（Ｓ１１８にてＹＥＳ）、その文書は、モニタ１０８にて表示される（Ｓ１２０）。
【０１００】
このようにして、文字処理装置１００は、読出された文章データと予め記憶された文字情報とに基づいて、文字の間隔を縮減することなく禁則処理を実行することができる。
【０１０１】
図９に、本実施の形態に係る文字処理装置が算出した、文字の位置を示す。図９（Ａ）は、処理の対象となる文章データを示す。この文章データは、たとえば、固定ディスク１０４に記憶されているデータ、あるいは、キーボードから入力され、メモリ１１６に一時的に格納されているデータである。
【０１０２】
図９（Ｂ）は、文章レイアウト処理において使用される位置カウンタ（ＰＯＳ）が初期化された状態を示す。このとき、位置カウンタ（ＰＯＳ）の値は１となる。また、文章レイアウト処理（図３におけるＳ２００）を実行するための領域は、行頭位置（１）から行末位置（６１）まで、メモリ１１６に確保される。
【０１０３】
図９（Ｃ）は、メモリ１１６に確保された領域に、読み出した文章データの最初の文字「心」を配置した状態を示す。１つの文字を表示するために予め割り当てられた標準の領域の大きさが「１０」であり、文字の間隔が「５」であるとすると、ＰＯＳの値は、１６（＝１＋１０＋５）となる。なお、標準の領域「１０」および文字の間隔「５」は、固定ディスク１０４に記憶された値であるが、任意に設定するようにしてもよい。
【０１０４】
図９（Ｄ）〜（Ｆ）は、図９（Ｃ）と同様に、メモリ１１６上に確保された領域に、読み出した文章データに含まれる文字（「地」、「よ」、「い」）を配置した状態を示す。文字が行末まで配置されると（図９（Ｆ））、位置カウンタ（ＰＯＳ）の値は６１となる。行末位置が６１とすると、それ以上文字を配置することはできないので、行（１）における文字の配置は終了する（図９（Ｇ））。
【０１０５】
図１０は、本実施の形態に係る文字処理装置が、文字の位置を変更する処理を示す。図１０（Ａ）は、処理の対象となるデータである。
【０１０６】
図１０（Ｂ）は、文章レイアウト処理（図３におけるＳ２００）において、文字が、メモリ１１６の行（１）および行（２）に配置された状態を示す。このとき、禁則処理はまだ実行されていない。行（１）の行末に残されている領域は「５」である。行（２）の行頭文字（すなわち、句点「、」）が、禁則処理の対象となる行頭禁則文字である。句点「、」を表示するために少なくとも必要な領域は「４」である。
【０１０７】
図１０（Ｃ）は、行頭禁則文字「、」を行（１）の行末に移動した状態を示す。行（１）の行末の領域（すなわち、表示可能領域）は、「５」である。行末の領域が句点「、」を表示するために必要な領域を上回るため、行頭禁則文字「、」は行（１）の行末に移されている。このとき、句点「、」の移動により行（２）に生じた空白はそのままである。
【０１０８】
図１０（Ｄ）は、行（２）に生じた空白を埋めるために、他の文字（「春」、「の」「陽」）が左に移された状態を示す。この場合、行（２）の次行（図には不表示）に配置される予定であった文字「気」が、行（２）の行末に移されて表示される。
【０１０９】
［文字の間隔を縮減しない行末禁則処理］
この処理が実行される場合、文字処理装置の動作は、前述の行頭禁則処理における動作と同様であるので、詳細な説明はここでは繰り返さない。この行末禁則処理と前述の行頭禁則処理との相違は、禁則文字判定処理（図３におけるＳ３００および図５）において、行末に配置される文字が行末禁則文字であると判定され、次行の行頭文字が行末に移動される点である。
【０１１０】
算出された文字の位置に基づいて、行頭に配置された文字が行頭禁則文字でない場合であって（Ｓ３０２にてＮＯ）、行末に配置された文字が行末禁則文字であるとき（Ｓ３０８にてＹＥＳ）、行末文字の追い込み禁則処理を実行する必要があると判定される（Ｓ３１０）。その後、次行の行頭の文字が、読み込まれた文章データおよび文字情報に基づいて、行末文字の後に移動されると、行末文字は行末禁則文字ではなくなる。
【０１１１】
図１１に、本実施の形態に係る文字処理装置が算出した、文字の位置を示す。図１１（Ａ）は、処理の対象となる文章データである。
【０１１２】
図１１（Ｂ）〜（Ｆ）までの処理は、前述の図９（Ｂ）〜（Ｆ）の処理と同じであるので、ここでは繰り返さない。図１１と図９との相違は、メモリ１１６に確保された行末位置の値（すなわち、モニタ１０８の行のサイズ）である。
【０１１３】
図１２は、本実施の形態に係る文字処理装置の追い込み処理により、文字の位置が変更される状態を示す。図１２（Ａ）は、処理の対象となる文章データである。
【０１１４】
図１２（Ｂ）は、文章レイアウト処理（図３におけるＳ２００および図４）において、文字がメモリ１１６に配置された状態を示す。この時点では、禁則処理は、まだ実行されていない。行（１）の行末の文字（すなわち、前括弧“（”）が、行末禁則文字である。
【０１１５】
図１２（Ｃ）は、行末禁則文字を、表示のために必要な領域（すなわち「３」と示された領域）に表示することにより生じた行末の領域に、行（２）の行頭に配置される予定であった文字「た」を移動した状態を示す。この文字「た」を示すために必要な領域は、「１０」である。行末禁則文字“（”を表示する領域の縮減により生じた領域は「７」であり、行末間隔は「３」であることから、表示可能領域は「１０」（＝７＋３）となる。このようにして、行（２）の文字を表示するために必要な領域が確保される。この時点では、文字「た」の移動により行（２）に生じた空白はそのままである。
【０１１６】
図１２（Ｄ）は、行（２）の行頭に生じた空白を埋めるように、その他の文字が左に移された状態を示す。それぞれの文字は、予め定められた領域（１０）と文字間隔（５）との位置だけ、左に変更されることになる。さらに、行（２）の行末には、次行の先頭に配置される予定であった文字「、」が配置されている。
【０１１７】
以上のようにして、行末に行末禁則文字が配置される場合、禁則処理が実行されると、その文字の後に次行の先頭文字が移され、禁則状態が回避される。
【０１１８】
［文字の間隔を縮減する行頭禁則処理］
この処理は、前述の「文字の間隔を縮減しない行頭禁則処理」と同様であるので、詳細な説明は、ここでは繰り返さない。前述の行頭禁則処理との相違は、追い込み処理（図３におけるＳ６００および図８）において、行（１）の文字の位置が変更される処理である。この場合、行（２）の行頭文字は、行（１）の文字間隔の縮減により行末に生成された領域に移動される。
【０１１９】
追い込み処理の実行が可能であると判断され（Ｓ１１４にてＹＥＳ）、行末の間隔が行頭文字を表示するために不十分である場合（Ｓ６０２にてＮＯ）、行（１）の文字を移動するための変更量が算出され（Ｓ６０４）、行（１）の文字が移動される（Ｓ６０６）。その後、行頭文字（Ｃ）が行（１）の行末に移され（Ｓ６１０）、行（２）の残りの文字が行頭の空間を埋めるように移動される（Ｓ６１４）。
【０１２０】
図１３に、本実施の形態に係る文字処理装置が算出した、文字の位置を示す。図１３（Ａ）は、固定ディスク１０４に記憶されている文章データを示す。図１３（Ｂ）〜（Ｇ）までは、前述の図９（Ｂ）〜（Ｇ）までと同じであるので、ここでは繰り返さない。図９と図１３との相違は、１行あたりの表示領域の大きさが異なる点である。
【０１２１】
図１４に、本実施の形態に係る文字処理装置が、文字の位置を変更する処理を示す。図１４（Ａ）は、処理の対象となる文章データである。図１４（Ｂ）は、前述の図１０（Ｂ）と同じであるので、ここでは繰り返さない。
【０１２２】
図１４（Ｃ）は、行頭禁則文字「、」を行（１）の行末に移動した状態を示す。この文字「、」を示すために少なくとも必要な領域は、「４」であり、行末の領域（表示可能領域）は、「１」である（図１４（Ｂ）参照）。そのため、行（１）において、文字の間隔が「５」から「４」に縮減され、その縮減により生じた領域と行末の領域とから、行頭禁則文字「、」を表示するための領域（すなわち、表示可能領域）を生成している。このとき、文字の移動により行（２）に生じた空白はそのままである。
【０１２３】
図１４（Ｄ）は、行（２）の文字を空白を埋めるように、左に詰めた状態を示す。それぞれの文字は、予め定められた領域（１０）と文字間隔（５）との位置だけ、左に変更されることになる。
【０１２４】
［文字の間隔を縮減する行末禁則処理］
この処理は、前述の「文字の間隔を縮減しない行末禁則処理」と同様であるので、詳細な説明はここでは繰り返さない。前述の行末禁則処理との相違は、追い込み処理（図３におけるＳ６００および図８）において、行（１）の文字の位置が変更される処理である。この場合、行（１）の文字間隔の縮減により行末に生成された領域に、行（２）の行頭文字が移動される。
【０１２５】
追い込み処理の実行が可能であると判断され（Ｓ１１４にてＹＥＳ）、行（１）の行末の間隔が行（２）の行頭文字を表示するために不十分である場合（Ｓ６０２にてＮＯ）、行（１）の文字を移動するための変更量が算出され（Ｓ６０４）、行（１）の文字が移動される（Ｓ６０６）。
【０１２６】
図１５に、本実施の形態に係る文字処理装置が算出した、文字の位置を示す。図１５（Ａ）は、処理の対象となる文章データを示す。
【０１２７】
図１５（Ｂ）〜（Ｇ）は、前述の図１１（Ｂ）〜（Ｇ）と同じであるので、ここでは繰り返さない。図１５と図１１との相違は、１行あたりの表示領域の大きさ（すなわち、モニタ１０８の表示サイズあるいはメモリ１１６に確保された領域）である。
【０１２８】
図１６に、本実施の形態に係る文字処理装置が、文字の位置を変更する処理を示す。図１６（Ａ）は、処理の対象となる文章データである。図１６（Ｂ）は、前述の図１２（Ｂ）と同じであるので、ここでは繰り返さない。
【０１２９】
図１６（Ｃ）は、行末禁則文字「（」の後ろに、行（２）の行頭文字「た」を配置した状態を示す。文字「（」を表示するために必要な領域は、「３」であり、行末の領域（表示可能領域）は、「７」である（図１６（Ｂ）参照）。そのため、行（１）において、文字の間隔が「５」から「４」に縮減され、その縮減により生じた領域「３」と行末の領域「７」とから、行頭文字「た」を表示するための領域「１０」（＝３＋７）を生成している。このとき、文字の移動により行（２）に生じた空白はそのままである。
【０１３０】
図１６（Ｄ）は、行（２）の行頭に生じた空白を埋めるように、残りの文字が左に移された状態を示す。それぞれの文字は、予め定められた領域「１０」と文字間隔「５」との位置だけ、左に移される。
【０１３１】
以上により、文字処理装置は、文章データに含まれる文字を一時的にメモリ上に配列して得られた情報と、予め記憶された文字のデータとに基づいて、禁則文字が行末あるいは行頭に配置されることを事前に確認すると、禁則処理を実行することができる。すなわち、行頭禁則文字が行頭に配置される予定であることが確認されると、その文字が前行の行末に移動される。一方、行末禁則文字が行末に配置される予定であることが確認されると、次行の先頭の文字が、行末禁則文字の次に配置され、行末禁則文字は行末に配置されなくなる。
【０１３２】
この禁則処理は、行末文字および行頭文字のそれぞれが、予め定められた条件（たとえば、それぞれが半角文字として表示できる文字であるという条件）を満足する場合に限定されない。すなわち、文字の大きさを変更することなく、文字を表示することが可能な領域に、文字を移動することができる。これにより、禁則処理が適用される範囲を拡張することができる文字処理装置を提供することができる。
【０１３３】
＜第２の実施の形態＞
以下、本発明の第２の実施の形態に係る文字処理装置について説明する。なお本実施の形態に係る文字処理装置のハードウェア構成は、前述の第１の実施の形態のハードウェア構成と同じである。したがって、それらについての詳細な説明は、ここでは繰り返さない。
【０１３４】
図１７を参照して、本実施の形態に係る文字処理装置１００により実行される禁則文字処理のプログラムは、以下のような制御構造を有する。
【０１３５】
なお、Ｓ１０２〜Ｓ１０８までの処理と、Ｓ１１４〜Ｓ１２０までの処理とは、図３（第１の実施の形態）における処理と同じであるので、ここでは繰り返さない。
【０１３６】
Ｓ１０８にて、ＣＰＵ１０２は追い込み処理が必要であるか否かを判断する。追い込み処理が必要であると判断すると（Ｓ１０８にてＹＥＳ）、処理はＳ４０００に移される。そうでないと（Ｓ１０８にてＮＯ）、処理はＳ１１８に移される。
【０１３７】
Ｓ４０００にて、ＣＰＵ１０２は、後述する必要領域算出処理（Ｂ）を実行する。この処理が実行されることにより、文字を表示するために少なくとも必要な領域が算出される。
【０１３８】
図１８を参照して、本実施の形態に係る文字処理装置１００が実行する必要領域算出処理（Ｂ）は、以下のような制御構造を有する。
【０１３９】
Ｓ４０２０にて、ＣＰＵ１０２は、固定ディスク１０４から、処理の対象となる文字を、メモリ１０６に一時的に読み出す。この処理の対象となる文字とは、行末あるいは行頭の文字である。
【０１４０】
Ｓ４０４０にて、ＣＰＵ１０２は、その文字を主走査方向に投影する。ここで、主走査方向とは、たとえば文章が横書きである場合、横方向（すなわち行方向）である。また、文章が縦書きである場合、縦方向（すなわち列方向）である。この主走査方向は、文字の表示方向（横書きか、あるいは縦書きか）に対応するように予め設定しておくことができる。
【０１４１】
Ｓ４０６０にて、ＣＰＵ１０２は、文字を投影した結果に基づいて、その文字を表示するために必要なドット数を取得する。この必要なドット数とは、たとえば、文章が横書きである場合、行方向に必要なドット数である。
【０１４２】
図１９を参照して、本実施の形態に係る文字処理装置１００が、文字を走査して必要領域を算出する場合について説明する。処理の対象となる文字は「明」という文字である。
【０１４３】
文字処理装置１００は、この文字をメモリ１１６に読み込み、主走査方向に投影する。文書が横書きであれば、主走査方向は、その方向（すなわち行方向）である。
【０１４４】
図１９に示すように、１つの文字を表示するために予め定められた領域の大きさは、「９ドット」である。また、算出の対象となる文字『明』が表示されている領域、すなわち必要領域は、「７ドット」である。この結果から、表示可能領域は、２ドット（＝９−７）となる。
【０１４５】
このようにして、本実施の形態に係る文字処理装置によると、文字の表示情報を検出して、その結果に基づいて、文字の表示に必要な領域を算出することができる。
【０１４６】
以上により、詳述した第１の実施の形態および第２の実施の形態に係る文字処理装置は、文章データに含まれる文字をメモリ１１６上に予め配置したときに取得した情報に基づいて、文字の大きさを変更することなく行末禁則処理および行頭禁則処理を実行することができる。これにより、禁則処理の適用範囲を拡張することができる文字処理方法を提供することができる。
【０１４７】
なお、第１の実施の形態に係る文字処理装置は、予め記憶された、文字に固有な情報に基づいて、行頭に配置される文字を表示する必要領域を算出した。第２の実施の形態に係る文字処理装置は、文字を走査することにより取得した表示情報（たとえば、文字のドット数）に基づいて、必要領域を算出した。これらの方法は、行末において、表示可能領域（すなわち、現時点で文字が未配置である空白の領域）を算出する場合に、同様に適用してもよい。すなわち、１つの文字を表示するために予め定められた領域から、上記の方法により算出された必要領域を控除することにより、表示可能領域が算出される。文字処理装置は、このようにして算出された表示可能領域が必要領域を上回るとき、行頭文字の位置を行末に変更することにより、禁則処理を実行することができる。
【０１４８】
今回開示された実施の形態は、すべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【図１】本発明の実施の形態に係る文字処理装置を表わすブロック図である。
【図２】本発明の第１の実施の形態に係る文字処理装置に記憶される、禁則文字とそのデータである。
【図３】本発明の第１の実施の形態に係る文字処理装置における処理の手順を表わすフローチャート（その１）である。
【図４】本発明の第１の実施の形態に係る文字処理装置における処理の手順を表わすフローチャート（その２）である。
【図５】本発明の第１の実施の形態に係る文字処理装置における処理の手順を表わすフローチャート（その３）である。
【図６】本発明の第１の実施の形態に係る文字処理装置における処理の手順を表わすフローチャート（その４）である。
【図７】本発明の第１の実施の形態に係る文字処理装置における処理の手順を表わすフローチャート（その５）である。
【図８】本発明の第１の実施の形態に係る文字処理装置における処理の手順を表わすフローチャート（その６）である。
【図９】本発明の第１の実施の形態に係る文字処理装置により文字の位置が算出される状態を表わす図（その１）である。
【図１０】本発明の第１の実施の形態に係る文字処理装置の禁則処理により、文字の位置が変更される状態を表わす図（その１）である。
【図１１】本発明の第１の実施の形態に係る文字処理装置により文字の位置が算出される状態を表わす図（その２）である。
【図１２】本発明の第１の実施の形態に係る文字処理装置の禁則処理により、文字の位置が変更される状態を表わす図（その２）である。
【図１３】本発明の第１の実施の形態に係る文字処理装置により文字の位置が算出される状態を表わす図（その３）である。
【図１４】本発明の第１の実施の形態に係る文字処理装置の禁則処理により、文字の位置が変更される状態を表わす図（その３）である。
【図１５】本発明の第１の実施の形態に係る文字処理装置により文字の位置が算出される状態を表わす図（その４）である。
【図１６】本発明の第１の実施の形態に係る文字処理装置の禁則処理により、文字の位置が変更される状態を表わす図（その４）である。
【図１７】本発明の第２の実施の形態に係る文字処理装置における処理の手順を表わすフローチャート（その１）である。
【図１８】本発明の第２の実施の形態に係る文字処理装置における処理の手順を表わすフローチャート（その２）である。
【図１９】本発明の第２の実施の形態に係る文字処理装置が算出する文字の表示領域を表わす図である。
【符号の説明】
１００　文字処理装置、１０２　ＣＰＵ、１０４　固定ディスク、１０８　モニタ、１１４　キーボード、１１６　メモリ。
【図１】
2004110095.tif 000003
【図２】
2004110095.tif 000004
【図３】
2004110095.tif 000005
【図４】
2004110095.tif 000006
【図５】
2004110095.tif 000007
【図６】
2004110095.tif 000008
【図７】
2004110095.tif 000009
【図８】
2004110095.tif 000010
【図９】
2004110095.tif 000011
【図１０】
2004110095.tif 000012
【図１１】
2004110095.tif 000013
【図１２】
2004110095.tif 000014
【図１３】
2004110095.tif 000015
【図１４】
2004110095.tif 000016
【図１５】
2004110095.tif 000017
【図１６】
2004110095.tif 000018
【図１７】
2004110095.tif 000019
【図１８】
2004110095.tif 000020
【図１９】
2004110095.tif 000021