(57)【要約】【課題】  文書内の所望の位置まで移動しての文書表示を精度よく行う。【解決手段】  フロー、ブロックなど複数種類の単位データを各種類複数個含む文書データにおける、表示を所望する部分の文書データの位置を指定すると（Ｓ３）、指定位置に対応のフローまたはブロック内に含まれている行のデータによるレイアウトを作成する（Ｓ７）。そして、表示する先頭行のレイアウトについて、文書データにおける表示位置を算出する（Ｓ９）。算出した表示位置が、指定されている位置と同じであればその行を先頭にして表示し、そうでなければ次の行の表示位置を算出してどちらを先頭にして表示するか決定後、レイアウトに従い文書データの部分を表示する（Ｓ１１−Ｓ２１）。【選択図】        図８
2006011694.tif 000002
【特許請求の範囲】
【請求項１】
所定単位データを複数個含む文書データにおける、所望部分の文書データの位置を指定する位置指定手段と、
所定単位データそれぞれの前記文書データにおける表示位置を算出する位置算出手段と、
前記位置算出手段により算出した前記所定単位データそれぞれの算出位置のうち、前記位置指定手段により指定した前記指定位置に相当する前記算出位置である前記所定単位データを含む前記文書データの部分を表示する表示制御手段とを備える、文書表示装置。
【請求項２】
前記文書データから、前記位置指定手段により指定した前記指定位置に対応する部分のデータを取得する部分データ取得手段をさらに備えて、
前記位置算出手段は、前記部分データ取得手段が取得した前記部分データ中の前記所定単位データそれぞれの前記文書データにおける表示位置を算出することを特徴とする、請求項１に記載の文書表示装置。
【請求項３】
前記指定位置および前記算出位置は、前記文書データの先頭からの位置を示し、
前記指定位置に相当する前記算出位置は、前記指定位置を示すか、または前記指定位置よりも前記先頭側の位置を示すことを特徴とする、請求項１に記載の文書表示装置。
【請求項４】
前記所定単位データは、行のデータであることを特徴とする、請求項１に記載の文書表示装置。
【請求項５】
表示制御手段は、前記文書データの部分を、前記位置指定手段により指定した前記指定位置に相当する前記算出位置の前記行データを先頭にして表示することを特徴とする、請求項４に記載の文書表示装置。
【請求項６】
階層化されたサイズの異なる１種類以上の単位データを各種類について複数個含む文書データ中の現在表示している部分について、前記文書データにおける位置を算出する位置算出手段と、
前記位置算出手段が算出した前記位置を表示する位置表示手段とを備え、
前記位置算出手段は、
各種類の前記単位データのうち、前記サイズに関する所定基準で選択した種類の複数個の前記単位データのうちの現在表示している前記部分に対応の前記単位データについて、前記文書データにおける位置を算出することを特徴とする、文書表示装置。
【請求項７】
前記位置算出手段は、
上位の階層から下位の階層の順に、各種類の前記単位データのうち前記文書データに含まれる個数が所定数を超えるか否かを判断する判断手段と、
前記判断手段が前記所定数を超えると判断した最初の種類の複数個の前記単位データのうちの現在表示している前記部分に対応の前記単位データについて、前記文書データにおける位置を算出することを特徴とする、請求項６に記載の文書表示装置。
【請求項８】
前記位置算出手段は、
各種類の前記単位データのうち、上位の階層の種類の前記単位データの前記文書データに含まれる個数が所定数を超えないときは、下位の階層の種類の複数個の前記単位データのうち、現在表示している前記部分に対応の前記単位データについて、前記文書データにおける位置を算出することを特徴とする、請求項６に記載の文書表示装置。
【請求項９】
コンピュータを、前記コンピュータの入力部を用いて、所定単位データを複数個含む文書データにおける、所望部分の文書データの位置を指定する位置指定手段と、
前記コンピュータの演算部を用いて、所定単位データそれぞれの前記文書データにおける表示位置を算出する位置算出手段と、
前記コンピュータの表示部を用いて、前記位置算出手段により算出した前記所定単位データそれぞれの算出位置のうち、前記位置指定手段により指定した前記指定位置に相当する前記算出位置である前記所定単位データを含む前記文書データの部分を表示する表示制御手段として機能させるための、文書表示プログラム。
【請求項１０】
コンピュータを、前記コンピュータの演算部を用いて、階層化されたサイズの異なる１種類以上の単位データを各種類について複数個含む文書データ中の現在表示している部分について、前記文書データにおける位置を算出する位置算出手段と、
前記コンピュータの表示部を用いて前記位置算出手段が算出した前記位置を表示する位置表示手段として機能させ、
前記位置算出手段は、
各種類の前記単位データのうち、所定基準で選択した種類の複数個の前記単位データのうちの現在表示している前記部分に対応の前記単位データについて、前記文書データにおける位置を算出することを特徴とする、文書表示プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は文書表示装置および文書表示プログラムに関し、特に、表示される文書の位置をユーザに提示し、また所望の表示位置にまで移動して文書の表示を更新する文書表示装置および文書表示プログラムに関する。
【背景技術】
【０００２】
電子書籍などのメディアを表示する装置では、図１５（Ａ）に示すように、電子書籍の文書のどのあたりを現在表示しているかの情報を画面に表示する。この例では、文書の先頭を０％、文書の末尾を１００％としたときに、２５％の位置を表示しているという意味である。計算方法としては、例えば以下のような式が考えられる。
【０００３】
現在表示位置＝（（文書先頭からの文字数）／（文書全体の文字数））×１００（％）
また、図１５（Ｂ）と（Ｃ）に示すように、文書中で移動したい位置、すなわち移動先の位置を文書全体に対する割合で指定して移動する。この例では、図１５（Ｂ）で、現在、文書全体の先頭から２５％の位置を表示しているときに、ユーザが８０％の位置へ移動したいと考え、％指定移動ダイアログで‘８０％’と入力して移動先位置を指定すると、図１５（Ｃ）のように、指定された移動先の位置の文書が表示されるように表示内容が更新されている。また、現在の表示位置は指定したとおり８０％と示されている。
【０００４】
現在の表示位置を高速に計算し、移動する手法としては他に特許文献１と２で提案されている。
【特許文献１】特開２００３−３３０６９９号公報
【特許文献２】特開２００３−３３０７００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来技術では、以下の問題がある。
【０００６】
図１６（Ａ）と（Ｂ）は、文書全体の文字数が５００文字の文書を、１行に９文字表示できる画面に表示したものである。現在は文書の先頭を表示している。ここで、５％の位置へ移動しようとすると、移動後は５００×５÷１００＝２５なので２５文字目の「Ｙ」が画面先頭行に表示されていればよい。そのため、移動後は「Ｓ」から始まる行が画面先頭に表示される。ところが、画面に表示される現在表示位置は画面先頭行の先頭文字を基準に計算するため、３．８％を示すことになる。現在位置を小数点以下切捨てで表示した場合は３％と表示されている。さらにここで１行スクロールすると、５％と更新されて表示される。よって、５％と指定して移動したにもかかわらず、移動後の表示位置が指定した値と異なり、さらに移動後の表示から１行スクロールした後の表示位置が指定した値であるため、ユーザは違和感を感じる。
【０００７】
また、特許文献１と２のいずれもスクロールバーに表示されるスクロールボックスの大きさ(割合)を求めている。特許文献１では、現在表示している分割データサイズと、文書全体のデータサイズとの割合をスクロールボックスの大きさにしている。特許文献２では、現在表示している分割データサイズ、レイアウトサイズと、文書全体のデータサイズとの割合から、文書全体のレイアウトサイズを推測し、現在表示しているレイアウトサイズの文書全体に対する割合をスクロールボックスの大きさにしている。
【０００８】
しかし、特許文献１と２の手順によれば、文書中の全分割データのサイズが分かっていないと計算できないため、文書のデータ構造によっては処理に時間がかかる。また、この手法で％指定移動、％表示を行うと、従来技術の問題同様、指定した値と表示値がずれることがある。
【０００９】
さらに、特許文献２では、現在表示している分割データのレイアウトサイズを用いて全体のレイアウトサイズを推測し、現在位置および移動先の位置を算出している。しかし、分割データサイズに対するレイアウトサイズの割合は一定ではないため、推測誤差によって、順にスクロールしていっても％位置が小さくなることが起こり、不自然な動作となる。以下にその例を示す。
【００１０】
特許文献２では、表示している分割データのレイアウトサイズから文書全体のレイアウトサイズを推測し、％を計算する。また、スクロールボックスの大きさ(文書全体に対する表示範囲の割合)を求めているが、同様の計算方法を％表示に適用すると、以下のようになる。ここでは、後述する本発明の実施の形態に合わせて、分割データを「ブロック」、データサイズを「バイト数」と呼ぶこととする。
【００１１】
なお、「レイアウトドット数」と「レイアウトドット位置」は、文書を横書きで表示したときの、縦方向の表示ドットの数または位置を示している。レイアウトドット数は画像の大きさやフォントサイズによって異なってくるため、ブロックのバイト数に必ずしも比例しない。
【００１２】
まず、％表示値ｐはｐ＝ａ×１００／ｂで算出する。ここで、ａ:画面先頭に表示されているドットの、文書全体でのレイアウトドット位置(推測値)、ｂ:文書全体のレイアウトドット数(推測値)である。
【００１３】
また、ａ＝（ｃ×ｆ／ｅ）＋ｇと計算し、ｂ＝ｃ×ｄ／ｅと計算する。ただし、ｃ:現在表示しているブロックのレイアウトドット数であり、２ブロック以上にまたがって表示している場合はその総和になる。ｄ:文書全体のバイト数である。ｅ:現在表示しているブロックのバイト数であり、２ブロック以上にまたがって表示している場合はその総和になる。ｆ:現在表示しているブロックの手前までのバイト数の総和。ｇ：画面先頭に表示しているドットの、ブロック内でのレイアウトドット位置である。
【００１４】
簡単な例として、フロー数は１個、ブロック数は３個、各ブロックのバイト数は先頭から順に８００、１２００、１０００とし、各ブロックをレイアウトしたときのドット数が先頭から順に４００、５００、６００となる文書を、１画面に２００ドット表示できる画面で表示する場合を考える。このとき、d＝８００＋１２００＋１０００＝３０００と一定である。他の値は以下のようになる。
【００１５】
先頭ブロックのみ表示しているときは、a＝(４００×０／８００）＋ｇ＝ｇ、b＝４００×３０００／８００＝１５００、ｃ＝４００、e＝８００、f＝０である。
【００１６】
１番目と２番目のブロックを表示しているときは、ａ＝(９００×０／２０００）＋ｇ＝ｇ、ｂ＝９００×３０００／２０００＝１３５０、ｃ＝４００＋５００＝９００、ｅ＝８００＋１２００＝２０００、ｆ＝０となる。
【００１７】
２番目のブロックのみ表示しているときは、ａ＝(５００×８００／１２００）＋ｇ＝３３３．３＋ｇ、ｂ＝５００×３０００／１２００＝１２５０、ｃ＝５００、ｅ＝１２００、ｆ＝８００となる。
【００１８】
２番目と３番目のブロックを表示しているときは、ａ＝(１１００×８００／２２００）＋ｇ＝４００＋ｇ、ｂ＝１１００×３０００／２２００＝１５００、ｃ＝５００＋６００＝１１００、ｅ＝１２００＋１０００＝２２００、ｆ＝８００となる。
【００１９】
３番目のブロックのみ表示しているときは、ａ＝(６００×２０００／１０００）＋ｇ＝１２００＋ｇ、ｂ＝６００×３０００／１０００＝１８００、ｃ＝６００、ｅ＝１０００、ｆ＝８００＋１２００＝２０００となる。
【００２０】
よって、画面先頭に表示するレイアウトドット位置によって以下のように％表示が変化する。
【００２１】
画面先頭が１ブロック目の１ドット目のときは１番目のブロックのみ表示しているので１×１００／１５００＝０．１％、画面先頭が１ブロック目の２０１ドット目のときは１番目のブロックのみ表示しているので２０１×１００／１５００＝１３．４％、画面先頭が１ブロック目の２０２ドット目のときは１、２番目のブロックを表示しているので２０２×１００／１３５０＝１５．０％、画面先頭が１ブロック目の４００ドット目のときは１、２番目のブロックを表示しているので４００×１００／１３５０＝２９．６％、画面先頭が２ブロック目の１ドット目のときは２番目のブロックのみ表示しているので(３３３．３＋１)×１００／１２５０＝２６．７％、画面先頭が２ブロック目の３０１ドット目のときは２番目のブロックのみ表示しているので(３３３．３＋３０１)×１００／１２５０＝５０．７％、画面先頭が２ブロック目の３０２ドット目のときは２、３番目のブロックを表示しているので(４００＋３０２)×１００／１５００＝４６．８％、画面先頭が２ブロック目の５００ドット目のときは２、３番目のブロックを表示しているので(４００＋５００)×１００／１５００＝６０．０％、画面先頭が３ブロック目の１ドット目のときは３番目のブロックのみ表示しているので(１２００＋１)×１００／１８００＝６６．７％、画面先頭が３ブロック目の６００ドット目のときは３番目のブロックのみ表示しているので(１２００＋６００)×１００／１８００＝１００％となる。
【００２２】
このように、先頭から読み進めていくと途中で％表示の値が戻ることがあり、違和感がある。
【００２３】
それゆえにこの発明の目的は、文書内の所望の位置まで移動しての文書表示を精度よく、また表示中の文書部分の表示位置の提示を速やかに行うことができる文書表示装置およびプログラムを提供することである。
【課題を解決するための手段】
【００２４】
この発明のある局面に従う文書表示装置は、所定単位データを複数個含む文書データにおける、所望部分の文書データの位置を指定する位置指定手段と、
所定単位データそれぞれの前記文書データにおける表示位置を算出する位置算出手段と、
前記位置算出手段により算出した前記所定単位データそれぞれの算出位置のうち、前記位置指定手段により指定した前記指定位置に相当する前記算出位置である前記所定単位データを含む前記文書データの部分を表示する表示制御手段とを備える。
【００２５】
したがって、算出した所定単位データそれぞれの算出位置のうち、指定されている指定位置に相当する算出位置に該当するような所定単位データを含む文書データの部分が表示される。
【００２６】
それゆえに、現在表示すべき文書データの部分を、表示先として指定された位置とのずれがない部分の文書データとなるように表示することができる。
【００２７】
好ましくは、文書データから、前記位置指定手段により指定した前記指定位置に対応する部分のデータを取得する部分データ取得手段をさらに備えて、
前記位置算出手段は、前記部分データ取得手段が取得した前記部分データ中の前記所定単位データそれぞれの前記文書データにおける表示位置を算出することを特徴とする。
【００２８】
好ましくは、前記指定位置および前記算出位置は、前記文書データの先頭からの位置を示し、
前記指定位置に相当する前記算出位置は、前記指定位置を示すか、または前記指定位置よりも前記先頭側の位置を示すことを特徴とする。
【００２９】
好ましくは、前記所定単位データは、行のデータであることを特徴とする。
【００３０】
好ましくは、表示制御手段は、前記文書データの部分を、前記位置指定手段により指定した前記指定位置に相当する前記算出位置の前記行データを先頭にして表示することを特徴とする。
【００３１】
この発明の他の局面に従う文書表示装置は、階層化されたサイズの異なる１種類以上の単位データを各種類について複数個含む文書データ中の現在表示している部分について、前記文書データにおける位置を算出する位置算出手段と、
前記位置算出手段が算出した前記位置を表示する位置表示手段とを備え、
前記位置算出手段は、
各種類の前記単位データのうち、前記サイズに関する所定基準で選択した種類の複数個の前記単位データのうちの現在表示している前記部分に対応の前記単位データについて、前記文書データにおける位置を算出することを特徴とする。
【００３２】
したがって、異なるサイズを持つ複数種類の単位データで階層化された文書データにおける、現在表示中の部分の位置は、このサイズに関する所定基準で選択した種類の単位データのうち、該部分に対応の単位データの文書データにおける位置を算出して、この算出結果を用いて表示される。
【００３３】
それゆえに、位置を算出するのに用いる種類の単位データの選択は、階層化に用いているサイズに関する所定基準に従うから、文書データのサイズに合わせた所定基準を適用することで、文書データの大きさ（サイズ）に拘わらず速やかに位置を算出できる。
【００３４】
好ましくは、前記位置算出手段は、
上位の階層から下位の階層の順に、各種類の前記単位データのうち前記文書データに含まれる個数が所定数を超えるか否かを判断する判断手段と、
前記判断手段が前記所定数を超えると判断した最初の種類の複数個の前記単位データのうちの現在表示している前記部分に対応の前記単位データについて、前記文書データにおける位置を算出することを特徴とする。
【００３５】
好ましくは、前記位置算出手段は、
各種類の前記単位データのうち、上位の階層の種類の前記単位データの前記文書データに含まれる個数が所定数を超えないときは、下位の階層の種類の複数個の前記単位データのうち、現在表示している前記部分に対応の前記単位データについて、前記文書データにおける位置を算出することを特徴とする。
【００３６】
好ましくは、前記位置算出手段は、
現在表示中の部分については下位の階層の種類の複数個の前記単位データのうちから対応の前記単位データを、それ以外の部分については上位の階層の種類の複数個の前記単位データのうちから対応の前記単位データを選択する。
【００３７】
この発明のさらに他の局面に従う文書表示プログラムは、コンピュータを、前記コンピュータの入力部を用いて、所定単位データを複数個含む文書データにおける、所望部分の文書データの位置を指定する位置指定手段と、
前記コンピュータの演算部を用いて、所定単位データそれぞれの前記文書データにおける表示位置を算出する位置算出手段と、
前記コンピュータの表示部を用いて、前記位置算出手段により算出した前記所定単位データそれぞれの算出位置のうち、前記位置指定手段により指定した前記指定位置に相当する前記算出位置である前記所定単位データを含む前記文書データの部分を表示する表示制御手段として機能させるためのプログラムである。
【００３８】
この発明のさらに他の局面に従う文書表示プログラムは、コンピュータを、前記コンピュータの演算部を用いて、階層化されたサイズの異なる１種類以上の単位データを各種類について複数個含む文書データ中の現在表示している部分について、前記文書データにおける位置を算出する位置算出手段と、
前記コンピュータの表示部を用いて前記位置算出手段が算出した前記位置を表示する位置表示手段として機能させ、
前記位置算出手段は、
各種類の前記単位データのうち、所定基準で選択した種類の複数個の前記単位データのうちの現在表示している前記部分に対応の前記単位データについて、前記文書データにおける位置を算出することを特徴とするプログラムである。
【発明を実施するための最良の形態】
【００３９】
以下、この発明の実施の形態について図面を参照して詳細に説明する。
【００４０】
[文書表示装置の機能の概要]
本実施の形態では、ＨＴＭＬ（Hyper Text Markup Language）文書のようにページの区切りはなく、画面サイズや使用するフォントなどにより自由にレイアウトされる形式の文書データを対象とする。この文書データのことを、本実施形態ではフロー型コンテンツと呼んでいる。
【００４１】
文書データには、編集の利便性から、記述フォーマットと実行フォーマットの２種類のデータ形式が存在する。記述フォーマットは、データ作成のためのデータフォーマットである。編集のし易さを考慮し、例えばＸＭＬ（eXtensible Markup Language）のような、テキストエディタでも編集できるフォーマットを用いて記述する。実行フォーマットは、文書表示装置での実行を考慮したフォーマットである。文書表示装置での処理し易さを考慮し、独自のバイナリ形式で記録される。実行フォーマットは、記述フォーマットが専用ツールにより、コンバート処理されると生成される。
【００４２】
[フロー型コンテンツの構成]
フロー型コンテンツは複数のフローを有し、各フローは複数のブロックを有するという、階層構造を有する。
【００４３】
[フローについて]
フロー型コンテンツは、通常、複数のフローから構成される。フローとは、フロー型コンテンツにおいて、例えば第１章の文章、第２章の文章など、意味的にまとまりのあるデータの群を指し、一般に一つの書籍は一つ以上のフローを持っている。フローに分割する基準は特に定めず、文書データ作成者の意向にゆだねる。例えば、章毎に分割してもいいし、新聞などの文書データであれば記事毎に分割してもいい。また、分割せず一つのフローしか持たない文書データとしてもよい。
【００４４】
[ブロックについて]
各フローは、通常、複数のブロックから構成される。ブロックとは、文書表示装置での処理を高速化するために、適当な大きさでフローを分割したものである。分割する際には、ブロック単位でデータの読み込み、表示のためのレイアウト作成が可能なように、補助情報を作成しておく。フロー型コンテンツは画面サイズや使用するフォントなどにより表示のためのレイアウト（後述する）が異なるため、フロー型コンテンツの途中から表示する場合でもフロー型コンテンツの先頭からデータを読込み、表示のためのレイアウトを作成しなければならないのが一般的である。しかし、ブロック単位でデータの読込み、表示のためのレイアウト作成が可能であれば、フロー型コンテンツの途中から表示する場合でも高速に処理することができる。なお、ブロック分割は記述フォーマットからバイナリ形式の実行フォーマットへのコンバート時に行われるため、文書データ作成者がブロックの存在を意識することはない。
【００４５】
[ブロックの構成要素について]
各ブロックには文字と、画像（動画、静止画）の表示を指定するオブジェクト指定タグとが存在する(他にも存在するが、本発明と関連がないため省略する)。オブジェクト指定タグはＨＴＭＬ同様、表示するオブジェクトのファイル名や左／右寄せなどの属性を指定する。同一文書データ内で文字や画像を混在させて記述することも可能である。
【００４６】
[表示のためのレイアウトのデータ構造]
ブロック内の文字や画像を画面に表示するためには、画面サイズやフォントサイズなどのパラメータに応じて、表示イメージを構成する必要がある。パラメータは固定であったり変更可能であったりする。この表示イメージのためのデータを本実施の形態ではレイアウトと呼ぶ。レイアウトのデータ構造の一例は後述する。
【００４７】
[％の具体的な計算例]
本実施の形態に係る文書表示装置では、電子文書データ内の所望の表示先データを指定して、指定した先のデータに移動して表示するのは％指定移動機能で実現される。現在の表示データの電子文書データ内での位置を提示するのは％表示機能で実現される。％指定または％表示のために具体的な位置計算例は以下のようになる。
【００４８】
〔％指定移動機能〕
（制御方法切替の閾値）
処理対象の電子文書データであるフロー型コンテンツ内のフロー数が例えば１００（ただし、１００には限定されない）以上のときはフロー数制御をし、そうでないときは、フロー型コンテンツ全体のブロック数が例えば１００以上であればブロック数制御をし、ないときには、すなわちフロー数とブロック数のどちらも１００未満のときはバイト数制御となる。このような制御の切換えはシステム側が自動的に行う。
【００４９】
（フロー数制御とブロック数制御の計算手順）
全体でｍ個(ｍ≧１００)のフローを有するフロー型コンテンツにおいて、表示位置を先頭からｐ％の位置に移動するように指定されたときに表示するｎ番目のフロー(先頭のフローを１番目とする)は、ｎ=ｍ×ｐ/１００と算出する(結果は切り捨てにする)。例えば、１００個のフローを有するフロー型コンテンツで５０％の位置への移動を指定すると、５０番目のフローへ移動する。
【００５０】
ブロック数制御に関しては、上記説明の「フロー」を「ブロック」に置換えて移動先の位置を計算することができる。
【００５１】
（バイト数制御の計算手順）
フロー型コンテンツにおいて、表示位置を先頭からｐ％の位置に移動するように指定したとき、移動先の位置は該フロー型コンテンツの先頭からｎ番目のバイト位置として、ｎ＝(ｍ×ｐ／１００)−１と算出する(結果は切り捨てにする)。ただしｎ＜０のときはｎ＝０とする。ここで右辺の２項目を‘−１’としているのは、フロー型コンテンツでは先頭のバイト位置を０とするからである。なお、「バイト位置」とは、文字やオブジェクト指定タグが記載されている位置をバイト単位で示すものである。フロー内のバイト位置であれば、フロー先頭からのオフセット値を意味し、フロー型コンテンツ先頭からのバイト位置であれば、コンテンツ先頭からのオフセット値を意味する。フロー型コンテンツ先頭からのバイト位置は、そのフローよりコンテンツ先頭側にあるフローのバイト数の合計値に、そのフロー内のバイト位置を足したものとなる。バイト位置の先頭は０である。
【００５２】
このようにして算出する変数ｎを用いて該当フローとバイト位置を求め、そのバイト位置が画面先頭に表示されるように表示位置をジャンプする。例えば、フロー型コンテンツ全体のバイト数が１００バイトであるとき１０％の位置への移動を指定すると、フロー型コンテンツの先頭からバイト位置が‘９’のところへ移動する。
【００５３】
（特殊処理）
移動先として指定された位置が０％または１００％を指示するときには、特殊処理を行う。つまり、０％が指定されたらフロー型コンテンツの先頭を表示し、１００％が指定されたらフロー型コンテンツの末尾を表示する。
【００５４】
バイト数制御では、移動先の位置を表示する％表示値を調べ、移動先として指定した％値と異なるときは、１行先の％表示値も調べる。その結果、もし１行先の％表示値が移動先として指定した％値と一致するときは１行先に移動する。
【００５５】
［％表示機能］
（制御方法切替の閾値）
上述の％指定移動機能と同様にフロー、ブロック、バイトの順番で所定閾値（たとえば１００とするが、これには限定されない）と比較しながら切換える。
【００５６】
（フロー数制御とブロック数制御の計算手順）
フロー型コンテンツがｍ個(ｍ＞＝１００)のフローを有するとき、先頭のフローを１番目として、先頭からｎ番目のフローが表示されているときは、提示する表示位置ｐ％はｐ＝ｎ×１００／ｍと算出できる(結果は切り捨てにする)。例えば、１００個のフローがあるフロー型コンテンツで５０番目のフローが表示されているときは表示位置５０％と算出されて提示される。
【００５７】
（バイト数制御の計算手順）
フロー型コンテンツ全体のバイト数(全ブロックのバイト数総和)をｍ、現在画面先頭に表示されている文字やオブジェクトのフロー型コンテンツ全体のバイト位置をｎとすると、表示位置ｐ％はｐ＝（ｎ＋１）×１００／ｍと算出できる(結果は切り捨てにする)。例えば、フロー型コンテンツ全体のバイト数が１００で現在表示しているデータの、フロー型コンテンツの先頭からのバイト位置を９とすると、表示位置１０％と算出されて提示される。
【００５８】
（特殊処理）
算出結果の表示位置ｐ％が０％または１００％を示すときは特殊処理を行う。つまり、フロー型コンテンツの先頭のバイト位置を既に表示していて、これ以上ページ戻りできないときは表示位置０％と提示する。また、フロー型コンテンツの末尾のバイト位置を既に表示していて、これ以上ページめくりできないときは表示位置１００％と提示する。
【００５９】
また、計算結果の表示位置ｐ％が１００％を指示しても、まだページめくりできるときは表示位置ｐ％は９９％と提示する。
【００６０】
〔装置の構成〕
次に、本実施の形態に係る文書表示装置の構成を説明する。ここでは文書は横書きとしているが、縦書きであっても同様に適用できる。
【００６１】
図１にはこの発明の実施の形態に係る文書表示装置の全体の機能構成が示されている。図２には本実施の形態に係る％指定移動機能のための構成が示されて、図３には％表示機能のための構成が示される。図２と図３の機能構成はそれぞれ図１の部分からなっている。なお、図１〜図３中の実線矢印はデータの流れ、または制御の流れを模式的に示している。
【００６２】
図４（Ａ）には、この発明の実施の形態に係る文書表示装置を搭載する携帯型電話機のハードウェア構成が、図４（Ｂ）には同様に文書表示装置を搭載するパーソナルコンピュータのハードウェア構成が示される。図５には図４（Ａ）のＲＡＭ（Random Access Memory）１３と図４（Ｂ）の主記憶部２１に設けられる各種バッファが示されている。図６は本実施の形態に係るフロー型コンテンツ４０（以下、単にコンテンツ４０と略す）の内部構成を概略的に示す図であり、図７は、コンテンツ４０の補助情報４１の内容を示す図である。
【００６３】
図１を参照して文書表示装置は、ユーザにより外部操作されるキーボードなどに対応の表示位置入力部２、対応表示コンテンツ位置算出部４、コンテンツ取得部５、レイアウト取得部６、コンテンツ単位決定部７、表示単位調整部８、表示位置算出部９および表示部１１を備える。図２を参照して％指定移動機能のために、表示位置入力部２、対応表示コンテンツ位置算出部４、レイアウト取得部６、表示単位調整部８、表示位置算出部９および表示部１１が設けられる。図３を参照して％表示機能のためにコンテンツ取得部５、コンテンツ単位決定部７、表示位置算出部９および表示部１１が設けられる。
【００６４】
図４（Ａ）を参照して、文書表示装置を搭載する携帯型電話機は、各部を集中的に制御・監視するためのＣＰＵ（Central Processing Unit）１２、ＲＡＭ１３、内蔵および外部フラッシュメモリ１４および１５、表示位置入力部２に対応するキー部１６、表示部１１に対応する表示デバイス１７、外部の各種の通信ネットワーク２８と通信するための通信デバイス１８、これら各部を相互に接続するためのバス１９を備える。
【００６５】
図４（Ａ）の構成はここでは、携帯型電話機としたが、情報処理端末、たとえばＰＤＡ（Personal Digital Assistant）であってもよいし、文書表示機能を備えた家電製品でもよい。
【００６６】
図４（Ｂ）を参照して、文書表示装置を搭載するパーソナルコンピュータは、各部を集中的に制御・監視するためのＣＰＵ２０、主記憶部２１、外部記憶部２２、表示位置入力部２に対応するマウス２３およびキーボード２４、表示部１１の表示のために用いられるグラフィックデバイス２５、表示部１１に対応するモニタ２６、外部の各種のネットワーク２８と通信するための通信デバイス２７およびこれら各部を相互に通信可能に接続するためのバス２９を備える。
【００６７】
ＣＰＵ１２と２０それぞれは、本発明において対応表示コンテンツ位置算出、表示位置算出などの各種演算処理を行う。ＲＡＭ１３と主記憶部２１はＣＰＵ１２と２０で演算した結果得られたデータや後述する補助情報４１を格納する。内蔵フラッシュメモリ１４と外部フラッシュメモリ１５と外部記憶部２２は実行プログラム、ユーザ設定データ、コンテンツ４０を格納する。ユーザ設定データとは、コンテンツのしおり情報や、表示フォントサイズや縦書き／横書きといった表示設定情報などを指す。なお、内蔵フラッシュメモリ１４に実行プログラムとユーザ設定データを、外部フラッシュメモリ１５にコンテンツ４０を格納するようにしてもよい。
【００６８】
キー部１６およびキーボード２４はテンキー、上下左右のカーソルキー、決定キー、電源キーなどからなり、本発明ではユーザによる％指定移動の指示、％値の入力に使われる。  表示デバイス１７とモニタ２６にはレイアウトされた文字や画像が表示されるとともに、％表示機能により算出された現在の表示位置も％の値で表示される。
【００６９】
通信デバイス１８と２７は、ネットワーク２８から、電子書籍のコンテンツ４０をダウンロードする際に利用される。ダウンロードされたコンテンツ４０は携帯型電話機では内蔵フラッシュメモリ１４に格納される。パーソナルコンピュータでは外部記憶部２２に格納される。なお、以下コンテンツ４０は予め実行フォーマット形式に変換され、かつ符号化・暗号化された状態であるとして説明するが、記述フォーマット形式でもよいし、符号化・暗号化されていない状態でもよい。
【００７０】
図５を参照してＲＡＭ１３と主記憶部２１には、％指定移動機能のための処理および％表示機能のための処理に関してアクセスされる各種バッファが設けられる。具体的には、指定表示位置保存バッファ３０、算出表示位置保存バッファ３１、後述する図１１のレイアウト３５を保存するためのレイアウト保存バッファ３２、後述する図１２のコンテンツ単位テーブル３７を格納するためのコンテンツ単位テーブル保存バッファ３３および現在表示中のフローまたはブロックはどれであるかをコンテンツ４０の先頭からの順番で指示する現在表示位置情報を保存する現在表示位置保存バッファ３４を有する。
【００７１】
現在表示位置保存バッファ３４の現在表示位置情報は、コンテンツ４０を初めて表示する時にはコンテンツ４０の先頭フローまたは先頭ブロックを指示するようにＣＰＵ１２または２０により設定される。また、コンテンツ４０の表示を一旦中断して、その後に表示を再開したときは、現在表示位置保存バッファ３４の現在表示位置情報で指示される位置（前回の中断時に表示していた位置）に対応のデータが表示される。またユーザが表示中のコンテンツ４０のデータの頁めくり操作、スクロール操作などをしたときも、現在表示位置情報は、その都度、操作後の表示位置を示すように更新される。このような現在表示位置情報の更新手順は、コンテンツ４０を表示する場合に実施されるよく知られた手順であるので、詳細は略す。
【００７２】
また、現在表示位置保存バッファ３４の現在表示位置情報は、％指定移動機能により表示位置が移動した場合にも、移動先に該当するフローまたはブロックの順番を指示するように更新される。
【００７３】
なお、以下は、汎用のパーソナルコンピュータよりも処理能力が制限せざるをえない図４（Ａ）の携帯型電話機を想定して説明するが、図４（Ｂ）のパーソナルコンピュータの場合も同様の説明を適用することができる。
【００７４】
図１を参照すると、コンテンツ取得部５はコンテンツ４０の補助情報４１を取得する。具体的には内蔵フラッシュメモリ１４の符号化されたコンテンツ４０内の先頭に位置する補助情報４１を読出してＲＡＭ１３に格納し、ここで復号化する。以降は、ＲＡＭ１３の復号化された後の補助情報４１が参照されて、内蔵フラッシュメモリ１４のコンテンツ４０が読出されて復号化されて、所定の処理が実行される。
【００７５】
コンテンツ単位決定部７は、ＲＡＭ１３に格納した補助情報１４を参照して、前述のフロー数制御、ブロック数制御などの切換えを行い、処理対象のコンテンツ単位はフローか、またはブロックかを決定して、その決定結果はコンテンツ単位テーブル３７としてコンテンツ単位テーブル保存バッファ３３に格納する。コンテンツ単位テーブル保存バッファ３３に格納されたコンテンツ単位テーブル３７は表示位置算出部９により参照される。
【００７６】
表示位置入力部２はキー部１６を操作して指定された表示位置の情報を入力すると、入力した表示位置指定情報を、指定表示位置保存バッファ３０に格納するする。ここでは、指定表示位置の情報はユーザ操作による入力としているが、これに限定されず、例えば、携帯電話機において実行される他のタスクからの引渡しデータにより入力するとしてもよい。
【００７７】
表示位置入力部２により指定表示位置保存バッファ３０に格納された指定表示位置情報は、対応表示コンテンツ位置算出部４と表示単位調整部８により参照される。また表示位置算出部９は算出した表示位置情報を算出表示位置保存バッファ３１に格納すると、表示単位調整部８と表示部１１が格納された算出表示位置情報を参照する。レイアウト取得部６は取得したレイアウト３５をレイアウト保存バッファ３２に格納する。レイアウト保存バッファ３２に格納されたレイアウト３５は表示単位調整部８と表示位置算出部９により参照される。
【００７８】
（コンテンツのデータ構造について）
本実施の形態に係るコンテンツ４０について説明する。図６を参照すると、コンテンツ４０は補助情報４１と複数のフロー４２ｉ（ｉ＝１、２、３、…、ｍ）を含む。各フロー４２ｉは同様の構成を有し、複数のブロック４３ｊ（ｊ＝１、２、３、…、ｎ）を含む。ブロック４３ｊは複数の文字コードからなる文字コード群４４１と文書中に展開される画像などのオブジェクトデータを指定するためのオブジェクト指定タグ群４４２を含む。図６のコンテンツ４０が文書表示装置に供給された場合、供給されたコンテンツ４０は符号化・暗号化されたファイルとして内蔵フラッシュメモリ１４に格納される。コンテンツ４０の文書などを表示部１１に表示するなどの実行時には、コンテンツ４０の補助情報４１は内蔵フラッシュメモリ１４から読出されてＲＡＭ１３に格納され、ここにおいて復号化される。したがって実行時には、この復号化された補助情報４１が参照されることになる。
【００７９】
（補助情報のデータ構造について）
図７には、補助情報４１の内容が示される。補助情報４１はコンテンツ４０のフロー、ブロックおよびバイトという階層化された構造を示し、また該階層化構造を管理するための情報である。具体的には補助情報４１は、データ群４１０、４２０および４３０を含む。データ群４２０はコンテンツ４０に含まれる各フロー４２ｉについてフロー情報４６ｉを有する。データ群４３０は、コンテンツ４０に含まれる各ブロック４３ｊについてブロック情報４９ｊを含む。
【００８０】
データ群４１０はコンテンツ４０に含まれている全フロー数を示すデータ４４、１番目からｍ番目までのフロー情報４６１〜４６ｍのそれぞれを指示するためのポインタデータ４５ｉを有する。フロー情報４６ｉはフロー４２ｉのそれぞれに対応して設けられる。
【００８１】
フロー情報４６ｉは、対応のフロー４２ｉに含まれる全ブロック数を示すデータ４７および該フロー４２ｉに含まれる１番目からｎ番目までのブロック４３ｊのそれぞれに対応のブロック情報４９ｊを指示するためのポインタデータ４８ｊを含む。ブロック情報４９ｊは対応のブロック４３ｊに含まれる文字コードの全バイト数のデータ６１および内蔵フラッシュメモリ１４のコンテンツ４０中の該ブロック４３ｊの本体データを指示するためのポインタデータ６２を含む。ここでは、説明を簡単にするために、コンテンツ４０は文字コードのみからなっていると想定する。
【００８２】
（処理フローチャートについて）
図８〜図１０には、本実施の形態に係る％指定移動機能と％表示機能の処理手順がフローチャートにして示される。各フローチャートに対応のプログラムは予め作成されて内蔵フラッシュメモリ１４に格納されているが、実行時には、ＣＰＵ１２によりここから読出されてＲＡＭ１３に展開される。ＣＰＵ１２はＲＡＭ１３のこれらプログラムを実行することにより図１〜図３に示した各部による％指定移動機能および％表示機能を実現することができる。このように図１〜図３に示された各部は、これらのプログラムによって実現されている。
【００８３】
（レイアウトについて）
図１１には、本実施の形態に係るレイアウト３５の一例が示される。レイアウト３５はレイアウト取得部５によりブロック単位で生成される。レイアウト３５は、表示単位（行）毎に文字や画像のオブジェクトを格納する配列構造を有する。ここでは、配列の要素として表示単位の行それぞれに対応して、行番号のデータ３５１、行開始位置のデータ３５２、行終了位置のデータ３５３および行要素のデータ３５４を含む。
【００８４】
データ３５１は、表示する行のそれぞれに対して順番に付けた番号を指示し、行番号の順（昇順）で画面に表示される。行開始位置のデータ３５２および行終了位置のデータ３５３は、対応する行に含まれる文字や画像がコンテンツ４０中でどの範囲に記載されているかをバイト位置で示す。
【００８５】
行要素のデータ３５４は対応する行に表示されるデータを示す。行要素のデータ３５４において“文字”は文字コードや文字データへのポインタ情報などを示し、“画像”は、該画像のオブジェクトを指定するためのタグのデータ（アドレス）を示す。文字や画像のオブジェクトには、それらの縦横サイズや、それぞれのオブジェクトを表示するために必要な情報（文字コードや画像データへのポインタなど）が含まれている。
【００８６】
（コンテンツ単位テーブルについて）
図１２にはコンテンツ単位テーブル３７の内容例が示される。コンテンツ単位テーブル３７は、フロー→ブロック→バイトという階層構造を持つコンテンツ４０について、上位階層の要素（単位）が下位階層の要素（単位）を何個保持しているかをデータとして格納している。これにより、表示コンテンツ位置算出を高速に処理することができる。ここでは、コンテンツ４０はフロー番号のデータ３７１で個別に指定される複数のフロー、ブロックおよび文字コード（バイトデータ）という３階層の構造を持っているとしているから、コンテンツ単位テーブル３７を参照すると、このコンテンツ４０は最上位階層であるフロー４２ｉをｍ個持っており、各フロー４２ｉには第２階層であるブロック４３ｊを、ブロック数のデータ３７２で示される個数分有し、データ３７２で示される数の各ブロック４３ｊについてそこに含まれる文字コード群４４１のバイト数がデータ３８１…、３８ｎで示されている。たとえば、フロー番号“１”のフロー４２ｉにはブロック４３ｊが１個保持されており、この１個のブロック４３ｊの文字コード群４４１のバイト数は８００バイトであることを意味している。
【００８７】
（％指定移動機能）
図８のフローチャートに従い、図２の構成による％指定移動機能のための処理について説明する。まず、コンテンツ４０の補助情報４１はコンテンツ取得部５によりＲＡＭ１３に格納されており、また内蔵フラッシュメモリ１４のコンテンツ４０のデータは復号されてレイアウト取得部６によりレイアウト３５が作成されて、該レイアウト３５に従うデータが表示部１１により表示デバイス１７に表示されていると想定する。
【００８８】
前述したように、本実施の形態では％表示機能によりコンテンツ４０のデータ表示とともに表示中の部分データの％位置情報も表示されるので、ユーザは再表示させたい部分データのおおよその％位置を覚えておくことができる。したがって、ユーザがコンテンツ４０の他の所望部分、たとえば前回閲覧していた部分を再度表示させたいとして、キー部１６を操作して、該所望部分の位置を移動先に指定するための指定表示位置情報を入力する場合には、この指定表示位置情報として、コンテンツ４０の全体を１００％として先頭からどれくらいの位置であるかを％値で指示することが可能となる。
【００８９】
表示位置入力部２は、このようにしてキー部１６からユーザが所望の指定表示位置情報を入力すると、これを指定表示位置保存バッファ３０に格納する（ステップＳ（以下、単にＳと略す）３）。
【００９０】
次に、対応表示コンテンツ位置算出部４はコンテンツ４０内の、指定表示位置保存バッファ３０に格納された指定表示位置情報に対応の位置を補助情報４１に基づき算出する（Ｓ５）。例えば、１０００バイトのコンテンツ４０であって指定表示位置情報として５０％が入力されれば５００バイト目であり、コンテンツ４０が複数のフロー４２ｉまたは複数のブロック４３ｊからなる場合はどのフロー４２ｉのどのブロック４３ｊを表示すべきか算出する。
【００９１】
この算出は、ＲＡＭ１３の補助情報４１の全フロー数のデータ４４、各フロー情報４６ｉの全ブロック数のデータ４７および各ブロック情報４９ｊの全バイト数のデータ６１と指定表示位置情報とを、前述した計算式のそれぞれに適用して計算することで、位置を算出できる。算出位置は、コンテンツ４０の先頭から何番目のフロー４２ｉまたはブロック４３ｊと指示される。
【００９２】
続いて、レイアウト取得部６は、対応表示コンテンツ位置算出部４で算出した位置のデータを含むレイアウト３５を作成しレイアウト保存バッファ３２に格納する（Ｓ７）。レイアウト３５の作成は具体的には、次のようである。
【００９３】
算出した位置が、例えばｉ番目のフロー４２ｉを指示するならば、図７の補助情報４１のデータ４５ｉのポインタが指示するフロー情報４６ｉのうちデータ４８ｊが指示する１番目からのブロック情報４９ｊを順に検索して、検索結果、得ることができたデータ６２が示すポインタにより内蔵フラッシュメモリ１４から対応するデータを読み出し、復号化して、レイアウト３５を作成する。レイアウトした結果、１画面分以上のレイアウトが作成できていれば作成を終了し、そうでないときはレイアウトしたブロックの次以降のブロックに対し、１画面分以上のレイアウトが作成できるまで順次レイアウトを作成していく。
【００９４】
表示位置算出部９は、レイアウト保存バッファ３２に保存されたレイアウト３５を検索して、対応表示コンテンツ位置算出部４が算出した位置のデータが含まれる第１表示単位（行）の位置のデータとコンテンツ４０のバイト単位のサイズとを用いて該行のコンテンツ４０における先頭からの表示位置（％）を算出して、算出した表示位置（％）データを算出表示位置保存バッファ３１に格納する（Ｓ９）。なお、コンテンツ４０のバイト単位のサイズは予め得ていると想定する。
【００９５】
表示単位調整部８は、指定表示位置保存バッファ３０に格納された指定表示位置情報と、算出表示位置保存バッファ３１に格納された算出表示位置情報とを比較し、両情報が同じ表示位置を示すか否かを判断する（Ｓ１１）。同じ表示位置を示しているならば（Ｓ１１でＹＥＳ）、表示部１１は、第１表示単位を先頭にしてレイアウト３５に従うデータを表示する（Ｓ１３）。
【００９６】
一方、表示単位調整部８は両表示位置情報が同じ表示位置を指していないと判定すると（Ｓ１１でＮＯ）、レイアウト取得部６は第２表示単位（行）のレイアウト３５を作成してレイアウト保存バッファ３２に格納する（Ｓ１５）。第１表示単位と第２表示単位が同じブロックに属する場合は第２表示単位のレイアウトもＳ７で作成済みのため、Ｓ１５は不要となる。その後、表示位置算出部９は、レイアウト３５をレイアウト保存バッファ３２において参照して第２表示単位の表示位置を算出して、算出表示位置情報を算出表示位置保存バッファ３１に格納する（Ｓ１７）。表示単位が行の場合、第１表示単位(行)の次の行を第２表示単位とする。
【００９７】
表示単位調整部８は指定表示位置保存バッファ３０に格納された指定表示位置情報と算出表示位置保存バッファ３１に格納された第２表示単位の算出表示位置情報とを比較し、比較結果に基づき第２表示単位を画面先頭にしてレイアウト３５に従い表示するか否を判定する（Ｓ１９）。具体的には、第２表示単位の表示位置がユーザが入力した表示位置と同じであれば第２表示単位を画面先頭にして表示し（Ｓ２１）、異なれば、第１表示単位を画面先頭して表示する（Ｓ１３）。これは、一般にコンテンツ４０の文書は先頭から読み進められていくことに鑑みると、両表示位置が異なった場合に、第２表示単位ではなくて、その前の行（第１表示単位）を先頭に表示することは自然な表示態様といえる。
【００９８】
（％指定移動機能の変形例）
次に、図９の処理手順を参照して、％指定移動機能の変形例を説明する。
【００９９】
まずステップＳ２５とステップＳ２７において図８のステップＳ３とＳ５と同様の処理が行なわれる。
【０１００】
次に、レイアウト取得部６は、前述と同様にして、算出された表示位置に基づいて対応する位置周辺のレイアウト３５を作成し、レイアウト保存バッファ３２に格納する（Ｓ２９）。
【０１０１】
表示位置算出部９は、レイアウト保存バッファ３２に格納されたレイアウト３５を参照して、レイアウト３５中のデータ３５１が示す各表示単位（行）について、表示位置（％）を前述と同様に算出し、算出表示位置情報として算出表示位置保存バッファ３１に格納する（Ｓ３１）。
【０１０２】
表示単位調整部８は、指定表示位置保存バッファ３０に格納された指定表示位置情報と、算出表示位置保存バッファ３１に格納された各表示単位（行）についての算出表示位置情報とを比較照合し、その結果に基づき、画面の先頭に表示する最適な表示単位（行）はどれであるかを選択して決定する（Ｓ３３）。
【０１０３】
具体的には、表示単位が行の場合、各行の算出表示位置をユーザが入力した指定表示位置と比較し、同じ値を示す行を選択する。もし、同じ値を示す行が複数あれば、そのうちコンテンツ４０の先頭に近い行を選択する。一方、同じ値を示す行がない場合は、ユーザが入力した指定表示位置の値より小さく、かつ該指定表示位置の値に最も近い値の算出表示位置を示す行を選択する。
【０１０４】
そして、表示部１１は、選択された表示単位（行）を、決定された最適な表示単位として画面の先頭に位置するようにして、レイアウト３５に従い表示デバイス１７にデータを表示する（Ｓ３５）。
【０１０５】
このように図８または図９の手順においては、算出された表示位置と指定された表示位置とを比較して、最適な表示単位（行）を特定して、その最適表示単位が、本実施の形態では画面の先頭行として表示されるように調整しているから、現在の表示位置と指定した移動先の表示位置とのずれは生じない。
【０１０６】
（％表示機能について）
図１０のフローチャートを参照して、本実施の形態に係る図３の構成による％表示機能の処理手順について説明する。
【０１０７】
まず、コンテンツ取得部５は、コンテンツ４０を取得する（Ｓ４１）。具体的には、前述した手順に従い内蔵フラッシュメモリ１４のコンテンツ４０の補助情報４１を読出してＲＡＭ１３に展開する。ここで補助情報４１は復号化されたデータである。
【０１０８】
次に、コンテンツ単位決定部７は、表示位置を計算する対象となるコンテンツ単位を決定する（Ｓ４３、Ｓ４９）。具体的には、ＲＡＭ１３の補助情報４１を参照して第１コンテンツ単位(章）のフロー４２ｉがコンテンツ４０に所定数（たとえば、１００）以上あるかをフロー番号のデータ３７１を参照して判定する（Ｓ４３）。判定結果、フロー番号のデータ３７１が示す第１コンテンツ単位の総数が所定数以上あれば（Ｓ４３でＹＥＳ）、表示位置算出部９は、この総数の値と現在表示位置保存バッファ３４の現在表示位置情報が示す現在表示中のフローの順番の値とを、前述のフロー数制御の式に適用して表示位置（％）を算出し、算出した表示位置（％）の情報を算出表示位置保存バッファ３１に格納する（Ｓ４５）。
【０１０９】
表示部１１は算出表示位置保存バッファ３１に格納された表示位置（％）の情報を表示デバイス１７においてコンテンツ４０のデータとともに表示する（Ｓ４７）。
【０１１０】
一方、第１コンテンツ単位（フロー４２ｉ）が所定数未満であれば（Ｓ４３でＮＯ）、第２コンテンツ単位(節)のブロック４３ｊがコンテンツ４０において所定数（例えば、１００）以上あるかを判定する（Ｓ４９）。具体的には、ＲＡＭ１３の補助情報４１を参照してコンテンツ単位テーブル３７を作成し、コンテンツ単位テーブル保存バッファ３３に格納する。コンテンツ単位テーブル３７から算出されるコンテンツ全体の総ブロック数が所定数以上であるか否かに基づき判定する。
【０１１１】
判定の結果、第２コンテンツ単位のブロック数が所定数以上ある場合（Ｓ４９でＹＥＳ）、表示位置算出部９は、現在表示中のブロック４３ｊのコンテンツ４０の先頭からの順番を現在表示位置保存バッファ３４の現在表示位置情報から特定して、特定した順番の値と上述の全ブロック数とを用いて前述したブロック数制御の計算式により、表示位置（％）を算出して、これを算出表示位置保存バッファ３１に格納する（Ｓ５１）。その後、前述したステップＳ４７に移行する。
【０１１２】
一方、第２コンテンツ単位のブロック数も所定数未満の場合は（Ｓ４９でＮＯ）、第３コンテンツ単位（バイト）の数を使って表示位置算出部９で表示位置（％）を算出して、算出した表示位置（％）の情報を算出表示位置保存バッファ３１に格納する。その後、前述したステップＳ４７に移行する。
【０１１３】
具体的には、コンテンツ単位テーブル３７から算出されるコンテンツ全体の総バイト数と、現在表示中のレイアウト３５の先頭行の行開始位置のデータ３５２が示すバイト位置のデータとを、前述したバイト数制御の計算式に適用して、表示位置（％）を算出して（Ｓ５３）、これを算出表示位置保存バッファ３１に格納する（Ｓ５１）。その後、前述したステップＳ４７に移行する。
【０１１４】
このような図１０の手順に従い％表示機能が実行されて、コンテンツ４０のデータの大きさ（フロー総数、ブロック総数、バイト総数）に応じて、％表示位置の算出をフロー単位、ブロック単位またはバイト単位で行うように選択的に切換えているので、コンテンツ４０のサイズが大きくなっても現在表示位置（％）を速やかに算出して提示できる。
【０１１５】
なお、コンテンツ単位テーブル３７は作成しなくても％表示機能は実現できる。その場合、Ｓ４９にてコンテンツ全体の総ブロック数を算出する際に、補助情報４１の各フロー情報４６ｉのデータ４７が示す全ブロック数の合計数を用いればよい。また、Ｓ５３でコンテンツ全体の総バイト数を算出する際に、補助情報４１中のコンテンツ４０の各ブロック４３ｊのブロック情報４９ｊのデータ６１が示す全バイト数を、コンテンツ全体の全ブロックについて積算すればよい。
【０１１６】
（表示例）
図１３（Ａ）〜（Ｄ）には、表示デバイス１７における、％表示機能による％表示例および％指定移動機能による％指定移動時の表示例が示される。
【０１１７】
図１３（Ａ）に示すように、コンテンツ４０の文書のどのあたりを現在表示しているかの％表示機能による％値は画面上部の窓５１に表示されている。この例では、文書の先頭を０％、文書の末尾を１００％としたときに、２５％の位置を表示しているという意味である。また、図１３（Ｂ）に示すように、文書中で移動したい位置を文書全体に対する割合で指定して％指定移動機能により移動する。この例では、現在文書全体の２５％の位置を表示しているときに％指定移動機能のモードに切換え指定したことが枠２５で示されている。このモードにおいて、データ５３をキー部１６を操作して‘８０％’の位置への移動を指定している。
【０１１８】
ここで、図１３（Ｃ）は従来技術での移動結果である。図１３（Ｂ）の％指定移動画面では８０％を指定していたにも関わらず、移動後に図１３（Ｃ）の窓５１を見ると、７９％と表示されている。これに対して、図１３（Ｄ）には本実施の形態による％指定移動機能の移動結果が示される。図１３（Ｂ）の％指定移動画面で指定した値と、図１３（Ｄ）の移動後の画面の窓５１に表示されている値とは一致している。
【０１１９】
（変形例）
本実施の形態に係る変形例を以下に示す。
【０１２０】
本実施の形態では％指定移動機能による表示先の移動の際、計算して求めた移動先の％位置を計算し、その値が％指定時の値と異なる場合、１行先（コンテンツの末尾方向）の％位置を計算して、その値が指定の％位置と一致したら１行先の行へ移動するようにしているが、「一致」ではなく、「比較して少ないほうの％に移動」すると判定するようにしてもよい。
【０１２１】
また、本実施の形態ではコンテンツ４０のサイズに応じて％指定移動、％表示の計算方法を変えているが、全体はフロー数で計算し、その中でも現在表示しているフロー４２ｉ内はブロック数で細かく計算し、さらに、現在表示しているブロック４３ｊ内はバイト数で計算してさらに細かく計算するという手法でもよい。
【０１２２】
またＣＰＵ１２の速度やメモリ（ＲＡＭ１３）の容量など、動作するハードウェアの性能に応じて％指定移動、％表示の計算方法を変えてもよい。つまり、低スペックな組込み機器ではフロー数で計算して大まかな移動、表示を行うようにし、高スペックのパーソナルコンピュータではコンテンツ４０全体のバイト数で計算して細かい移動、表示を行うようにしてもよい。
【０１２３】
また％位置の計算は、各フロー４２ｉ内のブロック数、各ブロック４３ｊ内のバイト数を予めコンテンツ４０内に格納しておくことで高速化することができる。また、コンテンツ４０を開く際やＣＰＵ１２がアイドル状態のときにこれらの情報を計算し、メモリ（ＲＡＭ１３）上に格納しておいてもよい。
【０１２４】
また、コンテンツ４０によっては、通常の文字列や画像からなるフロー４２ｉの他に、辞書検索の画面や、マンガの画像からなるフロー４２ｉも混在する。その場合には単純に文字数やバイト数では計算できないので、フロー４２ｉのブロック数は１、ブロックのバイト数はフロー４２ｉのファイルサイズとして計算するようにしてもよい。
【０１２５】
また、コンテンツ４０の表示位置を％値で表そうとすると、百分率であるため、０〜９９％か、１〜１００％のどちらかになり、コンテンツ４０の最後であるのに１００％にならない、またはコンテンツ４０の先頭であるのに０％にならないといった不自然な状態になる。そのため、コンテンツ４０の先頭を表示しているときは無条件に０％、またはコンテンツ４０の最後を表示しているときは無条件に１００％にするという特殊処理を行うようにする。
【０１２６】
上述の実施の形態では、表示のための％位置は、画面先頭に表示される行の行開始位置３５２を用いて計算しているが、図１４のように画像と文字が混在し、画像が複数行に渡って表示されるようなレイアウト３５では、画像のある行の先頭はみな同じ％値になってしまう。そのため、画像のある２行目以降は、画像の次の文字の位置を％表示計算の対象とする。
【０１２７】
また、サイズの大きいコンテンツ４０は１％が広い範囲に及ぶため、コンテンツサイズに応じて％指定移動の指定を細かく出来るようにしてもよい。例えば、コンテンツサイズが大きなコンテンツ４０は小数点第２位まで％を指定できるが、コンテンツサイズが小さなコンテンツ４０は整数もしくは２％刻みにしか指定できないというようにしてもよい。
【０１２８】
また、文書表示装置には一般にユーザがすぐに開きたい場所を登録できるしおり機能を有するが、コンテンツ４０を表示中にキー部１６を介してスクロール操作している場合に、スクロールの結果、しおり位置の近くのデータが表示されたタイミングで、そのとき表示している％位置の表示色を変えて、もうすぐしおり位置のデータに到達することを報知するようにしてもよい。
【０１２９】
また、上述の実施の形態では、表示画面サイズや文字サイズ、行間、文字間などのパラメータが決定すればレイアウト３５も決定するものとしていたが、％移動時に、移動先の位置が必ず行の先頭にくるようにレイアウト取得部６により再度レイアウト３５を求めるようにしてもよい。
【０１３０】
ここでは％指定移動機能のための表示位置指定はキー部１６操作による数値入力としているが、これに限定されない。たとえば、図１４のコンテンツ４０のサイズをスクロールバー５０の長さに割当てをして、スクロールバー５０中の斜線のスライダを用いて位置指定してもよい。このスライダは、現在ウィンドウに表示されている文書の一部が、文書全体のどの位置にあるかなどの表示位置％の情報をスクロールバー５０上の位置で相対的に示し、またその長さで表示中のデータのサイズのコンテンツ４０の全体に対する割合を示すようしてもよい。スライダは、ユーザが、キー部１６のカーソル移動キーの操作でドラッグしたり、マウスなどでドラッグすることで、文書の表示位置を変更できる。
【０１３１】
他には、ダイヤルキー操作、タッチセンサによる指定、ボタン操作の入力であってもよい。
【０１３２】
（プログラム記録媒体に関して）
ここで、本実施の形態の上述のフローチャートに従うプログラムのメディアは図４（Ｂ）のコンピュータ本体と分離可能に構成される記録媒体であり、図示のない磁気テープやカセットテープなどのテープ系、フレキシブルディスクやハードディスクなどの磁気ディスクやＣＤ−ＲＯＭ（Compact Disc Read Only Memory）４８／ＭＯ（Magnetic  Optical  Disc）／ＭＤ（Mini  Disc）／ＤＶＤ（Digital  Versatile  Disc）などの光ディスクのディスク系、ＩＣカード（メモリカードを含む）／光カードなどのカード系、あるいはマスクＲＯＭ、ＥＰＲＯＭ（Erasable  and  Programmable  ＲＯＭ）、ＥＥＰＲＯＭ(Electrically  ＥＰＲＯＭ)、フラッシュＲＯＭなどによる半導体メモリを含めた固定的にプログラムを担持する媒体であってもよい。
【０１３３】
また、本実施の形態においては、インターネットを含む各種のネットワーク２８と通信する構成が採用されているから、これらネットワーク２８からプログラムがダウンロードされて流動的にプログラムを担持する媒体であってもよい。なお、このようにネットワーク２８からプログラムがダウンロードされる場合には、ダウンロード用プログラムは予め図４（Ａ）の携帯型電話機本体または図４（Ｂ）のコンピュータ本体に格納しておくか、あるいは別の記録媒体から予めインストールされるものであってもよい。
【０１３４】
なお記録媒体に格納されている内容としてはプログラムに限定されず、データであってもよい。
【０１３５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１３６】
【図１】この発明の実施の形態に係る文書表示装置の全体の機能構成図である。
【図２】この発明の実施の形態に係る％指定移動機能の構成図である。
【図３】この発明の実施の形態に係る％表示機能の構成図である。
【図４】（Ａ）と（Ｂ）はこの発明の実施の形態に係るハードウェア構成図である。
【図５】この発明の実施の形態に係る各種バッファを示す図である。
【図６】この発明の実施の形態に係るコンテンツの構成例を示す図である。
【図７】この発明の実施の形態に係る補助情報の内容例を示す図である。
【図８】この発明の実施の形態に係る％指定移動機能のフローチャートである。
【図９】この発明の実施の形態に係る％指定移動機能のフローチャートである。
【図１０】この発明の実施の形態に係る％表示機能のフローチャートである。
【図１１】この発明の実施の形態に係るレイアウトの一例を示す図である。
【図１２】この発明の実施の形態に係るコンテンツ単位テーブルの一例を示す図である。
【図１３】（Ａ）〜（Ｄ）はこの発明の実施の形態に係る表示例を示す図である。
【図１４】この発明の実施の形態に係る表示例を示す図である。
【図１５】（Ａ）〜（Ｃ）は従来技術を説明する図である。
【図１６】（Ａ）と（Ｂ）は従来技術を説明する図である。
【符号の説明】
【０１３７】
２  表示位置入力部、４  対応表示コンテンツ位置算出部、５  コンテンツ取得部、６  レイアウト取得部、７  コンテンツ単位決定部、８  表示単位調整部、９  表示位置算出部、１１  表示部、３５  レイアウト、３７  コンテンツ単位テーブル、４０  コンテンツ、４１  補助情報、４２ｉ  フロー、４３ｊ  ブロック。
【図１】
2006011694.tif 000003
【図２】
2006011694.tif 000004
【図３】
2006011694.tif 000005
【図４】
2006011694.tif 000006
【図５】
2006011694.tif 000007
【図６】
2006011694.tif 000008
【図７】
2006011694.tif 000009
【図８】
2006011694.tif 000010
【図９】
2006011694.tif 000011
【図１０】
2006011694.tif 000012
【図１１】
2006011694.tif 000013
【図１２】
2006011694.tif 000014
【図１３】
2006011694.tif 000015
【図１４】
2006011694.tif 000016
【図１５】
2006011694.tif 000017
【図１６】
2006011694.tif 000018