(57)【要約】【課題】表示するテキストデータの総ページ数を計算して、計算した総ページ数に対応したレイアウトで各ページを表示させることを課題とする。【解決手段】テキストデータをページごとに表示する表示部と、表示条件を含む表示設定情報を記憶した記憶部と、表示条件に基づいてテキストデータの総ページ数を計算するページ数計算部と、表示画面に表示させるページに属する文章のレイアウトを生成するレイアウト処理部と、計算された総ページ数を有するテキストデータを各ページに分割し、表示画面に表示させるページに属する文章を表示データとして読み出し、レイアウト処理部によって、読み出した表示データの各行の文字配置を考慮したレイアウトを生成させ、読み出した表示データが表示画面内に収まるように各行の文字配置を調整して、ページに属する文章を表示部に表示させる制御部とを備えたことを特徴とする。【選択図】図１
2013235379.tif 000002
【特許請求の範囲】
【請求項１】
テキストデータをページごとに表示する表示部と、
前記表示部にテキストデータを表示させる表示条件を含む表示設定情報と、前記テキストデータとを記憶した記憶部と、
前記表示条件に基づいて、前記テキストデータの総ページ数を計算するページ数計算部と、
前記表示部の画面に表示させるページに属する文章のレイアウトを生成するレイアウト処理部と、
前記計算された総ページ数を有するテキストデータを各ページに分割し、前記表示部の画面に表示させるページに属する文章を表示データとして読み出し、前記レイアウト処理部によって、読み出した表示データの各行の文字配置を考慮したレイアウトを生成させ、読み出した表示データが表示部の画面内に収まるように各行の文字配置を調整して、前記ページに属する文章を前記表示部に表示させる制御部とを備えたことを特徴とする情報表示装置。
【請求項２】
前記記憶部に、表示行の文字配置の規則を示した禁則ルールと、文字間隔を詰める規則を示した詰めルールを含むレイアウト情報を記憶し、
前記レイアウト処理部は、表示させるページに属する文章のレイアウトを生成する場合に、前記禁則ルールを用いた禁則処理と、前記詰めルールを用いた詰め処理を実行することを特徴とする請求項１記載の情報表示装置。
【請求項３】
前記制御部は、前記読み出された表示データに対して生成されたレイアウトが、前記表示部の画面内に収まらない場合は、前記レイアウト生成時に行った禁則処理を解除し、前記レイアウト処理部によって、各行の文字を移動させて再度レイアウトを生成させることを特徴とする請求項２記載の情報表示装置。
【請求項４】
前記制御部は、前記レイアウト処理部によって生成されたレイアウトが、前記表示部の画面内に収まらない場合は、前記詰めルールを用いて、前記レイアウトされた各行の文字列を構成する文字どうしの間隔を詰めて、再度レイアウトを生成することを特徴とする請求項３記載の情報表示装置。
【請求項５】
前記ページ数計算部は、前記表示条件から前記表示部の画面上に表示可能な表示行数Ｌと、一行当たりの文字数ＭＬとを計算し、
前記テキストデータを１群の文字列からなる段落ｉに分割して各段落ｉごとの文字数ＭＤｉを計算し、
前記一行当たりの文字数ＭＬと、各段落ごとの文字数ＭＤｉを用いて、各段落ごとの文章の表示に必要な行数Ｇｉを計算し、
各段落ごとの前記行数Ｇｉをすべて加算した総和ＧＡを計算し、
前記総和ＧＡを前記表示行数Ｌで除算することにより、表示するテキストデータの総ページ数（ＰＡ＝ＧＡ／Ｌ）を計算することを特徴とする請求項１ないし４のいずれかに記載の情報表示装置。
【請求項６】
前記各段落ｉごとの文字数ＭＤｉを、一行当たりの文字数ＭＬで除算した結果（ＭＤｉ／ＭＬ）が整数Ｎである場合は、前記行数Ｇｉ＝Ｎに設定し、
前記除算した結果（ＭＤｉ／ＭＬ）が整数Ｎでない場合は、ＭＤｉ／ＭＬの整数部分の数値Ｎに１を加算した値（Ｎ＋１）を、前記行数Ｇｉに設定することを特徴とする請求項５に記載の情報表示装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報表示装置に関し、特に、文字や図形等を含む電子データを表示することのできる情報表示装置に関する。
【背景技術】
【０００２】
今日、紙媒体で提供されている書籍を電子化し、パソコン、携帯端末、電子辞書、TV、携帯ゲーム機等の情報処理装置において閲覧することが行われている。電子化された書籍は、ＣＤやＤＶＤ等の記憶媒体に格納されて販売されたり、販売業者等のサーバに格納しておきネットワークを介して利用者がダウンロードすることなどにより提供される。
多くの電子書籍は、文字や記号とからなるテキストデータから構成されるが、このテキストデータそのものにはページという概念がない。
また、テキストデータを表示あるいは印刷する場合、そのテキストデータがページごとに分割されて、１ページごとに表示あるいは印刷される。
【０００３】
また、情報を表示する表示装置の画面サイズ、解像度、表示する文字のサイズ、書体、書式（上下左右の余白、字間や行間）などの表示設定情報が異なると、１つの表示画面、すなわち１ページの中に表示される文字数が変化する。したがって、総ページ数も変化する。
例えば、解像度の低い表示装置で表示させた場合に１００ページからなるテキストデータを、解像度の高い表示装置で表示させたとすると、１ページに表示される文字数が増加するので、そのテキストデータの総ページ数は１００ページよりも少なくなる。
【０００４】
また、同じ表示装置において、表示する文字の大きさを変化させると、１ページに含まれる文字数が増減するので、テキストデータの総ページ数も変化する。
たとえば、図２３に示すように、テキストデータの１ページ目を表示した２つの表示画面において、文字サイズが比較的小さい場合は、総ページ数は１７０ページであるのに対し、文字サイズが比較的大きい場合は、総ページ数が１１５ページとなる。
【０００５】
電子書籍を表示する場合に、現在表示しているページ番号と、総ページ数を表示するものがあるが、文字サイズ等の表示条件が変化すると、その都度総ページ数と現在のページ番号を計算し直していた。
例えば、総ページ数を所定の計算式で計算し、禁則処理を考慮せずに現在表示している現ページ数と総ページ数とを表示するページ数決定装置が、特許文献１に記載されている。
【０００６】
このページ数決定装置では、表示するコンテンツを複数のブロックに分割したときの総ブロック数ＴＢと、その１ブロック当たりの文字数ＢＷとを求め、さらに、表示装置の一画面に表示できる１画面当たりの行数Ｎと１行当たりの文字数Ｍとから１画面当たりの文字数Ｓ（＝Ｎ×Ｍ）を求め、総ブロック数ＴＢを、１画面当たりに表示可能なブロック数（Ｓ／ＢＷ）で割った数値に１を加算した値を、総ページ数として決定している。
【０００７】
したがって、文字サイズ等が変更された場合には、１画面当たりの文字数が変化するため、その都度総ページ数を計算し直していた。また、禁則処理を考慮していないので迅速に総ページ数を求めることができるが、禁則処理を適用してコンテンツを表示する場合には、総ページ数が変化する場合があった。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−６８８５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、テキストデータを表示する場合、一般的に、「句読点を行頭に表示しない」というような禁則ルールに従って、禁則処理が行われて表示される。
テキストデータを表示する際の正確な総ページ数を求めようとすると、文字サイズ等の表示条件に基づいて、１ページ（画面）に表示される行数と、１行当たりの文字数が決定した後、各ページごとに禁則処理を行い、全てのページの表示のレイアウトが決定した後にはじめて、テキストデータの正確な総ページ数を求めることができる。
【００１０】
長文のテキストデータを表示する場合は、全体に対する禁則処理を含めたレイアウトの決定に時間がかかるため、総ページ数を計算して総ページ数と現在の表示ページのページ番号とを表示するまでに、数十秒以上の時間がかかる場合もあった。
【００１１】
従って、表示の処理能力の低い装置では、総ページ数を計算しないものや、テキストデータを先頭から順次ページごとに読み出し、表示するページのみについて禁則処理を行って表示させた後、現在の表示ページ番号のみを表示するものがある。
【００１２】
総ページ数を計算しない装置では、ユーザがページ番号を入力して所望のページに表示を切り換えることができない。
また、ページごとに先頭から順次読み出して表示する場合には、全ページに対する禁則処理を行って全てのページのレイアウトが決定された後でないと、総ページ数がわからないので、ユーザが途中の任意のページに表示を切り換えるためには、総ページ数が決定されるまで、しばらく待たなければならない。
【００１３】
そこで、この発明は、以上のような事情を考慮してなされたものであり、表示条件を考慮した総ページ数を高速に計算し、その総ページ数の範囲内で、表示画面に表示されるページごとのレイアウトを調整する処理を行うことにより、ユーザの利便性を向上させることのできる情報表示装置を提供することを課題とする。
【課題を解決するための手段】
【００１４】
この発明は、テキストデータをページごとに表示する表示部と、前記表示部にテキストデータを表示させる表示条件を含む表示設定情報と、前記テキストデータとを記憶した記憶部と、前記表示条件に基づいて、前記テキストデータの総ページ数を計算するページ数計算部と、前記表示部の画面に表示させるページに属する文章のレイアウトを生成するレイアウト処理部と、前記計算された総ページ数を有するテキストデータを各ページに分割し、前記表示部の画面に表示させるページに属する文章を表示データとして読み出し、前記レイアウト処理部によって、読み出した表示データの各行の文字配置を考慮したレイアウトを生成させ、読み出した表示データが表示部の画面内に収まるように各行の文字配置を調整して、前記ページに属する文章を前記表示部に表示させる制御部とを備えたことを特徴とする情報表示装置を提供するものである。
これによれば、計算された総ページ数に基づいて、表示部に表示すべきページのレイアウトの生成および調整が行われるので、表示すべきページに属する文章を迅速に表示でき、ユーザの利便性を向上できる。
【００１５】
また、前記記憶部に、表示行の文字配置の規則を示した禁則ルールと、文字間隔を詰める規則を示した詰めルールを含むレイアウト情報を記憶し、前記レイアウト処理部は、表示させるページに属する文章のレイアウトを生成する場合に、前記禁則ルールを用いた禁則処理と、前記詰めルールを用いた詰め処理を実行することを特徴とする。
【００１６】
また、前記制御部は、前記読み出された表示データに対して生成されたレイアウトが、前記表示部の画面内に収まらない場合は、前記レイアウト生成時に行った禁則処理を解除し、前記レイアウト処理部によって、各行の文字を移動させて再度レイアウトを生成させることを特徴とする。
これによれば、禁則処理を解除して再度レイアウトを生成させているので、たとえば追い出し処理をしないことにより、表示データが表示部の画面内に収まるようなレイアウトを生成させることができる。
【００１７】
また、前記制御部は、前記レイアウト処理部によって生成されたレイアウトが、前記表示部の画面内に収まらない場合は、前記詰めルールを用いて、前記レイアウトされた各行の文字列を構成する文字どうしの間隔を詰めて、再度レイアウトを生成することを特徴とする。
これによれば、各行の文字列を構成する文字間隔を詰めることにより、再度レイアウトを生成しているので、表示データが表示部の画面内に収まるようにすることができる。
【００１８】
また、前記ページ数計算部は、前記表示条件から前記表示部の画面上に表示可能な表示行数Ｌと、一行当たりの文字数ＭＬとを計算し、前記テキストデータを１群の文字列からなる段落ｉに分割して各段落ｉごとの文字数ＭＤｉを計算し、前記一行当たりの文字数ＭＬと、各段落ごとの文字数ＭＤｉを用いて、各段落ごとの文章の表示に必要な行数Ｇｉを計算し、各段落ごとの前記行数Ｇｉをすべて加算した総和ＧＡを計算し、前記総和ＧＡを前記表示行数Ｌで除算することにより、表示するテキストデータの総ページ数（ＰＡ＝ＧＡ／Ｌ）を計算することを特徴とする。
これによれば、表示されるページや、テキストデータ全体の文章のレイアウトとは無関係に、テキストデータの総ページ数を設定することができる。
【００１９】
また、前記各段落ｉごとの文字数ＭＤｉを、一行当たりの文字数ＭＬで除算した結果（ＭＤｉ／ＭＬ）が整数Ｎである場合は、前記行数Ｇｉ＝Ｎに設定し、前記除算した結果（ＭＤｉ／ＭＬ）が整数Ｎでない場合は、ＭＤｉ／ＭＬの整数部分の数値Ｎに１を加算した値（Ｎ＋１）を、前記行数Ｇｉに設定することを特徴とする。
【発明の効果】
【００２０】
この発明によれば、表示条件に基づいて表示部に表示させるテキストデータの総ページ数を計算し、その総ページ数を有するテキストデータのうち、表示部に表示させるページに属する文章を表示データとして読み出してレイアウトを生成し、表示部の画面内に収まるように各行の文字配置を調整するので、計算した総ページ数を変更することなく、表示させるべきページに属する文章を、迅速に表示させることができ、ユーザの利便性を向上させることができる。
【図面の簡単な説明】
【００２１】
【図１】この発明の情報表示装置の一実施例の構成ブロック図である。
【図２】この発明の段落情報の一実施例の説明図である。
【図３】１つの段落ｉに含まれる文章を表示画面に配置した場合の段落情報の一実施例の説明図である。
【図４】表示部の表示画面に表示される段落の一実施例の説明図である。
【図５】この発明の情報表示装置に表示されるテキストデータの総ページ数を計算する処理の一実施例のフローチャートである。
【図６】表示部に表示されるテキストデータのレイアウト処理の一実施例のフローチャートである。
【図７】この発明の禁則ルールの一実施例の説明図である。
【図８】この発明の詰めルールの一実施例の説明図である。
【図９】表示部に表示された段落のレイアウトを再生成する一実施例の説明図である。
【図１０】表示部に表示された段落のレイアウトを再生成する一実施例の説明図である。
【図１１】段落の中に画像表示が含まれる場合の表示例の説明図である。
【図１２】テキストデータが英文の場合の総ページ数の計算処理のフローチャートである。
【図１３】テキストデータが英文の場合のレイアウト処理のフローチャートである。
【図１４】テキストデータが英文の場合における一つの段落の表示例の説明図である。
【図１５】テキストデータが英文の場合における一つの段落の表示例の説明図である。
【図１６】表示フォントがプロポーショナルフォントの場合に、表示される文字の文字高さと、文字送り幅の対応関係例の説明図である。
【図１７】英文における段落のレイアウトを再生成する一実施例の説明図である。
【図１８】英文のレイアウトを再生成するときに、表示行数を増加させる場合の説明図である。
【図１９】英文詰め処理テーブルの一実施例の説明図である。
【図２０】英文のレイアウトを再生成するときに、表示行数を減少させる場合の説明図である。
【図２１】ドロップキャップを有する表示例の説明図である。
【図２２】英文の文字の高さと行間等の関係の概略説明図である。
【図２３】従来において、表示画面に表示される文字サイズを変更した場合において、総ページ数等の変化を示した説明図である。
【発明を実施するための形態】
【００２２】
以下、図に示す実施例に基づいて、この発明を説明する。
なお、これによって、この発明が限定されるものではない。
【００２３】
図１に、この発明の情報表示装置の一実施例の構成ブロック図を示す。
この発明の情報表示装置は、主として、制御部１１，表示部１２，入力部１３，ページ数計算部１４，レイアウト処理部１５，禁則処理部１６，詰め処理部１７，段落行数判定部１８，記憶部５０とを備える。
【００２４】
制御部１１は、この発明の情報表示装置の各種機能を実行する部分であり、主として、ＣＰＵ，ＲＯＭ，ＲＡＭ，Ｉ／Ｏコントローラ，タイマーなどからなるマイクロコンピュータにより構成され、ＣＰＵが、ＲＯＭ等に記憶されたプログラムに基づいて、各種ハードウェアを有機的に動作させることにより、各種機能を実現させる。
【００２５】
特に、この発明では、制御部１１は、ページ数計算部によって計算された総ページ数を有するテキストデータを各ページに分割し、表示部の画面に表示させるページに属する文章を表示データとして読み出す。
その後、レイアウト処理部によって、読み出した表示データの各行の文字配置を考慮したレイアウトを生成させ、読み出した表示データが表示部の画面内に収まるように、各行の文字配置を調整して、表示させるページに属する文章を表示部に表示させる。
これにより、設定された表示条件に基づいた総ページ数が変更されることなく、分割されたページに属する文章が迅速に表示される。
【００２６】
表示部１２は、表示データ５２を表示させる部分であり、ＬＣＤ，有機ＥＬなどが用いられる。表示データ５２は、後述するように、テキストデータ５１のうち、表示部１２に表示させる部分のデータ、すなわち１ページ分を一時記憶したものである。
表示部１２には、テキストデータがページごとに表示される。
【００２７】
入力部１３は、機能選択や文字等を入力する部分であり、キーボード、マウス、タッチパネル等が用いられる。
タッチパネルが用いられる場合は、入力部１３と表示部１２は重ね合わせて形成されるか、あるいは一体成型される。入力部１３によって、ユーザは、表示部１２に表示させようとするテキストデータ５１を選択する。
選択されたテキストデータ５１は、記憶部５０から読み出され、総ページ数が計算された後、表示させる部分について所定のレイアウト処理が行われ、表示部１２に表示される。
【００２８】
ページ数計算部１４は、記憶部に記憶された表示条件に基づいて、テキストデータ５１の総ページ数ＰＡ５３を計算する部分であり、総ページ数ＰＡを計算するために、後述するような種々の情報が取得あるいは計算される。総ページ数ＰＡは、表示条件（たとえば表示される文字のサイズ）が変更されると、変化するものであるので、後述するように、表示設定情報５６と、段落情報５７とに基づいて、表示条件が変更されるごとに計算される。
【００２９】
レイアウト処理部１５は、表示部の画面に表示させるページに属する文章のレイアウトを生成する部分であり、詳しくは、表示設定情報５６とレイアウト情報５５とに基づいて、表示させる文章の中の段落ごとに各行の文字配置を生成する部分である。
また、テキストデータのうち、現在の表示ページ番号Ｐｎ５４によって指定されているページ（表示データ５２）を、表示部１２の画面内に収まるように、文字が配置される。  表示させるページに属する文章のレイアウトを生成する場合に、日本文であれば、禁則ルールを用いた禁則処理や、詰めルールを用いた詰め処理が実行され、表示データ５２の内容が、読みやすいレイアウトに変更されて表示される。
【００３０】
禁則処理部１６は、レイアウト処理部１５が表示しようとする表示データ５２に対して、所定の禁則ルール５５−１に基づいて、いわゆる追い出し、追い込み、ぶら下がり等の禁則処理を行う部分である。
詰め処理部１７は、表示データ５２に対して、所定の詰めルール５５−２に基づいて、文字間隔を調整する部分である。
【００３１】
段落行数判定部１８は、テキストデータの中の段落ごとにレイアウト処理を行った場合に、その段落について生成されたレイアウトで表示される実際の行数（実行数Ｇ０）と、その段落の表示に要求される行数（行数Ｇｉ）とを比較する部分である。
後述するように、この２つの行数の比較により、段落について生成されたレイアウトをそのまま採用して表示するか、あるいは、禁則処理や詰め処理を実行して、再度レイアウトを生成し直すかが判定される。
たとえば、実行数Ｇ０が要求される表示行数Ｇｉよりも大きくなってしまった場合は、総ページ数ＰＡが増加する可能性があるので、総ページ数が変化しないように、その段落のレイアウトが再生成される。
【００３２】
記憶部５０は、この発明の情報表示装置の有する機能を実行するときに必要な情報、表示されるテキストデータ、表示に必要な設定情報やレイアウト情報などの予め設定されるべき情報、プログラム等を記憶する部分であり、ＲＯＭ，ＲＡＭなどの半導体記憶素子、ハードディスク、ＳＳＤなどの記憶装置、その他の記憶媒体が用いられる。
【００３３】
記憶部５０には、主として、テキストデータ５１，表示データ５２，総ページ数ＰＡ５３，表示ページ番号Ｐｎ５４，レイアウト情報５５（禁則ルール５５−１、詰めルール５５−２）、表示設定情報５６（表示文字サイズＳ５６−１，表示行数Ｌ５６−２，行文字数ＭＬ５６−３）、段落情報５７とが記憶される。
ただし、これらの情報以外にも、種々の機能を実現する上で必要な情報が記憶される。
【００３４】
テキストデータ５１は、表示部１２に表示されるデータであり、たとえば、購入された電子書籍の文書データ、Webページ、メールなどである。
テキストデータ５１とは、一般的には、文字のみからなる文章（日本語文、欧米文など）であるが、ここでは、文字、記号、図形、画像等のいずれかの情報が混在されたようなものも、テキストデータ５１として取り扱うものとする。
【００３５】
表示データ５２は、表示部１２の画面に実際に表示される部分のデータを一時記憶したものであり、表示させるページや文字サイズが変更されると、その都度更新される。この表示データ５２に基づいて、表示部１２に所望のテキストデータ部分が表示される。
たとえば、表示部１２に表示すべき表示ページ番号Ｐｎ５４が設定されると、そのページに属するテキストデータ５１の部分が表示データ５２に読み出され、レイアウト処理部１５によって実際に表示されるレイアウトが生成されて、そのレイアウトに対応するように表示データ５２が加工される。
【００３６】
総ページ数ＰＡ５３は、１つのテキストデータ５１を表示部１２に表示する場合に決定される情報であり、そのテキストデータ５１の全体のページ数である。すなわち、テキストデータ５１ごとに、固定した総ページ数を有しているのではなく、表示設定が異なれば、その都度異なる総ページ数が設定される。
【００３７】
表示ページ番号Ｐｎ５４は、現在表示部１２に表示しているページを特定する番号である。たとえば、表示するテキストデータを読み込んだ場合に、最初に表示するページがフロントページであるとすると、Ｐｎ＝１に初期設定される。
また、ユーザよるページ送り操作や、表示させるページ番号を直接入力することにより、この表示ページ番号Ｐｎが設定される。
【００３８】
レイアウト情報５５は、表示されるページのレイアウトを生成するときに用いられる情報であり、たとえば、禁則ルール５５−１や、詰めルール５５−２が予め記憶されている。
禁則ルール５５−１や詰めルール５５−２は、ＪＩＳ等で設定されている行組版方法の基準を用いればよいが、ユーザが独自に設定してもよい。
禁則ルールは、表示行の文字配置の規則を示したものであり、詰めルールは、文字間隔を詰める規則を示したルールである。
【００３９】
図７に、禁則ルール５５−１の一実施例の説明図を示す。
図７において、７つの禁則ルールを示している。
ここで、番号は、禁則ルールが適用される順番を示しており、レイアウト処理では、番号１のルールがまず実行され、次に番号２のルールが実行され、最後に番号７のルールが実行されることを意味する。
確認位置は、そのルールを適用するかどうかをチェックする位置を示しており、チェック位置は、行頭あるいは行末のどちらかである。
たとえば、確認位置に「行頭」が設定されている場合、行頭に存在する文字がチェックされる。
【００４０】
確認対象文字は、確認位置に存在するか否かをチェックする対象となる文字を意味する。
補正ルールは、レイアウトの補正内容を意味し、「追い出し」、「追い込み」、「ぶら下がり」が設定される。
ルール適応文字位置は、レイアウトの位置を変更する文字を意味し、この位置にある文字に対して、上記補正ルールが適用される。
【００４１】
禁則強度は、ルールを採用する優先順位を示したものであり、数値が大きいほど採用の必要性が大きく、数値が小さいほど採用の必要性が小さいものとする。
たとえば、禁則強度が数値１のルールは、採用されない可能性が最も高く、レイアウトの再生成をする場合に、最初に解除されるルールである。
【００４２】
図７において、番号１のルールは、行頭に記号「」」などが配置される可能性のある場合、追い出し処理が実行され、１文字前の前行の末尾の文字を、次行の先頭に移動させることを意味する。また、このルールは、禁則強度５であるので、レイアウト処理では、例外なく必ず実行される。
【００４３】
図８に、詰めルール５５−２の一実施例の説明図を示す。
図８において、４つの詰めルールを示している。
ここで、番号は、詰めルールが適用される順番を示している。
対象文字は、文字間隔を小さくしてもよい文字を意味する。対象文字としては、たとえば、「」」のような記号や、「っ」や「ゅ」のような小さく表記される文字である。
【００４４】
詰めルールは、そのルールの内容を示しており、文字間隔をどの程度小さくすべきかを示す数値を示している。たとえば、「下１／４詰め」は、通常の対象文字の高さに対して、その下方部分の１／４の長さを小さくすることを意味し、その対象文字の高さは、通常の３／４となる。したがって、対象文字と次の文字との間隔が小さくなり、対象文字が存在する行の中に、上記１／４の長さに相当するスペースが確保されることになる。
【００４５】
このように、スペースを確保する詰め処理を実行することにより、次行の先頭に配置されていた禁則文字を、前行の末尾に移動させることが可能となる場合がある。
強度は、ルールを採用する優先順位を示したものであり、数値の大きなルールを、数値の小さなルールよりも優先的に採用するものとする。
【００４６】
表示設定情報５６は、表示部１２の画面上にテキストデータを表示させる表示条件等を含むものであり、たとえば、表示文字サイズＳ５６−１，表示行数Ｌ５６−２，行文字数ＭＬ５６−３が記憶される。
これらの情報に基づいて、表示部１２の画面上に表示される文字の大きさや行数、テキストデータの中の表示可能な範囲が決定される。
【００４７】
表示文字サイズＳ５６−１は、表示部１２に表示する文字の大きさを設定したものであり、予め固定値として設定してもよいが、ユーザが自由に変更できるようにすることが好ましい。従って、表示文字サイズＳは、予め設定される数値か、またはユーザによって入力あるいは選択される数値である。
たとえば、１０ポイントとか、１８ポイントというような数値が設定され、その数値に対応した大きさの表示文字が生成される。また、文字のサイズだけでなく、文字の書体や太字設定、斜体設定などの表示に関係する項目も、設定変更できるようにしてもよい。
【００４８】
表示行数Ｌ５６−２は、表示部１２の画面上に表示可能な行数を記憶したものである。この表示行数Ｌは、表示部１２の画面サイズ、表示文字サイズＳ、行方向の余白、その他文字間ピッチ等のパラメータによって決定され、いずれかのパラメータが変化すると、その都度設定変更されるものである。
たとえば、後述する図４に示すような右端から左方向へ読むタイプの縦書きの日本語文では、表示画面の縦方向に並んだ文字列の横方向の数が、表示行数Ｌである。
【００４９】
行文字数ＭＬ５６−３は、表示部１２の画面に表示する１行当たりの文字数を記憶したものである。図４では、表示画面の縦方向に並んだ文字列を構成する文字の数が、行文字数ＭＬである。
表示行数Ｌと、行文字数ＭＬとは、ユーザによって指定することも可能であるが、主として、予め設定されている表示文字サイズ、画面サイズ、行方向の余白、文字間ピッチなどの情報を、表示設定情報56から取得して、所定の計算式により計算されるものである。
【００５０】
段落情報５７は、テキストデータ５１を構成する段落ごとの文章に関する情報を記憶したものであり、主として、段落数ＤＡ５７−１，段落番号ｉ５７−２，行数Ｇｉ５７−３，余りＡｉ５７−４，文字数ＭＤｉ５７−５、行数の総和ＧＡ５７−６が記憶される。
【００５１】
段落数ＤＡ５７−１は、１つのテキストデータ５１の全体を分割する段落の総数を示したものである。１つの段落は、原則として、一文字分の空白を設けて始まり、読点（。）やピリオドで終わる連続した一群の文字列からなる文章である。
従って、このような特徴を有する一群の文章の数を、テキストデータ全体にわたって数えることにより、段落数ＤＡが計算される。
この段落数ＤＡは、テキストデータが編集することのできない固定的なデータであれば、予め決まっているので、テキストデータ５１を記憶部５０に記憶したときに、予め計算しておいてもよい。
【００５２】
図２と図３に、段落情報５７の一実施例の説明図を示す。
段落番号ｉ５７−２は、１つのテキストデータ５１の中の各段落を特定する番号であり、先頭の段落の番号を、ｉ＝１とする。
【００５３】
行数Ｇｉ５７−３は、段落番号ｉの段落ごとの文章の表示に必要な行数を示したものであり、後述するような計算により求められる。表示文字サイズＳなどの表示条件が変化すれば、行数Ｇｉも変化する。このＧｉは、段落ｉに含まれる文章を表示するのに必要な行数（必要行数）を意味する。
総和ＧＡ５７−６は、テキストデータに含まれる各段落ごとに求めた行数Ｇｉをすべて加算したものである。
【００５４】
余りＡｉ５７−４は、段落番号ｉの段落を構成する文字を、上記行数Ｇｉの中に表示した場合に、末尾の行に生じる空白部分の文字数（残文字数）を意味する。
たとえば、余りＡｉ＝２の場合、末尾の行には、２文字分の空きがあることを意味する。
また、この余り（残文字数）の数だけ、禁則処理の追い出し処理が可能であることを意味する。また、この発明では、総ページ数ＧＡが設定されると、その総ページ数が増加しないようにするために、この余りの数を超える追い出し処理は認めないものとする。
すなわち、段落番号ｉの行数Ｇｉが求められると、その後、行数Ｇｉは変更されることはなく、レイアウト処理をする場合に、その行数Ｇｉの範囲内に文章が納まるように、その段落のレイアウト処理が実行される。
【００５５】
文字数ＭＤｉ５７−５は、段落番号ｉの段落の中に含まれる文字の数を示したものである。編集することのできない固定されたテキストデータでは、段落数も固定されるので、各段落に含まれる文字数ＭＤｉも、固定的に決定される。
表示されるテキストデータを、１群の文字列からなる段落ｉに分割した場合に、各段落ごとの文字数ＭＤｉが計算される。
【００５６】
図２に示す段落情報５７のように、行数Ｇｉと、余りＡｉと、文字数ＭＤｉとは、段落番号ｉとともに、各段落ごとに記憶される。
また、表示部１２に表示するテキストデータの表示文字サイズ等の表示条件が設定されると、その表示条件から、表示部の画面上に表示可能な表示行数Ｌと、一行当たりの文字数である行文字数ＭＬが計算される。
さらに、上記したように段落ごとの文字数ＭＤｉも固定的に決定されているとすると、次の関係式が成立する。
文字数ＭＤｉ＝（行数Ｇｉ）×（行文字数ＭＬ）−（余りＡｉ）
この関係を利用し、一行当たりの行文字数ＭＬと、段落ごとの文字数ＭＤｉとを用いて、各段落ごとの文章の表示に必要な行数Ｇｉが計算される。
【００５７】
図３に示す段落情報おいて、図３（ａ）は、文字数ＭＤｉ＝２４０（文字）で、図３（ｂ）は文字数ＭＤｉ＝１８９（文字）の場合を示している。
また、表示部１２に表示される行文字数ＭＬは、２４文字としている。
【００５８】
ここで、図３（ａ）は、注目している段落ｉが余りＡｉ＝０の場合を示している。
文字数ＭＤｉ＝２４０，行文字数ＭＬ＝２４なので、行数Ｇｉ＝ＭＤｉ／ＭＬ＝２４０／２４＝１０（行）となり、余りＡｉ＝０となる。
この場合、この段落ｉでは、１０行の中に、ちょうど文章が収まることを意味する。
このように、ＭＤｉをＭＬで除算した結果（ＭＤｉ／ＭＬ）が整数Ｎである場合は、この整数Ｎを、行数Ｇｉに設定する（Ｇｉ＝Ｎ）。
【００５９】
一方、図３（ｂ）は、注目している段落ｉが、余りＡｉ＝３となる場合を示している。
文字数ＭＤｉ＝１８９，行文字数ＭＬ＝２４なので、行数Ｇｉ＝ＭＤｉ／ＭＬ＝１８９／２４（≒７．８）は、整数とはならない。
この場合、７行では、７×２４＝１６８文字しか収められないので、段落ｉに含まれる１８９文字全てを収めるためには、少なくとも８行の行数が必要となる。
そこで、ＭＤｉをＭＬで除算した結果（ＭＤｉ／ＭＬ）が整数Ｎとならない場合は、除算した数値の整数部分の数値Ｎに１を加算した値（Ｎ＋１）を、行数Ｇｉに設定する。
【００６０】
図３（ｂ）の場合は、Ｇｉ＝８（行）が設定される。８行の領域には、８×２４＝１９２文字が収められるので、段落ｉの末尾の行に、３文字分の空白が生じる。すなわち、必要行数Ｇｉが決まれば、余りＡｉは、Ｇｉ×ＭＬ−ＭＤｉによって計算できる。
Ａｉ＝Ｇｉ×ＭＬ−ＭＤｉ
＝８×２４−１８９＝３となる。
【００６１】
また、段落数ＤＡと各段落ごとの行数Ｇｉが決定されると、各段落ごとの行数Ｇｉを加算した数値（行数の総和ＧＡ＝Ｇ1＋Ｇ2＋Ｇ3＋・・・ＧDA，ｉ＝１，２，・・・，ＤＡ）と、表示画面（１ページ当たり）の表示行数Ｌとから、テキストデータの総ページ数ＰＡが、次式によって計算できる。
総ページ数ＰＡ＝ＧＡ／Ｌ
すなわち、総ページ数ＰＡは、総和ＧＡを、表示行数Ｌで除算したものである。
【００６２】
この発明では、総ページ数ＰＡが求められると、総ページ数ＰＡは固定したままで、以後表示部１２に表示される段落のレイアウトが生成される。このとき、各段落のレイアウトに要求される行数も、上記のようにして計算された行数Ｇｉに固定される。
すなわち、行数Ｇｉが変化しないように、レイアウト処理が実行される。
【００６３】
また、この発明では、読み出された表示データに対して、各行の文字配置を考慮してレイアウトが生成されるが、一旦生成されたレイアウトが、表示部の画面内に収まらない場合もある。
このように、レイアウトが表示部の画面内に収まらない場合は、レイアウト生成時に行った禁則処理を解除し、レイアウト処理部によって、各行の文字を移動させて再度レイアウトを生成させるようにする。
【００６４】
実行していた禁則処理が複数ある場合は、再度生成されたレイアウトが、表示部の画面内に収まるように、所定の順序で順次禁則処理を解除していく。
また、レイアウトが表示部の画面内に収まらない場合、詰めルールを用いて、レイアウトされた各行の文字列を構成する文字どうしの間隔を詰めて、再度レイアウトを生成してもよい。
【００６５】
図４に、表示部１２の表示画面に表示される段落の一実施例の説明図を示す。
ここでは、テキストデータ５１のうち、最初のページ（ページ番号＝１）に属する３つの段落を表示した状態を示している。
【００６６】
たとえば、表示条件に基づいて、表示画面に表示できる表示行数Ｌが２０行であると計算されたとすると、テキストデータの中の２０行分の文字が、表示画面に表示される。
図４では、段落１は文字数ＭＤ１＝１８９文字なので、行数Ｇ１＝８行必要とし、段落２は文字数ＭＤ２＝１２０文字なので、行数Ｇ２＝５行必要とする。従って、段落３は、表示可能な残りの７行分だけが画面上に表示されることになる。
【００６７】
また、段落１と２において、レイアウト処理をする場合に、もし禁則処理をする必要がないとすれば、図４に示すように、各段落の設定行数Ｇｉに納まるように、文字が配置される。たとえば、段落１では、末尾の３文字分が余りとなるので、空白が生じる。
また、段落２において、仮に、末尾の「た。」の読点（。）が、６行目の先頭に来るようにレイアウト処理される可能性のある場合、表示行数が６行となり、設定された行数Ｇ２＝５行を越えてしまうので、禁則ルールが適用されて、追い込み処理により、５行目の末尾に読点（。）を入れるようにレイアウト処理をする。
【００６８】
＜総ページ数の計算＞
図５に、テキストデータの総ページ数を求める一実施例のフローチャートを示す。
ここでは、ユーザが表示させようとするテキストデータ５１を指定した場合に、そのテキストデータ５１を記憶部５０から読み出して、総ページ数ＰＡを計算するものとする。
また、表示部１２の表示画面には、１ページ分の文章が表示されるものとする。
【００６９】
ステップＳ１において、ページ数計算部１４は、表示するテキストデータ５１を取得する。すなわち、入力部１３によってユーザが指定したテキストデータ５１を、記憶部５０からＣＰＵの主記憶などに読み出す。
【００７０】
ステップＳ２において、表示部１２に表示する文字サイズＳを、記憶部５０の表示設定情報５６から取得する。
ステップＳ３において、表示部１２の画面サイズを、表示装置あるいは記憶部５０に予め設定された表示設定情報から取得する。
【００７１】
ステップＳ４において、表示画面（１ページ）に表示できる行数（表示行数Ｌ）と、１行当たりの文字数（行文字数ＭＬ）とを計算する。
この計算は、ステップＳ２で取得した文字サイズＳと、ステップＳ３で取得した画面サイズとを利用し、行送り方向の画面サイズを行送り方向の送り幅で割ることにより、表示行数Ｌを求め、文字送り方向の画面サイズを文字送り方向の送り幅で割ることにより、行文字数ＭＬを求める。
これにより、１ページを構成する表示画面に表示される文字数（＝表示行数Ｌ×行文字数ＭＬ）が決定される。
【００７２】
ステップＳ５において、取得したテキストデータ５１を段落ごとに分割し、テキストデータ５１の段落数ＤＡを求める。分割する段落は、上記したような一群の文章により認識でき、認識された一群の文章の数を数えることにより、段落数ＤＡが求められる。
【００７３】
段落数ＤＡが求められると、認識した各段落ごとに、その段落ｉを構成する文字の数ＭＤｉを計算する。計算された段落数ＤＡと、文字数ＭＤｉ（ｉ＝１，２・・・ＤＡ）とを、記憶部５０に記憶する。
【００７４】
ステップＳ６において、行文字数ＭＬと、各段落ｉの文字数ＭＤｉとから、各段落ごとに、表示に必要な行数Ｇｉを計算する。
ここで、ＭＤｉ／ＭＬを計算し、計算結果が整数Ｎとなる場合は、その整数Ｎを、行数Ｇｉとして設定記憶する（Ｇｉ＝Ｎ＝ＭＤｉ／ＭＬ）。
ＭＤｉ／ＭＬが整数Ｎとならない場合は、整数Ｎ＋１を、行数Ｇｉとして設定記憶する（Ｇｉ＝Ｎ＋１）。
【００７５】
ステップＳ７において、各段落ごとに、文字が配置されない空白部分の文字数（余りＡｉ）を、次式により計算し、記憶部５０に記憶する。
Ａｉ＝Ｇｉ×ＭＬ−ＭＤｉ
ここまでのステップＳ５，Ｓ６，Ｓ７の処理により、図２に示すような段落情報５７が、計算により記憶される。
【００７６】
ステップＳ８において、各段落ごとの行数Ｇｉの総和ＧＡを求める。
ＧＡ＝Ｇ1＋Ｇ2＋・・・Ｇi＋・・・ＧDA，（ｉ＝１，２，３・・・ＤＡ）
次に、この総和ＧＡと、表示行数Ｌとから、表示するテキストデータの総ページ数ＰＡを、次式により計算する。
ＰＡ＝ＧＡ／Ｌ
以上の処理により、表示部にこれから表示させようとするテキストデータの総ページ数ＰＡが求められる。この総ページ数ＰＡと段落ごとの行数Ｇｉとは、表示条件が変更されない限り一定値とする。
【００７７】
表示画面に表示するページが変化したとしても総ページ数ＰＡは変化せず、また、表示画面に現在表示されている段落の表示に必要な行数Ｇｉも一定である。
段落ｉの文章を表示部に表示させる場合、後述するように、この行数Ｇｉに収まるように、その文章のレイアウト処理が実行される。
以上のような総ページ数ＰＡを計算する処理は、行文字数ＭＬと文字数ＭＤｉの割り算と、割り算結果の足し算を、段落数＝ＤＡ回行う処理であるので、比較的高速で処理することが可能である。たとえば、段落数ＤＡが1000 個、割り算＋足し算の演算時間が  1msであるとしても、処理時間は１秒程度の時間で計算できる。
一方１文字１文字の文字送り幅を計算する方法であれば、文字数に比例した演算が必要になり、仮に１文字毎の幅取得が割り算＋足し算の演算と同等の処理時間と仮定しても、上記の本願の処理時間と比較して、１段落毎の文字数倍の処理時間を要してしまう。
【００７８】
＜表示データのレイアウト処理＞
図６に、表示部に表示されるテキストデータのレイアウト処理の一実施例のフローチャートを示す。
ここでは、現在表示画面に表示すべきページが決定された場合に、そのページに属する段落の文章について、レイアウト処理を実行する。したがって、現在表示されない他のページについては、レイアウト処理は行われないので、表示画面に表示されるページのレイアウト処理は、すべてのページのレイアウト処理を実行した後に表示を行う従来の装置よりも比較的高速に実行できる。
【００７９】
また、このレイアウト処理よりも前に、すでに、テキストデータの総ページ数ＰＡが設定されており、表示部に表示するページが、ユーザによって指定されているものとする。表示するページの指定は、たとえば、ユーザのページ送り操作や、ユーザが直接ページ数を入力することにより行うことができる。
【００８０】
ステップＳ２１において、ユーザによって選択された表示ページ番号Ｐｎを、記憶部５０から取得する。
ステップＳ２２において、取得した表示ページ番号Ｐｎに表示すべき段落ｉのテキストデータを取得する。
表示ページ番号Ｐｎが指定されれば、１ページ当たりの表示行数Ｌと、先頭の段落からの各段落の行数Ｇｉとから、そのページに属する段落の番号がわかるので、テキストデータ５１の中から、そのページにある文章を取得することができる。取得されたテキストデータは、表示データ５２として、一時記憶される。
【００８１】
ステップＳ２３において、記憶部５０にすでに記憶されている段落ｉの行数Ｇｉを取得する。
ステップＳ２４において、記憶部５０にすでに記憶されている段落ｉの余りＡｉを取得する。
【００８２】
ステップＳ２５において、レイアウト処理部１５が、取得した段落ｉのテキストデータに対してレイアウト処理を実行する。ここでは、段落ｉのテキストデータを、表示画面の中に配置する処理を行い、行頭及び行末において禁則処理等を行う必要がある場合は、必要な全ての禁則処理を適用して、通常の表示レイアウトとなるような表示データを生成する。このレイアウト処理によって生成された段落ｉの実際の行数を、実行数Ｇ０とする。
また、適用した禁則処理の回数をカウントしておく。
この状態では、まだ段落ｉの表示に必要な行数Ｇｉは考慮されていない。実行数Ｇ０＝Ｇｉとなる場合もあれば、実行数Ｇ０＞Ｇｉとなる場合もある。
【００８３】
ステップＳ２６において、レイアウト処理された段落ｉの実際の行数（実行数Ｇ０）と、そのレイアウト処理で行った禁則処理の回数ｋとを一時記憶する。
ステップＳ２７において、段落行数判定部１８が、段落ｉの実行数Ｇ０と、すでに記憶されている段落ｉの表示に必要な行数Ｇｉとを比較する。
Ｇ０＝Ｇｉであれば、必要行数の範囲内で段落ｉの文章が表示できるので、ステップＳ２８へ進み、そうでない場合はステップＳ２９へ進む。
【００８４】
ステップＳ２８において、生成された段落ｉの表示データを、表示画面に表示し、処理を終了する。この場合、段落ｉの表示行数はすでに設定された行数Ｇｉであり、総ページ数ＰＡが増減することはない。
また、現在のページに属し表示画面に表示されるべき段落が、１つだけでなく２つ以上ある場合は、それらの段落ごとにステップＳ２３からＳ２８の処理を繰り返す。
【００８５】
一方、Ｇ０＝Ｇｉでない場合は、レイアウトされた文章をそのレイアウトのまま表示すると、現在のページに属する文章の一部分が表示画面に表示されない場合がある。このとき、ページ総数ＰＡも変化してしまう場合がある。
【００８６】
そこで、ステップＳ２９において、レイアウトされた実行数Ｇ０が、設定された必要行数Ｇｉと異なる場合は、再レイアウト処理を行う。すなわち、段落ｉのテキストデータの表示データを再生成する。
ここでは、禁則ルールの禁則強度に基づいて、禁則の優先順位の低いものから順に一旦行った禁則処理を解除する。たとえば、ステップＳ２５で行っていた補正処理のうち追い出し処理を解除し、次行の行頭に移動していた文字を、前行の行末に戻す処理をする。
【００８７】
このような解除処理を行えば、設定された必要行数Ｇｉの範囲内に、その段落の文章が納まる可能性があるからである。レイアウト処理で行われていた禁則処理の回数はｋ個であるので、１つずつ禁則処理を解除していき、段落ｉの文章が行数Ｇｉの中に収まるまで、最大ｋ個のすべての禁則処理の解除を行う。
【００８８】
ステップＳ３０において、ステップＳ２７と同様に、再レイアウトした段落ｉの表示データについて、Ｇ０＝Ｇｉとなったか否かチェックする。Ｇ０＝Ｇｉである場合、ステップＳ２８へ進み、そうでない場合、ステップＳ３１へ進む。
【００８９】
一旦実行されたすべての禁則処理を解除しても、Ｇ０＝Ｇｉとならなかった場合、ステップＳ３１において、設定された行数Ｇｉの範囲内で、その段落ｉの文章を表示するために、文字の詰め処理を行う。
【００９０】
ここでは、図８に示した詰めルールの優先順位に基づいて、文字の高さを小さくすることのできる文字に対してその文字の高さを小さくし、文字間隔を小さくしてその文字が存在する行に空白部分を生成する。生成された空白部分に、その直後の文字を挿入することができる場合、空白部分にその直後の文字を移動させ、その後の段落ｉの文章のレイアウトを再生成して、段落ｉのテキストデータが、設定された行数Ｇｉの中に収まるように、表示データを生成する。
【００９１】
文字の詰め処理は、詰めルールで定められた対象文字ごとに、その強度の高いものから順次行い、レイアウトが変化するごとに、Ｇ０＝Ｇｉとなったか否かを確認し、Ｇ０＝Ｇｉとならない場合は，再度別の詰めルールの詰め処理を実行すればよい。
ステップＳ３１の後、Ｇ０＝Ｇｉとなれば、ステップＳ２８へ進む。
なお、詰め処理を行ってもＧ０＝Ｇｉとならない場合は、たとえば、Ｇ０＝Ｇｉを満たすところまで、文字サイズを小さくするような制御を行えばよい。
【００９２】
以上のように、高速に計算された総ページ数ＰＡを固定し、表示すべきページに属する段落の行数を一定値として、表示ページのレイアウトが生成されるので、迅速に所望のページを表示させることができ、ユーザの利便性を向上させることができる。
【００９３】
＜レイアウト処理の具体例＞
図９に、禁則処理を実行したとすると設定された行数を超えてしまう場合に、禁則処理をしないようにレイアウトを調整した実施例の説明図を示す。
ここで、表示画面に表示可能な行数を２０行とし、一行当たりの文字数を１４文字とする。また、現在表示しようとする段落の行数Ｇｉは、１７行に設定されていたとする（Ｇｉ＝１７）。
図９（ａ）は、ある段落の文末の読点（。）が行頭に配置されるので、禁則ルールの番号４のルールである追い出し処理をした場合を示している。図９（ａ）では、この追い出し処理をしたために、この段落の実行数（Ｇ０）は１８行となり、設定された行数Ｇｉ＝１７を越えてしまっている。したがって、レイアウトの再生成が必要と判断される。
【００９４】
そこで、図９（ｂ）のように、この段落の表示行数が１７となるように、レイアウトを再生成する。この場合は、上記した番号４の禁則ルールを解除する。図９（ｂ）では、１８行目にあった「た。」の２文字を、１７行目に追い込んだ処理をしている。
すなわち、「た」を１７行目の文末へ移動し、さらに「。」が１７行目に配置されるように、いわゆるぶら下がり処理を実行する。これにより、１７行目は、「。」を含めて１５文字となるが、番号５の禁則ルールに示すように、「。」がぶら下がり処理が可能な文字なので、図９（ｂ）に示すように、この段落の行数は、所定の行数Ｇｉ＝１７行に収められる。
【００９５】
図１０は、同様に禁則処理を解除して、段落ｉの所定の行数Ｇｉに納まるようにレイアウトを調整した別の実施例を示している。
図１０（ａ）は、図９（ａ）と同じレイアウトを示している。
図１０（ａ）の１８行目の「た。」を、１７行目に収めるために、図１０（ｂ）では、１０行目の禁則処理を解除している。
【００９６】
図１０（ａ）の９行目は、１０行目の「張っても」の「っ」が行頭に配置されないようにするために、禁則処理の番号３のルールの追い出し処理が実行されたものであり、１３文字となっていた。
図１０（ｂ）は、この禁則処理を解除し、「張っても」の「張」を９行目に移動させ、「っ」が１０行目の文頭に表示されるのを許容したものである。
【００９７】
これにより、９行目は１４文字となり、１０行目から１７行目までの文字列は、１文字ずつ前方へ移動することになり、「た。」は、最終行の１７行目に配置することができるようになる。
このように、絶対条件でない禁則を行わないことにより、この段落の表示行数を、所定の行数Ｇｉにすることができる。
【００９８】
図１１に、画像を含む段落を表示する実施例を示す。
ここでは、「親譲り」で始まる段落ｉの５行目から７行目の部分に、「絵」という画像が表示されるものとする。また、この画像表示は、３行×５文字＝１５文字分の領域を使用するものとする。また、段落ｉの文字列のみの文字数ＭＤｉ＝２３８文字、行文字数ＭＬ＝２４文字とする。
【００９９】
図１１において、右側から１１行目の文字数は１３文字あるので、もし、この１５文字分の「絵」という画像表示がなければ、１１行目の文字列は、１０行に収められていたはずである。
この段落ｉの文字数ＭＤｉは２３８文字であるので、「絵」という画像表示がない場合、この段落は、１０行に収められ、かつ２文字が余りとなる（２３８＝２４×１０行、余りＡｉ＝２）。
そこで、このように画像表示が含まれる場合は、必要行数が増加する可能性が大きいので、段落ｉの文字数をカウントする場合に、画像表示が使用する領域の文字数を、文字列のみの文字数に予め加算しておく。
【０１００】
たとえば、段落ｉの文字列のみの文字数は２３８文字であったが、この２３８文字に、画像表示に相当する文字数である１５文字を加算する。すなわち、段落ｉの文字数ＭＤｉ＝２３８＋１５＝２５３文字とする。
したがって、この段落ｉは、２５３文字分の行数を必要するものとしてその段落情報を計算する。この場合、２５３／２４≒１０．５となるので、行数Ｇｉには１１行が設定され、余りＡｉとして１１文字が設定される（２５３＝２４×１１−１１）。
【０１０１】
この段落ｉの文章が表示される場合は、行数Ｇｉ＝１１行分の領域に表示されることになり、余りＡｉが１１文字あるので、１１文字分の追い出し処理をしても、１１行を越えることはない。
【０１０２】
＜英文のテキストデータの総ページ数計算＞
図１２に、英文のテキストデータの総ページ数の計算処理のフローチャートを示す。
図５のフローチャートと同じ処理は同一番号を付与している。
図１２では、図５と異なり、ステップＳ３とＳ４との間に、ステップＳ１１を追加している。ステップＳ１１において、表示フォントの文字幅の平均値を取得し、１行当たりの文字数を計算する。
【０１０３】
また、ステップＳ４において、表示画面の表示行数Ｌと、行文字数ＭＬを計算するときに、文字サイズＳに加えて、取得した表示フォントの文字幅の平均値と１行当たりの文字数を用いる点が、日本文の場合と異なる。
以下、英文の場合の差異点について説明する。
【０１０４】
英文字には、１文字の幅が固定長の場合と１文字の幅が一定でない場合がある。固定長の場合を、モノスペースフォントと呼び、一定でない場合を、プロポーショナルフォントと呼ぶ。
モノスペースフォントの場合、１文字の文字幅は同一なので、表示フォントが決まれば、この文字幅の平均値も一定である。
たとえば、使っているフォントの縦横比(幅/高さ)が０．６であれば、高さＨが２０の場合、幅は１２になる。
【０１０５】
次に、英文の１行当たりの文字数ＭＬを、以下のように定義するものとする。
１行の文字数（ＭＬ）＝ＳＡ／ＳＢ／（Ｗ／Ｈ）−ＷＬ
ここで、ＳＡは行方向の画面サイズ、ＳＢは文字サイズ、Ｗは文字幅、Ｈは文字高さ、ＷＬは１つの段落の平均単語長さとし、それぞれの単位はドット数とする。
【０１０６】
たとえば、画面サイズＳＡを６００、文字サイズＳＢを２０、文字幅Ｗ＝１２、高さＨ＝２０とする。
また、１つの段落にある文章（１文）の平均単語長さＷＬは、次式で求めるものとする。
ＷＬ＝（ＭＤｉ−ＳＰ）／ＳＰ
ＭＤｉは、注目している段落ｉの総文字数である。ＳＰは、注目している段落ｉに含まれるスペースの数、すなわち、単語と単語の間の数である。
【０１０７】
図１４に、１つの英文の具体例を示す。この英文は、「Alice」という単語で始まる１つの段落の文章であり、総文字数ＭＤｉ＝３０３文字、スペースの数ＳＰ＝５７である。したがって、１文の平均単語長さＷＬは、ＷＬ＝（３０３−５７）／５７≒４．３となる。
また、各変数が上記のような設定値であったとすると、この段落ｉの１行の文字数ＭＬは、５４．７となる。
ＭＬ＝ＳＡ／ＳＢ／（Ｗ／Ｈ）−ＷＬ
＝６００／２０／（１２／２０）−４．３
＝５０−４．３＝４５．７
【０１０８】
ここで、この４５．７の整数値（４５）に１を加算し、１行の文字数ＭＬを４６文字とする。すなわち、図１４に示す段落ｉの文章を、表示画面に表示する場合、１行の文字数ＭＬが、４６文字となるように単語の配置を調整し、表示に必要な行数を計算する。
たとえば、図１４の場合、文字数ＭＤｉ＝３０３なので、ＭＤｉ／ＭＬ＝３０３／４６（≒６．５）となり、この数値は整数ではないので、整数部分である６に１を加算した数値が、必要行数Ｇｉとなる（Ｇｉ＝７）。
【０１０９】
このとき、Ａｉ＝Ｇｉ×ＭＬ−ＭＤｉ＝７×４６−３０３＝１９文字となり、最後の行には、１９文字分の空白が生じることになる。
したがって、図６と同様に、テキストデータの総ページ数を計算するのに必要な段落情報が上記のように計算されるので、ステップＳ８において、総ページ数ＰＡが計算される。
【０１１０】
図１５に、英文フォントがプロポーショナルフォントの場合の英文の表示例を示す。これは、図１４と同じ英文である。
プロポーショナルフォントの場合は文字によって幅が異なる。
【０１１１】
図１６に、文字高さと、文字送り幅の対応関係の一例を示す。
ここでは、文字高さを２０４８とした場合、「Aw」は１４７９、「ace」は９０９、「s」は７９７「li」は５６９となっていることが示されている。
【０１１２】
したがって、文字の高さ（Ｈ）と、文字の幅（Ｗ）との比（Ｗ／Ｈ）も一定値とならないので、この比の値は、文字幅の平均値で代用することにする。
たとえば、文字高さを2048にした場合の、アルファベットの小文字（ａからｚ）についての幅（Ｗ）の平均値は、おおよそ９２５であるので、Ｗ／Ｈ＝９２５／２０４８＝０．４５１となる。
【０１１３】
また、他の変数（ＳＡ，ＳＢ，ＷＬ）については、図１４について説明した数値と同一とすると、１行の文字数（ＭＬ）は、次式により計算される。
ＭＬ＝ＳＡ／ＳＢ／（Ｗ／Ｈ）−ＷＬ
＝６００／２０／０．４５１−４．３
＝６６．５−４．３＝６２．２
ここで、この６２．２の整数値（６２）に１を加算し、１行の文字数ＭＬを６３文字とする。
【０１１４】
図１５の文章の文字数ＭＤｉ＝３０３なので、ＭＤｉ／ＭＬ＝３０３／６３（≒４．８）となり、この数値は整数でないので、整数部分に１を加算した数値５を、必要行数Ｇｉとする（Ｇｉ＝５）。
また、余りＡｉ＝Ｇｉ×ＭＬ−ＭＤｉ＝５×６３−３０３＝１２文字となり、最後の行に、１２文字の空白が生じる。
【０１１５】
したがって、プロポーショナルフォントの場合は、図１５に示すように、図１４と同一の文を５行で収めることができ、英文のレイアウト処理をする場合は、６行とはならず、５行に収まるように調整することができる。
【０１１６】
＜英文のテキストデータのレイアウト処理＞
図１３に、英文のテキストデータのレイアウト処理のフローチャートを示す。
ここで、図６と同じ処理には、同一番号を付与している。
段落ｉの実行数Ｇ０と、段落ｉの設定された行数Ｇｉとが異なる場合に行う処理、すなわち、ステップＳ４０，Ｓ４１，Ｓ４２が、図６のフローと異なる。
【０１１７】
ステップＳ２７において、Ｇ０＝Ｇｉでなかった場合、ステップＳ４０へ進み、Ｇｉ＞Ｇ０であるか否かチェックする。
すなわち、ステップＳ２５のレイアウト処理で配置された文章の実際の行数（実行数Ｇ０）が、設定された行数Ｇｉよりも小さいか否かチェックする。実行数Ｇ０が行数Ｇｉよりも小さい場合、ステップＳ４１へ進み、そうでない場合はステップＳ４２へ進む。
【０１１８】
ステップＳ４１において、段落ｉの末尾の最後の単語を、最終行Ｇｉの先頭に移動させ、それ以前の隣接行の単語を均等割付する。この場合は、設定された行数Ｇｉよりも小さい行数（実行数Ｇ０）で、段落ｉの文章が収まっているので、表示する行数を増加させている。
【０１１９】
図１７に、英文の表示行数を増加させる場合の説明図を示す。
ここで、英文の段落ｉは、「So」で始まる２９２文字（＝ＭＤｉ）の英文であり、総ページ数を計算するときに求めたこの段落ｉの段落情報は、行数Ｇｉ＝６行、余りＡｉ＝３９文字に設定されているものとする。
【０１２０】
図１７（ａ）は、通常のレイアウト処理をした場合を示しており、このレイアウト処理によって、段落ｉの英文は５行に収まったとする。
すなわち、このまま表示すると、段落ｉは、設定された行数Ｇｉ（＝６）よりも少ない行数で表示されることになり、総ページ数も異なる場合がある。
そこで、ステップＳ４１に示すような処理を行って、図１７（ｂ）に示すように、表示行数が６行となるようにレイアウトを調整する。
【０１２１】
図１８に、設定された行数よりも少ない行数で表示される可能性のある場合の調整方法の概略説明図を示す。
図１８（ａ）では、図１７（ａ）の英文の下２行分（４行目、５行目）を示している。
ここで、最終行の末尾の単語「her.」を、次行、すなわち６行目の先頭に移動させる。この移動後、図１８（ｂ）のようになったとする。
【０１２２】
図１８（ｂ）において、５行目に空白が生じたので、その前の行（４行目）の末尾の単語「when」を、５行目の先頭に移動させる。この「when」の幅は、５行目の空白部分の幅よりも小さいものとする。この場合は、「when」を、５行目に移動できるので、図１８（ｃ）のようになる。
【０１２３】
最後に、単語の移動を行った行（４行目と５行目）に対して、均等割付処理を行う。
すなわち、４行目と５行目のそれぞれに対して、各行の単語と単語の間の幅が同一値となるように、各単語を配置し直すと、図１８（ｄ）のようになる。
このような処理により、図１７（ｂ）に示したように、段落ｉの文章が、設定された行数Ｇｉ（＝６行）に表示されるようになる。
【０１２４】
図１３のステップＳ４０において、Ｇｉ＞Ｇ０でなかった場合は、ステップＳ４２へ進む。
ここでは、図１７とは逆に、レイアウト処理された実行数（Ｇ０）が所定の行数Ｇｉを越えているので（Ｇｉ＜Ｇ０，Ｇｉ≠Ｇ０）、行数を減らす処理を行う。
行数を減らすために、単語間のスペース幅や文字幅を減少させる英文詰め処理を行う。
英文詰め処理では、図１９に示すような英文詰め処理テーブルのルールを利用する。
【０１２５】
図１９において、番号は、ルールを適用する順番を示している。対象文字は、詰める対象となる文字を示している。ここで、ＳＰは、単語間のスペースを意味する。
詰めルールは、対象文字に対して行う処理内容を示したものであり、ここでは、文字幅を減少させる処理を行う。
文字幅の減少とは、たとえば、スペース幅を、1または2画素程度短くすることを意味する。
【０１２６】
強度は、ルールを適用する優先順位を示し、強度が高いルールを、強度が低いルールよりも優先的に適用する。
たとえば、まず、強度が最も高い５のレベルの文字（スペース）に対して文字幅を減少させる処理をする。この処理をした後、表示行数が減少し、実行数Ｇ０が行数Ｇｉに一致すれば、段落ｉのテキストデータが設定された行数Ｇｉに収められるので、再レイアウトを終了する。
ただし、まだＧ０＞Ｇｉのままである場合は、次の強度４のルールを適用して、文字幅を詰めるレイアウト処理を再度行う。
その後、Ｇ０＝Ｇｉとなるまで、強度の小さいルールを順次適用していく。
【０１２７】
図１９の場合は、スペースに対してまず文字幅減少処理を行い、その後、アルファベットの小文字の文字幅減少処理を行い、次に、アルファベットの大文字の文字幅減少処理を行う。
【０１２８】
図２０に、ステップＳ２５のレイアウト処理によって、実行数Ｇ０（＝６行）が、設定行数Ｇｉ（＝５行）よりも大きくなってしまった場合に、文字幅を減少させる処理をした実施例の説明図を示す。
図２０（ａ）においては、段落ｉの実行数Ｇ０が６行でとなるようにレイアウトされたとする。これに対して、表示行数をＧｉ＝５行とするために、文字幅減少処理をしたとする。このとき、３行目から６行目のスペース幅とアルファベットの文字幅とを小さくすることによって、図２０（ｂ）に示すように、６行目にあった「her.」を、５行目に収めることができる。
段落ｉの文章には、単語と単語の間に多数のスペースが存在するが、どの行に存在するスペースの文字幅を減少させるかは、たとえば、もっとも大きいスペース幅を有する行から選ぶなどの規則によって定めればよい。
【０１２９】
以上のように、英文の場合も、まず、テキストデータ全体の総ページ数ＰＡを計算し、その総ページ数ＰＡと各段落ごとの行数Ｇｉとを固定値とし、各段落の文章をその行数Ｇｉの範囲内で収まるようにレイアウトをすることにより、計算した総ページ数を維持したまま所望のページのテキストデータを迅速に表示させることができ、ユーザの利便性を向上させることができる。
【０１３０】
＜英文の他の実施例＞
英文の場合、ドロップキャップされたテキストデータを表示する場合がある。
ドロップキャップとは、段落の最初の文字を、数行分の高さを有する大きな文字で表示することを意味する。
たとえば、図２１に、ドロップキャップを有する英文の一実施例を示す。この場合は、最初の文字「Ａ」がドロップキャップされた文字であり、２行分の高さを有している。
【０１３１】
このようなドロップキャップされた文字がある場合は、その文字が占める領域に相当する文字数を計算し、その文字数を、文章の中のドロップキャップされた文字以外の文字の数に加算したものを、段落ｉの文字数ＭＤｉとする。この加算後の文字数ＭＤｉを用いて、必要な行数Ｇｉを求める。
【０１３２】
図２２に、英文の文字の高さと行間との関係の概略説明図を示す。
ここで、アセントは、１つの行の文字の高さを示している。ディセントは、英文字のベースラインの下方に出た部分の長さを示している。行間は、隣接する行のベースライン間の距離を意味する。
【０１３３】
２行にまたがるドロップキャップされた文字は、行間と、アセントとの合計長さに相当する長さの文字となる。ここで、ドロップキャップの拡大率Ｐは、（行間＋アセント）／アセントにより求められる。
また、ドロップキャップされた文字に相当する文字数ＭＤＰは、次式により求められる。
文字数ＭＤＰ＝拡大率Ｐ×大文字の平均幅／小文字の平均幅
たとえば、行間＝３４，アセント＝１５とすると、
拡大率Ｐ＝（３４＋１５）／１５＝３．２７
大文字の平均幅＝０．６４，小文字の平均幅＝０．４３とすると、
文字数ＭＤＰ＝３．２７×０．６４／０．４３
＝４．６５（文字）
ここで、文字数ＭＤＰは整数でないので、占有する領域として文字数ＭＤＰの整数部分に１を加算して、ドロップキャップされた文字の１行当たりの文字数を、５文字とする。
したがって、２行分のドロップキャップされた文字は、２×５＝１０文字分の領域を占めることになる。
【０１３４】
段落ｉのドロップキャップされた以外の文字の文字数が３０３文字であったとすると、表示に必要な文字数ＭＤｉとして３０３＋１０＝３１３文字を設定する。
以下、上記したフローチャート（図１２，図１３）と同様の処理を行い、段落ｉの必要行数Ｇｉなどを求めた後、レイアウト処理を行えばよい。
【０１３５】
このように、段落の中にドロップキャップがある場合も、そのドロップキャップの文字が占有する必要な文字数を予め考慮して、その段落の文字数ＭＤｉを設定しておけば、所定の総ページ数の範囲内で、テキストデータを表示させることができる。
【符号の説明】
【０１３６】
１１    制御部
１２    表示部
１３    入力部
１４    ページ数計算部
１５    レイアウト処理部
１６    禁則処理部
１７    詰め処理部
１８    段落行数判定部
５０    記憶部
５１    テキストデータ
５２    表示データ
５３    総ページ数ＰＡ
５４    表示ページ番号Ｐｎ
５５    レイアウト情報
５５−１    禁則ルール
５５−２    詰めルール
５６    表示設定情報
５６−１    表示文字サイズＳ
５６−２    表示行数Ｌ
５６−３    行文字数ＭＬ
５７    段落情報
５７−１    段落数ＤＡ
５７−２    段落番号ｉ
５７−３    行数Ｇｉ
５７−４    余りＡｉ
５７−５    文字数ＭＤｉ
５７−６    行数の総和ＧＡ
【図１】
2013235379.tif 000003
【図２】
2013235379.tif 000004
【図３】
2013235379.tif 000005
【図４】
2013235379.tif 000006
【図５】
2013235379.tif 000007
【図６】
2013235379.tif 000008
【図７】
2013235379.tif 000009
【図８】
2013235379.tif 000010
【図９】
2013235379.tif 000011
【図１０】
2013235379.tif 000012
【図１１】
2013235379.tif 000013
【図１２】
2013235379.tif 000014
【図１３】
2013235379.tif 000015
【図１４】
2013235379.tif 000016
【図１５】
2013235379.tif 000017
【図１６】
2013235379.tif 000018
【図１７】
2013235379.tif 000019
【図１８】
2013235379.tif 000020
【図１９】
2013235379.tif 000021
【図２０】
2013235379.tif 000022
【図２１】
2013235379.tif 000023
【図２２】
2013235379.tif 000024
【図２３】
2013235379.tif 000025