(57)【要約】【課題】  電子データを単体で処理できるように分割した部分データに関して、部分データの処理結果に分割の影響が現れる場合に、高速、省リソースで処理できるという部分データの処理の利点をできるだけ損なわずに、各部分データの処理結果の繋がりが悪くならないように部分データを処理できるようにする。【解決手段】  所望の部分データの周囲の部分データの処理結果が、所望の部分データの処理結果に分割による影響を与えるかどうかを影響検出手段３で検出する。影響を与える場合は、その部分データから所望の部分データまでを一続きのデータとして、レイアウト生成手段５で処理する。さらに、先に処理する部分データに関しても、その周囲の部分データから影響を受けないかどうかを検出し、影響があれば、影響を与える部分データをさらに含めて一続きに処理する。これらの処理を影響が検出されなくなるまで繰り返す。【選択図】  図１
2005267610.tif 000002
【特許請求の範囲】
【請求項１】
電子データが複数に分割されたデータであり、単独で処理したときの処理結果自体には誤りが無いデータである部分データを用いて所定の処理を行うデータ処理方法として、制御手段、影響検出手段および部分データ処理手段を含むデータ処理装置が行うデータ処理方法であって、
全ての部分データのそれぞれに関する電子データ中の位置、あるいは位置およびサイズを示す値を記述した予め作成済みの処理補助データを、前記制御手段が、指定された処理範囲に関する電子データ中の位置、あるいは位置およびサイズを示す値に基づいて、前記電子データの指定された処理範囲に該当する該当部分データを特定する部分データ特定ステップと、
影響検出手段が、前記部分データ特定ステップから得られる該当部分データの処理結果に電子データを分割したことの影響を与える影響部分データを、部分データ間で影響を与えるかどうかの情報を、まず検出対象の部分データを特定し、次に当該検出対象の部分データが前記影響部分データに該当するか否かを、当該検出対象の部分データの処理結果を使って検出する、影響検出ステップと、
前記部分データ処理手段が、前記部分データ特定ステップから得られる該当部分データの処理を行う際、前記影響部分データが検出された場合には、影響部分データから前記部分データ特定ステップから得られる該当部分データまでの範囲を一続きのデータとして処理する部分データ処理ステップと、
を備えたことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子データが複数に分割されたデータであり、単体で処理してもデータの意味する内容が損なわれない処理結果が得られるデータである部分データを用いて所定の処理を行う際、ある部分データの処理結果が、他の部分データの処理結果に影響を与える場合に、影響の有る部分データ同士の処理結果の繋がりが悪くならないように部分データを処理する方法、装置、プログラム、およびプログラム媒体に関する。
【背景技術】
【０００２】
大きな電子データを、高速に処理したり、あるいはメモリなどの処理リソースが少ない動作環境で処理したりする為に、当面の処理に必要な一部のデータだけを読み書きして、利用することは従来から行われてきている。
【０００３】
しかし、電子データから単に一部のデータを読み込んで処理するだけなら簡単だが、読み込みたいデータが、前後のデータと関連性を持つ場合は、読み込みたいデータだけを読むだけではうまく処理できない。
【０００４】
前後のデータと関連性をもつデータとして、例えば圧縮されたデータや暗号化されたデータなどがある。例えば、一般に動画像圧縮では、フレーム画像間の差分情報だけを記録することでデータ圧縮している。すなわち、記録されるデータとしては、まず、基準となるフレーム画像（通常は最初のフレーム画像）のデータがあり、その後は各フレーム画像の情報として、前のフレーム画像との差分情報のデータが、残りのフレーム画像数分だけ繰り返されることになる。
【０００５】
従って、特定のフレーム画像を展開（再生）する際、その特定のフレーム画像のデータである、前のフレーム画像との差分情報だけを入手しても、意味が損なわれないフレーム画像を展開することはできない。意味が損なわれないフレーム画像を展開するには、最初の基準フレーム画像を最初の展開画像とし、展開画像に次のフレーム画像の差分情報を付加して新たな展開画像とする、という処理を、特定のフレーム画像まで繰り返し行う必要がある。
【０００６】
これに対して、例えば、ＭＰＥＧ（ｍｏｖｉｎｇ  ｐｉｃｔｕｒｅ  ｅｘｐｅｒｔ  ｇｒｏｕｐ）形式の動画像圧縮データは、圧縮する前の一連のフレーム画像を複数のフレーム画像群（ＧＯＰ：ｇｒｏｕｐ  ｏｆ  ｐｉｃｔｕｒｅ）に分割し、ＧＯＰ毎に独立して圧縮して、記録する。すなわち、基準フレーム画像がＧＯＰ毎に存在することになる。再生時に特定の画像フレームを展開したい時は、最初の画像フレームから順次展開する必要はなく、特定の画像フレームの属するＧＯＰだけを展開すればよい。これによって、素早く、特定の画像フレームを再生することができる。
【０００７】
また、「表示設定によって表示レイアウトが変わる文書データ」としては、例えば、ＷＷＷ（ｗｏｒｌｄ  ｗｉｄｅ  ｗｅｂ）ブラウザに表示されるＨＴＭＬ（ｈｙｐｅｒ  ｔｅｘｔ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）データがある。
【０００８】
この場合、文字の大きさを変えたり、表示レイアウトを表示するウィンドウの幅を変えたりすることで、行の折り返し位置なども変わり、表示レイアウトが変更され、見た目が変わる。
【特許文献１】特開平  ７−  ９５３８８号公報（１９９５年４月７日公開）
【特許文献２】特開平１０−２８３３５０号公報（１９９８年１０月２３日公開）
【特許文献３】特開平１１−３４１４３４号公報（１９９９年１２月１０日公開）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、これら従来技術では、大きく２つの問題が出てくる。
【００１０】
上述したように、ＭＰＥＧデータのＧＯＰなどは、「電子データが複数に分割されたデータであり、単体で処理可能なデータ」（以降、説明の為、電子データを単に分割して生成したデータを分割データと呼び、さらに単体で処理可能な分割データを「部分データ」と呼ぶ）であるが、電子データによっては、（１）うまく部分データに分割することができない問題や、（２）部分データに分割はできるが、処理結果が影響し合い（処理結果に分割の影響が表れ）、各部分データの処理結果の繋がりが悪くなる問題がある。
【００１１】
（１）の問題に関しては、例えば、ＨＴＭＬデータが当てはまる。ＨＴＭＬデータは、文字列を開始タグと終了タグで挟み、開始タグと終了タグの組を入れ子にすることで階層構造を作ることができるが、開始タグと終了タグの間で単純に分割してしまうと、それぞれの分割データは、単体では分割データの意味する内容が損なわれずに処理できなくなってしまう。
【００１２】
図４はこれを説明する図で、５行目に文字の大きさを変える開始タグ（「＜ｆｏｎｔ  ｓｉｚｅ＝“＋１”＞」）があり、これ以降、１６行目の終了タグ（「＜／ｆｏｎｔ＞」）まで、文字を指定の大きさに変えるように指示されている。このＨＴＭＬデータを、１行目から８行目までの前半部分と、９行目から１６行目までの後半部分の２つの分割データに分割したとする。
【００１３】
すると、例えば後半部分の分割データを処理しようとすると、５行目の文字の大きさを変える開始タグは読み込まれないので、文字の大きさを指定の大きさに変えることができなくなってしまう。すなわち、後半部分の分割データだけでは、分割を原因とする誤りが含まれていることになり、分割データ単体では分割データの意味する内容（電子データが本来意図していた内容）を損なわずに処理することができなくなってしまう。
【００１４】
（２）の問題に関しては、例えば、プレーンテキストデータが当てはまる。プレーンテキストデータは、タグなどの階層構造は無いので、部分データを単体で処理しても、部分データの意味する内容が損なわれないが、各部分データの処理結果を並べた場合に、処理結果の繋がりが悪くなる、すなわち本来意図していない、誤った繋がりが表れるという問題が出てくる。
【００１５】
これらの問題を説明するために、まず、図４の電子データ全体を一まとめに処理し、ある表示手段に表示させた状態を図５で確認する。表示手段の幅に応じて、行が折り返されている。
【００１６】
これに対し、このような表示状態を意図した図４の電子データの一部を、図４の電子データの一部を、１行目から８行目の「ｇｌａｓｓ．」までの部分の部分データと、８行目の「Ｗｈｅｎ」から１３行目の「ｉｎｆｏｒｍａｔｉｏｎ．」までの部分の部分データの２つに分割したとする。
【００１７】
この場合、前の部分データをある表示手段に表示させた例が図２１であり、後の部分データをある表示手段に表示させた例が図２３である（後の説明の為、表示枠が少しずらしてあるが、ここでは無視する）。どちらも、単体で見た場合、表示におかしな所はない。
【００１８】
ところが、図２１、図２３の表示レイアウトを続けて表示させてみると、図２７に示すように、本来意図していた表示状態が変質することがわかる（図２７では、後の説明の為、表示枠が少しずらしてあったり、はみ出てレイアウトしてある部分やフォントサイズが調整してあるが、ここでは無視する）。図２７では、図２１、図２３の表示レイアウトの繋がり部分で、改行されているように表示されており、図５と比べて、明らかに表示結果が異なっている。つまり、図２７には、電子データを分割して処理した影響が、本来意図していない、誤った改行として表れている。
【００１９】
本発明の目的は、特に上記（２）の問題に着目し、電子データを部分データに分割したことが部分データの処理結果に影響を与える場合に、高速、省リソースで処理できるという部分データの利点をできるだけ活かしながら、各部分データの処理結果の繋がりが悪くならないように部分データを処理するデータ処理方法、データ処理装置、データ処理プログラム、およびそれを記録した記録媒体を提供することである。
【課題を解決するための手段】
【００２０】
本発明に係るデータ処理方法は、上記の課題を解決するために、電子データが複数に分割されたデータであり、単独で処理したときの処理結果自体には誤りが無いデータである部分データを用いて所定の処理を行うデータ処理方法であって、所望の部分データの処理結果に電子データを分割したことの影響を与える影響部分データを検出する影響検出ステップと、所望の部分データの処理を行う際、前記影響部分データが検出された場合には、影響部分データから所望の部分データまでの範囲を一続きのデータとして処理する部分データ処理ステップと、を備えたことを特徴とする。
【００２１】
また、本発明に係るデータ処理装置は、上記の課題を解決するために、電子データが複数に分割されたデータであり、単独で処理したときの処理結果自体には誤りが無いデータである部分データを用いて所定の処理を行うデータ処理装置であって、所望の部分データの処理結果に電子データを分割したことの影響を与える影響部分データを検出する影響検出手段と、所望の部分データの処理を行う際、前記影響検出手段で影響が検出された場合には、影響部分データから所望の部分データまでの範囲を一続きのデータとして処理する部分データ処理手段と、を備えたことを特徴とする。
【００２２】
上記の構成において、「電子データが複数に分割されたデータ」とは、電子データを、そのサイズより小さなサイズ（以下、分割サイズという）に分割したデータのことである。分割されたデータ間で重なる部分もなく、分割されたデータを全て足し合わせれば、元の電子データに等しくなる。
【００２３】
分割サイズは一定とは限らず、様々な場合がある。一般に、分割サイズは、電子データの中身を見て電子データに応じて決められることが多い。以下、電子データを単に分割して得られた小サイズのデータのことを分割データと呼ぶ。
【００２４】
なお、分割データは、電子データ中の連続した一塊のデータ部分が分割されているとは限らず、飛び飛びに分割されている場合もあり得るが、通常、連続した一塊のデータ部分が分割されている方が扱い易い。
【００２５】
「単独で処理したときの処理結果自体には誤りが無い」とは、基本的には、部分データを単独で処理した時の処理結果が、電子データが意味する内容（電子データが本来意図した内容）の処理結果になっていることを意味する。
【００２６】
例えば、電子データがＨＴＭＬデータの場合、処理結果である表示結果は、ＷＷＷブラウザの表示設定などによって異なる。しかし、ＨＴＭＬデータ自身が表示結果を指定するような制御データを有している場合に、その制御データの内容が表示結果に反映されていれば、例えば改行タグによって改行がなされていたり、フォントタグによる文字サイズや文字色などの指定が反映されていたりすれば、部分データの処理結果自体には誤りが無いとする。
【００２７】
「単独で処理したときの処理結果自体には誤りが無いデータ」とは、そのデータ以外のデータを使わず、そのデータだけで所定の処理を行うことで、データの意味する内容が損なわれない処理結果が得られるようなデータのことである。電子データを分割した分割データを基に生成されたこのようなデータのことを、本発明では「部分データ」と呼ぶ。
【００２８】
部分データには所定の処理に即した順番が伴う。相対的に「前の部分データ」、「次の部分データ」という言い方をする。この順番は、各部分データを、分割の影響も考慮して順に処理した処理結果が、電子データ全体の処理結果に一致する時の部分データの処理順である。部分データの電子データ中の位置の順番に相当することが多い。
【００２９】
なお、部分データと分割データとはイコールになる場合と、ならない場合とがある。電子データを分割しただけで、単独で処理したときの処理結果自体には誤りが無い部分データが得られる場合は、部分データと分割データとはイコールになる。一方、分割データの処理結果自体に誤りが無い状態を作るための補助的な情報（後述の処理補助データ）を組み合わせることが必要な分割データの場合には、部分データと分割データとはイコールではない。この場合には、分割データと補助的な情報とを併せて部分データとみなす。
【００３０】
上記の補助的な情報は、複数の分割データが共通に必要とするデータであってもよい。その必要とするデータを各分割データに複製して分配してやれば、単独で処理したときの処理結果自体には誤りが無いデータ、すなわち部分データが得られる。しかし、それではデータサイズが大きくなってしまうので、その必要とするデータを各分割データが共有することにしてもよい。分割データは互いに重なり合わないと定義したが、データ共有などの目的がある場合は、重なり合いを認め、共有部分のデータと分割データとで、部分データとみなすこともある。
【００３１】
「所望の部分データ」は、処理結果を得たい部分データのことであるが、所望の部分データは１つの部分データとは限らず、複数の場合もある。
【００３２】
「影響」とは、ここでは、ある部分データを処理する際に、他の部分データと一続きのデータとして処理するかどうかで、部分データの処理結果が変わることを言う。「一続きのデータとして処理する」とは、連続する部分データをまとめて一つのデータとみなして処理する意味である。前の部分データの処理結果に、次の部分データの処理結果を追加する場合などに影響が現れやすい。なぜなら、次の部分データを前の部分データと一続きに処理するか、次の部分データを前の部分データと切り離して単独に処理するかによって、次の部分データの処理結果の追加のされ方が変わり易いからである。
【００３３】
影響は、部分データの区切り方や部分データの内容などによって、発生したり、発生しなかったりする。また同じ部分データであっても、処理の仕方や処理設定などによっても、発生したり、発生しなかったりする。
【００３４】
したがって、連続する部分データ同士の繋がり具合（連続性）を調べることにより、影響の有無を判定することができる。また、部分データを用いることによる処理の高速化のメリットを損なわないためには、部分データ同士の影響を予め調べ、どの部分データがどの部分データに影響を与えるかの情報を取得しておき、その情報を影響検出ステップの実行時に参照できるようにすることが好ましい。
【００３５】
処理結果が影響を受ける例としては、文書データの部分データを使って、文字を行に配置する処理を行う場合、前の部分データが最後に配置した文字（説明の為、「文字Ａ」と呼ぶ）の行に、次の部分データが最初に配置する文字（説明の為、「文字Ｂ」と呼ぶ）を追加して配置する場合などがある。追加して配置する場合、「文字Ａ」の隣に「文字Ｂ」を配置するので、前の部分データの処理結果によって、次の部分データの処理結果が変わってくる可能性がある。但し、次の部分データを前の部分データと一続きに処理しても、単独に処理しても、結果が変わらないこともある。例えば、「文字Ａ」が改行コードだとすると、「文字Ｂ」は次の行の行頭に必ず配置される。この場合、前の部分データの処理結果がどうであろうと、「文字Ｂ」の配置位置は常に変わらない。
【００３６】
処理結果が影響を受けるのは、隣接する前後の部分データの処理結果だけとは限らず、離れた部分データ間でも影響する場合もある。例えば、ＨＴＭＬデータの部分データを使って表示レイアウトを生成する処理を行う場合、画像の回り込みがある場合に起こる場合がある。画像に回り込んで文字などをレイアウトする場合、画像の分、文字をレイアウトできる範囲が限定される。このレイアウト範囲の限定が影響に関わってくる。この時、画像に回り込んでレイアウトされる文字などが、複数の部分データから構成されていれば、回り込み画像の情報を持つ部分データは、例えば最初の部分データであり、残りの部分データは、回り込み画像の情報を持っていない。このとき、回り込み画像の情報を持っていない部分データには、部分データ中の文字列が回り込み画像に回り込ませるべき文字列であることを知る手掛かりが無い。
【００３７】
従って、回り込み画像の情報を含む部分データと、回り込み画像の情報を含まない部分データを別々に処理して、単純に繋ぎ合わせると、まだ回り込ませる余地があるのに、回り込みを解除して、行頭から文字列を表示させてしまうことが発生しうる。これは元データが意図するレイアウトとは異なる。
このようにして、離れたブロック間でも影響が発生することがありうる。
【００３８】
また、処理結果が影響を受ける例として、内部で使用する値（変数の値）が、各部分データの処理で変わる場合などもある。例えば、最初の部分データの処理で、変数Ｃの値を１と設定し、２番目と３番目の部分データで、変数Ｃの値を２倍に設定するとする。１、２、３番目の部分データの順で処理した場合、３番目の部分データの処理前は、変数Ｃの値は２で、処理後は４となるが、１、３番目の部分データの順で処理した場合、３番目の部分データの処理前は、変数Ｃの値は１で、処理後は２となる。
【００３９】
なお、影響が有ろうと無かろうと、各部分データの単独の処理結果は常にデータの意味する内容が損なわれない。但し、各部分データの処理結果を合わせた場合は、全体としてデータの意味する内容が損なわれる（すなわち、影響が表れる）ことはあり得る。例えば先の「文字Ａ」、「文字Ｂ」の例で言えば、次の部分データを単独で処理すれば、文字Ｂは最初の文字なので行頭に配置される。文字Ｂが行頭に配置された処理結果を単独で見る場合、処理結果はデータの意味する内容が損なわれていない。
【００４０】
しかし、前の部分データの処理結果と合わせて見る場合、すなわち、前の部分データの処理結果の行と、次の部分データの処理結果の行とを、単純に並べて表示させる場合、そのつながり部分において、データの意味する内容が損なわれる場合が出てくる。
【００４１】
例えば「文字Ａ」が改行コードで無い場合、「文字Ａ」の次の文字、すなわち「文字Ｂ」が、突然、次の行の行頭に配置されていることになり、改行がされているように見えてしまう。すなわち、文書データとしてそこに改行コードの文字は存在しないにもかかわらず、あたかも改行コードの文字が有るかのような処理結果が得られてしまう。
【００４２】
したがって、部分データの処理結果を合わせたときに、電子データを分割したことの影響が、実際には存在していない擬似データが有るかのような誤った処理結果として発現するのだから、合わせた処理結果は部分データの意味する内容が損なわれていることになる。
【００４３】
なお一般に、前の順番の部分データの処理結果から、後の順番の部分データの処理結果に影響が及ぶ場合がほとんどだが、逆の場合もあり得る。
【００４４】
「所定の処理」は、電子データの種類や目的によって異なるが、一般に電子データを入力データとして、何らかの出力を行う。例えばＨＴＭＬデータの場合、ＨＴＭＬデータを解析して、表示レイアウトを算出する処理が、「所定の処理」に該当する。
【００４５】
本発明の作用の概要を説明すると、まず、所望の部分データの処理結果を得る際、各部分データについて、その処理結果が所望の部分データの処理結果に影響を与えるかどうかを（影響検出手段が）影響検出ステップで検出する。その結果、影響部分データが検出されたなら、（部分データ処理手段が）影響部分データから所望の部分データまでの範囲を一続きのデータとして処理する部分データ処理ステップを実行する。これにより、影響部分データを含めて所望の部分データを処理するので、所望の部分データの処理結果には、影響部分データから受ける影響が反映されることになる。
【００４６】
もし、所望の部分データの処理結果に影響を与える影響部分データが存在しないのであれば、（部分データ処理手段が）そのまま所望の部分データを単独で処理して、所望の処理結果を得ることができる。
【００４７】
従って、所望の部分データを処理する際に、影響を及ぼされる範囲の部分データだけを処理して、影響が反映された処理結果を得ることができる。電子データ全体を処理すれば同様の処理結果を得ることができるのはもちろんであるが、それに比べて、必要最小限の数の部分データを処理するだけで済む。
【００４８】
これによって、データ処理の高速化、省リソース化という部分データの利点をできるだけ損なわずに、部分データの処理結果が影響し合う場合に、各部分データの処理結果が損なわれないように、部分データを処理することができるという効果を奏する。
【００４９】
本発明に係るデータ処理方法は、上記の課題を解決するために、所望の部分データの直前あるいは直後の部分データに対し、前記影響検出ステップを実行することを特徴とする。
【００５０】
上記の構成によれば、所望の部分データの直前あるいは直後の部分データは、所望の部分データの処理結果に影響を与える可能性が相対的に大きいため、影響部分データの検出効率を高めることができ、無駄な検出処理を抑制することができるという効果を奏する。
【００５１】
本発明に係るデータ処理方法は、上記の課題を解決するために、前記電子データの処理範囲が指定されている場合、部分データが、その指定されている処理範囲の処理結果を得るために必要かどうかを判断する部分データ必要性判断ステップをさらに備え、必要と判断された部分データについて、前記影響検出ステップを実行することを特徴とする。
【００５２】
上記の構成によれば、部分データ必要性判断ステップで、電子データの指定された処理範囲の処理結果を得るために必要な部分データを特定し、その特定した部分データについて影響検出ステップを実行する。言い換えれば、指定された処理範囲の処理結果を得るのに不要な部分データについては、影響検出ステップを実行しない。
【００５３】
従って、影響検出ステップの処理を簡易化することができ、処理の高速化に寄与する。
【００５４】
部分データは、単独で処理可能なデータなので、指定されている処理範囲に１つの部分データしか必要としないときには、その部分データのみを処理することによって、誤りの無い処理結果を得ることができる。
【００５５】
一方、指定されている処理範囲に対し複数の部分データを必要とする場合には、それら部分データ同士の影響を少なくとも考慮しなければ、処理結果に誤りが表れる可能性がある。そこで、上記の構成を採用することにより、処理結果に誤りが表れる可能性を低減することができる。
【００５６】
ところで、「指定されている処理範囲」は、何らかの指標で処理結果の範囲を指定する形で与えられる。例えば、文書データならば、「何行目から何行目」、あるいは「何文字目から何文字目」、あるいは「全体の何パーセントから何パーセント」、という指定などとなる。始点と終点を指定する以外にも、ある基準点とその基準点の周囲の範囲という指定の方法もある。例えば、「何行目から何行分」、あるいは「何行目から表示手段に表示される範囲（ドット数など）」、などとなる。基準点や範囲は、処理結果を最終的に指定することができれば、「行」などの処理結果の単位でなくてもよい。例えば、「電子データ（あるいは部分データ）の先頭から何バイト目のデータから処理される処理結果」を基準点としてもよい。
【００５７】
なお、指定された処理範囲の処理結果を得るのに不要な部分データが、その処理範囲に必要な部分データに影響を与えることもあるので、上記の構成は、その点までは考慮していない。その点までを考慮した方法については、後述する。
【００５８】
本発明に係るデータ処理方法は、上記の課題を解決するために、前記部分データ必要性判断ステップにおいて、指定されている処理範囲の処理結果を得るのに必要な部分データが１つ特定された場合であって、その特定された部分データの直前の部分データの必要性判断の為に、その特定された部分データの処理結果を得る場合には、直前の部分データが前記影響部分データに該当するとしても、直前の部分データとその特定された部分データとを一続きのデータとして処理しないことを特徴とする。
【００５９】
上記の構成によれば、指定されている処理範囲の処理結果を得るのに必要な部分データが１つ特定された場合には、その特定された部分データの処理結果を得ることによって、指定されている処理範囲の処理結果を得るための部分データが、充分なのか不足しているのかなどを判定することができる。従って、特定された部分データの処理結果を、直前の部分データの必要性判断の手段として使うことができる。
【００６０】
ここで、もし直前の部分データが特定された部分データに対する前述の影響部分データに該当する時、特定された部分データの処理結果を得る前に直前の部分データの処理を行わなければいけないとすると、矛盾が起こる。
【００６１】
つまり、直前の部分データが必要かどうかを判断する為に、特定された部分データの処理結果が必要とされる一方、特定された部分データの処理結果を得るために直前の部分データの処理結果が必要とされることになり、特定された部分データと直前の部分データの間で、互いの処理結果を必要とするという矛盾が起こる。あるいは無限の繰り返し処理が実行される。
【００６２】
そこで、直前の部分データの必要性判断の為に、特定された部分データの処理結果を得る際には、直前の部分データが前記影響部分データに該当するとしても、直前の部分データを処理しないことにする。
【００６３】
なお、特定された部分データの処理結果を用いて、直前の部分データが必要と判断され、かつ直前の部分データが影響部分データに該当する場合には、前述の部分データ処理ステップを実行し、直前の部分データと特定された部分データとを一続きのデータとして処理すればよい。
【００６４】
これにより、処理に矛盾や無限の繰り返しが発生することを防ぐことができるという効果を奏する。
【００６５】
本発明に係るデータ処理方法は、上記の課題を解決するために、前記影響検出ステップで、まず検出対象の部分データを特定し、次に当該検出対象の部分データが前記影響部分データに該当するか否かを、当該検出対象の部分データの処理結果を使って判定することを特徴とする。
【００６６】
上記の構成によれば、部分データ間の影響を知る情報が別途用意されていない場合に、前記所望の部分データの処理結果を得ようとする都度に、影響部分データが有るか無いかを検出する。このとき、まず、影響部分データかどうかの検出対象にする部分データを特定する。次に、検出対象の部分データが影響部分データに該当するか否かの判定処理に、検出対象の部分データ自身の処理結果を用いる。
【００６７】
これによって、部分データ間の影響を知る情報が別途用意などされていなくても、影響を検出することができる。
【００６８】
なお、影響部分データが検出された場合は、既に所望の部分データの処理結果を得ていたとしても、所望の部分データの処理を再度行うことになる。
【００６９】
本発明に係るデータ処理方法は、上記の課題を解決するために、前記影響検出ステップの前に、所望の部分データの処理結果を取得して保持する部分取得ステップを備え、影響検出ステップで影響部分データが検出されない場合は、取得した所望の部分データの処理結果を使って前記所定の処理を行う一方、前記影響検出ステップで影響部分データが検出された場合は、前記部分データ処理ステップの実行によって、所望の部分データの処理結果を新たに取得して保持し直すことを特徴とする。
【００７０】
上記の構成によれば、所望の部分データの処理結果を取得して保持しておくことにより、その所望の部分データの処理結果に影響を与える影響部分データが検出されない場合に、保持した処理結果を所定の処理に使うことができる。
【００７１】
これにより、保持した処理結果の有効利用が図られるので、影響部分データが検出されない場合に所望の部分データの処理結果を１から取得する無駄な処理を省くことができ、処理効率を向上させる効果が出てくる。
【００７２】
なお、所望の部分データの処理結果を新たに取得して保持し直すときに、例えば記憶媒体等に既に保持していた処理結果をクリアするステップを実行してもよいし、新たな処理結果を既に保持していた処理結果に上書きするステップを実行してもよい。
【００７３】
本発明に係るデータ処理方法は、上記の課題を解決するために、所望の部分データの処理結果を新たに取得して保持し直すときに、影響部分データから所望の部分データまでの範囲を一続きのデータとして処理したという情報を、所望の部分データの処理結果に関連付けて保持しておくことを特徴とする。
【００７４】
上記の構成によれば、所望の部分データの処理結果を得る場合に、影響部分データから所望の部分データまでの範囲を一続きのデータとして処理したという情報を参酌することが可能になる。これにより、保持された所望の部分データの処理結果は、影響部分データからの影響が考慮されて取得されていることが判る。したがって、所望の部分データの処理結果を使って所定の処理をしようとする場合に、改めて影響検出ステップを実行する必要が無くなり、処理の効率化を図ることができる。
【００７５】
本発明に係るデータ処理方法は、上記の課題を解決するために、前記電子データが、部分データの処理結果に影響を与えるデータを持っている場合に、前記影響検出ステップは、その影響を与えるデータの効力が所望の部分データに対して有効か否かを判定するステップと、有効と判定した場合に、所望の部分データの少なくとも直前の部分データを前記影響部分データの候補とするステップとを備えたことを特徴とする。
【００７６】
上記の構成によれば、所望の部分データの少なくとも直前の部分データが影響部分データの候補になるか否かを、部分データの処理結果に影響を与えるデータの効力を調べることによって判定することができる。
【００７７】
部分データの処理結果に影響を与えるデータとは、例えば、特定の処理結果が得られるように処理内容を指定する制御データである。より具体的な一例としては、電子データがＨＴＭＬ文書データである場合に、表示状態を指定するタグが、その制御データに該当する。
【００７８】
影響を与えるデータの効力が所望の部分データに対して有効か否かを判定するためには、有効か否かの情報（例えば図８に示す開始タグ補助情報）を予め用意しておいて、その情報を用いてもよいし、所望の部分データの直前の部分データに、その影響を与えるデータが含まれているか否かを調べてもよい。
【００７９】
本発明に係るデータ処理方法は、上記の課題を解決するために、電子データが複数に分割されたデータであり、単独で処理したときの処理結果自体には誤りが無いデータである部分データを用いて所定の処理を行うデータ処理方法であって、所望の部分データの処理結果に電子データを分割したことの影響を与える影響部分データの内、電子データにおける処理順序として最前あるいは最後に位置する影響部分データを検出する影響検出ステップと、所望の部分データの処理を行う際、前記影響部分データが検出された場合には、影響部分データから所望の部分データまでの範囲を一続きのデータとして処理する部分データ処理ステップと、を備えたことを特徴とする。
【００８０】
また本発明に係るデータ処理装置は、電子データが複数に分割されたデータであり、単独で処理したときの処理結果自体には誤りが無いデータである部分データを用いて所定の処理を行うデータ処理装置であって、所望の部分データの処理結果に電子データを分割したことの影響を与える影響部分データの内、電子データにおける処理順序として最前あるいは最後に位置する影響部分データを検出する影響検出手段と、所望の部分データの処理を行う際、前記影響部分データが検出された場合には、影響部分データから所望の部分データまでの範囲を一続きのデータとして処理する部分データ処理手段と、を備えたことを特徴とする。
【００８１】
上記の構成によれば、所望の部分データの処理を行う際、その処理結果に影響を与える影響部分データの内、電子データにおける処理順序として最前あるいは最後に位置する影響部分データを（影響検出手段が）影響検出ステップで検出する。そして、最前あるいは最後に位置する影響部分データが検出された場合には、（部分データ処理手段が）部分データ処理ステップにおいて、影響部分データから所望の部分データまでの範囲を一続きのデータとして処理し、所望の部分データの処理結果を得る。
【００８２】
ここで、最前あるいは最後に位置する影響部分データに対して、電子データにおける処理順序がさらに前または後に位置する部分データは、所望の部分データにとって影響部分データではない。したがって、処理順序がさらに前または後に位置する部分データは、所望の部分データの処理結果を得るためには無視してよい。
【００８３】
上記の構成によれば、所定の処理を行うための処理範囲に無関係に、電子データにおける処理順序として最前あるいは最後に位置する影響部分データから所望の部分データまでの範囲を一続きのデータとして処理し、所望の部分データの処理結果を得る。すなわち、一続きのデータとして処理すべき全ての部分データを処理して、所望の部分データの処理結果を得る。したがって、所望の部分データが同じであれば、その処理結果を得るのに必要な影響が全て反映された常に同じ処理結果を得ることができる。
【００８４】
これに対し、所定の処理を行うための処理範囲に関係のある部分データの中で影響部分データを検出し、検出した影響部分データから所望の部分データまでの範囲を一続きのデータとして処理する方法では、一続きのデータとして処理すべき全ての部分データの一部を一続きのデータとして処理することになる。この場合には、一続きのデータとして処理すべき全ての部分データのどの部分を一続きのデータとして処理するかによって、所望の部分データが同じであっても、処理結果が異なることがある。
【００８５】
したがって、上記の構成によれば、指定された処理範囲の処理結果を得るのに不要な部分データが、その処理範囲に必要な部分データに影響を与えることまでも考慮され、適切な処理結果が得られる。
【００８６】
これにより、データ処理の高速化、省リソース化という部分データの利点をできるだけ損なわずに、部分データを適切に処理することができるという前述の効果に加えて、影響部分データの検出範囲によって同じ部分データの処理結果が変わることを防止でき、違和感の無い処理結果を得ることができるという効果をさらに奏する。
【００８７】
本発明に係るデータ処理方法は、上記の課題を解決するために、前記影響検出ステップでは、最前あるいは最後に位置する影響部分データを予め検出して保持しておいた処理補助データを使って、最前あるいは最後に位置する影響部分データを検出することを特徴とする。
【００８８】
上記の構成によれば、所望の部分データを処理するときに、処理補助データを参照するだけで、最前あるいは最後に位置する影響部分データを検出することができる。要するに、所望の部分データを処理するときに、部分データを解析したり、部分データの処理結果を調べたりして影響部分データを検出する必要が無い。したがって、処理の効率化を図ることができる。
【００８９】
なお、処理補助データは、ファイルなどの形で電子データとは別のデータとして管理されてもよいし、管理しやすくする為に、電子データの最初や最後などに電子データの一部として含められてもよい。
【００９０】
本発明に係るデータ処理方法は、上記の課題を解決するために、前記電子データを複数に分割した分割データと、分割データを単独で処理したときに誤りが無い処理結果を得るには足りない情報である処理補助データとを合わせて、前記部分データとすることを特徴とする。
【００９１】
電子データを単純に分割した分割データだけでは、単独で処理したときに誤りが無い処理結果を得ることのできる部分データにならない場合が多い。そこで、分割データを補う情報を処理補助データとして予め作成しておく。
【００９２】
上記の構成によれば、分割データを処理する際、対応する処理補助データを読み込んで、両方のデータを使って処理することで、部分データとして処理可能になる。すなわち分割データと処理補助データを合わせて、部分データとみなす。あるいは、部分データを分割データと処理補助データに分割したとみなしてもよい。
【００９３】
これにより、電子データを単純に分割するだけでは部分データを生成できない場合でも、処理補助データを利用することで、容易に部分データを生成することができる利点が出てくる。
【００９４】
また、この場合、処理補助データを電子データと別に管理するようにすれば、電子データに処理補助データを含めるように、電子データを加工しなくても済むという利点も出てくる。
【００９５】
本発明に係るデータ処理方法は、上記の課題を解決するために、前記分割データの前記電子データ中の位置の情報、あるいは位置とサイズの情報を、前記処理補助データが持っていることを特徴とする。
【００９６】
上記の構成によれば、分割データを電子データから生成する際、処理補助データを参照することによって分割データの電子データ中の位置の情報、あるいは位置とサイズの情報を得ることができる。例えば、連続する分割データの各々の位置の情報を得ることにより、分割データを１つずつ電子データから読み取ることができる。また、ある分割データに関する位置の情報とサイズの情報とを得ることにより、その分割データの１つを電子データから読み取ることができる。
【００９７】
これにより、電子データ中から分割データを簡単に生成することができ、電子データを各分割データにファイルなどの形で分割しておかなくて済むという効果が出てくる。
【００９８】
本発明に係るデータ処理方法は、上記の課題を解決するために、各部分データに対し、前記影響部分データになる部分データがどれかを特定する影響情報を前記処理補助データが持ち、前記影響検出ステップでは、この影響情報を使って影響部分データを検出することを特徴とする。
【００９９】
上記の構成によれば、処理補助データを参照するだけで、ある部分データを前記所望の部分データとしたときに、所望の部分データに対して影響部分データに該当する部分データを特定することができる。
【０１００】
もし、処理補助データを参照せずに影響部分データを検出しようとすれば、部分データ自体を読み込んで、分割の影響を受けるかどうかを調べたり、あるいは読み込んだ部分データの処理結果を得て影響を受けるかを調べ、影響を受ける場合に、例えばその直前または直後の部分データをさらに読み込んで、影響部分データになり得るかどうかを調べたりする必要がある。その場合、結果的に必要としない部分データまで読み込んだり、処理したりする場合が出てくる。
【０１０１】
このように、上記の構成によれば、データ処理の高速化および省リソース化のメリットを拡大することができるという効果が出てくる。
【０１０２】
なお、上記の構成について、各部分データの処理結果が他の部分データの処理結果に影響されるかどうかの情報を、処理補助データが持ち、前記影響検出ステップはこの情報を使って影響を検出すると言い換えてもよい。
【０１０３】
本発明に係るデータ処理方法は、上記の課題を解決するために、前記電子データは表示設定によって表示レイアウトが変わる文書データであり、前記所定の処理は、部分データから表示レイアウトを生成する処理であることを特徴とする。
【０１０４】
上記の構成において、「表示レイアウト」とは、文字や画像などの「表示レイアウト要素」の集まりからなるものであり、表示手段や印刷手段などの出力手段に出力して、ユーザが視覚的に認知することができるようにした表示レイアウト要素の配置情報である。一般に、表示レイアウトは、各表示レイアウト要素の位置や大きさ、出力する時の形態などの情報を持っている。
【０１０５】
「表示設定」とは、例えば、表示する文字の種類や大きさ、表示レイアウトを生成する範囲（一般に表示手段の大きさに制約される）、などである。このような表示設定を変えることで、生成される表示レイアウトは変わる。但し、表示レイアウトが変わっても、通常、各表示レイアウト要素の位置や大きさが変わるだけで、文書データの表現する中身（文字情報、画像情報など）が変わる訳ではない。
【０１０６】
上記の構成により、表示設定によって表示レイアウトが変わる文書データを、部分データに分けて処理することができるようになる。したがって、文書データを画面に表示し、内容をスクロールして表示したり、ページジャンプして表示したりすることが可能な文書処理装置におけるデータ処理の高速化および省リソース化を図ることができる。
【０１０７】
本発明に係るデータ処理方法は、上記の課題を解決するために、前記影響検出ステップの前に、前記所望の部分データの最初の表示レイアウト要素が、表示レイアウトの出力対象である表示媒体において、常に行頭から表示されるか否かを調べるレイアウト調査ステップを備え、前記最初の表示レイアウト要素が、前記行頭から表示される場合、前記影響検出ステップを実行しないことを特徴とする。
【０１０８】
上記の構成において、「行」とは、ここでは、表示レイアウト要素の集まりであり、一般に、横一列あるいは縦一列に並んで配置されている表示レイアウト要素からなる。１行のサイズおよび行間隔等は、表示レイアウトの出力対象である表示媒体のサイズとの関係に基づいて適宜設定される。全ての表示レイアウト要素はいずれかの行に属するとするが、回り込み画像のように、複数の行に関わる表示レイアウト要素は、分割して各行に属するようにするか、行とは別に管理するようにする。
【０１０９】
「行頭」とは、表示レイアウト要素の行への通常の配置方法により、表示範囲に属する任意の行の最初に表示レイアウト要素を配置する位置である。一般に、横一列に配置する横行の場合は左端、縦一列に配置する縦行の場合は上端となる。なお、所望の部分データの最初の表示レイアウト要素が、回り込み画像のような特殊な配置を行う表示レイアウト要素や、行とは別管理する表示レイアウト要素の場合は、行頭から表示されるかどうかの判断対象とはせず、行に配置する次の通常の表示レイアウト要素（文字など）を最初の表示レイアウト要素とみなし、判断対象とすればよい。
【０１１０】
上記の構成によれば、所望の部分データについて、表示レイアウトを指定したり制御したりする機能を持つデータ（例えばＨＴＭＬ文書データに含まれるタグなど）が含まれているかを調べる、あるいは、実際に表示レイアウトを生成してみて、表示媒体の行頭から表示されるかどうかを調べる、あるいは行頭から表示されるかどうかの情報を処理補助データが持っているかを調べるなどの処理が、レイアウト調査ステップとして実行される。
【０１１１】
所望の部分データの最初の表示レイアウト要素が、表示媒体において行頭から表示される場合には、その部分データは適切に表示されることになる。つまり、分割の影響が表れていない表示結果が得られることになる。
【０１１２】
従って、その所望の部分データについては、最早、影響部分データを検出する必要が無い。これによって、影響検出ステップを実行しない分、処理速度を向上させることができる。
【０１１３】
本発明に係るデータ処理方法は、上記の課題を解決するために、前記影響検出ステップの前に、前記所望の部分データの任意の表示レイアウト要素が、表示レイアウトの出力対象である表示媒体において、その表示範囲の先頭位置から表示されるか否かを調べるレイアウト調査ステップを備え、前記任意の表示レイアウト要素が、前記先頭位置から表示される場合、前記影響検出ステップを実行しないことを特徴とする。
【０１１４】
上記の構成によれば、所望の部分データの任意の表示レイアウト要素が、表示範囲の先頭位置から表示されていれば、直前の部分データと所望の部分データとの境界は、表示範囲内に出現せず、表示範囲外に位置していることになる。
【０１１５】
従って、所望の部分データの表示結果には誤りが表れないので、所望の部分データに関する影響検出ステップを実行する必要が無い。これによって、影響検出ステップを実行しない分、処理速度を向上させることができる。
【０１１６】
本発明に係るデータ処理方法は、上記の課題を解決するために、前記影響検出ステップの前に、前記所望の部分データの表示レイアウトを生成するとともに、前記影響部分データか否かの検出対象にする部分データを特定し、その検出対象の部分データの表示レイアウトを生成するレイアウト生成ステップを備え、前記影響検出ステップにおいて、所望の部分データの表示レイアウトが含まれる全ての行に、検出対象の部分データの表示レイアウトが含まれない場合、検出対象の部分データは、影響部分データではないと判断することを特徴とする。
【０１１７】
上記の構成において、レイアウト生成ステップで生成した所望の部分データの表示レイアウトと検出対象の部分データの表示レイアウトとを用い、所望の部分データの表示レイアウトから特定される各行内に、検出対象の部分データの表示レイアウト要素が配置されるかどうかを調べる。
【０１１８】
影響検出ステップでは、全ての行について、検出対象の部分データの表示レイアウトが含まれないならば、検出対象の部分データは影響部分データではないと判断し、もし１行でも含まれるのならば、検出対象の部分データは影響部分データであると判断する。
【０１１９】
つまり、部分データの表示結果に分割の影響があるかないかを、実際の表示レイアウトを生成して判断することになる。改行などの場合は、必ずしも表示レイアウトを調べなくても、部分データのデータ自体を調べることで改行があるかどうか事前に調べることもできるが、例えば、画像の回り込みなどの場合、表示設定によって、回り込み処理される文字数なども変わってくる。従って、検出対象の部分データに含まれている画像が、所望の部分データの表示レイアウト中に回り込むか否かは、実際に表示レイアウトを調べてみないと分からない。
【０１２０】
これによって、影響部分データを予め検出しておくことができないような部分データの場合でも、所定の処理を実行する時に、影響部分データを検出することができるという効果が出てくる。
【０１２１】
本発明に係るデータ処理方法は、上記の課題を解決するために、前記電子データは表示設定によって表示レイアウトが変わる文書データであり、前記所定の処理は、部分データから表示レイアウトを生成する処理であり、前記影響検出ステップで、所望の部分データの直前の部分データが影響部分データであると検出された場合、前記部分データ処理ステップにおいて、直前の部分データの表示レイアウトを生成した後、その表示レイアウトの最後の表示レイアウト要素に続けて、所望の部分データの表示レイアウトを生成することを特徴とする。
【０１２２】
上記の構成において、部分データが、改行などの表示上切りの良い場所で分割されて生成されている場合には、所望の部分データの直前の部分データは影響部分データにならない。従って、直前の部分データの最後の表示レイアウト要素が含まれる行の次に、新しい行を追加して、その行の行頭から所望の部分データの表示レイアウトを追加していけばよい。
【０１２３】
これに対し、部分データが、改行などの表示上切りの良い場所で分割されて生成されていない場合、所望の部分データの直前の部分データは影響部分データになる。つまり、各部分データを独立に表示処理すると、直前の部分データの最後の表示レイアウト要素が含まれる行の次に、新しい行を追加して、その行の行頭から次の部分データの表示レイアウトを追加していくことになる。このため、表示結果は、直前の部分データと所望の部分データの間で、改行があるかのようになり、表示状態が不連続になる。電子データにはこのような改行命令（改行タグなど）は入っていないので、表示レイアウト結果としては間違っている。
【０１２４】
そこで、上記の構成により、直前の部分データの最後の表示レイアウト要素に続けて、所望の部分データの表示レイアウトを生成すると、表示上は、行が改行せず、連続した表示結果のように見える。
【０１２５】
これによって、部分データが、改行などの表示上切りの良い場所で分割されていなくも、元の電子データの意味する内容が損なわれない表示結果を得ることができるという効果が出てくる。
【０１２６】
本発明に係るデータ処理方法は、前記電子データの処理範囲が指定されている場合、部分データが、その指定されている処理範囲の処理結果を得るために必要かどうかを判断する部分データ必要性判断ステップをさらに備え、該部分データ必要性判断ステップにおいて、所望の部分データが必要かどうかの判断に、所望の部分データの前あるいは後に連続する一つ以上の部分データの処理結果を使うことを特徴としてもよい。
【０１２７】
上記の構成において、部分データが、その指定されている処理範囲の処理結果を得るために必要かどうかを判断する場合、電子データ中の基準位置が指定され、その基準位置に対して指定されている処理範囲の処理結果を得るために、どの部分データが必要かを判断する。このとき、例えば、所望の部分データが上記基準位置より前方に位置していて、かつ所望の部分データの後に連続する一つ以上の部分データの処理結果が既に得られている場合に、その処理結果が指定されている処理範囲を満たすかどうかを判断することによって、所望の部分データの要否を決定することができる。
【０１２８】
すなわち、所望の部分データの後に連続する一つ以上の部分データの処理結果が、指定されている処理範囲を満たしているならば、所望の部分データは不要と判断することができ、満たしていないならば、所望の部分データは必要と判断することができる。
【０１２９】
これにより、既に取得済みの部分データの処理結果を利用して、所望の部分データの処理結果を得る前に、所望の部分データの要否を判断することができる効果が出てくる。
【０１３０】
本発明に係るデータ処理方法は、前記電子データの処理範囲が指定されている場合、部分データが、その指定されている処理範囲の処理結果を得るために必要かどうかを判断する部分データ必要性判断ステップをさらに備え、該部分データ必要性判断ステップにおいて、所望の部分データが、その指定されている処理範囲に含まれている場合に、所望の部分データの直前あるいは直後の部分データが必要かどうかの判断に、所望の部分データの処理結果を使うことを特徴としてもよい。
【０１３１】
上記の構成によれば、所望の部分データが、その指定されている処理範囲に含まれている場合には、まず所望の部分データの処理結果を得て、それが指定されている処理範囲を満たすかどうかを判断する。もし満たさない場合は、処理範囲に対して処理結果が不足しているので、直前あるいは直後の部分データの処理結果がさらに必要という判断を、部分データ必要性判断ステップにおいて下すことができる。所望の部分データの処理結果が、処理範囲に対して前方あるいは後方のどちらの方向を満たしていないかをみれば、直前あるいは直後のどちらの部分データの処理結果が必要かも判断できる。
【０１３２】
部分データの処理結果がどのようになるかは、一般に処理してみないと分からないが、指定された処理範囲に属する所望の部分データが１つ分かれば、その前後の部分データが必要かどうかを逐次的に調べていくことで、指定された処理範囲に必要な部分データを求めることができる効果が出てくる。
【０１３３】
本発明に係るデータ処理プログラムは、上記の課題を解決するために、前記データ処理方法が備える各ステップを、コンピュータに実行させることを特徴とする。
【０１３４】
本発明に係るデータ処理プログラムは、上記の課題を解決するために、前記データ処理装置が備える各手段として、コンピュータを機能させることを特徴とする。
【０１３５】
本発明に係る記録媒体は、上記の課題を解決するために、前記データ処理プログラムを記録したことを特徴とする。
【０１３６】
これにより、上記記録媒体、またはネットワークを介して、一般的なコンピュータにデータ処理プログラムをインストールすることによって、該コンピュータを用いて上記のデータ処理方法を実現する、言い換えれば、該コンピュータを部分データ処理装置として機能させることができる。
【０１３７】
なお、ある着目した請求項に記載された構成と、その他の請求項に記載された構成との組み合わせが、その着目した請求項に記載された組み合わせに限られることはなく、必要に応じてその着目した請求項に記載されていない組み合わせが可能である。
【発明の効果】
【０１３８】
本発明に係るデータ処理方法は、電子データが複数に分割されたデータであり、単独で処理したときの処理結果自体には誤りが無いデータである部分データを用いて所定の処理を行うデータ処理方法であって、所望の部分データの処理結果に電子データを分割したことの影響を与える影響部分データを検出する影響検出ステップと、所望の部分データの処理を行う際、前記影響部分データが検出された場合には、影響部分データから所望の部分データまでの範囲を一続きのデータとして処理する部分データ処理ステップと、を備えたことを特徴とする。
【０１３９】
これにより、影響部分データから所望の部分データまでの範囲を一続きのデータとして処理するので、所望の部分データの処理結果には、影響部分データから受ける影響が反映されることになる。
【０１４０】
従って、所望の部分データを処理する際に、影響を及ぼされる範囲の部分データだけを処理して、影響が反映された処理結果を得ることができる。電子データ全体を処理すれば同様の処理結果を得ることができるのはもちろんであるが、それに比べて、必要最小限の数の部分データを処理するだけで済む。
【０１４１】
それゆえ、データ処理の高速化、省リソース化という部分データの利点をできるだけ損なわずに、部分データの処理結果が影響し合う場合に、各部分データの処理結果が損なわれないように、部分データを処理することができるという効果を奏する。
【０１４２】
また、本発明に係るデータ処理方法は、電子データが複数に分割されたデータであり、単独で処理したときの処理結果自体には誤りが無いデータである部分データを用いて所定の処理を行うデータ処理方法であって、所望の部分データの処理結果に電子データを分割したことの影響を与える影響部分データの内、電子データにおける処理順序として最前あるいは最後に位置する影響部分データを検出する影響検出ステップと、所望の部分データの処理を行う際、前記影響部分データが検出された場合には、影響部分データから所望の部分データまでの範囲を一続きのデータとして処理する部分データ処理ステップと、を備えたことを特徴とする。
【０１４３】
これにより、所定の処理を行うための処理範囲に無関係に、電子データにおける処理順序として最前あるいは最後に位置する影響部分データから所望の部分データまでの範囲を一続きのデータとして処理し、所望の部分データの処理結果を得る。すなわち、一続きのデータとして処理すべき全ての部分データを処理して、所望の部分データの処理結果を得る。したがって、所望の部分データが同じであれば、その処理結果を得るのに必要な影響が全て反映された常に同じ処理結果を得ることができる。
【０１４４】
それゆえ、データ処理の高速化、省リソース化という部分データの利点をできるだけ損なわずに、部分データを適切に処理することができるという前述の効果に加えて、影響部分データの検出範囲によって同じ部分データの処理結果が変わることを防止でき、違和感の無い処理結果を得ることができるという効果をさらに奏する。
【発明を実施するための最良の形態】
【０１４５】
以下、本発明の実施の形態を図面を参照して説明する。
【０１４６】
（用語の定義）
まず、言葉の定義について説明しておく。
【０１４７】
「電子データが複数に分割されたデータ」とは、電子データを、そのサイズより小さなサイズ（以下、分割サイズという）に分割したデータのことである。以下、電子データを単に分割して得られた小サイズのデータのことを分割データと呼ぶ。
【０１４８】
例えば、図７は、電子データとしてのＨＴＭＬデータの全体を、９つの分割データに分割する場合の区切り方の一例を示している。図７からも判るように、分割されたデータ間で重なる部分もなく、また足りない部分もない。分割サイズは一定とは限らず、様々な場合がある。
【０１４９】
一般に、分割サイズは、想定する利用環境で扱い易いサイズ前後に揃える方が、高速、省リソースで分割データを処理するには有利である。分割サイズがあまり大きすぎると、処理速度が遅くなったり、リソースが大量に必要になったりする問題があり、逆に小さすぎると、分割データを管理する処理が増えてしまったり、管理情報などが膨れ上がってしまう問題がある。適正な分割サイズを求めるには、例えば、ユーザが処理待ちを許容できる時間を決めて、想定する利用環境でその時間内に処理できるデータ量を目安にするなどすればよい。
【０１５０】
また、適正なサイズの概要が求まっているとした場合、個々の分割データの分割位置を適正サイズの前後のどこにするかは、電子データの中身を見て決められることが多い。例えば、電子書籍の例で言えば、パラグラフや改行などの単位が挙げられる。
【０１５１】
なお、分割データは、電子データ中の連続した一塊のデータ部分が分割されて生成されるとは限らず、飛び飛びに分割される場合もあり得るが、通常、連続した一塊のデータ部分が分割されている方が扱い易い。
【０１５２】
「単独で処理したときの処理結果自体には誤りが無い」の定義は、電子データの種類によって異なる。基本的には、元の電子データに含まれていないデータ（擬似データと呼ぶことにする）が、あたかも電子データに含まれていたかのような処理結果（例えば、意図しない改行、フォントサイズ等）が得られた場合、処理結果に誤りが表れていると定義し、そのような擬似データに対応する処理結果を含まず、元の電子データが本来意図した処理結果が得られるとき、処理結果に誤りが表れないと定義する。
【０１５３】
なお、「処理結果に誤りが表れない」という表現を、「データの意味する内容が損なわれない処理結果が得られる」と言い換えてもよい。
【０１５４】
例えば、ＨＴＭＬデータの場合、処理結果である表示結果は、ＷＷＷブラウザの表示設定などによって異なる。この場合、改行タグによって改行がなされているかどうか、フォントタグによる文字サイズや文字色などの指定が反映されているか、など、タグによる命令結果に沿った表示結果が生成されているかどうかが、処理結果に誤りが表れていないかどうかの判断基準の一つとなる。なお、プレーンテキストの場合は、改行コードの文字によって、改行が指示される。
【０１５５】
処理結果に、誤りが表れた具体例を図２７に示す。図２６に示す表示結果が、誤りの無い表示結果であるとすると、図２７には、「ｇｌａｓｓ．」の後に改行が表れている。つまり、改行タグや改行コードが、元データには無いのにも拘らず、図２７には、改行タグや改行コードが擬似データとして、あたかも元データに含まれていたかのような表示結果になっている。
【０１５６】
本発明の目的は、元データを分割して処理する場合に、このような誤りが処理結果に表れるのを防止することである。
【０１５７】
「単独で処理したときの処理結果自体には誤りが無いデータ」とは、そのデータ以外のデータを使わず、そのデータだけを用いて所定の処理を行うことで、処理結果に誤りが表れないようなデータのことである。このようなデータのことを、本発明では「部分データ」または「ブロックデータ」と呼ぶ。以下、「部分データ」の呼称を用いる。
【０１５８】
すなわち、「部分データ」は、「元になる電子データが複数に分割されたデータであり、かつ、単独で処理したときの処理結果自体には誤りが無いデータ」である。
【０１５９】
図７の例でいえば、９つの分割データのことを、部分データ４００〜４０８と呼ぶが、なぜそう呼べるのかについては、後で詳述する。
【０１６０】
なお、部分データには順番があるとし、相対的に「前の部分データ」、「次の部分データ」という言い方をする。この順番は、上記の誤りが表れるか否かも考慮して各部分データを順に処理した処理結果が、電子データ全体をひとまとまりに処理したときの処理結果に一致する時の部分データの処理順である。因みに、その処理順は、部分データの電子データ中の位置の順番に相当することが多い。
【０１６１】
なお、複数の分割データが共通に必要とするデータが、電子データ中に存在する場合、必要とするデータを各分割データに複製して分配してやれば、単独で処理することができる。しかし、それでは分割データのデータサイズが大きくなってしまうので、共通に必要とするデータを共有する場合もある。つまり、分割データは互いに重なり合わないと定義したが、データ共有などの目的がある場合は、重なり合いを認める。
【０１６２】
あるいは共有部分としてのデータは、どの分割データを処理する場合でも、共有部分の記憶先から事前に読み込まれることを前提にすれば、その前提がある分割データは単体で処理できるデータといえる。
【０１６３】
共通に必要とするデータとしては、例えば、電子データの種類やバージョン情報、著作権情報、暗号情報などの、いわゆるヘッダ情報などが例としてあげられる。
【０１６４】
このとき、共通に必要とするデータを用いることにより、分割データを単独で処理したときの処理結果自体には誤りが表れないのであれば、その分割データは共通に必要とするデータと併せて部分データとみなすことができる。
【０１６５】
また、部分データは、例えばメインデータとサブデータとに構造化され、サブデータがメインデータの処理を補助するように構成されていてもよい。また、そのメインデータとサブデータとが別々の記憶領域に互いに対応付けて格納されていてもよい。そのようなサブデータについては、後で具体的に説明するが、例えば、前の分割データから効力を引き継ぐべき情報や、後の分割データで処理されるべき情報、あるいは複数の分割データの処理結果に共通して関係する特定データ（例えば、制御コード等）などがサブデータの例である。
【０１６６】
図７の上記部分データ４００〜４０８は、実際には上記メインデータに相当し、図８または図９に示す処理補助データ１００〜１０８、６００〜６０８が、上記サブデータに相当する。これについては、後で詳述する。
【０１６７】
なお、部分データと部分データの処理結果とは対応しているので、以降の説明では、「部分データ」という言葉を、その処理結果の意味を含めて使うことがある。例えば、「部分データＡの処理結果が部分データＢの処理結果に影響する」という表現を省略して、「部分データＡが部分データＢに影響する」と表現することがある。
【０１６８】
「所望の部分データ」は、処理結果を得たい部分データのことであるが、所望の部分データは１つの部分データとは限らず、複数の場合もある。例えば、図３に示すような表示結果を得たい場合に、そのような表示結果を得るために必要になる部分データの全てが、所望の部分データである。
【０１６９】
次に、「影響」とは、ここでは、ある部分データを処理する際に、他の部分データと一続きのデータとして処理するかどうかで、部分データの処理結果が変わることを言う。「一続きのデータとして処理する」とは、連続する部分データをまとめて一つのデータとみなして処理する意味である。
【０１７０】
例えば、連続する部分データＸ，Ｙについて、部分データＸ，Ｙをこの順番に一続きのデータとして処理した場合と、そうせずに、それぞれを独立して処理した場合とで、処理結果に違いが現れるとしたとき、「部分データＹは、部分データＸから影響を受ける」とか、「部分データＸは、部分データＹに影響を与える」とか、「部分データＹは、分割の影響を受ける」とかのように、本発明では表現することにする。
なお、部分データＹに影響を与える部分データＸのことを、影響部分データと呼ぶ。
【０１７１】
先に挙げた図２６・２７の例では、図２６の方が、連続する部分データを一続きのデータとして処理した場合の処理結果であり、図２７の方が、一続きのデータとして処理しなかった場合、すなわち個々の部分データを独立に処理して、各処理結果を合わせた場合の処理結果である。
【０１７２】
このように、前の部分データの処理結果に、次の部分データの処理結果を追加する場合などに、影響が現れやすい。影響は、部分データの区切り方や部分データの内容などによって、発生したり、発生しなかったりする。また同じ部分データであっても、処理の仕方や処理設定などによっても、影響が発生したり、発生しなかったりする。
【０１７３】
処理結果が影響を受ける例としては、文書データの部分データを使って、文字を行に配置する処理を行う場合、前の部分データが最後に配置した文字（説明の為、「文字Ａ」と呼ぶ）の行に、次の部分データが最初に配置する文字（説明の為、「文字Ｂ」と呼ぶ）を追加して配置する場合などがある。追加して配置する場合、「文字Ａ」の隣に「文字Ｂ」を配置するので、前の部分データの処理結果によって、次の部分データの処理結果が変わってくる可能性がある。
【０１７４】
但し、前の部分データの処理結果によって結果が変わらないこともある。従って、一続きのデータとして処理しなかった場合に、必ず誤りが表れるというわけではない。例えば、「文字Ａ」が改行コードだとすると、「文字Ｂ」は次の行の行頭に必ず配置される。この場合、前の部分データの処理結果がどうであろうと、「文字Ｂ」の配置位置は常に変わらない。
【０１７５】
なお、処理結果が影響を受けるのは、隣接する前後の部分データの処理結果だけとは限らず、離れたブロック間でも影響する場合もある。例えば、ＨＴＭＬデータの部分データを使って表示レイアウトを生成する処理を行う場合、画像に対するテキストデータ等の回り込みがある場合に起こる場合がある。画像に回り込んで文字などをレイアウトする場合、画像の分、レイアウトできる範囲が限定される。このレイアウト範囲の限定が影響に関わってくる。
【０１７６】
この時、画像に回り込んでレイアウトされる文字などが、複数の部分データから構成されている場合、画像に回り込んで文字などをレイアウトする指示（以下、回り込み指示と呼ぶ）が含まれる部分データは、通常、当該複数の部分データの中の最初の部分データである。従って、上記回り込み指示を含まない部分データには、部分データ中の文字列を画像に回り込ませるべき文字列であることを知る手掛かりが無い。なお、上記回り込み指示を伴う画像のことを、以降、回り込み画像（図５参照）と呼ぶ。
【０１７７】
従って、回り込み画像を含む部分データと、回り込み画像を含まない部分データを別々に処理して、単純に繋ぎ合わせると、まだ回り込ませる余地があるのに、回り込み画像を含まない部分データについては、回り込みを解除して、回り込み画像を含む部分データのレイアウトが終了した次の行の行頭から文字列を表示させてしまう誤りが発生しうる。これは元データが意図するレイアウトとは異なる。
【０１７８】
回り込み画像を含む部分データの表示例を図３１・３２に示す。図３１は、本発明のデータ処理方法により、表示結果に誤りが表れていない場合、図３２は、回り込み画像を含む部分データの影響を考慮しなかったために、誤りが表れた場合に対応している。
【０１７９】
このようにして、離れたブロック間でも影響が発生することがありうる。
【０１８０】
また、処理順序が処理結果に影響を与える例として、内部で使用する値（変数の値）が、各部分データの処理で変わる場合などもある。例えば、最初の部分データの処理で、変数Ｃの値を１と設定し、２番目と３番目の部分データで、変数Ｃの値を２倍に設定するとする。１、２、３番目の部分データの順で処理した場合、３番目の部分データの処理前は、変数Ｃの値は２で、処理後は４となるが、１、３番目の部分データの順で処理した場合、３番目の部分データの処理前は、変数Ｃの値は１で、処理後は２となる。
【０１８１】
なお、影響が有ろうと無かろうと、各部分データの単独の処理結果には、部分データの定義のとおり、常に各部分データの意味する内容が損なわれない（誤りが表れない）。但し、各部分データの単独の処理結果を合わせた場合には、各部分データを単独に処理した影響が、全体として処理結果に表れる（元の電子データが本来意図していない処理結果になる）ことはあり得る。
【０１８２】
例えば先の「文字Ａ」、「文字Ｂ」の例で言えば、文字Ｂを含む「次の部分データ」を単独で処理すれば、文字Ｂ（例えば図２７の「Ｗｈｅｎ」）は最初の文字なので行頭に配置される。文字Ｂが行頭に配置された処理結果を単独で見る場合、「次の部分データ」の処理結果としては、誤りが表れていない。
【０１８３】
しかし、文字Ａを含む「前の部分データ」の処理結果と合わせて見る場合、すなわち、「前の部分データ」の処理結果の行と、「次の部分データの処理結果」の行とを、単純に並べて表示させる場合、そのつながり部分に影響が表れる場合が出てくる。例えば「文字Ａ」が改行コードで無い場合、「文字Ａ」の次の「文字Ｂ」が、突然、次の行の行頭に配置されていることになり、改行がされているように見えてしまう。しかし、文書データとしてそこに改行コードの文字は存在しないのだから、合わせた処理結果には各部分データを単独に処理した影響が表れていることになる。
【０１８４】
なお一般に、前の順番の部分データが、後の順番の部分データの処理結果に影響を与える場合がほとんどだが、逆の場合もあり得る。
【０１８５】
次に、「（部分データを用いた）所定の処理」は、電子データの種類や目的によって異なるが、一般に電子データを入力データとして、何らかの出力を得るための処理を指す。例えばＨＴＭＬデータの場合、ＨＴＭＬデータを解析して、表示レイアウトを算出することになる。
【０１８６】
「先に処理する」とは、処理の順番から言えば、所望の部分データの処理結果に影響を与えると検出された部分データを処理してから、その影響を引き継いで（考慮して）、次に、所望の部分データを処理することを意味する。
【０１８７】
「所望の部分データ中の一部の部分データ」とは、所望の部分データが複数あり、その中のいくつかの部分データという意味で、部分データ単位での話である。部分データをさらに分割したデータという意味ではない。
【０１８８】
「所望の処理範囲」は、出力結果の取得範囲を意味し、何らかの指標で指定される。例えば、文書データならば、「何行目から何行目」、あるいは「何文字目から何文字目」、あるいは「全体の何パーセントから何パーセント」、というような指標によって、所望の処理範囲を指定する。
【０１８９】
このように範囲の始点と終点を指定する以外にも、ある基準点とその基準点の周囲の範囲という指定の方法もある。例えば、「何行目から何行分」、あるいは「何行目から表示手段に表示される範囲（ドット数など）」、などの指定の仕方が可能である。基準点や範囲は、処理範囲を最終的に指定することができれば、「行」などの処理結果の単位でなくてもよい。例えば、「電子データ（あるいは部分データ）の先頭から何バイト目のデータ」を基準点としてもよい。
【０１９０】
「処理補助データ」は、分割データを部分データとして処理できるように、分割データを単独で処理するだけでは得られない（不足している）情報を補助するデータである。電子データや部分データの一部ではなく、基本的にファイルなどの形で別のデータとして生成されるものであるが、データを管理しやすくする為に、電子データの最初や最後などに電子データの一部として含むようにする場合もある。
【０１９１】
より具体的には、後でさらに説明するが、ＨＴＭＬデータの場合、着目している分割データの前に存在する分割データ中の開始タグで、対応する終了タグがその分割データ以降に存在する場合、その開始タグが、前の分割データから引き継ぐべき情報になるので、着目している分割データのための処理補助データに当たる。
【０１９２】
つまり、前の分割データ中の開始タグの効力は、本来、後の分割データにも及ぶものであるが、分割の結果、後の分割データを単独で処理する際には、開始タグが読み込まれないため、その処理結果には開始タグの効力が表れないことになる。結局、分割によって、本来意図した処理結果にならない分割データが発生する。そこで、開始タグを後の分割データの処理補助データとして組み合わせることにより、後の分割データを単独で処理しても、本来の処理結果を得ることができる。
【０１９３】
処理補助データと分割データは、組として扱われるが、必ずしも一体のデータとして記録しておく必要はなく、分散して記録しておいても良い。例えば、処理補助データだけを集めたファイルなどという形で記録しておいても良いし、電子データの末尾などに処理補助データを追加しておいても良い。
【０１９４】
また、処理補助データと分割データは、予め作成しておくのが一般的だが、利用時に動的に生成することも可能である。
【０１９５】
但し、分割データと処理補助データの組それぞれが共通に必要とするデータが、電子データ中に存在する場合、必要とするデータを各分割データ（あるいは処理補助データ）に複製して分配してやれば、単独で分割データの意味する内容が損なわれない処理結果を得ることもできる。しかし、それでは各分割データ（あるいは処理補助データ）のデータサイズが大きくなってしまうので、分割データ（あるいは処理補助データ）以外の共有部分を使う場合も、「部分データで処理される」とみなすこととする。
【０１９６】
「階層構造」は「木構造」とも呼ばれ、データの要素の関係を、分岐した木の形の構造として管理する状態をいう。分岐は細かくなるだけであり、分岐した先同士が関係を持ち合うことはない（持ち合う場合は「ネットワーク構造」と言う）。一般に、分岐して細かくなったデータが属する階層を「下の層」、分岐元のデータが属する階層を「上の層」と、上下関係で呼ぶことが多い。
【０１９７】
例えば、後で具体的に説明するＨＴＭＬデータのタグによる入れ子構造などが階層構造に相当する。
【０１９８】
「順序構造」は、データの要素間に上下関係は無いが、その順番に意味があるような場合の構造である。データ要素が同じでも、その順番などが変われば、別のデータとなる。例えば、ＨＴＭＬデータのＯＬタグ中でのＬＩタグは箇条書きの番号表示を行うが、その番号はＬＩタグの出現する順番によって決まる。
【０１９９】
なお、階層構造の各層で分岐先に順番を持たせているようなデータ構造も、階層構造に含まれるとしてもよい。また、階層構造や順序構造のデータ要素の区切りと、部分データの区切りとは必ずしも一致しなくてもよい。
【０２００】
「開始位置の階層構造」とは、電子データの最初から分割データの開始位置までのデータで生成される階層構造を意味する。ＨＴＭＬデータの例で言えば、開始位置までに出てきたタグを繋げた文字列で表現できる。一般に、着目している分割データについて上の層の情報だけでよく、同じ層、あるいは下の層、タグに挟まれたテキストデータの情報などは省いてもよいことが多い。上の層の情報だけとは、ＨＴＭＬデータの例で言えば、開始位置までに出てきたタグの内、対応する終了タグの存在しない開始タグだけということになる。
【０２０１】
例えば、図７のＨＴＭＬデータの最初の部分データ４００を例にすると、上の層の情報とは、ＨＴＭＬタグの開始タグ＜ＨＴＭＬ＞を指し、下の層の情報とは、ｆｏｎｔタグの開始タグ＜ｆｏｎｔ  ｃｏｌｏｒ＝“ｒｅｄ”  ｓｉｚｅ＝“＋３”＞および終了タグ＜／ｆｏｎｔ＞を指す。
【０２０２】
「終了位置の階層構造」とは、部分データの終了位置から電子データの最後までのデータで生成される階層構造を意味する。ＨＴＭＬデータの例で言えば、終了位置以降に出てくるタグを繋げた文字列で表現できる。一般に、着目している部分データについて上の層の情報だけでよく、同じ層、あるいは下の層、タグに挟まれたテキストデータの情報などは省いてもよいことが多い。上の層の情報だけとは、ＨＴＭＬデータの例で言えば、終了位置以降に出てくるタグの内、対応する開始タグの存在しない終了タグだけということになる。
【０２０３】
「開始位置の順序構造」や「終了位置の順序構造」に関しても、対象とするデータ範囲は階層構造と同じである。階層構造と違って上下の層は存在しないが、データ範囲に出てくる情報となる。階層構造でも、同じ層や下の層の情報まで含めた情報にすれば、順序構造の情報を含んだ形にもできる。
【０２０４】
例えば、ＨＴＭＬデータの例で言えば、複数のＬＩタグの層は、ＯＬタグの層の下の層となるが、対応する終了タグが存在しても省かずに情報を生成すればよい。ＯＬタグの層で部分データの分割境界があったとしても、後の部分データの開始位置の順序構造の情報には、前の部分データのＬＩタグが含まれるので、ＬＩタグの出現する順序の情報を得ることができるようになる。
【０２０５】
「表示レイアウト」とは、文字や画像などの「表示レイアウト要素」の集まりからなるものであり、表示手段や印刷手段などの出力手段に出力して、ユーザが視覚的に認知することができるようにした表示レイアウト要素の配置情報である。一般に、表示レイアウトは、各表示レイアウト要素の位置や大きさ、出力する時の形態などの情報を持っている。
【０２０６】
「表示設定」とは、例えば、表示する文字の種類や大きさ、表示レイアウトを生成する範囲（一般に表示手段の大きさに制約される）、などである。これらの設定を変えることで、生成される表示レイアウトは変わる。但し、表示レイアウトが変わっても、通常、各表示レイアウト要素の位置や大きさが変わるだけで、文書データの表現する中身（文字情報、画像情報など）が変わる訳ではない。
【０２０７】
「行」とは、ここでは、表示レイアウト要素の集まりであり、一般に、横一列あるいは縦一列に並んで配置されている表示レイアウト要素からなる。全ての表示レイアウト要素はいずれかの行に属するとするが、回り込み画像のように、複数の行に関わる表示レイアウト要素は、分割して各行に属するようにするか、行とは別に管理するようにする。
【０２０８】
「行頭」とは、表示レイアウト要素の行への通常の配置方法で、最初に配置する位置である。一般に、横一列に配置する横行の場合は左端、縦一列に配置する縦行の場合は上端となる。なお、所望の部分データの最初の表示レイアウト要素が、回り込み画像のような特殊な配置を行う表示レイアウト要素や、行とは別管理する表示レイアウト要素の場合は、行頭から表示されるかどうかの判断対象とはせず、行に配置する次の通常の表示レイアウト要素（文字など）を判断対象とする。
【０２０９】
「所望の部分データの表示レイアウトが含まれる行」は、通常は、所望の部分データから生成される最初の行だけ判断すれば、足りる場合が多い。
【０２１０】
なお、行とは別管理する表示レイアウト要素の場合は、検出対象の部分データの行の表示範囲を行方向（縦行なら縦方向、横行なら横方向）に伸ばしたときに、別管理する表示レイアウト要素の表示範囲と重なるかどうかで影響を判断する。
【０２１１】
「行末から表示レイアウトを算出する」とは、行末の表示レイアウト要素に続いて、新たな表示レイアウト要素を配置するように、表示位置を算出することである。通常、行末の表示レイアウト要素の隣に新たな表示レイアウト要素を配置する場合が多い。
【０２１２】
なお、以降の説明では、説明を具体的にして分かりやすくする為、「電子データ」を「表示設定によって表示レイアウトが変わる文書データ」、「処理結果」を「表示レイアウト」として説明するが、後で説明する図１４の基本部分のフローチャートなどの処理の流れは、電子データと処理結果に置き換えてもほぼ同様に処理できる。
【０２１３】
（データおよびデータ構造）
次に、本発明に関わる各種データやそれらのデータ構造について説明する。
【０２１４】
図４は、元データとしての電子データの例を説明する説明図である。ここでは、表示設定によって表示レイアウトが変わる文書データの例として、ＨＴＭＬデータ（正確にはＸＨＴＭＬデータ）を使って説明する。枠線の中がＨＴＭＬデータであり、その左側の数字は、説明の為の行番号である。
【０２１５】
図５は、図４のＨＴＭＬデータをＷＷＷブラウザで、ある表示設定の時に表示させた例である。ここではＷＷＷブラウザのウィンドウの大きさは充分大きく、図４のＨＴＭＬデータを一度に表示しきれたとする。
【０２１６】
図６は、図５の表示設定で、基準となる文字の大きさを１．５倍、表示ウィンドウの横幅および縦幅は同じに設定して、図４のＨＴＭＬデータを表示させた例である。各文字が大きくなったので、各行の折り返し位置などが変わっているのが分かる。なお、図６では図４のＨＴＭＬデータ全てを表示しきれないので、先頭の部分だけ表示させている。スクロールバーやページめくりボタンなどを使って表示範囲を切り替えれば、表示しきれていない部分も表示させることは可能である。
【０２１７】
説明の為、ＨＴＭＬデータ（正確にはＸＨＴＭＬデータ）の構造について簡単に説明しておく。前述した「タグ」とは、「＜」の文字に始まり、「＞」の文字で終わる部分の文字列のことであり、表示設定を指示する文字列である。例えば図５の表示設定は、図４のＨＴＭＬデータ中の各種タグによって指定されている。
【０２１８】
一般に、タグは開始タグと終了タグの組からなり、終了タグは「＜」の後に「／」の文字が続く。タグはそれぞれ「タグ名」を持ち、開始タグは「＜」＋「タグ名」＋「＞」、終了タグは「＜／」＋「タグ名」＋「＞」となる。
【０２１９】
例えば、図４の１行目は開始タグ「＜ＨＴＭＬ＞」で始まり、最後の４５行目は、終了タグ「＜／ＨＴＭＬ＞」で終了している。なお、本明細書では、＜ＨＴＭＬ＞と＜／ＨＴＭＬ＞の組から成るような各タグをタグ名を使って、「ＨＴＭＬタグ」などという形で呼ぶことにする。
【０２２０】
開始タグは、表示レイアウトを詳細に設定する情報として、「属性」も持つことができる。属性は、「属性名」と「属性値」からなり、
「＜タグ名  属性名１＝“属性値１”  属性名２＝“属性値２”  、、、、  ＞」
などという形式で、複数の属性を与えることができる。
【０２２１】
開始タグと終了タグの間に挟まれた部分が、タグの効力が及ぶ対象である。タグ以外の部分は「ＴＥＸＴ」である。例えば、図４の２，３行目の「＜ｆｏｎｔ  ｃｏｌｏｒ＝“ｒｅｄ”  ｓｉｚｅ＝“＋３”＞Ｈｏｗ  ｄｏｅｓ  ＬＣＤ  ｗｏｒｋｓ？＜／ｆｏｎｔ＞」の部分は、「Ｈｏｗ  ｄｏｅｓ  ＬＣＤ  ｗｏｒｋｓ？」のＴＥＸＴが、ｆｏｎｔタグの対象となる。
【０２２２】
具体的には、ｃｏｌｏｒ属性がｒｅｄなので、文字色が赤となり、ｓｉｚｅ属性が＋３なので、基準フォントサイズより３段階大きなフォントとなる。図５では、上記のＴＥＸＴが確かに大きな文字で表示されている。（なお、文字色は白黒印刷画面ではわかりにくいので、ここでは黒で示してあるが、フルカラーディスプレイ上では赤で表示されるとする）。
【０２２３】
なお、開始タグと終了タグの間に挟むべきＴＥＸＴが存在しない場合は、開始タグと終了タグを一緒にして、「＜タグ名／＞」としてもよい。例えば、図４の３行目の「＜ｂｒ／＞」（具体的な意味は後述）はこの例である。
【０２２４】
ＨＴＭＬデータのタグは、前述のように、入れ子構造を持つ、階層構造になっている。ここでは、ＨＴＭＬデータは、ＸＨＴＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｈｙｐｅｒ  ｔｅｘｔ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）形式あるいはＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）形式に従うとして、入れ子構造以外はもてないとしておく。
【０２２５】
例えば、ＡタグとＢタグが、「＜Ａ＞＜Ｂ＞＜／Ｂ＞＜／Ａ＞」となるのは入れ子構造なので、正しい階層構造になっているが、「＜Ａ＞＜Ｂ＞＜／Ａ＞＜／Ｂ＞」は入れ子構造ではないので、不可とする。なお、タグが入れ子になっている場合、内側のタグやそのＴＥＸＴに対しても、外側のタグの効力は及ぶが、同じタグ名のタグや、同じタグ名の同じ属性名の属性値に関しては、内側のタグの方が一般に優先される。
【０２２６】
図４の例では、最上位の階層のタグは１行目と４５行目のＨＴＭＬタグであり、その下の階層は、２，３行目のｆｏｎｔタグ、ｂｒタグなど、多数のタグが続く。また、５行目と１６行目のｆｏｎｔタグの下の階層には、６行目と１５行目のＰタグ（意味は後述）が存在する。
【０２２７】
次に、図４に出てくるｆｏｎｔタグ以外の各タグの機能について簡単に説明しておく。ＨＴＭＬタグは、ＨＴＭＬ文書であることを宣言しているだけで、表示設定に対する意味はない。ｂｒタグは、表示レイアウト上で改行を行うことを意味する。なお、ＨＴＭＬデータ中の改行コードは通常、無視される。Ｐタグは、パラグラフを意味し、開始タグで多少の垂直スペースと改行、終了タグで改行と多少の垂直スペースとして表現される。Ｐタグによって挿入される垂直スペースは、文字サイズを基準にして設定することもできるし、一定サイズに固定することもできる。ＷＷＷブラウザによってはインデント表示される場合もあるが、ここではインデントは無しとしている。
【０２２８】
ＩＭＧタグは、挿絵をあらわし、ｓｒｃ属性によって、挿絵の画像ファイル名などが指定され、ａｌｉｇｎ属性によって、挿絵とＴＥＸＴとの表示の仕方（挿絵が回り込み画像か否か）が指定される。図４の２８行目のＩＭＧタグでは、画像ファイル名がＴＦＴ．ｐｎｇ、ａｌｉｇｎがｒｉｇｈｔとなっている。ｒｉｇｈｔは、挿絵を右端に配置させて、その周囲に回りこむようにＴＥＸＴをレイアウトすることを意味する。図５では、挿絵のある行では挿絵の分、行の幅が小さくなってレイアウトされている。
【０２２９】
図７は、図４のＨＴＭＬデータを分割した部分データ例を説明する説明図である。ＨＴＭＬデータは、部分データ４００〜４０８の９つに分割されている。但し、ＨＴＭＬデータの場合、各種タグを構成するそれぞれの開始タグと終了タグとは、分割によって異なる部分データに分離することが多い。開始タグのみ、または終了タグのみを含む部分データは、それ単独ではタグが機能しないため、厳密には部分データではなく、単なる分割データである。なぜなら、部分データとは、単体で処理してもデータの意味する内容が損なわれない処理結果が得られるデータだからである。
【０２３０】
それにも拘らず、部分データ４００〜４０８を部分データと呼ぶのは、その処理時に、部分データ４００〜４０８の処理を補助するデータ（後述）を読み込むことが前提になっているからであり、その結果、部分データ４００〜４０８は、単体で処理してもデータの意味する内容が損なわれない処理結果が得られるデータとして扱われるからである。
【０２３１】
なお、電子データの分割方法に関しては、本発明の主旨ではないので、ここでは具体的で詳細な処理手順の説明は省略し、図７のように分割された部分データが予め用意されているとする。
【０２３２】
図８は、部分データ４００〜４０８の処理を補助する処理補助データのデータ構造例を説明する説明図である。処理補助データ１００〜１０８は、それぞれ図７の部分データ４００〜４０８に対応しているとする。処理補助データ１００〜１０８は、配列の形で管理され、インデックス番号などでアクセスできるとする。
【０２３３】
処理補助データは、図８に示すように、「開始バイト」、「バイトサイズ」、「影響有無」、「開始タグ補助情報」、「終了タグ補助情報」の情報からなる。「開始バイト」は、各部分データの先頭のデータが、元の文書データの先頭から何バイト目（０から数える）に位置するかを示す。「バイトサイズ」は、各部分データのデータサイズをバイト単位で示したものである。なお、バイト単位でなく、例えば文字数単位などにしてもよいが、データの読み込みなどにはバイト単位の方が便利である場合が多い。
【０２３４】
「影響有無」は、着目している部分データの処理結果が、他の部分データから影響を受けるかどうかに関する情報である。例えば、処理補助データ１０２を例にすると、「影響有無」は「有」なので、着目している部分データ４０２が、他の部分データ（具体的には直前の部分データ）から影響を受けることを表す。これについては後で図１６や図１７のフローチャート図の説明に関連して、さらに説明する。
【０２３５】
「開始タグ補助情報」と「終了タグ補助情報」は、文書データの先頭から最後まで解釈せず、各部分データを単独で解釈する時に、文書データの先頭から最後まで解釈するのと同等の処理結果が得られるように、タグの階層構造の情報を補助する情報である。ここでは、開始タグまたは終了タグの文字列の情報とする。
【０２３６】
開始タグ補助情報に関しては、対応する開始タグと終了タグの組み合わせが、着目している部分データの前に存在する以前の部分データのいずれかに存在するのならば、その階層は対応する部分データの階層構造には直接影響しないので、一般に開始タグ補助情報にも影響しない。開始タグだけが以前の部分データ中に存在し、対応する終了タグが以前の部分データ中に存在しない場合は、その階層の下に、着目している部分データの階層構造が属するので、開始タグ補助情報にそれを補う情報を入れておく。すなわち、開始タグ補助情報は、効力が継続中の開始タグが以前の部分データ中に存在していることを示す情報であり、より具体的には、効力が継続中の開始タグである。
【０２３７】
例えば、部分データ４００は先頭の部分データなので、処理補助データ１００の開始タグ補助情報は何も無い。
【０２３８】
部分データ４０１に関しては、以前の部分データは部分データ４００である。部分データ４００中のｆｏｎｔタグとｂｒタグは、対応する開始タグと終了タグの組が部分データ４００中に存在するが、ＨＴＭＬタグは、開始タグ（１行目）だけで、終了タグ（４５行目）が部分データ４００中に存在しない。従って、処理補助データ１０１の開始タグ補助情報は、効力が継続中の開始タグである「＜ＨＴＭＬ＞」となる。
【０２３９】
同様に、部分データ４０２に関しては、以前の部分データは部分データ４００、４０１である。開始タグ＜ＨＴＭＬ＞の効力が継続中であるのは、部分データ４０１の場合と同様である。部分データ４００、４０１中の２番目のｆｏｎｔタグとＰタグは、開始タグ（５行目、６行目）だけで、終了タグ（１６行目、１５行目）が部分データ４００、４０１中に存在しないから、その効力が部分データ４０２において継続中である。従って、処理補助データ１０２の開始タグ補助情報は、開始タグの出現する順に従って、「＜ＨＴＭＬ＞＜ｆｏｎｔ  ｓｉｚｅ＝“＋１”＞＜Ｐ＞」となる。
【０２４０】
一方、「終了タグ補助情報」は、開始タグ補助情報の逆で、効力が継続中の開始タグと対をなすべき終了タグを示す情報であり、より具体的にはその終了タグである。先頭部分データから着目している部分データまでの部分データ中に出てきた開始タグに対応する終了タグの内、先頭部分データから着目している部分データまでの部分データ中に存在しない終了タグを対象とすればよい。
【０２４１】
例えば、部分データ４００の場合、先頭の部分データから対応部分データまでの部分データは、部分データ４００自身だけである。部分データ４００中のｆｏｎｔタグとｂｒタグは、対応する開始タグと終了タグの組が部分データ４００中に存在するが、ＨＴＭＬタグは、開始タグ（１行目）だけで、終了タグ（４５行目）が部分データ４００中に存在しない。従って、処理補助データ１００の終了タグ補助情報は、効力が継続中の開始タグ「＜ＨＴＭＬ＞」と対をなすべき終了タグ「＜／ＨＴＭＬ＞」となる。
【０２４２】
部分データ４０１に関しては、先頭の部分データから対応部分データまでの部分データは、部分データ４００、４０１である。開始タグ＜ＨＴＭＬ＞の効力が継続中であるのは、部分データ４００の場合と同様である。部分データ４００、４０１中の２番目のｆｏｎｔタグとＰタグは、開始タグ（５行目、６行目）だけで、終了タグ（１６行目、１５行目）が部分データ４００、４０１中に存在しない。従って、処理補助データ１０１の終了タグ補助情報は、終了タグの出現する順に従って、「＜／Ｐ＞＜／ｆｏｎｔ＞＜／ＨＴＭＬ＞」となる。
【０２４３】
なお、図７では示していないが、各部分データで共通に必要とするデータが存在する場合もある。例えば、表示全体の背景色など、表示処理全体の設定の情報などである。これらの情報は、全体を挟むようなタグで表現される場合もあるが、単にＨＴＭＬ文書の先頭の方で、開始タグと終了タグの組で表現される場合もある。いわばヘッダ情報的な記述のされかたである。
【０２４４】
その場合、これらのヘッダ情報は、各ブロックの開始／終了タグ補助情報には現れない。しかし、これらのヘッダ情報を解釈しておかないと、背景色などが正確に表現されなくなってしまう。そこで、それら、共通に必要とするデータは、共通に必要であることを別途フラグなどで記しておくことで、各部分データを解釈する前に、共通部分を解釈するようにすることで対応できる。
【０２４５】
処理補助データの生成方法に関しては、本発明の主旨ではないので、具体的で詳細な処理手順の説明は、図１８のフローチャートに基づいて後述することにし、ここでは、部分データを解析して生成された、図８のような処理補助データが予め用意してあるとする。
【０２４６】
なお、既に触れたように、図７の各部分データ４００〜４０８は、正確には単独では処理できない「分割データ」であり、処理補助データの開始タグ補助情報、終了タグ補助情報を使うことで、単独に処理できる「部分データ」となる。
【０２４７】
もし、処理補助データの開始タグ補助情報、終了タグ補助情報を使わないとすれば、各分割データに、開始タグ補助情報、終了タグ補助情報を追加しないといけない。例えば、図７の部分データ４０１の最初には開始タグ補助情報として「＜ＨＴＭＬ＞」を、部分データ４０１の末尾には終了タグ補助情報として、「＜／Ｐ＞＜／ｆｏｎｔ＞＜／ＨＴＭＬ＞」を追加する必要がある。
【０２４８】
このように、分割データも、開始タグ補助情報、終了タグ補助情報等の必要な情報を補ってやれば、その必要な情報を追加した部分データと同様に扱える。従って、本発明では、分割データの処理時に共に処理する処理補助データを別個に付随させた分割データを、部分データの範疇に含め、「分割データ」でなく「部分データ」と呼ぶことにする。
【０２４９】
図９は、処理補助データの別のデータ構造例を説明する説明図である。図８のデータ構造例とほぼ同様であるが、「影響有無」の項が、「影響部分データ」となっている。「影響部分データ」とは、各部分データに影響を与える最前の部分データについての情報だが、これについては後で図１７の説明に関連して説明する。
【０２５０】
次に、表示レイアウトのデータ構造例について説明しておく。
【０２５１】
図１０は、表示レイアウトの基本単位となる表示レイアウト要素（以降、単に「要素」と略記する場合もある）のデータ構造例を説明する説明図である。要素は、図５などでの表示上は、各文字や各画像などに相当する。
【０２５２】
各要素（表示レイアウト要素データ；番号１２０〜１２２で示す）は、例えば図１０に示すように、「種類」、「開始バイト」、「バイトサイズ」、「オフセットＸ」、「オフセットＹ」、「幅」、「高さ」、「内容」の情報を持つ。
【０２５３】
「種類」は、要素の種類を表し、ここでは「文字」を表す「ＣＨＡＲ」と「画像」を表す「ＩＭＡＧＥ」だけが例として挙がっているが、それ以外にも、例えば動画要素など、様々な種類の要素を持つことは可能である。
【０２５４】
「開始バイト」は、その要素が電子データ中のどこで記述されているかを表す。ここでは、図４のＨＴＭＬデータ中で、その要素を表すＴＥＸＴの部分あるいはタグの先頭が、先頭から何バイト目かで表すとする。
【０２５５】
「バイトサイズ」は、その要素が、電子データ中で記述されるのに要したデータ量を表す。ここでは、図４のＨＴＭＬデータ中で、その要素を表す文字のバイト数や、場合によってはタグも含めたバイト数で表すとする。例えば、ＨＴＭＬデータ中の１文字がそのまま要素となっていて、その１文字が例えばＳｈｉｆｔ−ＪＩＳで表現されていたら、バイトサイズは「２」となる。
【０２５６】
「オフセットＸ」、「オフセットＹ」については、図１１の行データのデータ構造例と一緒に、後で説明する。
「幅」、「高さ」は、要素の表示する時の大きさを表す。単位は画素（ドット）などでよい。
「内容」は、各要素を表示する内容を表すデータである。文字要素の場合、文字コード、画像要素の場合、画像データなどとなる。
【０２５７】
図１１は、上記要素の集まりを管理する行データ（番号２００〜２２２で示す）のデータ構造例を説明する説明図である。各行データは、図５などでの表示上は、各行に相当する。なお、以降、「表示上の行」と「行データ」は１対１対応になるので、どちらの場合も、単に「行」と表現する場合がある。
【０２５８】
行データは、要素を０個以上持つことができる。所有する（管理する）要素は、表示上、各行の範囲に属する文字などの要素に相当する。要素が０個の行は、空行となる。図５の回り込み画像のような画像要素を、どのようにして管理するかはいろいろ方法があるが、ここでは画像を各行の高さで複数に分割して、各行の画像要素として管理するようにする。
【０２５９】
行データは、図１１に示すように、「高さ」、「配置可能開始位置」、「配置可能終了位置」、「次要素配置位置」、「要素数」、「要素配列」の情報を持つ。
「要素配列」は、行データが１行内で管理している要素の配列、「要素数」は、１行内で管理している要素の数である。「要素配列」には、１行内に含まれる各要素を特定する情報が入っている。ここでは、わかりやすいように、該情報を図１０の各要素に割り当てられた番号としている。実際には、「要素配列」を構成するデータは、各要素の配列インデックスやメモリアドレスなどとなることが多い。
「高さ」は、管理している要素を全て含む外接矩形の高さとする。
【０２６０】
図１２は、行データの情報を説明する説明図で、図５の最初の行の行データの例で説明する。要素は、「Ｈｏｗ  ｄｏｅｓ  ＬＣＤ  ｗｏｒｋｓ？」の文の各文字である。各要素は、図１２では、各文字を囲む矩形で表している。例えば「Ｈｏｗ」の「ｏ」の字の周囲の矩形５０３などである。矩形５０５内は何も表示がないが、これは「  」（空白文字）の要素である。
【０２６１】
なお、図が込み入ってわかりにくくなるので、表示された文字を点線で示している。また、各矩形は、実際は文字の外接矩形であるが、表示が分かりにくいので、少し大きめに図示してある。後で説明する行の矩形５００も同様に少し大きめに図示してある。
【０２６２】
これらの文字の集まりを囲む、すなわち「Ｈｏｗ  ｄｏｅｓ  ＬＣＤ  ｗｏｒｋｓ？」の文を囲む外接矩形５００が行データの範囲を示す。この範囲の高さＬＨが図１１の「高さ」となる。
【０２６３】
矩形５００の行内で各文字の位置は決まっている。この位置を表すのが、図１０の「オフセットＸ」、「オフセットＹ」である。ここでは、各行の矩形の左上隅を原点とし、右方向を＋Ｘ方向、下方向を＋Ｙ方向としたときに、「オフセットＸ」、「オフセットＹ」は、各要素の矩形の左上隅の位置を表すとするので、行矩形内の各要素の相対的なずれ量（オフセット量）を表している。
【０２６４】
「配置可能開始位置」、「配置可能終了位置」、「次要素配置位置」は、表示レイアウトを生成する時に使う情報だが、これは後で表示レイアウトの生成方法の説明の時に詳しく説明する。
【０２６５】
図１１の各行データ２００、２０１、２２２などは、配列などの形で管理され、インデックス番号などでアクセスできるとする。
【０２６６】
詳しくは後で説明するが、文書データから、後述するレイアウト生成手段５で、図１０の要素データや図１１の行データのような形式で、表示レイアウトが生成されるとする。また、後述するレイアウト表示手段８では、この形式のデータを使って、表示範囲の表示レイアウトを表示する。
【０２６７】
図１３は、部分データの管理データ（以降、「ブロック管理データ」と呼ぶ）のデータ構造例を説明する説明図である。ブロック管理データ（番号３００〜３０８で示す）は、「開始行」、「終了行」、「最終レイアウト行」、「処理補助データ」の情報を持つ。
【０２６８】
「開始行」、「終了行」、「最終レイアウト行」は、各部分データから生成された行データに関する情報であり、数字（２００、２２２等）は、図１１に示す行データに対して付与されたデータ番号を指している。まだ行データを生成していない場合は、空欄とする。
【０２６９】
「開始行」、「終了行」は、部分データから生成された要素データが含まれる最初と最後の行データを意味する。行データは、ここでは分かり易いように図１１の各行データに付したデータ番号で示しているが、実際の行データは、行データ配列のインデックス番号や行番号、行データのメモリアドレスなどになる。
【０２７０】
「最終レイアウト行」は、部分データから生成される最後の要素データが属する行データである。「終了行」と「最終レイアウト行」は、同じ行データの場合もあるし、ブロック管理データ３０２のように異なる場合もある。
【０２７１】
異なる場合は、例えば、図７の部分データ４０６のように、部分データが回り込み画像を含んでいるような場合である。例えば、部分データ４０６を単独で処理した表示結果を図３２に示す。この例のように、回り込み画像のレイアウトに必要な行数に比べて、その部分データに含まれるＴＥＸＴを回り込み画像の周囲に回り込むようにレイアウトするのに要する行数の方が少ないとき、そのＴＥＸＴのレイアウトの終了行は、回り込み画像のレイアウトの終了行まで達しない。部分データ部分データこのような場合、「終了行」は、画像要素の最後の行データとなるが、「最終レイアウト行」は、その部分データで回り込みさせていたＴＥＸＴの最後の行データとなる。従って、行の前後関係で言えば、「終了行」は常に「最終レイアウト行」以降となる。
【０２７２】
図１３の「処理補助データ」は、各部分データに対応する前述の処理補助データを示す情報である。ここも実際の処理補助データは、処理補助データのインデックス番号やメモリアドレスなどとなる場合が多い。
【０２７３】
（本発明のポイントとなる処理の概要）
詳細な処理を説明する前に、本発明のポイントとなる処理の一つである、影響を与える部分データと所望の部分データとを一続きのデータとして処理する処理例について、簡単に説明しておく。詳細は、また後で説明する。
【０２７４】
例えば、図７の部分データ４０２だけを用い、その一部が表示されるように表示レイアウトを生成して表示させた状態が図２３である。
【０２７５】
「Ｗｈｅｎ」が１行目の行頭からレイアウトされている。図２３では、レイアウトの様子が分かりやすいように、表示枠を超える部分についても、示している。実際には、ユーザ等による表示位置の指定に基づいて、表示枠内の行である「ｐａｓｓ」から始まる３行目以降だけが、図２３の例では表示されている。
【０２７６】
図２３の状態からさらに上の部分をスクロールなどして表示させるとする。これを実行するのに、本発明のデータ処理方法によらない場合には、部分データ４００・４０１の表示レイアウトをそれぞれ単独で処理し、図２３の部分データ４０２の表示レイアウトと行単位で単純に結合させることになる。このようにして表示させた状態が、図２７である。
【０２７７】
図２７に示すように、部分データ４０１・４０２の区切りに位置する「ｇｌａｓｓ．」「Ｗｈｅｎ」との間で改行された誤りが表れた表示結果が得られている。しかし、図７の部分データ４０１と部分データ４０２を見ると、「ｇｌａｓｓ．」「Ｗｈｅｎ」との間に改行を指示するｂｒタグは存在しない。
【０２７８】
従って、図２７の表示結果には、ＨＴＭＬデータを部分データに分割した影響が現れているため、ＨＴＭＬデータを分割せずに処理した場合の表示結果と、ＨＴＭＬデータを部分データに分割して、各部分データを単独に処理して繋ぎ合わせた表示結果とは一致していない。
【０２７９】
本発明で例として挙げているＨＴＭＬデータは、ＷＷＷブラウザの表示設定によって、表示結果が変わることを前提に設計された言語仕様であり、表示設定が変わっても、表示結果の与える論理的意味（例えば、強制改行や画像の回り込みなど）が変わらなければ、どのような表示を行っても誤りが無い、つまり元データの意味する内容が損なわれないとされる。
【０２８０】
また、ＨＴＭＬデータは、部分データに分割したことが、部分データの処理結果に論理的な意味で影響を与えることがある。例えば、上記の図２７の例のように改行タグ以外の所で、元データを部分データに分割した場合や、図３２の例のように回り込み画像を含む部分データを考慮せずに、次の部分データを処理した場合などである。
【０２８１】
従って、単純に前の部分データの処理結果に、次の部分データの処理結果をつなぎ合わせるだけでは、全体として元データの意味する内容が変わってしまうことがあり、処理結果に誤りが表れることがある。
【０２８２】
つまり、部分データを扱う際、データのもつ特質に合わせて、処理方法を変えてやる必要がある。そこで本発明では、特に部分データ間の処理結果の影響に着目し、誤りが表れない処理結果が得られるような工夫を施している。より具体的には、ある部分データが他の部分データに影響を与えることが検出されると、それらの部分データをひとまとまりのデータとして扱い、処理をする。これにより、上記影響が反映された適切な処理結果を得ることができる。
【０２８３】
以上、概略的に説明した本発明のデータ処理方法で、実際に部分データを読み込んで、表示レイアウトを表示させる例を、図面を使って説明する。
【０２８４】
まず最初は、図７の部分データ４００の先頭から下に１ページ分（表示手段の高さ）だけ表示させるとする。部分データ４００は最初の部分データであり、最初の行データによって構成されているので、「Ｈｏｗ  ｄｏｅｓ  ＬＣＤ  ｗｏｒｋｓ？」のＴＥＸＴがレイアウトされる。この時点での部分データ４００のブロック管理データ（図１３）には、開始行、最終行、最終レイアウト行として全て１行目が記録される。
【０２８５】
これだけでは、１ページ分に満たないとして、次に部分データ４０１をレイアウトする。部分データ４０１は、部分データ４００の最終レイアウト行、すなわち１行目に続いてレイアウトを行う。このとき、部分データ４００の最終要素として改行を指示するｂｒタグが検出される。このため、次の部分データ４０１は、新たな行の頭から表示レイアウトを作成すればよいことになる。すなわち、部分データ４００の最終要素としてｂｒタグが検出されたことにより、部分データ４００は次の部分データ４０１に影響を与えないことが検出される。
【０２８６】
部分データ４０１のレイアウトでは、最初にＰタグが存在するので、１行目を改行して、２行目を垂直スペース分の空行とし、３行目の行頭から「Ｌ」から始まる文字要素をレイアウトすることになる。
【０２８７】
部分データ４０１をレイアウトし終えた状態のレイアウト全体を、説明の為に仮に表示させたのが、図２１である。周囲の矩形が表示手段の表示範囲だとする。説明の為、行番号を矩形の左横に振っている。図２１は、５行目の「ｇｌａｓｓ．」で終わっている。部分データ４０１の最後にはｂｒタグなどは存在しないので、改行はされない。従って、この時点での部分データ４０１のブロック管理データは、開始行が２行目で、最終行と最終レイアウト行が５行目となる。
【０２８８】
これでも１ページ分に満たないので、次に部分データ４０２をレイアウトする。このとき、部分データ４０１の最終要素として改行を指示するｂｒタグは検出されず、また、部分データ４０２の先頭要素から、Ｐタグも検出されない。このことから、次の部分データ４０２は、前の部分データ４０１から影響を受けることが検出される。
【０２８９】
これにより、部分データ４０２は、部分データ４０１の最終レイアウト行、すなわち５行目において、レイアウトが途切れないようにレイアウトされる。つまり、部分データ４０２の「Ｗ」から始まる文字要素を５行目に追加してレイアウトしていく。
【０２９０】
そのようにしてレイアウトした結果が図２２である。部分データ４０１の最後の「ｇｌａｓｓ．」と部分データ４０２の最初の「Ｗｈｅｎ」が続けて１つの行にレイアウトされている。図５と比べてみても、全く同じようにレイアウトされ、元の電子データの意味する内容を損なわない表示結果が得られている。
【０２９１】
このように、部分データ４０１、４０２の順に処理する場合に、部分データ４０１が、部分データ４０２に影響を与えることが検出されると、部分データ４０１と部分データ４０２を個別に処理するのではなく、一続きのデータとして処理をする。その結果、例えば、部分データ４０１の最終レイアウト行において、レイアウトが途切れないように部分データ４０２をレイアウトするといったように、影響が反映された適切な処理結果を得ることができる。
【０２９２】
このように、前の部分データの最終レイアウト行に引き続いて、後の部分データをレイアウトしていくことで、改行などが入らない部分データの分け方をしていても、一続きのデータとして処理できるので、続けて自然にレイアウトすることができる効果が出てくる。
【０２９３】
次に、途中の部分データの途中の文字から表示する場合について説明する。図７の部分データ４０２の１０行目の「Ｅａｃｈ」を含む行から下に１ページ分の範囲を表示させるとする。この時点では、いずれの部分データの表示レイアウトも保存されていないとする。
【０２９４】
表示開始位置の指定は、実際には、「バイト位置１８０」などとバイト数で指定されているとする。これはリンクジャンプなどで指定されているとする。その位置を含む部分データは、図８の処理補助データ１０２の開始バイト１５０とバイトサイズ２０１から、処理補助データ１０２に対応する部分データ４０２だと分かる。
【０２９５】
部分データ４０２をレイアウトした状態が図２３である。最終的に「Ｅａｃｈ」を含む行から表示を開始するので、分かり易いように、最終表示状態に合わせてある。実際は、図２３の１、２行目は表示されないのは既に説明したとおりである。
【０２９６】
但し、図２２の部分データ４０２から生成した５〜９行目と比較すると、「Ｗｈｅｎ」が図２３では１行目の行頭（先頭）となっている。これは前の部分データ４０１に続いてレイアウトせず、言い換えれば、前の部分データ４０１の影響を考慮せず、部分データ４０２単独でレイアウトしても、指定された表示範囲について誤りの全く無い表示を得ることができる為である。
【０２９７】
このように、表示範囲によって、該当する部分データを単独で処理して表示レイアウトを得てもよいと判断する点も、本発明のデータ処理方法の特徴点である。すなわち、影響検出ステップの前に、所望の部分データの最初の表示レイアウト要素が、表示レイアウトの出力対象である表示媒体において行頭から表示されるか否かを調べるレイアウト調査ステップを実行し、上記最初の表示レイアウト要素が、行頭から表示される場合、前記影響検出ステップを実行しないようにしてもよい。上記行頭は、出力媒体の表示を開始する先頭位置でもよいし、表示途中の行の行頭であってもよい。
【０２９８】
例えば図２４において、「ＬＣＤ  ａｌｌｏｗｓ」で始まるパラグラフ（部分データ４０４に相当）の最初の表示レイアウト要素（ＬＣＤ）は、常に行頭から表示されるので、この部分データ４０４については、影響検出ステップを実行しなくても、誤りの無い表示結果を得ることができる。
【０２９９】
また、図２３・２４に示すように、「Ｗｈｅｎ」で始まるパラグラフ（部分データ４０２に相当）の任意の表示レイアウト要素（同図の場合、「ｐａｓｓ」）が表示範囲の先頭位置から表示される場合でも、部分データ４０２の表示結果には誤りが表れない。したがって、このような場合、すなわち部分データの任意の表示レイアウト要素が表示範囲の先頭位置から表示される場合に、その部分データについて影響検出ステップを実行しない点も、本発明の特徴点である。
【０３００】
続いて、これだけでは、１ページ分に満たないとして、部分データ４０３、４０４、４０５まで続けてレイアウトされるとする。図２４は部分データ４０５までレイアウトされた状態を説明する説明図である。この３行目から１５行目までが実際に表示される範囲である。
【０３０１】
この表示レイアウトは、図５と比べると、前半部の部分データ４０２・４０３の処理結果において異なっている。しかし、改行などは指示された通りにレイアウトされているので、ＨＴＭＬデータの表示としては、何も誤りは無い。ＨＴＭＬデータの先頭の部分データ４００、４０１をレイアウトしなくても、誤りが表れることなくＨＴＭＬデータをレイアウトすることができている。表示に必要な範囲だけをレイアウトすればよいので、高速、省リソースで誤りの無いレイアウトを生成することができるという特段の効果が出てくる。
【０３０２】
（データ処理装置の構成）
図１は、本発明の実施の一形態に係るデータ処理方法を実施するデータ処理装置を示す構成図である。
【０３０３】
より具体的には、データ処理装置の要部を、部分データ取得手段１、処理補助データ取得手段２、影響検出手段３、部分データ必要性判断手段４、レイアウト生成手段５、制御手段６、レイアウト保存手段７、レイアウト表示手段８、最前部分データ検出手段９、の主要な機能ブロックに展開して示すことができる。
【０３０４】
図２は、図１の各手段１〜９を具体的に実現する装置の構成例である。
【０３０５】
ＣＰＵ（ｃｅｎｔｒａｌ ｐｒｏｃｅｓｓｉｎｇ ｕｎｉｔ）７０は、影響検出手段３、部分データ必要性判断手段４、レイアウト生成手段５、制御手段６、レイアウト保存手段７、レイアウト表示手段８、最前部分データ検出手段９として機能し、これら各手段３〜９の処理手順が記述されたプログラムを主記憶７４、外部記憶７５または通信デバイス７７を介したネットワーク先などから得る。なお、ＣＰＵ７０は、必要なデータの読み出しや転送などのために、部分データ取得手段１および処理補助データ取得手段２としての機能も担っている。
【０３０６】
また、ＣＰＵ７０は、ＣＰＵ７０を含めてバス７９を通じ相互に接続されたディスプレイ７１、マウス７２、タブレット７３、主記憶７４、外部記憶７５、ボタン７６、通信デバイス７７、キーボード７８、スピーカ８０とデータのやりとりを行いながら、処理を行う。
【０３０７】
なお、データのやりとりは、バス７９を介して行う以外にも、通信ケーブルや無線通信装置などデータを送受信できるものを介して行ってもよい。また、各手段３〜９の実現手段としては、ＣＰＵに限らず、ＤＳＰ(ｄｉｇｉｔａｌ ｓｉｇｎａｌ ｐｒｏｃｅｓｓｏｒ)や処理手順が回路として組み込まれているロジック回路などを用いることもできる。
【０３０８】
ディスプレイ７１は、通常はグラフィックカードなどと組み合わされて実現され、グラフィックカード上にＶＲＡＭ（ｖｉｄｅｏ ｒａｎｄｏｍ ａｃｃｅｓｓ ｍｅｍｏｒｙ）を有し、ＶＲＡＭ上のデータを表示信号に変換して、モニターなどのディスプレイ（表示／出力媒体）に送り、ディスプレイは表示信号を画像として表示する。
【０３０９】
ユーザの指示を入力する手段として、マウス７２、タブレット７３、ボタン７６、キーボード７８などがあり、ユーザの指示はバス７９を介して各手段１〜９に入力される。この他にもマイクによる音声入力など、様々な入力手段が使用可能である。マウス７２は、マウスの移動方向と移動距離を検出する検出機器とボタンなどからなる。タブレット７３は、ペンとペン位置を検出する検出機器からなる。ボタン７６は、メカニカルもしくは電子的なスイッチなどからなる。キーボード７８は、ボタン（キー）の集まりからなり、押下したキーに応じた信号を生成する。
【０３１０】
主記憶７４は、通常はＤＲＡＭ（ｄｙｎａｍｉｃ ｒａｎｄｏｍ ａｃｃｅｓｓ ｍｅｍｏｒｙ）やフラッシュメモリなどのメモリデバイスで構成される。なお、ＣＰＵ内部に含まれるメモリやレジスタなども一種の主記憶として解釈してもよい。
【０３１１】
外部記憶７５は、ＨＤＤ（ｈａｒｄ ｄｉｓｋ ｄｒｉｖｅ）やＰＣ（ｐｅｒｓｏｎａｌ ｃｏｍｐｕｔｅｒ) カードなどの装脱着可能な記憶手段である。あるいはＣＰＵ７０とネットワークを介して有線または無線で接続された他のネットワーク機器に取り付けられた主記憶や外部記憶を外部記憶７５として用いることもできる。
【０３１２】
通信デバイス７７は、ネットワークインターフェースカードなどにより実現され、無線や有線などにより接続された他のネットワーク機器とデータをやりとりする。
【０３１３】
スピーカ８０は、バス７９などを介して送られて来る音声データを音声信号として解釈し、音声として出力する。出力される音声は、単波長の単純な音の場合もあるし、音楽や人間の音声など複雑な場合もある。出力する音声が予め決まっている場合、送られて来るデータは音声信号ではなく、単なるオン、オフの動作制御信号だけという場合もある。
【０３１４】
次に、図１の各手段１〜９を各手段間のデータ授受の観点から説明する。
【０３１５】
なお、各手段間でのデータのやりとりは、特に注釈なく「＊＊手段から得る」、「＊＊手段へ送る（渡す）」という表現をしている時は、主にバス７９を介してデータをやりとりしているとする。その際、直接各手段間でデータのやりとりをする場合もあれば、主記憶７４や外部記憶７５、通信デバイス７７を介したネットワーク先などを間に挟んでデータをやりとりする場合もある。
【０３１６】
部分データ取得手段１は、例えばＣＰＵ７０と主記憶７４または外部記憶７５などとで構成され、部分データを、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などから得る。この場合、予め用意してある部分データを読み出すことになる。
【０３１７】
なお、部分データ取得手段１は、例えば、部分データが予め用意されていない場合、読み出そうとする部分データに相当する部分のデータを、主記憶７４または外部記憶７５などに格納された電子データ中から探してきて、読み込むこともある。
【０３１８】
より具体的には、部分データ取得手段１は、処理補助データ取得手段２から処理補助データを取得し、その取得した処理補助データから、部分データに関する情報、例えば、各部分データの開始バイト位置とバイトサイズを読み取って、その情報に従って、電子データを部分的に読み出すことにより、目的の部分データを得ることができる。あるいは、部分データ取得手段１は、上記部分データに関する情報に加えて電子データを取得し、部分データに関する情報を用いて電子データを分割することにより、部分データを生成してもよい。
【０３１９】
得られた部分データは、影響検出手段３および／またはレイアウト生成手段５などに送られる。
【０３２０】
処理補助データ取得手段２は、例えばＣＰＵ７０と主記憶７４または外部記憶７５などとで構成され、処理補助データを、主記憶７４、外部記憶７５、または通信デバイス７７を介したネットワーク先などから得る。この場合、予め用意してある処理補助データを読み出すことになる。
【０３２１】
なお、処理補助データ取得手段２は、例えば、処理補助データの中から、必要な情報を抜き出す場合、処理補助データのデータ構造を解析して、必要な情報を求めることもある。得られた処理補助データは、部分データ取得手段１、影響検出手段３、レイアウト生成手段５および／または最前部分データ検出手段９などに送られる。
【０３２２】
影響検出手段３としてのＣＰＵ７０は、部分データ取得手段１から得られる部分データ、レイアウト生成手段５やレイアウト保存手段７から得られる部分データの表示レイアウトまたは処理補助データ取得手段２から得られる処理補助データなどを使って、所望の部分データとその直前の部分データとをそれぞれ単独に処理することが、処理結果（ここでは表示レイアウト）に影響を与えるかどうかを検出する。あるいは直前の部分データだけでなく、それより前の部分データからの影響も検出する場合もある。検出結果は、影響検出手段３から制御手段６に送られる。
【０３２３】
部分データ必要性判断手段４としてのＣＰＵ７０は、レイアウト表示手段８から得られる表示範囲と、制御手段６を介して得られる各部分データの表示レイアウトの範囲などとから、制御手段６で指定される部分データについて、その処理結果（表示レイアウト）が必要かどうかを判断し、判断結果を制御手段６に送る。
【０３２４】
レイアウト生成手段５としてのＣＰＵ７０は、制御手段６で指定される部分データを、部分データ取得手段１から得て、図１０の要素データや図１１の行データのような形式で、表示レイアウトを生成する。また、レイアウト生成手段５は、処理補助データ取得手段２から得た処理補助データを、レイアウト生成時に部分データと共に使う場合もある。生成された表示レイアウトは、レイアウト保存手段７に送られて保存されたり、レイアウト表示手段８に送られて表示されたりする。なお、部分データは、制御手段６から直接指定されず、レイアウト保存手段７を介して指定される場合もある。
【０３２５】
制御手段６としてのＣＰＵ７０は、各手段１〜５、７〜９を制御および指示し、また、必要なデータを各手段１〜５、７〜９とやりとりする。なお、図１では、制御手段６と各手段１〜５、７〜９との制御／指示、データのやりとりを示す線は、全て示すと図が見にくくなるので主要な線だけ示しているが、基本的に制御手段６と各手段１〜５、７〜９とは制御／指示、データなどを、双方向でやりとりを行っているとする。
【０３２６】
レイアウト保存手段７としてのＣＰＵ７０は、レイアウト生成手段５から得られる部分データの表示レイアウト（処理結果）を、主記憶７４や外部記憶７５、あるいは通信デバイス７７を介したネットワーク先の機器などに保存する。保存されている表示レイアウトは、レイアウト表示手段８、影響検出手段３および／または制御手段６に渡される。
【０３２７】
また、制御手段６からの指示に基づいて、制御手段６で指定された部分データの表示レイアウト生成を、レイアウト生成手段５に要請する場合もある。また、制御手段６からの指示に基づいて、制御手段６で指定された部分データの保存されている表示レイアウトを破棄したり、あるいはレイアウト生成手段５から新たに得る表示レイアウトで上書き保存したりする場合もある。
【０３２８】
なお、後で図１３などで説明する表示レイアウト生成に必要な情報は、レイアウト生成手段５、制御手段６およびレイアウト保存手段７のいずれが保存／管理するのでもよい。
【０３２９】
レイアウト表示手段８としてのＣＰＵ７０は、表示レイアウト生成手段５あるいはレイアウト保存手段７から得られる表示レイアウトをディスプレイ７１などに表示する。なお、ここではレイアウト表示手段８の出力動作をディスプレイ７１への表示として説明しているが、例えばプリンターへの印刷や、表示レイアウトを記録したファイルへのファイル出力などでもよい。
【０３３０】
最前部分データ検出手段９としてのＣＰＵ７０は、処理結果を得たい部分データを制御手段６から指定されたときに、その部分データに影響を与える最前あるいは最後の部分データを特定する情報を処理補助データ取得手段２から得て、制御手段６に送る。あるいは最前部分データ検出手段９は、制御手段６を通じて各部分データやその表示レイアウトを取得して、処理結果を得たい部分データに対する影響を判断して、影響を与える最前あるいは最後の部分データを求めて、制御手段６に送る。
【０３３１】
図３は、本発明に係るデータ処理装置の外観例を示している。本体１４０上に表示部兼タブレット１４１、前ページめくりボタン１４２および次ページめくりボタン１４３が設けられている。また、タブレットを操作するペン１４４も備えられている。
【０３３２】
表示部兼タブレット１４１は入出力装置（ディスプレイ７１およびタブレット７３等）、レイアウト表示手段８に相当する。表示部兼タブレット１４１上には、レイアウト生成手段５で生成された表示レイアウト、あるいはレイアウト保存手段７で保存されていた表示レイアウトが表示される。また、データ処理装置の各種設定メニューなどを表示して、表示部兼タブレット１４１を使って指やペン１４４などで設定を変更したりするのにも使われる。
【０３３３】
なお、各種設定などの操作手段として、表示部兼タブレット１４１だけでなく、操作ボタン類などがこの他にあってもよい。前ページめくりボタン１４２、次ページめくりボタン１４３は、表示部兼タブレット１４１上に表示されている表示レイアウトの表示範囲を切り替える際などに使う。ペン１４４は、リンクジャンプなどの操作や各種設定などのユーザ入力など様々に利用可能である。
【０３３４】
また、この例では示していないが、この他に、外部記憶７５としてメモリーカードなどのスロットや、ネットワークと通信する通信デバイス７７、マウス７２やキーボード７８、マイクなどの入力装置、スピーカ８０などの出力装置、などが本体１４０に付属する場合もある。
【０３３５】
（データ処理方法の詳細）
（処理例１）
図１４は、本発明の実施の一形態に係るデータ処理方法の一例を示すフローチャート図である。
【０３３６】
まずステップＳ１（以下、「ステップＳ」を「Ｓ」と略記する）では、処理補助データ取得手段２が、処理補助データを取得し、Ｓ２へ処理が進む。例えば、予め主記憶７４、外部記憶７５または通信デバイス７７を介したネットワーク先などに用意してある処理補助データを、処理補助データ取得手段２が読み込むとする。
【０３３７】
なお、図８に示す「影響有無」の判定処理、および図９に示す「影響ブロック」の決定処理については、図１８に示すフローチャートを参照して後述する。
【０３３８】
なお、ここでは各部分データの処理補助データを一度に読み込んでいるが、各ブロックの処理補助データが必要になる時点で個々に読み込むのでもよい。読み込まれた処理補助データは、図８のようなデータ構造であるとする。
【０３３９】
次にＳ２では、制御手段６が、所望の表示レイアウト範囲を、マウス７２、タブレット７３、ボタン７６またはキーボード７８等からのユーザ入力による情報として取得して、Ｓ３へ進む。表示レイアウト範囲は、例えば「基準位置」と「サイズ」とを組み合わせた形式で表現されるが、文書データのデータ範囲で示す場合と、表示手段上の表示サイズで示す場合の大きく２つ考えられる。
【０３４０】
文書データのデータ範囲で表示レイアウト範囲を示す場合、例えば、「文書データのｎバイト目からｍバイト目の間のデータ」という形、つまり「文書データ中の基準データ位置（ｎ）」と「データサイズ（ｍ）」の形になる。データ範囲で示される場合、所望の表示レイアウト範囲に対応する部分データを特定することは簡単である。これは、図８の処理補助データ中の各部分データの開始バイトとバイトサイズの情報を使えば、ｎバイト目、ｍバイト目がどの部分データ中なのかは簡単に求めることができるからである。
【０３４１】
一方、表示手段上の表示サイズで示す場合、例えば、「文書データのｎバイト目を基準に、下にｐドット分」という形、つまり「文書データ中のデータ位置」と「表示サイズ」の形になる。データ位置としてのｎバイト目がどの部分データ中なのかは、処理補助データなどを使えば簡単に求めることができるが、そこからｐドット分下の表示レイアウトを作成するのに必要な部分データを求めるのは簡単ではない。
【０３４２】
本発明では、部分データ間の表示レイアウトの影響を問題としているので、所望の表示レイアウト範囲に必要な部分データの範囲を求めることが重要となる。文書データのデータ範囲で示す場合は、必要な部分データは簡単に求まるので、以降では、処理の難しい、表示手段上の表示サイズで示す場合について説明する。
【０３４３】
なお、「文書データ中のデータ位置」と「表示サイズ」の形で表示レイアウト範囲を表す手法としては、様々なバリエーションがある。
【０３４４】
文書データ中のデータ位置は、例えば、スクロールバーなどの割合（パーセント）で表す方法も考えられる。しかし、割合は、文書データ全体のデータサイズ（バイト単位）が分かっていれば、相互に変換可能なので、結局、何バイト目かという表現と本質的に変わらない。従って、以降では何バイト目かという表現の仕方で説明する。
【０３４５】
また、バイト単位でなく、例えば「文字数」単位などで指定することも可能である。これも相互に変換可能である。１文字は一般に１〜３バイトで表されるので、バイト単位の方が「文字数」単位より細かいと言える。あるいは、「タグ」単位での指定も可能である。例えば、３番目に出てくるＰタグ、という形である。タグは文字で構成されるので、単位の大きさとしては、「バイト」≦「文字」≦「タグ」、となる。ここでは、上記３つの中で最も細かい指定が可能なバイト単位で、データ位置が指定されるとしておく。
【０３４６】
「表示サイズ」も同様に、文書データ全体の表示レイアウトサイズ（ドット）を１００％とした割合で表現することも可能で、それは表示範囲のドット数と相互変換可能なのはデータ位置の場合と同様である。しかし、部分データを使って処理する場合の利点は、文書データ全体を処理しなくても一部の部分データだけを処理することによる高速性や省リソース性が主となる。文書データ全体の表示レイアウトサイズを得るには、文書データ全体のレイアウト処理が必要となるので、この手法は部分データの利点を無意味にしてしまう。従って、表示サイズを割合で指定することは現実的でない。
【０３４７】
また、実際の利用シーンでも、スクロールバーやページめくりボタンなどで表示を指示する時、「表示サイズは表示手段に表示できる範囲」という意識で利用していることがほとんどである。従って、以降では何ドット分かという表現の仕方で表示サイズを処理するものとする。
【０３４８】
文書データ中のデータ位置と表示サイズとの関係でも、表示範囲のどこにデータ位置の基準を置くかで変わってくる。表示範囲の先頭に基準を置く場合は、「文書データのｎバイト目を基準に、下にｐドット分」という表現になり、表示範囲の内部に基準を置く場合は、「文書データのｎバイト目を基準に、上にｐドット分、下にｑドット分」という表現になり、表示範囲の最後に基準を置く場合は、「文書データのｎバイト目を基準に、上にｐドット分」という表現になる。
【０３４９】
その中で、本実施の形態では、「文書データのｎバイト目を基準に、上にｐドット分、下にｑドット分」という表現で所望の表示レイアウト範囲が得られるとする。なぜなら、ｐやｑが０の場合、先頭や最後に基準を置く場合と同等になるからである。
【０３５０】
なお、所望の表示レイアウト範囲がどのようにユーザから得られるかだが、まず表示サイズは、多くの場合、表示手段（表示ウィンドウ）の縦サイズＷＨ（ドット）と思って良いので、常にｐ＋ｑ＝ＷＨ、である。なお、ここでは主に横行のコンテンツを上下にスクロールさせながら読む使用状況を想定しているので、表示手段（表示ウィンドウ）の縦サイズＷＨを使ったが、縦行のコンテンツならば、横サイズを使えばよい。
【０３５１】
なお、以降、「ページ」は、表示手段（表示ウィンドウ）に表示されるだけの範囲や、表示手段（表示ウィンドウ）に表示されるだけの表示レイアウトを意味するとする。「前ページ」、「次ページ」は、現在のページの表示レイアウトの前あるいは次の１ページ分を意味するとする。「前ページ」や「次ページ」に表示範囲を切り替える操作を、「前ページめくり」、「次ページめくり」と表現する。
【０３５２】
文書データを最初に読む時は、先頭から１ページ分を読むのが普通なので、その場合、基準データ位置としてｎ＝０、となり（先頭は０バイト目とする）、上の表示レイアウトは無いので、ｐ＝０、ｑ＝ＷＨ、となる。
【０３５３】
リンクジャンプやページジャンプなどで所定の表示レイアウト範囲が指定される場合、ジャンプ先が指定されているはずなので、文書データ中のデータ位置は、そこから得られるはずである。例えば、ＨＴＭＬでは、リンク元で、Ａタグのｈｒｅｆ属性で、
「、、、＜Ａ  ｈｒｅｆ＝“＃ｔａｒｇｅｔ”＞リンク元＜／Ａ＞、、、」
として、リンク先の情報が示される。ここでは、同文書データ中の「ｔａｒｇｅｔ」という場所である。それに対応して、同文書データ中のどこかで、
「、、、＜Ａ  ｎａｍｅ＝“ｔａｒｇｅｔ”＞リンク先＜／Ａ＞、、、」
などと、Ａタグのｎａｍｅ属性で、「ｔａｒｇｅｔ」という場所が指定されているはずである。
【０３５４】
これによって、ＷＷＷブラウザなどでは、「リンク元」というＴＥＸＴの表示レイアウトをマウスでクリックなどすれば、「リンク先」を含む表示レイアウト範囲が表示される。すなわちリンクジャンプである。図３では、タブレット兼ディスプレイ１４１をペン１４４で、ユーザが操作することなどに相当する。
【０３５５】
この場合、「リンク先」の文字列の先頭文字（あるいはそれを囲むＡタグの先頭文字）が、文書データ中で何バイト目になるかは、制御手段６が事前に調べることができる。そこで、その情報を別途データベースやファイルなどに記録するなどしておき、「ｔａｒｇｅｔ」の場所が何バイト目かを制御手段６がすぐに知ることができるようにしておくとよい。図８の処理補助データのデータ構造に、新たな項目を追加して、記録しておいてもよい。
【０３５６】
事前に調べず、リンクジャンプ時に、文書データ全体を解釈して、「ｔａｒｇｅｔ」の場所を調べることもできるが、先に述べた表示レイアウトのパーセント指定の話と同様、部分データを使う利点が失われるので、事前に調べておくようにした方がよい。
【０３５７】
なお、スクロールバーなどで所定の表示レイアウト範囲が指定される場合、位置はパーセントなどの割合で指定されるが、その割合からデータ位置が求められれば、表示範囲に関しては、リンクジャンプと同等である。割合からデータ位置を求める方法としては、文書データ全体のデータサイズを１００％とする方法もあるが、他にも例えば、特願２００２−１３９３１０において本願発明者が提案しているが、表示レイアウトサイズの推定も一部含んでデータ位置を求める方法がある。
【０３５８】
リンクジャンプで、基準となるデータ位置が得られるとして、表示範囲をどうするかは、表示アプリケーションや表示装置によって異なる。多くのＷＷＷブラウザでは、基準となるデータ位置を表示範囲の先頭（ｐ＝０、ｑ＝ＷＨ）としているが、表示範囲の中央（ｐ＝ｑ＝ＷＨ／２）とする場合もある。
【０３５９】
なお、リンクジャンプ以外にも、例えば、しおり機能などでも同様の指定を行うことができる。表示アプリケーションや表示装置が、文書データの表示を終える時、最後に表示していた表示レイアウト範囲を、しおりデータなどとして外部記憶７５などに記録する。記録する内容は、「文書データ中のデータ位置」と「表示サイズ」の形式でよい。表示サイズが固定あるいは不要ならば、文書データ中のデータ位置だけでもよい。
【０３６０】
そして、次に表示アプリケーションや表示装置が文書データを表示しようとする時、レイアウト生成手段５等がしおりデータを読み込んで、得られた文書データ中のデータ位置などを所望の表示レイアウト範囲とすることで、前回、文書データの表示を終えた表示レイアウト範囲とほぼ同じ表示レイアウト範囲を表示することができるようになる。
【０３６１】
所望の表示レイアウト範囲をどのようにユーザから得るかに関して、文書データを最初に読む時と、リンクジャンプやページジャンプなどで所定の表示レイアウト範囲が指定される場合について説明したが、実際の利用では、前ページや次ページの表示レイアウト範囲を所望の表示レイアウト範囲とする利用シーンも多い。
【０３６２】
例えば、文書データを次ページめくりする場合は、「現ページの最終行の次行から、下に１ページ分」が所望の表示レイアウト範囲となる。次ページめくりの指示は、図３の次ページめくりボタン１４３を押すなどの操作で、ユーザによって入力されるとする。
【０３６３】
「現ページの最終行の次行」をデータ位置の形に変換することは可能だが、後でＳ３で説明する通り、データ位置が必要なのは、どの部分データに属するかを得る為でもあるので、ここでは無理にデータ位置の形には変換せず、「表示位置」＋「表示サイズ」の形式で指定するとする。「表示位置」は、表示レイアウト上の位置になるが、ここでは、「現ページの最終行の次行の開始位置」あるいは「現ページの最終行の最終位置」などという表現になる。
【０３６４】
この他、行間隔をどうするかとか、前のページの行と一部だぶらせるのかどうかとか、行の途中まで表示されている場合はどうするなど、どこから表示させるかという細かい仕様は、表示アプリケーションや表示装置によって様々である。本発明では「現ページの最終行の次行の開始位置」が「表示位置」として指定されるとする。
【０３６５】
同様に、前ページめくりの場合は、「現ページの開始行の前行の終了位置から１ページ分」を所望の表示レイアウト範囲とする。その他にも、１行だけ前後にスクロールしたり、所定ドットだけ前後にスクロールしたりなどという指定の仕方は様々考えられるが、指定の仕方はページめくりと基本が一緒なので、説明は省略する。
【０３６６】
以上のように、Ｓ２では、所望の表示レイアウト範囲が、「文書データ中のデータ位置」と「表示サイズ」の形式、あるいは、「表示位置」と「表示サイズ」の形式で指定されるとする。
【０３６７】
次に、Ｓ３では、制御手段６が、Ｓ２で得られる所望の表示レイアウト範囲の表示レイアウトを生成することのできる部分データ、言い換えれば、所望の表示レイアウト範囲に属する（該当する）部分データを求めて、カレント部分データに設定する。ここでは、Ｓ２で得られる基準データ位置を含む部分データを、図８の処理補助データから求めればよい。
【０３６８】
上記の「所望の表示レイアウト範囲に属する（該当する）部分データ」とは、一部分でも所望の表示レイアウト範囲に属する部分データを意味する。
【０３６９】
なお、レイアウトを取得した部分データを後でチェックする為、「取得開始部分データ」と「取得終了部分データ」という情報を設けておき、それらの情報として、上述のカレント部分データを設定しておく。ここでは、図１３に基づいて後述するブロック管理データのデータ番号３００等あるいはインデックス番号を設定しておけばよい。
【０３７０】
より具体的には、基準データ位置が「文書データ中のデータ位置」の形式の場合、ｎバイト目という形で指定されている。図８の処理補助データの各ブロックの開始バイトとバイトサイズを使って、
（部分データの開始バイト）≦ｎ＜（部分データの開始バイト）＋（部分データのバイトサイズ）
を満たす部分データを求めればよい。
【０３７１】
基準データ位置が、「表示位置」の形式の場合、現在表示している表示レイアウトの部分データが何かは分っているので、表示位置の部分データを求めればよい。これは表示している行データの範囲を管理する情報である、図１３のブロック管理データを使って求めることができる。表示している行データの範囲は、制御手段６やレイアウト表示手段８などで別途管理しているとする。
【０３７２】
例えば、「現ページの最終行の次行の開始位置」の場合、現ページの最終行とは、表示している最後の行データに相当する。この次行は、図１１の行データ配列で、「現ページの最終行」の次の行データを見れば分かる。
【０３７３】
もし、次の行データが存在するのならば、その行データの属する部分データをカレント部分データとすればよい。どの行データがどの部分データに属するかは、図１３のブロック管理データから、
（部分データの開始行）≦（行データ）≦（部分データの最終レイアウト行）
を満たす部分データを求めることで分かる。なおここで、不等号は、行データの前後順で判断するが、実際は、行データ配列中でのインデックス番号の大小で判断してもよい。
【０３７４】
もし、次の行データが存在しない場合は、まだその行データを生成する部分データの表示レイアウトが生成されていないことを意味するので、「現ページの最終行」の部分データの次の部分データをカレント部分データとすればよい。「現ページの最終行」の部分データは、図１３のブロック管理データから求められるので、その次の部分データである。
【０３７５】
Ｓ４では、部分データ必要性判断手段４が、カレント部分データの処理結果が、所望の表示レイアウト範囲の表示に必要かどうかを判断し、必要と判断されれば連結点Ｐ１０（以降、「連結点Ｐ」を「Ｐ」と略記する）を経てＳ５へ進み、必要でないと判断されればＰ２０を経てＳ６へ進む。ここでの処理の詳細は、後で説明する。このＳ４の処理は、特許請求の範囲に記載の部分データ必要性判断ステップに相当する。
【０３７６】
Ｓ５では、影響検出手段３、部分データ必要性判断手段４、レイアウト生成手段５、制御手段６、レイアウト保存手段７などが、カレント部分データの表示レイアウトを、影響を考慮して取得し、Ｐ２０を経てＳ６へ進む。
【０３７７】
「カレント部分データの表示レイアウトを、影響を考慮して取得する」とは、カレント部分データに影響を与える部分データなどとカレント部分データとを一続きのデータとして処理するようにして、影響が無いような表示レイアウトを生成する処理をすることである。ここでの処理の詳細は、後で説明する。
【０３７８】
なお、ここでの処理は、「影響検出処理」および「部分データ処理ステップ」などの本発明のポイントに関わる重要な処理を含んでいる。
【０３７９】
Ｓ６では、制御手段６が、所望の表示レイアウト範囲に関してＳ３で設定した「取得開始部分データ」の前の部分データが存在するかどうかを判断し、存在すればＳ７へ進み、存在しなければＳ８へ進む。
【０３８０】
例えば、図１３で、取得開始部分データが部分データ３０１だとすると、その前の部分データ３００が存在する。取得開始部分データが部分データ３００だとすると、その前の部分データは存在しない。
【０３８１】
Ｓ７では、制御手段６が、取得開始部分データの前の部分データをカレント部分データに設定し、Ｓ４へ戻る。
【０３８２】
Ｓ４からＳ７の繰り返し処理で、基準データ位置を含む所望の部分データから前方の部分データに関して、表示レイアウトの生成に必要と判断される部分データの処理結果（表示レイアウト）が得られる。
【０３８３】
Ｓ８では、制御手段６が、Ｓ３で設定した取得終了ブロックをカレント部分データに設定し直して、Ｓ１１へ進む。
【０３８４】
Ｓ１１では、制御手段６が、取得終了部分データの次の部分データが存在するかどうかを判断し、存在すればＳ１２へ進み、存在しなければＳ１３へ進む。部分データの存在を調べる方向は逆だが、Ｓ６と同様の処理である。
【０３８５】
Ｓ１２では、制御手段６が、取得終了部分データの次の部分データをカレント部分データに設定し、Ｓ９へ処理が戻る。
【０３８６】
Ｓ９では、部分データ必要性判断手段４が、カレント部分データの処理結果が、所望の表示レイアウト範囲の表示に必要かどうかを判断し、必要と判断されればＳ１０へ処理が進み、必要でないと判断されればＳ１１へ処理が進む。判断方法は、Ｓ４と同じである。このＳ９の処理も、特許請求の範囲に記載の部分データ必要性判断ステップに相当する。
【０３８７】
Ｓ１０では、影響検出手段３、部分データ必要性判断手段４、レイアウト生成手段５、制御手段６、レイアウト保存手段７などが、カレント部分データの表示レイアウトを、影響を考慮して取得し、Ｓ１１へ進む。Ｓ５とほぼ同様の処理である。
【０３８８】
Ｓ９からＳ１２の繰り返し処理で、基準データ位置を含む所望の部分データから後方の部分データに関して、必要と判断される部分データの処理結果が得られる。
【０３８９】
Ｓ１３では、レイアウト表示手段８が、Ｓ１〜Ｓ１２の処理によって取得された全ての必要な部分データの表示レイアウトを用いて、所望の表示レイアウト範囲の表示レイアウトを表示して、処理を終了する。
【０３９０】
「表示開始行データ」と「表示終了行データ」の情報を設定するための処理については後で説明するとして、Ｓ１〜Ｓ１３までの処理で設定されるとする。レイアウト表示手段８による表示処理は、表示開始行データから表示終了行データまで、順に表示手段上に表示するだけである。表示は表示レイアウト要素単位で行うとして、表示する行データ中の表示レイアウト要素配列中の各表示レイアウト要素を順に表示する。表示レイアウト要素の表示位置は、
（要素データのＸ座標）＝（要素データのオフセットＸ）
（要素データのＹ座標）＝（行データのＹ座標）＋（要素データのオフセットＹ）
で求まる。行データのＹ座標は、最初の表示開始行データのＹ座標を０とし、
（行データのＹ座標）＝（前の行データのＹ座標）＋（前の行データの高さ）＋（行間隔）
で求まる。行間隔は所定の値でもよいし、行データの高さに所定の割合を掛けた値でもよい。
【０３９１】
図１５は、図７の電子データを先頭から表示した表示レイアウトの例である。周囲の枠は、表示手段の表示範囲である。表示範囲を超える分については表示されていない。
【０３９２】
以上のＳ１からＳ１３の処理で、所望の表示レイアウト範囲に関して、分割の影響を考慮した表示レイアウトを生成して、表示することができるようになる。
【０３９３】
次に、図１４のＳ４の処理、すなわち、カレント部分データの処理結果が、所望の表示レイアウト範囲の表示に必要かどうかを部分データ必要性判断手段４が判断する処理（部分データ必要性判断ステップ）の詳細について説明する。
【０３９４】
まず、既に生成済みの表示レイアウトが所望の表示レイアウト範囲を満たすかどうかを判断する。既に生成済みの表示レイアウトは、図１１の行データ配列で管理されているので、この行データ配列で判断する。
【０３９５】
最初に基準データ位置の行データが存在するかどうかを調べる。
【０３９６】
基準データ位置が「文書データ中のデータ位置」の形式の場合、ｎバイト目という形で指定されている。図１０の要素データの「開始バイト」と「バイトサイズ」の情報を使い、
（要素データの開始バイト）≦ｎ＜（要素データの開始バイト）＋（要素データのバイトサイズ）
を満たす要素データを持つ行データを求める。行データ配列の各行データ、さらにその行データ中の要素データ配列の各要素データに関して、上式を満たすかどうかを、要素データ配列、行データ配列で順に調べていけばよい。
【０３９７】
基準データ位置が、「表示位置」の形式の場合、行として指定されているので、存在するかしないかはすぐに分かる。例えば、基準データ位置が「現ページの最終行の次行」であれば、現ページの最終行を図１１の行データ配列から探し、その次の行データが存在するかどうかを調べればよい。
【０３９８】
基準データ位置の行データが存在しない場合は、カレント部分データは必要と判断する。これは、図１４のフローチャートで、まず最初にＳ３で、基準データ位置の部分データを決めており、後のＳ５でその処理結果（表示レイアウト）を得るようにしているので、基準データ位置の部分データの処理結果が未だ存在しないということは、現在のカレント部分データは、Ｓ３で設定された基準位置の部分データであり、今から処理結果を得ようとしている部分データ（所望の部分データ）であることが分かるからである。
【０３９９】
基準データ位置の行データが存在する場合、その行データを持つ部分データを求める。これは図１３のブロック管理データから求まる。もし、基準データ位置の行データを持つ部分データが、判断対象のカレント部分データなら、当然、このカレント部分データは必要と判断される。
【０４００】
基準データ位置の部分データと比較して、判断対象のカレント部分データが前ならば、基準データ位置から所望の表示レイアウト範囲として指定された前方向のサイズ分（ｐドット）の表示レイアウトが既に存在するかどうかを調べる。
【０４０１】
すなわち、判断対象のカレント部分データの後の部分データの「開始行」から基準位置の行までのレイアウトの高さＰＨを、
（基準位置の行）
ＰＨ＝    Σ（（行データｉの高さ）＋（行間隔））
ｉ＝（開始行）
で求める。
【０４０２】
ｐ≦ＰＨならば、カレント部分データの後の部分データから、基準位置の部分データまでだけで、所望の表示レイアウト範囲として指定された前方向のサイズ分の表示レイアウトが生成できるということなので、カレント部分データは必要無いと判断できる。
【０４０３】
もし、ｐ＞ＰＨならば、カレント部分データの後の部分データだけでは上方向のレイアウトが足りないということなので、カレント部分データは必要ということになる。
【０４０４】
例えば、基準位置の部分データが図１３の部分データ３０４だとして、判断対象のカレント部分データが部分データ３０１だったとする。この場合、部分データ３０２の開始行から、部分データ３０４の基準位置の行データまでの高さを求めて、部分データ３０１の表示レイアウトが必要か否かを判断することになる。
【０４０５】
上述のカレント部分データが、基準位置の部分データ（所望の部分データ）の直前の部分データである場合、部分データ必要性判断ステップにおいて、所望の部分データの直前あるいは直後の部分データ（部分データ３０１）が必要かどうかの判断に、所望の部分データ（部分データ３０２）および連続する部分データ（部分データ３０３、３０４）の表示レイアウト（処理結果）を使っていることになる。
【０４０６】
若しくは、見方を変えて、上述のカレント部分データ（部分データ３０１）を所望の部分データとみなした場合には、所望の部分データが必要かどうかの判断に、所望の部分データの後に連続する一つ以上の部分データ（部分データ３０２〜３０４）の処理結果を使っていることになる。また、基準データ位置の部分データと比較して、判断対象のカレント部分データが後ならば、所望の部分データが必要かどうかの判断に、所望の部分データの前に連続する一つ以上の部分データの処理結果を使うことになる。
【０４０７】
基準データ位置の部分データと比較して、カレント部分データが後の場合も、前方向の判断方法と方向を逆にして考えれば、同様に処理できる。つまり、基準データ位置の行データから、カレント部分データの前の部分データの「最終レイアウト行」までのレイアウトの高さを求めて、所望の表示レイアウト範囲として指定された、基準データ位置から後方のサイズ分（ｑドット）と比較すればよい。
【０４０８】
このようにして、カレント部分データの表示レイアウトが、所望の表示レイアウト範囲に含まれるかどうかで、カレント部分データの表示レイアウトが必要かどうかを判断するＳ４の処理を行うことができる。
【０４０９】
本発明の部分データ必要性判断ステップにより、指定された処理範囲の処理結果を得るのに不要な部分データについては、影響検出ステップを実行しないことになるので、影響検出ステップの処理を簡易化することができ、処理の高速化に寄与する。
【０４１０】
図１６は、図１４のＳ５の処理、すなわちカレント部分データの表示レイアウトを、影響を考慮して取得する処理の一方法を説明するフローチャート図である。
【０４１１】
Ｐ１０を経たＳ５Ａ−１では、レイアウト生成手段５、制御手段６などが、Ｓ４で必要と判断されたカレント部分データの表示レイアウトを取得して、Ｓ５Ａ−２へ進む。取得した表示レイアウトをレイアウト保存手段７に記憶させておけば、必要に応じてカレント部分データの表示レイアウトを取り出すことができる。また、カレント部分データの表示レイアウトが、影響を考慮して作成し直された場合には、レイアウト保存手段７に記憶されたカレント部分データがクリアされたり、上書きして書き換えられたりする。
【０４１２】
なお、Ｓ５Ａ−１は、影響検出ステップの前に、所望の部分データの処理結果を取得して保持する本発明の部分取得ステップに相当する。
【０４１３】
レイアウト保存手段７は、カレント部分データの表示レイアウトが保存されていなければ、レイアウト生成手段５にカレント部分データの表示レイアウトの生成を求める。これに応じて、レイアウト生成手段５は、カレント部分データの表示レイアウトを生成して、生成した表示レイアウトをレイアウト保存手段７に渡す。レイアウト保存手段７は、レイアウト生成手段５から得られるカレント部分データの表示レイアウトを主記憶７４または外部記憶７５のような記録手段などに保存すると共に、制御手段６にカレント部分データの表示レイアウトを渡す。
【０４１４】
なお、レイアウト保存手段７を用いない場合は、その都度、レイアウト生成手段５で部分データの表示レイアウトを生成して、制御手段６に渡すことになる。
【０４１５】
Ｓ５Ａ−２では、部分データ必要性判断手段４が、カレント部分データの直前の部分データが、所望の表示レイアウト範囲を表示するために必要かどうかを判断し、必要であると判断されればＳ５Ａ−３へ進み、必要でないと判断されればＰ２０へ抜ける。必要かどうかの判断の仕方は、判断対象となる部分データがカレント部分データでなく、その直前の部分データになるだけで、Ｓ４の処理と同様である。
【０４１６】
なお、カレント部分データの直前の部分データの必要性判断の為に、カレント部分データの処理結果を得る場合には、直前の部分データが上記影響部分データに該当するとしても、直前の部分データとその特定された部分データとを一続きのデータとして処理しないことにする。
【０４１７】
なぜなら、もし直前の部分データがカレント部分データに対する前述の影響部分データに該当する時、カレント部分データの処理結果を得る前に直前の部分データの処理を行わなければいけないとすると、矛盾が起こるからである。
【０４１８】
つまり、直前の部分データが必要かどうかを判断する為に、カレント部分データの処理結果が必要とされる一方、カレント部分データの処理結果を得るために直前の部分データの処理結果が必要とされることになり、カレント部分データと直前の部分データの間で、互いの処理結果を必要とするという矛盾が起こる。あるいは無限の繰り返し処理が実行される。
【０４１９】
そこで、直前の部分データの必要性判断の為に、カレント部分データの処理結果を得る際には、直前の部分データが上記影響部分データに該当するとしても、直前の部分データを処理しないことにする。これにより、処理に矛盾や無限の繰り返しが発生することを防ぐことができる。
【０４２０】
Ｓ５Ａ−３では、影響検出手段３が、カレント部分データの表示レイアウトが、直前の部分データの表示レイアウトに影響を受けるかどうかを判断（影響検出ステップの実行）し、影響を受けると判断される場合はＳ５Ａ−４へ進み、影響を受けないと判断される場合はＰ２０へ抜ける。これにより、影響検出ステップで影響部分データが検出されない場合は、取得したカレント部分データの表示レイアウトを使った表示処理に進むことが可能になる。
【０４２１】
影響を受けるかどうかを判断するには、例えば、図８の処理補助データを利用する方法がある。図８の「影響有無」の項は、各部分データの処理結果に影響を与えるかどうかに関する情報（影響情報）であり、ここでは、各部分データが直前の部分データに影響を受けるかどうかを表している。
【０４２２】
また、図８の「開始タグ補助情報」は、前述のように、ある着目した部分データについて、効力が継続中の開始タグの存否を表している。例えば、部分データ４０２に着目すると、その部分データ４０２に対応する処理補助データ１０２には、＜ｆｏｎｔ  ｓｉｚｅ＝“＋１”＞という開始タグ補助情報が含まれている。従って、＜ｆｏｎｔ  ｓｉｚｅ＝“＋１”＞という開始タグ補助情報を影響検出ステップの実行時に影響検出手段３が検出することにより、部分データ４０２には、＜ｆｏｎｔ  ｓｉｚｅ＝“＋１”＞という開始タグの効力が継続中であると、判定することができる。この結果、直前の部分データ４０１を影響部分データの候補にすることができる。
【０４２３】
部分データ４０１に対して、部分データ４００が影響部分データになるかどうかは、同様に、部分データ４０１に対応する処理補助データ１０１を調べればよい。すると、処理補助データ１０１には、＜ｆｏｎｔ  ｓｉｚｅ＝“＋１”＞という開始タグ補助情報が含まれていないので、部分データ４０１が、その開始タグを保有している最前の影響部分データであると判定することができる。これにより、部分データ４０２の表示レイアウトを得るには、部分データ４０１・４０２を一続きのデータとして処理すればよいことが判る。
【０４２４】
なお、所望の部分データの直前あるいは直後の部分データは、所望の部分データの処理結果に影響を与える可能性が相対的に大きいため、直前あるいは直後の部分データから調べ始めることは、影響部分データの検出効率を高めることになる。従って、所定の処理結果を得るのに必要が無い部分データを、影響部分データの検出対象にするような無駄な処理を抑制する効果が得られる。
【０４２５】
処理補助データを使わない場合は、部分データや表示レイアウトを直接調べて判断するしかない。判断の仕方については、後で図１８を用いて、表示レイアウトの生成の仕方についての説明と合わせて説明する。
【０４２６】
一般に、部分データや表示レイアウトを直接調べて判断するよりも、予め作成済みの処理補助データ上の影響に関する情報を使って判断する方が、高速、省リソースで判断できる利点が出てくる。
【０４２７】
Ｓ５Ａ−４では、直前の部分データを一時的にカレント部分データとして設定し、Ｓ５の処理を行い、カレント部分データの設定を戻して、Ｓ５Ａ−５へ進む。Ｓ５Ａ−４の処理は、Ｓ５Ａ−１からＳ５Ａ−５の処理を繰り返す、いわゆる再帰的な処理となる。
【０４２８】
この繰り返し処理は、Ｓ５Ａ−２やＳ５Ａ−３で、カレント部分データ（一時的なものも含む）の直前の部分データが必要でないと判断されるか、影響を与えないと判断されるまで、繰り返されることになる。簡単に言えば、影響のある前のブロックを全て処理するまで遡って処理する（繰り返す）ということである。
【０４２９】
Ｓ５Ａ−５では、レイアウト生成手段５が、カレント部分データの表示レイアウトを生成して、レイアウト保存手段７やレイアウト表示手段８に渡して、Ｐ２０へ抜ける。
【０４３０】
以上のＳ５Ａ−１からＳ５Ａ−５の処理によって、図１４のＳ５の処理、すなわちカレント部分データの表示レイアウトを、影響を考慮して取得し直す処理を行うことができる。
【０４３１】
また、Ｓ５Ａ−１からＳ５Ａ−５の処理を繰り返す再帰的な処理によって、所望の部分データに対する影響部分データ、その影響部分データにさらに影響する影響部分データのように、影響を与え合う全ての部分データが抽出され、それらの部分データがレイアウト生成手段５によって一続きのデータとして処理される。従って、Ｓ５Ａ−１からＳ５Ａ−５の処理を繰り返す再帰的な処理が、本発明の部分データ処理ステップに相当し、レイアウト生成手段５が、本発明の部分データ処理手段に相当する。
【０４３２】
また、Ｓ５Ａ−１からＳ５Ａ−５の処理を繰り返す再帰的な処理において、カレント部分データの表示レイアウトを新たに取得してレイアウト保存手段７に保持し直すときに、影響部分データからカレント部分データまでの範囲を一続きのデータとして処理したという情報を、処理補助データ１００〜１０８、６００〜６０８等のように、カレント部分データの処理結果に関連付けて保持しておくとよい。
【０４３３】
これにより、一続きのデータとして処理したという情報を参酌することができ、カレント部分データの表示レイアウトを後で使う場合に、改めて影響検出ステップを実行する必要が無くなり、処理の効率化を図ることができる。
【０４３４】
図１７は、図１４のＳ５の処理、すなわちカレント部分データの表示レイアウトを、影響を考慮して取得する処理の別の一方法を説明するフローチャート図である。
【０４３５】
Ｐ１０を経たＳ５Ｂ−１では、最前部分データ検出手段９が、カレント部分データの表示レイアウトに影響を与える最前の部分データを求めて（影響検出ステップの実行）、Ｓ５Ｂ−２へ進む。カレント部分データが前の部分データに影響を受けない場合は、最前の部分データは、カレント部分データ自身とする。
【０４３６】
影響を受ける最前の部分データを求めるには、Ｓ５Ａ−３同様、例えば、図９の処理補助データを利用する方法がある。図９の「影響ブロック」の項は、各部分データの処理結果に影響を与える部分データに関する情報であり、ここでは、各部分データが影響を受ける最前の部分データを表す。図９では、対応が分かり易いように部分データのデータ番号ではなく、処理補助データのデータ番号を記しているが、部分データと処理補助データは１対１対応なので、どちらを使ってもよい。
【０４３７】
処理補助データを使わない場合は、Ｓ５Ａ−３同様、部分データや表示レイアウトを直接調べて判断するしかない。判断の仕方の詳細については、後で図１８を用い、表示レイアウトの生成の仕方についての説明と合わせて説明する。
【０４３８】
図９に示すような処理補助データを使う利点に関しては、Ｓ５Ａ−３で説明した利点と同様である。
【０４３９】
Ｓ５Ｂ−２では、Ｓ５Ｂ−１で得られた最前の部分データから、カレント部分データまでを一続きのデータとみなして、順に表示レイアウトを生成し、Ｐ２０へ抜ける。従って、Ｓ５Ｂ−２は、本発明の部分データ処理ステップに相当する。ここでは、レイアウト保存手段７に保存されている表示レイアウトは使わず、全て生成するとする。
【０４４０】
なお、ここでは処理を簡単にする為、保存されている表示レイアウトは使わず、全て生成する方法で説明したが、保存されている表示レイアウトが、最前の部分データの影響を受けて生成されたものであることを確認できるようにすれば、保存されている表示レイアウトを使ってもよい。
【０４４１】
以上のＳ５Ｂ−１からＳ５Ｂ−２の処理によって、図１４のＳ５の処理、すなわちカレント部分データの表示レイアウトを、影響を考慮して取得する処理を行うことができる。
【０４４２】
図１６と図１７の処理の違いについては、後で説明する。
【０４４３】
図１８は、部分データから表示レイアウトを生成する処理の詳細を説明するフローチャートである。図１６のＳ５Ａ−５などの処理に相当する。処理結果としての表示レイアウトを生成する処理は、アプリケーションなどの目的や電子データにより様々であるが、ここではＷＷＷブラウザの様に、図４、図７のＨＴＭＬデータから表示レイアウトを生成して表示する処理について説明する。
【０４４４】
図１８の処理は、１つの部分データと、「影響有無」の情報を持たない処理補助データとから表示レイアウトを生成する処理である。所望の部分データの直前の部分データの表示レイアウトが存在していて、所望の部分データの処理結果に影響がある場合は、直前の部分データの表示レイアウトに続けて追加する形で所望の部分データの表示レイアウトを生成する。
【０４４５】
一般に、ＸＨＴＭＬ形式やＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）形式の文書データは、タグを使って木構造（階層構造）のデータを表現できるが、ＸＭＬ形式の文書データ（ＸＭＬデータ）を処理する方法として、ＤＯＭ（ｄｏｃｕｍｅｎｔ  ｏｂｊｅｃｔ  ｍｏｄｅｌ）やＳＡＸ（ｓｉｍｐｌｅ  ＡＰＩ  ｆｏｒ  ＸＭＬ）などのＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）が存在する。
【０４４６】
ＤＯＭを使う場合、最初にＸＭＬデータを全て読み込み、木構造のデータをメモリ中などに作成する。この木構造のデータにアクセスすることで、任意の階層の任意の要素データに素早くアクセスすることができる。ＸＭＬデータを処理する場合は、この階層を順に辿って解釈して、表示レイアウトを生成する。
【０４４７】
また、ＳＡＸを使う場合、木構造のデータは生成せず、開始タグ、ＴＥＸＴ、終了タグを読み込んだ時点で、読み込んだ開始タグ、ＴＥＸＴ、終了タグの解釈を行い、表示レイアウトを生成する。
【０４４８】
どちらの方法を使っても、タグなどの解釈が一緒ならば、同じ表示レイアウト結果が得られる。表示レイアウトを生成するという観点に絞って考えれば、今解釈しているデータがどの階層に存在しているかで処理結果が変わるような場合、ＤＯＭでは、ＡＰＩ側で階層構造の情報を木構造として保持しているので、どの階層にいるかの情報が得やすい。ＳＡＸは、ＡＰＩ側では階層構造のデータは保持していないので、必要に応じて、処理側で階層構造の情報を保持する必要がある。但し、ＤＯＭは文書データの全ての情報を木構造のデータとして保持するので、処理時間がかかったり、データ格納領域が多く必要になったりという欠点がある。
【０４４９】
本発明のように、高速、省リソースの処理を目的としている場合、ＳＡＸで処理する方が望ましい。しかし、ＳＡＸの処理方法は、データの読み込みと処理とが一体になって、説明が分かりづらくなるので、ここではＤＯＭを使って処理する方法で説明する。
【０４５０】
まず、ステップＳＬ１（以降、「ステップＳＬ」を「ＳＬ」と略記する）で、レイアウト生成手段５が、カレント部分データの処理補助データから開始タグ補助情報を読み込んで、ＳＬ２へ処理が進む。開始タグ補助情報は、図８の処理補助データから得られる。なお、図１８の各ステップの動作主体は、全てレイアウト生成手段５なので、以降は各ステップでの動作主体の記述は省略する。
【０４５１】
ＳＬ２では、カレント部分データを読み込んで、ＳＬ３へ処理が進む。
【０４５２】
ＳＬ３では、カレント部分データの処理補助データから終了タグ補助情報を読み込んで、ＳＬ４へ処理が進む。
【０４５３】
以上のＳＬ１からＳＬ３で、カレント部分データを解釈するのに必要な文書データが得られる。ここでは、ＤＯＭでこれらの文書データを処理して、木構造のデータが生成されるとする。なお、処理補助データの開始タグ補助情報や終了タグ補助情報を使わない場合は、部分データ自体に開始タグ補助情報や終了タグ補助情報が埋め込まれた形、つまり、分割されたＨＴＭＬデータの前後に足りない開始タグや終了タグの文字列を付加したデータになっているとする。
【０４５４】
ＳＬ４では、読み込んだ文書データから、カレント部分データにおける全ての表示レイアウト要素を生成して、ＳＬ５へ処理が進む。木構造のデータから、各階層のタグやＴＥＸＴを順に解釈して、図１０の形式の表示レイアウト要素を生成していくことで、全ての表示レイアウト要素を生成する。各要素の位置など、まだ決定されない部分は空白にしておく。生成された表示レイアウト要素は、生成順の配列（以降、「生成表示レイアウト要素配列」と呼ぶことにする）で、一時的に保持しておく。
【０４５５】
どのように表示レイアウト要素が生成されるかは、各タグやＴＥＸＴによるが、図４の文書データで出てくる個々のタグの表示のされかたなどについては、既に説明したので、ここでは木構造データが表示レイアウト要素としてどのように生成されるかについて、階層を追って説明しておく。
【０４５６】
木構造データの各階層を上から順に、また各階層内に含まれるＴＥＸＴを１文字ずつ順に解釈しながら、要素を生成していくのだが、現在の表示状態を表すデータとして、文字の大きさと文字色が必要となる。最初は、標準の文字の大きさと文字色となる。これはアプリケーションや装置によって、標準設定を定めておく。ユーザによって、標準文字の大きさなどが設定されている時は、そちらを優先する。例えば、標準設定で、文字の大きさが１０ポイント、文字色が黒だとする。
【０４５７】
例えば、図４の２，３行目の「＜ｆｏｎｔ  ｃｏｌｏｒ＝“ｒｅｄ”  ｓｉｚｅ＝“＋３”＞Ｈｏｗ  ｄｏｅｓ  ＬＣＤ  ｗｏｒｋｓ？＜／ｆｏｎｔ＞」から生成される階層を解釈する際、この階層ではｃｏｌｏｒ属性がｒｅｄなので、文字色を赤とし、ｓｉｚｅ属性が＋３なので、文字の大きさを３段階大きくする。ここでは、１段階大きくなる毎に２ポイント大きくなるとして、１６ポイントの大きさになるとする。
【０４５８】
次に、この階層のＴＥＸＴ「Ｈｏｗ  ｄｏｅｓ  ＬＣＤ  ｗｏｒｋｓ？」を順に１文字ずつ解釈する。１文字毎に図１０の文字要素（種類「ＣＨＡＲ」）を生成し、文字コードを「内容」に設定し、文字コードと文字の大きさから「幅」と「高さ」を設定する。図１０に示す文字要素のデータ構造例には、文字色の情報は無いが、ここでは、表示レイアウト要素データに文字色の項を設けて、設定しておくとする。また、「開始バイト」、「バイトサイズ」も木構造データを生成する時に調べておけば、設定することができる。「オフセットＸ」、「オフセットＹ」は、まだ位置が定まっていないので空白としておく。生成した文字要素を順に生成表示レイアウト要素配列に追加していく。
【０４５９】
そして、この階層の処理が終わる時、文字の大きさと文字色を標準設定（１０ポイントと黒）に戻す。
【０４６０】
次の階層は、図４の３行目のｂｒタグの階層だが、これは改行を示すだけである。まだここでは各要素の位置や属する行データは定まっていないので、とりあえず、文字コードとして改行コードを持つ文字要素としておく。それ以外の項は特に設定しなくてもよい。
【０４６１】
次の階層は、図４の５行目から１６行目までのｆｏｎｔタグの階層だが、ここでは文字色は黒のままで、文字の大きさが標準サイズから１段階大きくなって、１２ポイントとなる。
【０４６２】
その下の階層は、図４の６行目から１５行目までのｐタグの階層だが、開始タグで多少の垂直スペースと改行、終了タグで改行と多少の垂直スペースとして表示されるので、ここでは、表示手段の幅と同じ幅を持つ文字要素と、改行コードの文字要素とを生成するとする。先の文字要素の高さは垂直スペース分（例えば、その時点の文字の大きさ分など）とし、内容には「空白」を設定しておく。なお、空白の文字要素ではなく、図１０には無いが、「ＶＳＰＡＣＥ」という種類の垂直スペース要素を新たに作る方法もある。
【０４６３】
ｐタグの階層のＴＥＸＴは、文字の大きさ１２ポイント、文字色が黒として、１文字ずつ文字要素を生成する。
【０４６４】
また、図４の２８行目のＩＭＧタグの階層では、画像要素（図１０の種類ＩＭＡＧＥ）を生成し、指定されているファイル名の画像ファイルを読み込んで、画像データを展開して内容データに設定し、画像の大きさを幅と高さとして設定する。開始バイト、バイトサイズも他の要素データ同様、設定しておく。ａｌｉｇｎ属性で回り込みが指定されている場合は、それが分かるように、図１０に示す表示レイアウト要素のデータに、画像要素の回り込みの項を追加して設定したり、あるいは回り込み画像用の種類を新たに設定（ａｌｉｇｎがｒｉｇｈｔの場合に、ＲＩＭＡＧＥとするなど）したりなどの方法で、後で識別できるようにしておく。
【０４６５】
（６）ＳＬ５では、次の部分データの表示レイアウト要素を前の部分データの表示レイアウト要素に続けて追加可能な行データ（以下、単に追加可能な行データと呼ぶ）が存在すれば、その行データをカレント行データに設定して、ＳＬ６へ進む。もし、追加可能な行データが存在しない場合は、新しい行を作って行データ配列に追加し、新しい行をカレント行に設定する。
【０４６６】
追加可能な行データとは、言い換えれば、直前の部分データの表示レイアウトが存在し、かつ、最終レイアウト行が改行で終わっていない行データである。最終レイアウト行は、図１３のブロック管理データから得られる。従って、直前の部分データのブロック管理データに最終レイアウト行が設定されていなければ（空白ならば）、追加可能な行データは存在しないと判断して、新しい行データを作成すればよい。
【０４６７】
カレント行が設定されたら、次の部分データのブロック管理データの開始行として、カレント行を設定しておく。
【０４６８】
新しい行データの、幅、高さ、要素配列は空白でよい。要素数も０である。配置可能開始位置、配置可能終了位置は、予め決まった値にすることが多い。例えば、配置可能開始位置を０、配置可能終了位置を表示手段の幅にするなどである。あるいは、左右に空白（マージン）を設ける為に、配置可能開始位置を左マージン量、配置可能終了位置を表示手段の幅から右マージン量を引いた値にする場合もある。次要素配置位置は、配置可能開始位置にする。
【０４６９】
ＳＬ６では、最初の表示レイアウト要素をカレント要素に設定して、ＳＬ７へ処理が進む。ＳＬ４で作成した生成表示レイアウト要素配列の最初の要素を使えばよい。
【０４７０】
ＳＬ７では、カレント要素は改行かどうかを判断し、改行ならばＳＬ８へ処理が進み、改行でないならばＳＬ１０へ処理が進む。ここでは、改行コードの内容をもつ文字要素かどうかで判断すればよい。
【０４７１】
ＳＬ８では、カレント行に改行属性を設定して、ＳＬ９へ処理が進む。改行属性は、図１１の行データに「改行属性」の項を追加してもよいし、次要素配置位置の項の値を、配置可能終了位置以上の値にしておいて、その行に要素を追加できないようにしておくことで、同等の機能を持たせるのでもよい。
【０４７２】
ＳＬ９では、カレント行の次の行データが存在していれば、その行をカレント行データに設定し、存在していなければ、新たな行データを生成して、行データ配列に追加し、カレント行データに設定し、ＳＬ１７へ進む。
【０４７３】
ＳＬ８、ＳＬ９の処理で、カレント行が次の行になるので、改行したことになる。なお、ＳＬ９でカレント行を更新しているのに、ＳＬ８で改行属性などを設定する理由は、もし部分データの次の要素が存在しない場合、ＳＬ８で改行属性を設定した行が最終レイアウト行となるが、その行に次の部分データの要素を追加されることを防止する為である。
【０４７４】
なお、カレント行を更新する際は、古いカレント行の高さ、カレント行中の各要素のオフセットＹなどを設定する必要がある。各要素の中で最も高さが大きいものが、行の高さとなる。但し、回り込み画像は勘定に入れない。回り込み画像の高さと行の高さに関する処理は、後で説明する。図１２の例では、最初の「Ｈ」など大文字の文字要素の高さが、行の高さＬＨとなっている。各要素のオフセットＹは、（行の高さ）−（要素の高さ）、となる。図１２の例では、行範囲の矩形５００の上辺と各要素の上辺の隙間がオフセットＹとなる。
【０４７５】
新しい行データの各項の設定は、ＳＬ５での説明した設定と同様でよいが、回りこみ画像がある場合は多少、異なる。回り込み画像がある場合の設定については、後で説明する。
【０４７６】
ＳＬ７でカレント要素が改行でなかった場合、ＳＬ１０では、カレント要素は回り込み画像かどうか判断し、回り込み画像ならばＳＬ１１へ進み、回り込み画像でないならば、ＳＬ１３へ進む。回り込み画像かどうかは、ＳＬ４で、ＩＭＧタグから要素データを生成する時に説明した方法で判断する。
【０４７７】
ＳＬ１１では、回り込み画像の要素をカレント行に配置可能かどうかを判断し、配置可能ならばＳＬ１６へ進み、配置不可能ならばＳＬ１２へ進む。右端に配置させる要素（ａｌｉｇｎ＝“ｒｉｇｈｔ”）ならば、カレント行で、
（画像要素の幅）≦（配置可能終了位置）−（次要素配置位置）
の時、配置可能と判断すればよい。左端に配置させる要素（ａｌｉｇｎ＝“ｌｅｆｔ”）ならば、カレント行で、
（配置可能開始位置）＝（次要素配置位置）
ならば、配置可能と判断すればよい。
【０４７８】
ＳＬ１２では、カレント行の次の行データが存在していれば、その行をカレント行データに設定し、存在していなければ、新たな行データを生成して、行データ配列に追加し、カレント行データに設定し、ＳＬ１１へ戻る。ここでの処理は、ＳＬ９と同様である。
【０４７９】
ＳＬ１１、ＳＬ１２の処理で、画像要素の横幅が納まり切る配置可能な行が求まるまで、繰り返し処理することになる。
【０４８０】
ＳＬ１６では、回り込み画像をカレント行に配置して、行データの配置可能開始位置あるいは配置可能終了位置を更新して、ＳＬ１７へ処理が進む。
【０４８１】
画像要素の配置位置（オフセットＸ）は、右端に配置させる画像要素（ａｌｉｇｎ＝“ｒｉｇｈｔ”）ならば、
（オフセットＸ）＝（配置可能終了位置）−（画像要素の幅）
であり、左端に配置させる要素（ａｌｉｇｎ＝“ｌｅｆｔ”）ならば、
（オフセットＸ）＝（配置可能開始位置）
である。
【０４８２】
画像要素の配置位置を設定した後、カレント行の行データを更新する。右端に配置させる画像要素（ａｌｉｇｎ＝“ｒｉｇｈｔ”）ならば、
（新しい配置可能終了位置）＝（以前の配置可能終了位置）−（画像要素の幅）
に、左端に配置させる要素（ａｌｉｇｎ＝“ｌｅｆｔ”）ならば、
（新しい配置可能開始位置）＝（以前の配置可能開始位置）＋（画像要素の幅）
に行データを更新する。これにより、行の画像部分には、他の要素が配置されなくなる。
【０４８３】
なお、ＳＬ１１で配置可能と判断されても、行の幅よりも大きな幅の画像要素は、どの行でも収まりきることはできないので、収まりきらない分は表示されないことになる。
【０４８４】
ＳＬ１３では、カレント要素がカレント行に追加配置可能かどうか判断し、可能ならばＳＬ１５へ進み、不可能ならばＳＬ１４へ進む。追加配置可能かどうかは、
（次要素配置位置）＋（カレント要素の幅）≦（配置可能終了位置）
を満たすかどうかで判断する。つまり、次要素配置位置の右隣に、カレント要素が配置できるだけの幅が残っているかどうかを判断する。
【０４８５】
ＳＬ１４では、カレント行の次の行データが存在していれば、その行をカレント行データに設定し、存在していなければ、新たな行データを生成して、行データ配列に追加し、カレント行データに設定し、ＳＬ１５へ進む。ここでの処理は、ＳＬ９と同様である。
【０４８６】
ＳＬ１５では、カレント要素をカレント行の次要素配置位置に配置して、次要素配置位置の値を更新して、ＳＬ１７へ進む。つまり、
（カレント要素のオフセットＸ）＝（カレント行の次要素配置位置）
と設定し、
（新しいカレント行の次要素配置位置）＝（以前のカレント行の次要素配置位置）＋（カレント要素の幅）
と更新する。
【０４８７】
配置処理を表示レイアウト的に表現すれば、例えば文字要素が配置される場合、ＳＬ１３で追加配置可能であれば、カレント行の末尾に文字が追加され、追加配置不可能であれば、次の行の行頭に配置される、などという処理が行われる。
【０４８８】
ＳＬ１７では、次の表示レイアウト要素が生成表示レイアウト要素配列に存在するかどうか判断し、存在するのならばＳＬ１８へ進み、存在しないのならば、ＳＬ１９へ進む。
【０４８９】
ＳＬ１８では、生成表示レイアウト要素配列中の次の表示レイアウト要素をカレント要素に設定して、ＳＬ７へ戻る。
【０４９０】
ＳＬ１９では、部分データのブロック管理データの終了行、最終レイアウト行および処理補助データ、並びに処理補助データの影響有無を設定して、表示レイアウト生成処理を抜ける。
【０４９１】
最後の要素がレイアウトされた行が最終レイアウト行であるから、最終レイアウト行としては、カレント行を設定する。最終行には、この部分データの全てのレイアウト行中の最後のレイアウト行を設定する。ブロック管理データの処理補助データには、ここでは図１３のように、処理補助データのインデックス番号（１００〜１０８）を設定しておく。
【０４９２】
図８の処理補助データの影響有無については、最終レイアウト行が改行で終わっている場合は影響無し、改行で終わっていない場合は影響有りと設定する。最終レイアウト行が改行で終わっているかどうかは、最終レイアウト行が改行属性を持っているかどうかで判断できる。
【０４９３】
なお、影響有無として、改行だけでなく、回り込み画像も考慮に入れる場合は、新たな行を回り込んでレイアウトできるような余地を残すかどうかで判断すればよい。最終レイアウト行が終了行と一致する場合、次にレイアウト要素を追加する場合は、終了行もしくは次の新たな行にレイアウトするしかないので、この場合は影響が無いと判断する。最終レイアウト行と終了行が一致しない場合は、最終レイアウト行の次の行に追加することが可能なので、影響があるとする。
【０４９４】
なお、図９の影響部分データ（最前の影響部分データを表す）は、各部分データの処理補助データの影響有無の項から求めることができる。あるブロックに影響を与える最前の影響部分データを求めるには、着目している部分データより前の部分データのブロック管理データの影響有無を順に見て、影響有がどこまで続いているかみればよい。
【０４９５】
例えば、着目している部分データの影響有無が「無」だったら、その部分データは前の部分データから影響を受けないので、影響部分データはその部分データ自身と設定しておけばよい（例えば、図８の処理補助データ１０４と図９の処理補助データ６０４との対応）。
【０４９６】
また、例えば、着目している部分データの影響有無が「有」で、１つ前の部分データの影響有無が「無」であれば、着目している部分データの最前の影響部分データは１つ前の部分データとなる（例えば、図８の処理補助データ１０７と図９の処理補助データ６０７との対応）。
【０４９７】
さらに例えば、着目している部分データおよび１つ前の部分データの影響有無が「有」で、２つ前の部分データの影響有無が「無」になっていたら、その部分データの影響部分データは２つ前の部分データとなる（例えば、図８の処理補助データ１０３と図９の処理補助データ６０３との対応）。
【０４９８】
以上のＳＬ１からＳＬ１９の処理で、部分データの表示レイアウトが生成される。
【０４９９】
図１２の例で表示レイアウト生成処理を説明すると、まず、カレント行が生成され、配置可能開始位置と次要素配置位置が図１２の位置５０２に、配置可能終了位置が位置５０４に設定される。次に最初の文字「Ｈ」がカレント要素となり、「Ｈ」の幅はカレント行に収まるので、位置５０２に配置される。次要素配置位置は、「Ｈ」の幅だけ増加し、位置５０３となる。次の文字「ｏ」がカレント要素になり、位置５０３に配置され、次要素配置位置は位置５０６となる。このようにして、最後の文字「？」が配置されて、次要素位置は位置５０７となる。
【０５００】
部分データ４００では、その後、ｂｒタグによる改行文字がカレント要素となり、カレント行に改行属性を設定する（次要素配置位置を位置５０４にする）。そして、新しい行が生成され、その配置可能開始位置と次要素配置位置が位置５０８に、配置可能終了位置が位置５０９に設定され、カレント行に設定される。なお図１２では、新しい行は矩形５００の下の点線の矩形で表現しているが、実際には高さは改行まで決定されない。
【０５０１】
また、各文字要素の配置位置は、基本的には次要素配置位置で決めており、文字要素間の距離は０である。しかし、多くのワードプロセッサや印刷などでは、表示結果を見やすくする為、カーニング調整とよばれる処理が行われることがある。カーニング調整とは、改行が無い場合、行末の文字の横位置を前後の行と揃えるため、文字間や単語間の距離を調節することである。これらの処理は、行の高さを求める処理などと同時に行うことができる。本発明では、カーニング調整は必須ではないが、改行による影響を考慮しない場合の不自然さを分かりやすくする為、表示処理結果の図は、カーニング調整後の表示レイアウトを使っている。
【０５０２】
（処理例２）
図１９、図２０は、回り込み画像を持つ部分データ（例えば図７の部分データ４０６）から表示レイアウトを生成する処理を説明する説明図である。
【０５０３】
まず最初に新たな行５２６を生成し、配置可能開始位置と次要素配置位置が位置５２０に、配置可能終了位置が位置５２２に設定される。
【０５０４】
部分データ４０６の最初はＩＭＧタグで、ａｌｉｇｎ＝“ｒｉｇｈｔ”の回り込み画像なので、最初に画像要素５２８がカレント要素として処理される。右端に配置するので、画像要素５２８の配置位置は、行５２６の右端になるよう位置５２１に決定される。これにより、配置可能終了位置が位置５２１に更新される。従って、この後の要素は、位置５２０から位置５２１の間に配置される。
【０５０５】
その後、最初の文字要素「Ｆ」から文字要素「Ｄ」までが、１文字ずつ配置される。文字要素「Ｄ」を配置し終えた後で、次要素配置位置が、位置５２１付近になったとする。その次の文字要素「ｔ」は、次要素配置位置（「Ｄ」の右端）と位置５２１の間に収まりきらないとする。すると、次の行に配置せざるを得ない為、次の行５２７を生成し、行５２６の高さなどを設定する。
【０５０６】
次に、行５２７の配置可能開始位置と次要素配置位置が位置５２３に、配置可能終了位置がとりあえず位置５２５に設定される。
【０５０７】
行５２６の高さは、回り込みの画像要素５２８以外の文字要素中の最大の高さになるので、図１９のように高さＬＨ１となる。この時、画像要素５２８の高さはＬＨ１より大きいので、行５２６に収まりきらない。従って、次の行５２７に分割する。分割した状態が図２０である。画像要素５２８を、行５２６中の画像要素５２９と、行５２７中の画像要素５３０に分割している。画像要素５２９の高さはＬＨ１であり、画像要素５３０の高さは、画像要素５２８の高さからＬＨ１だけ引いたものである。また、画像の内容も画像要素５２９は上からＬＨ１分だけ、画像要素５３０は上ＬＨ１分を除いた残りとなっている。
【０５０８】
画像要素５３０の配置位置は、画像要素５２９同様、行の右端になるように位置５２４に決定される。そして、行５２７の配置可能終了位置は位置５２４に更新される。これにより、この後の要素は、位置５２３から位置５２４の間に配置される。
【０５０９】
そして、行５２６に配置できなかった文字要素「ｔ」が、行５２７の先頭位置５２３に配置される。これは、表示レイアウト的には、文字列が回り込み画像によって回り込んでレイアウトされることになる。
【０５１０】
このようにして、回り込み画像の表示レイアウトが生成される。なお、図１９では、図５と比べると、回り込み画像の周囲に余白をとっていなかったり、行間を考慮していなかったりするが、これは説明を簡単にする為であり、実際にはこれらの値も考慮して処理する。
【０５１１】
（処理例３）
以上の例では、先頭から順に表示レイアウトを得ていたが、次に、逆に下から表示レイアウトを得る場合の例として、図２４の状態から、上に１ページ分の範囲を表示させるとする。つまり、図２４の２行目から上に１ページ分を新たに表示することになる。なお、この状態では、部分データ４０２から４０５の表示レイアウトは、レイアウト保存手段７で保存されているとする。
【０５１２】
図２５は、この時のレイアウト生成手段５の処理順序を説明する説明図である。図の点線の枠で示されている処理７０６〜７０９は、カレント部分データを設定して行う図１６の一連の処理（Ｓ５）であり、処理７０１〜７０５は、レイアウトの取得や生成の処理であり、処理７０６〜７０９の一部である。点線の枠が入れ子になっているのは、図１６のＳ５Ａ−４で再帰的にＳ５が呼び出される状態を意味する。各処理は、上から下に順に処理されていくとする。なお、レイアウト生成手段５が動作主体であるが、以下の説明では省略する。
【０５１３】
まず、所望の表示範囲が図２４の２行目から始まることに基づいて、図２４の２行目を含む部分データ４０２が最初のカレント部分データとなる（図１４のＳ３）。そして、部分データ４０２の表示レイアウトを、分割の影響を考慮して取得する処理が開始される（図２５の処理７０６、図１４のＳ４、Ｓ５）。
【０５１４】
部分データ４０２の表示レイアウトを、分割の影響を考慮して取得するには、まず、部分データ４０２の表示レイアウトをレイアウト保存手段７から得る（処理７０１、図１６のＳ５Ａ−１）。図２４の１行目から２行目までの高さを１ページ分と比較するが、足りないので、その前の部分データ４０１の表示レイアウトが必要であることが分かる（Ｓ５Ａ−２）。
【０５１５】
部分データ４０２に対応する図８の処理補助データ１０２から、部分データ４０２は、部分データ４０１から影響を受けることが分かるので（Ｓ５Ａ−３）、部分データ４０１の表示レイアウトを、影響を考慮して取得する処理を開始する（処理７０７、Ｓ５Ａ−４）。
【０５１６】
カレント部分データを部分データ４０１として、図１６の処理を再帰的に行う。部分データ４０１の表示レイアウトはレイアウト保存手段７で保存されていないので、部分データ４０１の表示レイアウトを生成する（処理７０２、Ｓ５Ａ−１）。部分データ４０１は、さらに必要とされる部分データ４００（Ｓ５Ａ−２）から影響を受けないので、再帰的な処理から抜ける（Ｓ５Ａ−３）。
【０５１７】
この結果、部分データ４０１の再帰的処理（Ｓ５Ａ−４）を終え、カレント部分データ（部分データ４０２）の表示レイアウトを、上記の処理７０２で生成した部分データ４０１の表示レイアウトに続けて生成する（処理７０３、Ｓ５Ａ−５）。すなわち、部分データ４０１・４０２を一続きのデータとして処理する。この結果、レイアウト保存手段７に保存されている部分データ４０２の表示レイアウトは更新される。
【０５１８】
カレント部分データ（部分データ４０２）の前の部分データ４０１は存在するので（図１４のＳ６）、部分データ４０１をカレント部分データに設定する。（Ｓ７）
Ｓ４からＳ７を繰り返し、部分データ４０１、４００の順に表示レイアウトを取得、生成する（処理７０８、７０９）。部分データ４０１、４００は互いに影響を受けないので、ここでは再帰的な処理はされない。
【０５１９】
上に１ページ分という指定だったので、Ｓ９からＳ１２の処理は行われず、所望の表示範囲の表示レイアウトを取得する処理が終了し、表示処理が行われる（Ｓ１３）。
【０５２０】
図２５より、表示に使われるレイアウトの生成は、処理７０２の部分データ４０１、処理７０３の部分データ４０２、処理７０５の部分データ４００、の順で行われている。このことから、部分データ４０１の影響を考慮して、部分データ４０２の処理結果を得るようになっていることが判る。
【０５２１】
こうして得られる最終的な表示は、図２６のようになる。図２４と比べると、「Ｗｈｅｎ」の行が部分データ４０１の最後の「ｇｌａｓｓ．」と連続してレイアウトされている。これは、必要な部分データ４０１が部分データ４０２に影響を与えるので、部分データ４０２の表示レイアウトを部分データ４０１の表示レイアウトに連続してレイアウトされるように生成し直したからである。
【０５２２】
これは、最終的には、ブロックデータ４０１、４０２の順で生成するのと一緒である。つまり、ブロックデータ４０１と４０２を一続きのデータとして処理したことになる。これによって、ブロック間の影響を無くして処理することができた。
【０５２３】
なお、「Ｅａｃｈ」の行は、レイアウトが変わってしまっているので、図２４の「Ｅａｃｈ」の行から上に１ページ分という指定は、正確にはバイト位置で指定する必要がある。例えば、「Ｅａｃｈ」の前の要素のバイト位置を含む行から１ページ分、という形である。
【０５２４】
部分データ４０２の表示レイアウトを生成し直さずに処理するとすると、図２７のようになる。図２６と比べると、部分データ４０１の最後の「ｇｌａｓｓ．」の後が改行のようになって、「Ｗｈｅｎ」が次の行の行頭に来てしまっている。これはＨＴＭＬデータで指定されている改行ではないので、誤りが表れた表示レイアウトである。これを言い換えれば、元データに含まれていないデータが処理結果として表れた表示レイアウトとも言い得るし、元データが、分割の影響で変質した結果としての表示レイアウトとも言い得る。
【０５２５】
このように、直前の部分データの表示レイアウトに影響を受ける場合は、先に直前の部分データの表示レイアウトを得て、それに続けて、部分データの表示レイアウトを必要に応じて生成し直すことで、データの意味する内容が損なわれない表示レイアウトを得ることができる効果が出てくる。
【０５２６】
なお、図２６では、最初の部分データ４００の表示レイアウトの上の部分が空いてしまっている。多くのＷＷＷブラウザなどではこのような場合、部分データ４００の表示レイアウトを、表示範囲の先頭から表示し、「Ｅａｃｈ」の行以降に空きがあれば、その下の表示レイアウトを表示することが多い。この場合、基準位置から上にｐドット、下にｑドットの範囲、などという指定の仕方をするが、上にｒドット（ｒ＜ｐ）しか存在しない場合は、下に最大（ｑ＋ｐ−ｒ）ドットの範囲で表示レイアウトを得るように、図１４のＳ４やＳ９で判断するようにすればよい。
【０５２７】
このような処理をすれば、図２６の表示は、図１５のような表示になる。前ページめくりだけでなく、次ページめくりで最後の部分データの表示レイアウトの下に空きがある場合も、同様の考え方で、下方向の表示レイアウトで埋め合わせることができる。
【０５２８】
（処理例４）
図２６の例では、部分データ４０２の中のあるバイト位置を基準としたが、例えば、部分データ４０２、４０３の表示レイアウトが保存されているとして、部分データ４０３の中のあるバイト位置を基準として上方向に１ページ分を表示する場合の処理について説明する。図２８は、この時の処理の処理順序を説明する説明図である。図２５同様、処理６１０〜６１７はレイアウトの取得や生成の処理であり、図の点線の枠で示されている処理６１８〜６２３は、カレント部分データを設定して行う図１６の一連の処理である。
【０５２９】
細かい処理については省略し、処理の流れだけ図２８に基づいて説明すると、まず、処理６１８で、部分データ４０３をカレント部分データとして影響を考慮した表示レイアウトの取得処理を開始する。具体的には、まず処理６１０で部分データ４０３の保存されている表示レイアウトを取得する。
【０５３０】
しかし、部分データ４０３は部分データ４０２に影響されるので、処理６１９で、部分データ４０２をカレント部分データとして影響を考慮して表示レイアウトを取得する処理に移行する。これにより、処理６１１で部分データ４０２の保存されている表示レイアウトを取得する。
【０５３１】
ところが、部分データ４０２は、さらに部分データ４０１に影響されるので、処理６２０で、部分データ４０１をカレント部分データとして影響を考慮して表示レイアウトを取得する処理に移行する。部分データ４０１は部分データ４００から影響を受けないので、処理６１２で部分データ４０１の表示レイアウトを生成して、処理６２０を終える。
【０５３２】
処理６１９に戻り、処理６１３で、部分データ４０１の表示レイアウトに続けて部分データ４０２の表示レイアウトを生成することにより、部分データ４０２の表示レイアウトを生成し直す。そして、保存されている部分データ４０２の表示レイアウトを更新して、処理６１９を終える。次に、処理６１８に戻り、処理６１４で、部分データ４０２の表示レイアウトに続けて部分データ４０３の表示レイアウトを生成することにより、部分データ４０３の表示レイアウトを生成し直す。そして、保存されている部分データ４０３の表示レイアウトを更新し、処理６１８を終える。
【０５３３】
処理６２１で、部分データ４０２をカレント部分データとして影響を考慮した表示レイアウトの取得を開始する。具体的には、処理６１５で、部分データ４０２の保存されているレイアウトを取得し、処理６２１を終える。
【０５３４】
続いて、処理６２２で、部分データ４０１をカレント部分データとして影響を考慮したレイアウトの取得を開始する。具体的には、処理６１６で、部分データ４０１の保存されている表示レイアウトを取得し、処理６２２を終える。
【０５３５】
最後に、処理６２３で、部分データ４００をカレント部分データとして影響を考慮したレイアウトの取得を開始する。具体的には、処理６１７で、部分データ４００のレイアウトを生成し、処理６２３を終える。
【０５３６】
このように、図２８より、表示レイアウトの生成は、処理６１２の部分データ４０１、処理６１３の部分データ４０２、処理６１４の部分データ４０３、処理６１７の部分データ４００、の順で行われている。すなわち、部分データ４０１の影響が、部分データ４０２に、部分データ４０２の影響が、部分データ４０３に及ぶことを考慮して、それぞれの表示レイアウトが生成されるようになっている。
【０５３７】
このように、影響が３つ以上の連続するブロック間に存在しても、影響を及ぼす部分データを先に処理し、影響を受ける部分データの表示レイアウトをその後に続けて生成し直すことで、データの意味する内容が損なわれない表示レイアウトを生成することができる効果が出てくる。
【０５３８】
（処理例５）
図２５、図２８の例は、図１６の処理方法に基づく場合だが、図１７の処理方法に基づく場合は、多少、処理の仕方が変わる。図２９は、図２８の場合の所望の表示レイアウト範囲を、図１７の処理方法に基づいて処理するときの処理手順を説明する説明図である。図２５同様、処理６３０〜６３５はレイアウトの取得や生成の処理であり、図の点線の枠で示されている処理６３６〜６３９は、カレント部分データを設定して行う図１７の一連の処理である。
【０５３９】
まず、処理６３６で、部分データ４０３をカレント部分データとして影響を考慮した表示レイアウトの取得を開始する。処理６３６中で、部分データ４０３に影響を与える最前の部分データを求める（図１７のＳ５Ｂ−１）。図９の処理補助データ６０３の影響部分データの項より、部分データ４０１が、部分データ４０３に影響を与える最前の部分データであることが分かる。
【０５４０】
そこで、処理６３０、６３１、６３２で、部分データ４０１、４０２、４０３の表示レイアウトを一続きにして順に生成していき、生成した表示レイアウトをレイアウト保存手段７に保存して処理６３６を終える。
【０５４１】
処理６３７で、部分データ４０２をカレント部分データとして影響を考慮して表示レイアウトを取得する。つまり、処理６３３で、部分データ４０２の保存されている表示レイアウトを取得し、処理６３７を終える。
【０５４２】
処理６３８で、部分データ４０１をカレント部分データとして影響を考慮して表示レイアウトを取得する。つまり、処理６３４で、部分データ４０１の保存されている表示レイアウトを取得し、処理６３８を終える。
【０５４３】
処理６３９で、部分データ４００をカレント部分データとして影響を考慮して表示レイアウトを取得する。処理６３５で、部分データ４００の表示レイアウトを新たに生成し、処理６３９を終える。
【０５４４】
図２９より、表示レイアウトの生成は、図２８同様、部分データ４０１、４０２、４０３、４００、の順で行われている。
【０５４５】
図２８と図２９を比べると、影響を与えるブロックを再帰的に求めるか、最初に求めて順に処理するか、の違いのように見えるが、影響を与えるブロックを求める範囲が異なる。図１６の処理では、Ｓ５Ａ−２でそのブロックが必要かどうか判断することで、求める範囲を、所望の表示レイアウト範囲内の表示レイアウトを有するブロックに限定している。図１７の処理では、求める範囲に限定が無い。
【０５４６】
例えば、所望の表示範囲に部分データ４０３の表示レイアウトだけが含まれ、部分データ４０１、４０２の表示レイアウトは含まれないとする。部分データ４０３に影響を与える部分データは、処理補助データ６０３より、部分データ４０１である。この時、図１６の処理では、部分データ４０３のレイアウトを取得するだけである。図１７では、部分データ４０１、４０２、４０３の順にレイアウトを生成して、部分データ４０３のレイアウトだけを使う。
【０５４７】
どちらの処理結果も、ＨＴＭＬデータの表示レイアウトとしては、誤りが無く、データの意味する内容が損なわれない。図１６の処理の利点としては、当面の表示には利用しない範囲（部分データ４０１、４０２）のレイアウトを無駄に生成することが無い点があげられる。但し、少し上の部分を表示しようとすると、部分データ４０２に続いて、部分データ４０３のレイアウトを生成し直さないといけなくなるので、その場合は生成し直す分だけ、無駄な処理となる欠点がある。
【０５４８】
また、表示範囲によって、レイアウトが生成し直されることがあるので、表示設定は変えていないのに、同じバイト位置の表示結果が変わってくることがある欠点もある。例えば、図２４も図２６もＨＴＭＬデータの表示レイアウトとしては誤りが表れていないが、（保存されている表示レイアウトが無い状態で）図２４の表示を行い、次に、その上１ページ分として図２６の表示を行うと、「Ｅａｃｈ」の部分の行内でのＸ位置は互いに異なる。利用者によっては、このような変化は文章を追う上で不便であると感じるかもしれない。
【０５４９】
図１７の処理では、必ず最初に影響を与えるブロックから所望のブロックまでの表示レイアウトを生成し、その中から所望の表示範囲の表示レイアウトを取り出すので、表示範囲によって上記のようなＸ位置が異なる問題は起こらないという利点がある。
【０５５０】
図１６の処理も、図１７の処理も、互いに利点、欠点があるので、目的に応じて使い分ければよい。
【０５５１】
なお、図１６のＳ５Ａ−５や、図１７のＳ５Ｂ−１で、部分データの表示レイアウトを生成しているが、不必要な生成処理を省略することも可能である。例えば、各ブロックの表示レイアウトが、前のブロックに続けて生成したものかどうかを判断する「連続生成フラグ」の項を、ブロック管理データに持たすという方法が考えられる。連続生成フラグの項から、前のブロックに続けて生成していることが判断できれば、図１６のＳ５Ａ−５で、部分データの表示レイアウトを生成する必要はない。すなわち、保存されている表示レイアウトを使えばよい。
【０５５２】
但し、Ｓ５Ａ−４の再帰処理で、前の部分データのレイアウトが生成し直された場合は、その次のブロック管理データの連続生成フラグの項をクリアする必要がある。なお、その後の隣り合うブロック管理データでも連続生成フラグの項が立っている場合は、全てクリアする必要がある。そして、Ｓ５Ａ−５で生成し直す場合は、連続生成フラグの項を立てるように設定する。
【０５５３】
各ブロックの表示レイアウトが、前のブロックに続けて生成したものかどうかを判断する情報を持たすことで、レイアウトの不必要な生成処理を行わなくて済むという効果が出てくる。
【０５５４】
（処理例６）
以上の例では、ブロック間の影響について、主に改行に伴う影響の例で説明してきたが、画像の回り込みの場合でも処理の仕方は同様である。図３０は、部分データ４０７中の「Ｏｎｅ  ｓｕｃｈ」の部分から１ページ分、下の範囲を表示させた例である。部分データ４０７からレイアウトを生成するので、表示はされていないが、「Ｓｈａｒｐ  ｉｓ」から始まる部分が行頭に配置されているのが分かる。
【０５５５】
図３１は、図３０の表示されている最初の行から、１ページ分上の範囲を表示させた例である。図３０の表示されている最初の行は、図７の部分データによれば、部分データ４０７に含まれている。さらに、図９の処理補助データによれば、部分データ４０７は、部分データ４０６の影響を受ける。そこで、本発明の手法に基づき、部分データ４０６〜４０７を一続きのデータとして扱うことによって、表示レイアウトが生成し直される。この結果、部分データ４０７については、画像の回り込み部分に、部分データ４０６の表示レイアウトに続く形で、「Ｓｈａｒｐ  ｉｓ」から始まる部分が配置されている。
【０５５６】
なお、１ページ分のレイアウトの不足を補うために、部分データ４０５もレイアウトされている。
【０５５７】
図３１も図３０も、ＨＴＭＬデータの表示レイアウト結果としてはどちらにも誤りは表れていず、元データの意味する内容が損なわれていない。
【０５５８】
図３２は、図３１同様、図３０の表示されている最初の行から、１ページ分上の範囲を表示させた例であるが、本発明のように部分データ４０７のレイアウトを生成し直さずに、部分データ４０６のレイアウトと単純に繋げた例である。図３２を図３１と比べると、部分データ４０６の表示結果が部分データ４０７の表示結果に影響を与えることを考慮していないために、部分データ４０６の表示レイアウトと、部分データ４０７の表示レイアウトとは、それぞれ単独に処理されている。このために、画像の回り込み部分が空いてしまって、部分データ４０７の内容が、画像の下端を含む行の次の行、言い換えれば、部分データ４０６の表示レイアウト範囲の次に配置される行の行頭からレイアウトされている。このような空白や改行は、元のＨＴＭＬデータでは指定されていないので、表示結果に誤りが発生しており、表示結果として元データの意味する内容が損なわれている。
【０５５９】
このように、画像の回り込みを考慮して、必要に応じてレイアウトを生成し直すことで、図３２のような誤りが表れた表示結果を生成することを防ぐ効果が出てくる。
【０５６０】
なお、画像の回り込みは、改行と異なり、後に続く複数のブロックに影響を与える可能性のある点が異なる。処理補助データの影響に関する情報を生成する際も、この点を考慮して、直前のブロックだけでなく、それより前の部分データの影響がある場合も影響が有ると判断する必要がある。
【０５６１】
その際、問題として、画像の回り込みは、影響を与える部分データの範囲がはっきりと分かりにくい場合がある。例えば、画像の大きさが変わらないとして、基準となる文字の大きさを変えるとすると、画像に回り込んでレイアウトされる部分データがどこまでなのか決めかねる時がある。ＨＴＭＬデータでは、画像の回り込みを解除するタグなどもあるので、そのようなタグが出てくれば、影響はそこまでであることがはっきりするが、そうでない場合は、原理的には、最後の部分データまで影響があり得るということになってしまう。これでは影響を与える範囲が広すぎて、部分データを使って処理することによる、高速、省リソースなどの利点が失われてしまう問題がある。
【０５６２】
本発明では処理補助データは予め生成されている前提であるが、ここでは、処理補助データに頼らない対応方法について説明する。
【０５６３】
影響に関して、処理補助データに頼らないとすると、実際にレイアウトを取得してみて、影響があるかどうか判断するしかない。具体的には、図１６のＳ５Ａ−３における「直前のブロックに影響されるかどうか」の判断で、直前の部分データのレイアウトを取得する、あるいは部分データ自体を調べて、画像の回り込みがあるかどうか、画像の回り込みがその部分データ中の文字要素などだけでは回り込みが終わっていないかどうか、などを判断すればよい。
【０５６４】
あるいはもっと簡便な方法として、Ｓ５Ａ−１で、カレント部分データのレイアウトを得たら、画像の回り込みがその部分データ中の文字要素などだけでは回り込みが終わっていないかどうかを判断し、終わっていなかったら、後の部分データの保存してある表示レイアウトをクリアしてしまえばよい。それにより、後の部分データの表示レイアウトが続いて生成されることが保証されるので、回り込みが不連続になることはない。
【０５６５】
回り込みが終わっていないかどうかの判断は、レイアウトデータの生成の仕方によって異なってくる。上に述べた説明では、回り込み画像を、複数の回り込み行に対応させて、複数の表示レイアウト要素（ＩＭＧ）に分割すると説明した。そして、分割した表示レイアウト要素は、回り込み画像であることを示すフラグをつけると説明した。
【０５６６】
従って、ある部分データの最初の行をレイアウトするときに、回りこみ画像であることを示すフラグを持つ表示レイアウト要素が、直前の部分データに属する前の行から続いているかどうかを見れば、回り込み画像のレイアウトが、直前の部分データ中で終わっていないかどうかを判断できる。
【０５６７】
図３１は、部分データ４０５、４０６のレイアウトを生成し終えた状態のレイアウトであるが、部分データ４０６の最終レイアウト行は、８行目（ｍｏｒｅ  ｔｈａｎ  ｋｅｅｐｉｎｇ  ｐａｃｅ）となる。８行目には、回り込み画像のフラグを持つ表示レイアウト要素が前の行から続いているので、部分データ４０７のレイアウトを開始するときに、回り込みが終わっていないと判断できる。
【０５６８】
本発明では、主に後の部分データの処理結果に、前の部分データの処理結果が影響を与える場合について説明したが、逆に、前の部分データの処理結果に、後の部分データの処理結果が影響を与える場合も、同様の考え方で処理できる。あるいは、影響を与える方向が一方向に決まっておらず、前後両方向ある場合でも、両方向に対して影響を調べて、処理し直すなどの方法をとればよい。
【０５６９】
上記で述べた方法については、ここで述べた組み合わせだけに限らず、あらゆる組み合わせが可能である。
【０５７０】
なお、本発明が対象とするデータと、例えばＭＰＥＧ形式のデータなどとの処理方法の違いについて、説明しておく。
【０５７１】
ＭＰＥＧのＧＯＰは、電子データが複数に分割されたデータであり、単体で処理可能なデータなので、本発明で言う「部分データ」に相当する。しかし、ＭＰＥＧのＧＯＰの処理結果である復元された画像フレームは、常に同じ結果となる。
【０５７２】
また、前のＧＯＰの復元結果によって、後のＧＯＰの復元結果が影響されることはない。単純に前のＧＯＰの復元結果と、次のＧＯＰの復元結果をつなぎ合わせればよい。
【０５７３】
これに対し、本発明で例として挙げているＨＴＭＬデータの場合、ＷＷＷブラウザの表示設定によって、表示結果が変わることを前提に設計された言語仕様であり、表示設定が変わっても、表示結果の与える論理的意味（例えば、強制改行や画像の回り込みなど）が変わらなければ、どのような表示を行ってもデータの意味する内容が損なわれないとされる。
【０５７４】
また、ＨＴＭＬデータの部分データの場合、前の部分データの処理結果が、次の部分データの処理結果に論理的な意味で影響を与えることがある。例えば、改行タグ以外の所で部分データに分割した場合などである。従って、単純に前の部分データの処理結果に、次の部分データの処理結果をつなぎ合わせるだけでは、全体として論理的意味が変わってしまうことがあり、データの意味する内容が損なわれることがある（図２７、図３２など）。
【０５７５】
つまり、部分データを扱う際、データのもつ特質に合わせて、本発明のように処理方法を変えてやる必要がある。本発明では、特に部分データ間の処理結果の影響に着目し、データの意味する内容が損なわれない処理結果が得られるような工夫を施している。
【０５７６】
また、ＭＰＥＧのＧＯＰは、ＨＴＭＬデータのタグによる階層構造のような構造は持っておらず、それらの構造に関する補助情報などを使わなくても処理できるというのも異なる点である。
【０５７７】
なお、ＧＯＰでなく、ＧＯＰ中の差分画像を部分データとして考えれば、前後の部分データに影響を受けるように見えるが、差分画像だけでは画像フレームを復元できず、「単独で処理可能」ではないので、部分データではない。基準画像や関連する差分画像を補助情報として付加すれば、部分データとみなすことは不可能ではないが、それらの補助情報をつけたものは、結局、ＧＯＰと同じになってしまう。常に同じ結果であるなど、ＧＯＰとの違いに関して説明した理由がそのままあてはまるので、やはり、本発明が対象する部分データとは異なる。
【０５７８】
なお、本発明のデータ処理方法は、所望の部分データ中の一部の部分データの処理を行う際、前記影響検出ステップで影響が検出され、かつ、検出対象の部分データが所望の部分データに含まれる場合は、検出対象の部分データから所望の部分データまでの範囲を一続きのデータとして処理することを特徴としてもよい。
【０５７９】
「所望の部分データ中の一部の部分データ」とは、所望の部分データが複数あり、その中のいくつかの部分データという意味で、部分データ単位の話である。部分データをさらに分割したデータという意味ではない。
【０５８０】
影響検出ステップで、所望の部分データ中の一部の部分データの処理結果に影響を与える部分データを検出する対象として、所望の部分データ中のその部分データ以外の部分データを使う。つまり、所望の部分データ間の影響は考慮し、所望の部分データ以外の部分データの影響は無視することになる。
【０５８１】
部分データは、単独で処理可能なデータなので、その処理結果を単独で利用する分には問題はなく、複数の部分データの処理結果を利用する場合に、影響が問題となってくる。複数の部分データの間で影響を考慮して処理するのならば、その複数の部分データの処理結果だけを利用するのならば、問題はないことになる。つまり、その複数の部分データが、大きな１つの部分データを構成していると考えればよい。この大きな部分データの処理結果を、他の部分データの処理結果と一緒に利用すると、影響が存在するかもしれないが、大きな部分データ単独で利用するのは問題はない。
【０５８２】
これによって、利用する範囲においては、影響を考慮して処理されているので、所望の部分データの処理結果は問題なく、また、所望の部分データ以外の部分データの処理はする必要がなくなるので、余計な処理をしなくて済むという効果が出てくる。
【０５８３】
本発明に係るデータ処理方法は、部分データの処理結果が、所望の処理結果に含まれるかどうかを判断する部分データ必要性判断ステップを有し、前記部分データ必要性判断ステップの判断を使って、所望の処理結果から所望の部分データを求めることを特徴としてもよい。
【０５８４】
各部分データに対して、部分データ必要性判断ステップで、その処理結果が所望の処理結果に含まれるかどうかを判断する。含まれるならその部分データは所望の部分データであると判断し、含まれないなら所望の部分データでないと判断する。これにより、所望の処理結果から、必要最低限の所望の部分データが得られる。
【０５８５】
一般に、ユーザにとって必要なのは、処理結果であり、部分データではない。また、電子データがどのように分割されて部分データができているかは、一般にユーザは知らないことが多い。従って、ユーザからは、所望する部分データではなく、所望する処理結果の範囲で与えられる方が自然である。例えば電子データが電子書籍ならば、何ページから何ページまでという処理結果の範囲であり、動画データならば、何分から何分という処理結果の範囲である。
【０５８６】
これによって、ユーザが電子データの一部の処理結果を得たい際、部分データの存在を意識することなく、自然に指定することができるという効果が出てくる。
【０５８７】
また、所望の処理結果から、必要最低限の所望の部分データが得られるので、処理量を必要最低限にすることができるという効果も出てくる。
【０５８８】
本発明のデータ処理方法は、先に処理する部分データを新たな所望の部分データとし、処理を繰り返すことを特徴としてもよい。
【０５８９】
影響が検出された時点で、先に処理する部分データを新たな所望の部分データとする。するとその新たな部分データの処理を行う際、その新たな部分データの処理結果に影響を与える部分データが存在すれば、その部分データの処理を先に行う。
【０５９０】
このような繰り返し処理を、影響を与えない部分データまで行うことで、影響を与える部分データから順に、影響を与える順番で、処理を行うことができるようになる効果が出てくる。
【０５９１】
本発明に係るデータ処理方法は、前記影響検出ステップで、保持している所望の部分データの処理結果が、影響を与えられる部分データの処理結果に影響を受けて処理された場合は、影響を検出しないことを特徴としてもよい。
【０５９２】
処理結果を記憶手段などに保持する際、その処理が影響を受けて処理されたかどうかの情報も別途保持しておく。そして、影響検出ステップで影響を検出する際、検出対象の部分データの処理結果が保持されている場合は、その処理が影響を受けて処理されたかどうかの情報を見て、影響を受けて処理されている場合は、影響を検出しないことにする。
【０５９３】
これによって、影響を考慮して処理された処理結果と同じ処理結果が、無駄に再度処理されて得られることを防ぐ効果が出てくる。
【０５９４】
本発明に係るデータ処理方法は、電子データが複数に分割されたデータであり、単体で処理してもデータの意味する内容が損なわれない処理結果が得られるデータである部分データを用いて所定の処理を行うデータ処理方法であって、所望の部分データの処理結果に影響を与える処理結果を生成する最前あるいは最後の部分データを検出する最前部分データ検出ステップを有し、前記最前部分データ検出ステップで検出される部分データから、所望の部分データまで、一続きのデータとして処理することを特徴としてもよい。
【０５９５】
上述した繰り返し処理する方法、すなわち、所望の部分データの前後の処理結果の影響を調べて、影響がある場合、先に処理する部分データを新たな所望の部分データとして、繰り返し処理する方法同様、高速、省リソースで処理できるという部分データの処理の利点をできるだけ損なわずに、部分データの処理結果が影響し合う場合に、各部分データの処理結果の繋がりが悪くならないように部分データを処理することができる効果はもちろんある。
【０５９６】
それ以外の効果などについて説明すると、上述した繰り返し処理する方法に比べて、部分データの処理のし直しが無くなるので、無駄な処理を省くことができる利点が出てくる。
【０５９７】
また、限定された範囲の部分データの影響しか考慮していない場合、考慮する範囲が変われば、同じ部分データであっても、処理結果が変わってきてしまう。例えば、スクロールバーを使って処理結果をスクロールして表示するような場合、スクロール位置によって、影響を考慮する範囲が変わるとすると、スクロールバーの操作具合によって、同じ電子データの処理結果が異なって表示されてしまうことになる。本発明では、所望部分データの範囲に関わらず、常に全ての影響を考慮した処理結果が生成される。従って、同じ部分データならば、常に同じ処理結果が得られることになる効果が出てくる。先のスクロールバーの例で言えば、スクロールバーをどのように操作しようと、同じ電子データの処理結果は常に同じ表示となる。
【０５９８】
なお、検出する最前、最後の部分データの範囲を、例えば所望の部分データ内に限定するなどすれば、上記の常に同じ処理結果が得られる利点は失われしまうが、当面必要な処理結果と関係ない部分データを処理しなくて済むので、処理量が減る利点が出てくる。なお、最前、最後の部分データの範囲を限定したとしても、上述した繰り返し処理する方法よりも処理量が少なくなる利点はそのままである。
【０５９９】
本発明に係るデータ処理方法は、上記の課題を解決するために、電子データが階層構造あるいは順序構造あるいはそれらの組み合わせを有し、処理補助データが、前記分割データの開始位置と終了位置の階層構造あるいは順序構造あるいはそれらの組み合わせの情報を持つことを特徴としてもよい。
【０６００】
「階層構造」は「木構造」とも呼ばれ、データの要素の関係を、分岐した木の形の構造として管理する状態をいう。分岐は細かくなるだけであり、分岐した先同士が関係を持ち合うことはない（持ち合う場合は「ネットワーク構造」と言う）。一般に、分岐して細かくなった先を「下の層」、分岐元の方を「上の層」と、上下関係で呼ぶことが多い。
【０６０１】
例えば、ＨＴＭＬデータのタグによる入れ子構造などが階層構造に相当する。
【０６０２】
「順序構造」は、データの要素間に上下関係は無いが、その順番に意味があるような場合の構造である。データ要素が同じでも、その順番などが変われば、別のデータとなる。例えば、ＨＴＭＬデータのＯＬタグ中でのＬＩタグは箇条書きの番号表示を行うが、その番号はＬＩタグの出現する順番によって決まる。
【０６０３】
なお、階層構造の各層で分岐先に順番を持たせている場合は、階層構造に含まれるとしてもよい。
【０６０４】
階層構造や順序構造のデータ要素の区切りと、部分データの区切りは必ずしも一致しなくても
「開始位置の階層構造」とは、電子データの最初から分割データの開始位置までのデータで生成される階層構造を意味する。ＨＴＭＬデータの例で言えば、開始位置までに出てきたタグを繋げた文字列で表現できる。一般に、上の層の情報だけでよく、同じ層、あるいは下の層、タグに挟まれたテキストデータの情報などは省いても良いことが多い。上の層の情報だけとは、ＨＴＭＬデータの例で言えば、開始位置までに出てきたタグの内、対応する終了タグの存在しない開始タグだけということになる。
【０６０５】
「終了位置の階層構造」とは、分割データの終了位置から電子データの最後までのデータで生成される階層構造を意味する。ＨＴＭＬデータの例で言えば、終了位置以降に出てくるタグを繋げた文字列で表現できる。一般に、上の層の情報だけでよく、同じ層、あるいは下の層、タグに挟まれたテキストデータの情報などは省いても良いことが多い。上の層の情報だけとは、ＨＴＭＬデータの例で言えば、終了位置以降に出てくるタグの内、対応する開始タグの存在しない終了タグだけということになる。
【０６０６】
「開始位置の順序構造」や「終了位置の順序構造」に関しても階層構造と対象とするデータ範囲は同じである。階層構造と違って上下の層は存在しないが、データ範囲に出てくる情報となる。階層構造でも、同じ層や下の層の情報まで含めた情報にすれば、順序構造の情報を含んだ形にもできる。例えば、ＨＴＭＬデータの例で言えば、複数のＬＩタグの層は、ＯＬタグの層の下の層となるが、対応する終了タグが存在しても省かずに情報を生成すればよい。ＯＬタグの層で部分データの分割境界があったとしても、後の部分データの開始位置の順序構造の情報には、前の部分データのＬＩタグが含まれるので、ＬＩタグの出現する順序の情報を得ることができるようになる。
【０６０７】
まず、分割データの開始位置の階層構造あるいは順序構造あるいはそれらの組み合わせの情報を、処理補助データから読み込み、処理する。続いて、分割データを読み込み、処理する。最後に、分割データの終了位置の階層構造あるいは順序構造あるいはそれらの組み合わせの情報を、処理補助データから読み込み、処理する。
【０６０８】
これにより、電子データを先頭から最後まで処理する時に分割データの部分を処理する状態と同じ状態で処理することができるようになる。
【０６０９】
これによって、階層構造あるいは順序構造あるいはそれらの組み合わせの電子データを分割して部分データとして処理することができるようになるという効果が出てくる。
【０６１０】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【０６１１】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。
【０６１２】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０６１３】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，磁気テープ，不揮発性のメモリーカード，等を用いることができる。
【０６１４】
また、上記プログラムコードは、通信ネットワークのような伝送媒体を介して、他のコンピュータシステムから端末の記憶部へダウンロードされるものであってもよい。
【０６１５】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０６１６】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０６１７】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードを格納することになる。
【０６１８】
また、本発明を以下のように表現してもよい。
１．  電子データが複数に分割されたデータであり、単独で処理したときの処理結果自体には誤りが無いデータである部分データを用いて所定の処理を行うデータ処理方法として、制御手段、影響検出手段および部分データ処理手段を含むデータ処理装置が行うデータ処理方法であって、
全ての部分データのそれぞれに関する電子データ中の位置、あるいは位置およびサイズを示す値を記述した予め作成済みの処理補助データを、前記制御手段が、指定された処理範囲に関する電子データ中の位置、あるいは位置およびサイズを示す値に基づいて調べることによって、前記電子データの指定された処理範囲に該当する該当部分データを特定する部分データ特定ステップと、
全ての部分データのそれぞれについて、それぞれの処理結果に電子データを分割したことの影響を与える影響部分データになる部分データがどれかを特定する影響情報を記述した上記処理補助データを、前記影響検出手段が調べることによって、前記部分データ特定ステップで特定された該当部分データに対する影響部分データを検出する影響検出ステップと、
前記部分データ処理手段が、前記部分データ特定ステップで特定された前記該当部分データの処理を行う際、前記影響部分データが検出された場合には、影響部分データから前記該当部分データまでの範囲を一続きのデータとして処理する部分データ処理ステップと、
を備えたことを特徴とするデータ処理方法。
２．  前記影響検出手段が、前記該当部分データの直前あるいは直後の部分データに関する処理補助データを調べることによって、前記該当部分データに対する影響部分データを検出することを特徴とする１に記載のデータ処理方法。
３．  電子データが複数に分割されたデータであり、単独で処理したときの処理結果自体には誤りが無いデータである部分データを用いて所定の処理を行うデータ処理方法として、制御手段、影響検出手段および部分データ処理手段を含むデータ処理装置が行うデータ処理方法であって、
全ての部分データのそれぞれに関する電子データ中の位置、あるいは位置およびサイズを示す値を記述した予め作成済みの処理補助データを、前記制御手段が、指定された処理範囲に関する電子データ中の位置、あるいは位置およびサイズを示す値に基づいて調べることによって、前記電子データの指定された処理範囲に該当する該当部分データを特定する部分データ特定ステップと、
ある部分データの処理結果に電子データを分割したことの影響を与える影響部分データの内、電子データにおける処理順序として最前あるいは最後に位置する影響部分データを特定する影響情報を各部分データ毎に記録した上記処理補助データを、前記最前部分データ検出手段が調べることによって、前記該当部分データの処理結果に影響を与える最前あるいは最後に位置する影響部分データを検出する影響検出ステップと、
前記部分データ処理手段が、前記部分データ特定ステップから得られる前記該当部分データの処理を行う際、前記影響部分データが検出された場合には、影響部分データから前記該当部分データまでの範囲を一続きのデータとして処理する部分データ処理ステップと、
を備えたことを特徴とするデータ処理方法。
４．  前記電子データは表示設定によって表示レイアウトが変わる文書データであり、前記所定の処理は、部分データから表示レイアウトを生成する処理であることを特徴とする１または３に記載のデータ処理方法。
５．  前記電子データは表示設定によって表示レイアウトが変わる文書データであり、前記所定の処理は、前記データ処理装置にさらに備えられたレイアウト生成手段が、部分データから表示レイアウトを生成する処理であり、
前記影響検出ステップで、前記部分データ特定ステップで特定された該当部分データの直前の部分データが影響部分データであると検出された場合、前記部分データ処理ステップにおいて、前記レイアウト生成手段が、直前の部分データの表示レイアウトを生成した後、その表示レイアウトの最後の表示レイアウト要素に続けて、前記該当部分データの表示レイアウトを生成することを特徴とする１に記載のデータ処理方法。
６．  電子データが複数に分割されたデータであり、単独で処理したときの処理結果自体には誤りが無いデータである部分データを用いて所定の処理を行うデータ処理装置であって、
全ての部分データのそれぞれに関する電子データ中の位置、あるいは位置およびサイズを示す値を記述した予め作成済みの処理補助データを、指定された処理範囲に関する電子データ中の位置、あるいは位置およびサイズを示す値に基づいて調べることによって、前記電子データの指定された処理範囲に該当する該当部分データを特定する制御手段と、
全ての部分データのそれぞれについて、それぞれの処理結果に電子データを分割したことの影響を与える影響部分データになる部分データがどれかを特定する影響情報を記述した予め作成済みの処理補助データを調べ、それによって、前記制御手段が特定した前記該当部分データに対する影響部分データを検出する影響検出手段と、
前記制御手段が特定した前記該当部分データの処理を行う際、前記影響検出手段で影響が検出された場合には、影響部分データから前記該当部分データまでの範囲を一続きのデータとして処理する部分データ処理手段と、
を備えたことを特徴とするデータ処理装置。
７．  電子データが複数に分割されたデータであり、単独で処理したときの処理結果自体には誤りが無いデータである部分データを用いて所定の処理を行うデータ処理装置であって、
全ての部分データのそれぞれに関する電子データ中の位置、あるいは位置およびサイズを示す値を記述した予め作成済みの処理補助データを、指定された処理範囲に関する電子データ中の位置、あるいは位置およびサイズを示す値に基づいて調べることによって、前記電子データの指定された処理範囲に該当する該当部分データを特定する制御手段と、
ある部分データの処理結果に電子データを分割したことの影響を与える影響部分データの内、電子データにおける処理順序として最前あるいは最後に位置する影響部分データを特定する影響情報を各部分データ毎に記録した上記処理補助データを調べ、それによって、前記制御手段が特定した前記該当部分データの処理結果に影響を与える最前あるいは最後に位置する影響部分データを検出する影響検出手段と、
前記制御手段が特定した前記該当部分データの処理を行う際、前記影響部分データが検出された場合には、影響部分データから前記該当部分データまでの範囲を一続きのデータとして処理する部分データ処理手段と、
を備えたことを特徴とするデータ処理装置。
８．  １から５のいずれか１項に記載のデータ処理方法が備える各ステップを、コンピュータに実行させるためのデータ処理プログラム。
９．  ６または７に記載のデータ処理装置が備える各手段として、コンピュータを機能させるためのデータ処理プログラム。
１０．  ８または９に記載のデータ処理プログラムを記録した記録媒体。
【産業上の利用可能性】
【０６１９】
元の電子データ（文書データ、音楽データ、静止画データ、動画データなど）から、その一部を部分データとして切り出して利用（閲覧、再生など）することを可能にする機器（コンピュータ、電子書籍、携帯端末など）全般において、上記部分データの処理に本発明を適用することができる。
【０６２０】
特に、処理リソース（ＣＰＵの処理速度やメモリ量など）が限られるような機器における部分データの処理に効果的である。
【図面の簡単な説明】
【０６２１】
【図１】本発明のデータ処理装置の機能的な構成を示すブロック図である。
【図２】図１の各手段を具体的に実現するデータ処理装置の構成例を説明するブロック図である。
【図３】上記データ処理装置の外観例を示す模式的な斜視図である。
【図４】電子データとして、ＨＴＭＬデータの例を説明する説明図である。
【図５】図４のＨＴＭＬデータをＷＷＷブラウザにより、ある表示設定の時に表示させた例を示す説明図である。
【図６】図５の表示設定で、基準となる文字の大きさを１．５倍、表示ウィンドウの横幅は同じに設定して、図４のＨＴＭＬデータを表示させた例を示す説明図である。
【図７】図４のＨＴＭＬデータを分割した部分データの例を説明する説明図である。
【図８】処理補助データのデータ構造例を説明する説明図である。
【図９】処理補助データの別のデータ構造例を説明する説明図である。
【図１０】表示レイアウトの基本単位となる表示レイアウト要素データのデータ構造例を説明する説明図である。
【図１１】表示レイアウト要素データの集まりを管理する行データのデータ構造例を説明する説明図である。
【図１２】行データの情報を説明する説明図である。
【図１３】部分データの管理データのデータ構造例を説明する説明図である。
【図１４】本発明の実施の一形態に係るデータ処理方法の一例を示すフローチャート図である。
【図１５】図７の電子データを先頭から表示した表示レイアウトの例を示す説明図である。
【図１６】図１４のＳ５の処理、すなわちカレント部分データの表示レイアウトを、影響を考慮して取得する処理の一方法を説明するフローチャート図である。
【図１７】図１４のＳ５の処理、すなわちカレント部分データの表示レイアウトを、影響を考慮して取得する処理の一方法を説明するフローチャート図である。
【図１８】部分データから表示レイアウトを生成する処理の詳細を説明するフローチャート図である。
【図１９】回り込み画像がある場合の表示レイアウト生成処理の１段階を説明する説明図である。
【図２０】回り込み画像がある場合の表示レイアウト生成処理の次の段階を説明する説明図である。
【図２１】図７に示す部分データ４０１をレイアウトし終えた状態のレイアウト全体を、説明の為に仮に表示させた状態を示す説明図である。
【図２２】図２１の状態の後、「Ｗ」から始まる文字要素を追加してレイアウトし終えた状態のレイアウト全体を、説明の為に仮に表示させた状態を示す説明図である。
【図２３】部分データ４０２をレイアウトした状態を示す説明図である。
【図２４】部分データ４０５までレイアウトされた状態を示す説明図である。
【図２５】図２４の状態から上に１ページ分の範囲を表示させる時の、処理順序を説明する説明図である
【図２６】図２４の状態から上に１ページ分の範囲を表示させた状態を示す説明図である。
【図２７】図７に示す部分データ４０２の表示レイアウトを生成し直さずに、図２４の状態から上に１ページ分の範囲を表示させた状態を示す説明図である。
【図２８】図７に示す部分データ４０２、４０３の表示レイアウトが保存されていて、部分データ４０３の中のあるバイト位置を基準として上方向に１ページ分を表示する場合の処理の、処理順序を説明する説明図である。
【図２９】図２８の場合を、図１７の処理方法に基づいて処理するときの処理手順を説明する説明図である。
【図３０】図７に示す部分データ４０７中の「Ｏｎｅ  ｓｕｃｈ」の部分から１ページ分、下の範囲を表示させた例を示す説明図である。
【図３１】図７に示す部分データ４０５、４０６のレイアウトを生成し終えた状態のレイアウトを示す説明図である。
【図３２】図７に示す部分データ４０５、４０６のレイアウトを生成する際に、回り込み画像を含む部分データの影響を考慮しなかったために、表示結果に誤りが表れた例を示す説明図である。
【符号の説明】
【０６２２】
１  部分データ取得手段
２  処理補助データ取得手段
３  影響検出手段
４  部分データ必要性判断手段
５  レイアウト生成手段
６  制御手段
７  レイアウト保存手段
８  レイアウト表示手段
９  最前部分データ検出手段（影響検出手段）
１００〜１０８  処理補助データ
４００〜４０８  部分データ
６００〜６０８  処理補助データ
【図１】
2005267610.tif 000003
【図２】
2005267610.tif 000004
【図３】
2005267610.tif 000005
【図４】
2005267610.tif 000006
【図５】
2005267610.tif 000007
【図６】
2005267610.tif 000008
【図７】
2005267610.tif 000009
【図８】
2005267610.tif 000010
【図９】
2005267610.tif 000011
【図１０】
2005267610.tif 000012
【図１１】
2005267610.tif 000013
【図１２】
2005267610.tif 000014
【図１３】
2005267610.tif 000015
【図１４】
2005267610.tif 000016
【図１５】
2005267610.tif 000017
【図１６】
2005267610.tif 000018
【図１７】
2005267610.tif 000019
【図１８】
2005267610.tif 000020
【図１９】
2005267610.tif 000021
【図２０】
2005267610.tif 000022
【図２１】
2005267610.tif 000023
【図２２】
2005267610.tif 000024
【図２３】
2005267610.tif 000025
【図２４】
2005267610.tif 000026
【図２５】
2005267610.tif 000027
【図２６】
2005267610.tif 000028
【図２７】
2005267610.tif 000029
【図２８】
2005267610.tif 000030
【図２９】
2005267610.tif 000031
【図３０】
2005267610.tif 000032
【図３１】
2005267610.tif 000033
【図３２】
2005267610.tif 000034