以下に、本発明の実施の形態について図面を参照して説明する。図1は、本発明の情報処理装置としての電子書籍を扱うユーザ端末の一実施の形態の外観の構成を示す図である。ユーザ端末1には、表示部2が設けられている。この表示部2には、文字や画像が表示される。
表示部2の下側には、表示部2に表示されている文字や画像を拡大または縮小する際に操作される拡大ボタン3−1と縮小ボタン3−2が設けられている。また、表示部2の下側には、表示部2に表示されているカーソル(不図示)を所望の位置に移動させるためのボタン4−1乃至4−4が設けられている。以下の説明において、ボタン4−1乃至4−4を個々に区別する必要がない場合、単にボタン4と記述する。また、他の部分も同様に記述する。
ユーザ端末1の側面には、ドライブ5が設けられており、そのドライブ5から種々のデータを読み込めるようになっている。
ここでは、以下の説明において必要とされるボタンなどしか示さないが、図1に示した外観の構成に本実施の形態が限定されるものではない。例えば、拡大ボタン3−1や縮小ボタン3−2などをジョグダイアル(商標)などで構成するようにしても良いし、ドライブ5の位置は、ユーザ端末1の下側などに設けられるようにしても良い。
またここでは、ボタン4を設けるようにし、そのボタン4により表示されているカーソルが操作されるとして説明するが、例えば、タッチペンなどを設け、カーソルを移動させる代わりに、そのタッチペンにより直接表示部2に表示されている画像などを選択できるようにしても良いし、外部接続されるマウスなどでカーソルが操作されるようにしても良い。
また、図1に示したユーザ端末1には、外観の構成として、他の装置とデータの授受を行うための通信部を示していないが、ユーザ端末1は、インターネットなどのネットワークを介して電子書籍のデータをダウンロードできるようになっており、その通信を行うための通信部も設けられている。
図2は、ユーザ端末1の内部構成例を示す図である。端末2のCPU(Central Processing Unit)11は、ROM(Read Only Memory)12に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)13には、CPU11が各種の処理を実行する上において必要なデータやプログラムなどが適宜記憶される。入出力インタフェース15は、拡大ボタン3−1、縮小ボタン3−2、ボタン4―1乃至4−4から構成される入力部16が接続され、入力部16に入力された信号をCPU11に出力する。
また、入出力インタフェース15には、表示部2も接続されている。さらに、入出力インタフェース15には、ハードディスクなどから構成される記憶部17、および、インターネットなどのネットワークを介して他の装置とデータの授受を行う通信部18も接続されている。ドライブ5は、磁気ディスク21、光ディスク22、光磁気ディスク23、半導体メモリ24などの記録媒体からデータを読み出したり、データを書き込んだりするときに用いられる。
他の装置から提供され、通信部18により受信されたデータは、記憶部17に記憶され、その記憶されたデータに基づくテキストや画像が、表示部2に表示される。または、ドライブ5によりセットされた磁気ディスク21、光ディスク22、光磁気ディスク23、または、半導体メモリ24などの記録媒体に記録されているデータが読み出され、その読み出されたデータに基づくテキストや画像が、表示部2に表示される。以下の説明においては、表示部2に表示されるテキストや画像を、適宜、コンテンツと称し、そのコンテンツに関わるデータをコンテンツデータと称する。
図3は、表示部2に表示されるコンテンツの一例を示す図である。図3に示した例では、表示部2の上側に、コンテンツのタイトルが表示されるタイトル表示ブロック41が表示されている。そのタイトル表示ブロック41の下側の、左側には、画像が表示される画像表示ブロック42が表示されており、その右側には、テキストが表示されるテキスト表示ブロック43−1が表示されている。
さらに表示部2の下側には、テキストを表示するテキスト表示ブロック43−2が表示されている。以下の説明においてはタイトル表示ブロック41、画像表示ブロック42、テキスト表示ブロック43−1,43−2を、適宜、ブロックと総称する。
図3に示した表示部2に表示されるコンテンツは、一例であり、限定を示すものではない。すなわち、レイアウトなどは、コンテンツにより変更されるし、説明の都合上、例えば、タイトルが表示されるタイトル表示ブロック41が表示されるとして示したが、タイトルがないコンテンツにおいては、タイトル表示ブロック41は表示されないし、タイトルが表示されるときであっても、その位置は、表示部2の上側に限定されなくても良い。
さらに付言するに、これらの表示ブロック41乃至43は、予め表示部2に設定されている領域ではなく、換言すれば、例えば、タイトル表示ブロック41というブロックが予め設定されているのではなく、説明のために付したものであり、上述したように、これらのブロックの表示される位置や内容は、記憶部17や記録媒体に記憶されているデータなどに基づき決定されるものである。
従って、例えば、小説のようなコンテンツが表示される場合、表示部2には、テキストしか表示されない。このような場合、テキスト表示ブロック43が表示部2上に設けられ(付言するが、このようなテキスト表示ブロック43というブロックがデータとして設定されているのではなく、説明の都合上、このように名称を付し、設けられていると記述している)、その設けられた(領域として確保された)テキスト表示ブロック43内に、テキストが表示される。
図4は、図3に示したようなコンテンツを表示部2上に表示させるためのコンテンツデータの一例を示す図である。また、図5は、図4に示したようなコンテンツデータ51内のコマンドの意味を説明するための図であり、適宜参照して説明する。図4に示したコンテンツデータ51のうち、左側に付した行番号は、説明のために付したものであり、実際のコンテンツデータに付す必要はない。
コンテンツデータ51の1行目には、“Obj”という、オブジェクトであることを宣言するコマンドが記述されている。このコマンドには、オブジェクトの属性(タイプ)を指定するための“Type”というコマンドが対になって用いられる。1行目には、図3に示したようなコンテンツを表示するためのデータの開始であることを示すコマンド、すなわち、図3に示したような1ページを表示するためのデータの開始であることを示すコマンドが記述されており、オブジェクトナンバーが1であること、属性がPage(ページ)であることが記述されている。
2行目の“Referto”というコマンドで、参照するオブジェクトナンバーが記述されている。図4に示した2行目では、オブジェクトナンバー2を参照するように記述されている。オブジェクトナンバー2のオブジェクトは、13乃至17行目に記述されている。13行目に記述があるように、オブジェクトのタイプは“Block”(ブロック)であることが宣言されている。
本実施の形態においては、このブロック単位で拡大や縮小といった処理が行われる。ブロックとは、ここでは、表示部2に表示されたときの表示領域の大きさを示し、その初期設定情報は、14行目の“Init”で記述されているオブジェクトナンバーに記述されている。14行目では、初期設定情報は、オブジェクトナンバー23のオブジェクト(不図示)に記述されていることが示されている。
15行目において、“BlockRule”(ブロックルール)が宣言されている。このブロックルールのところで、そのブロックに対して拡大や縮小などが指示されたときに、どのように拡大や縮小を実現するかが規定されている。ブロックルールについて、図6A乃至図6Cと図7A乃至図7Cを参照して説明する。なお、以下の説明においては、拡大の場合を例に挙げて説明するが、縮小の場合には、逆の処理を行えば良いだけで、同じルールを用いることが可能である。
図6Aは、ブロックルール1を説明する図である。ブロックルール1は、主に、横書きのテキストに対して適用されるルールであり、拡大が指示された場合、拡大前のブロックの横幅を維持し、縦方向に拡大するというルールである。図6Bは、ブロックルール2を説明する図である。ブロックルール2は、主に、縦書きのテキストに対して適用されるルールであり、拡大が指示された場合、拡大前のブロックの縦幅を維持し、横方向に拡大するというルールである。
図6Cは、ブロックルール3を説明する図である。ブロックルール3は、主に、横書きのテキストに対して適用されるルールであり、拡大が指示された場合、まず、縦方向を拡大するが、描画可能領域(前後のブロックの関係などから、表示部2の表示領域のうち、このブロックが占有することができる領域であり、後述する処理により、算出される領域である)に収まらないと判断されたとき、横方向にも拡大するというルールである。
図7Aは、ブロックルール4を説明する図である。ブロックルール4は、主に、縦書きのテキストに対して適用されるルールであり、拡大が指示された場合、まず、横方向を拡大するが、描画可能領域に収まらないと判断されたとき、縦方向にも拡大するというルールである。
図7Bは、ブロックルール5を説明する図である。ブロックルール5は、主に、画像に対して適用されるルールであり、拡大が指示された場合、縦方向と横方向を同等な比率で拡大するというルールである。図7Cは、ブロックルール6を説明する図である。ブロックルール6は、主に、画像に対して適用されるルールであり、拡大が指示されても、その大きさを変化させないというルールである。このように、画像に対しては、ブロックルール5またはブロックルール6を適用することにより、拡大の処理により、画像に歪みなどが生じてしまうような、コンテンツの作成者が意図してない画像になってしまうようなことを防ぐことができる。
図4に示したコンテンツデータ51の説明に戻り、15行目に規定されているブロックルールは、拡大が指示されたときに利用される情報であるため、図3に示したようなコンテンツを表示する上では、無視される情報である。次に16行目で、オブジェクトナンバー12を参照することが宣言されている。
オブジェクトナンバー12のオブジェクトに関しては、33乃至38行目に記述されている。33行目において、オブジェクトの属性が“Text”(テキスト)であることが宣言され、そのテキストの内容が、36行目で記述されている。このような流れにより、オブジェクトナンバー12までのオブジェクトが順次処理されることにより、図3に示したタイトル表示ブロック41のブロックが処理されたことになる。
33乃至38行目には、“Referto”として参照しているオブジェクトがなく、33行目から順次行毎に処理が行われると、38行目で、オブジェクトナンバー12のオブジェクトの終了が宣言されている。終了が宣言されている場合、このオブジェクトに来る前のオブジェクト、この場合、オブジェクトナンバー2に処理が戻される。
オブジェクトナンバー2のオブジェクトにおいては、16行目まで処理が終了されており、17行目で、オブジェクトナンバー2のオブジェクトの終了が宣言されているため、このオブジェクトナンバー2の前に処理対象とされていたオブジェクトであるオブジェクトナンバー1のオブジェクトに処理が戻される。
オブジェクトナンバー1のオブジェクトにおいては、2行目まで処理が終了されており、3行目から処理が開始される。3行目において、“Yspace”として、次のブロックの描画の開始点をY軸方向(図8に示すように、Y軸方向は、図中上下方向とし、上側がY軸の0ポイントとする)に移動させるコマンドが記述されている。この“Yspace”は、前のブロックのY方向の終了点から、“Yspace”で設定されている値だけY方向に、次のブロックの開始点をずらすということを規定するものである。
図8を参照して説明するに、タイトル表示ブロック41のY軸方向の終了点61が、図8に示した位置であると、3行目の<Yspace no=“20”/>というコマンドから、その終了点61から20だけY軸方向に移動した点が、次のブロック(この場合、画像表示ブロック42)の描画が開始される開始点62とされる。なお、20だけY軸方向に移動するといった表現をしたが、単位は、例えば、20ドット、20ミリセンチメートルなどであり、設計段階で適宜決定される単位でよい。
開始点62は、前のブロックとの相対的な位置としてY軸方向のみが規定されているが、X軸方向のみが規定されることもあるし、X軸方向とY軸方向の両方が規定されることもある。例えば、6行目では、“Xspace”として、X軸方向のみが規定されている。“Xspace”も、“Yspace”と同様に、新たなブロックの描画の開始点をX軸方向に移動させるためのコマンドであり、前のブロックのX方向の終了点から、“Xspace”で設定されている値だけX方向に、次のブロックの開始点をずらすということを規定するものである。なお、X方向は、図8に示したように、図中左右方向であり、図中左側を0ポイントとする。
ブロックの描画開始位置についてさらに説明するに、5行目に<ChangeStart no=“3”/>とのコマンドがあるが、この“ChangeStart”は、描画開始基準点の変更を指示するコマンドである。描画開始基準点の変更とは、指定されたオブジェクトナンバーのオブジェクト(この場合指定されるオブジェクトの属性はブロックである)が描画された位置の描画開始点を、新たなブロックの描画位置の基準点と設定することを意味する。
図8の場合、“ChangeStart”により指定されたオブジェクトナンバーは“3”であり、オブジェクトナンバー3の描画開始点は、開始点62である。この開始点62が、新たなブロック、この場合、テキスト表示ブロック43−1の描画開始点を決定するための基準点として設定される。その基準点から、X軸方向に5だけずらした点が、テキスト表示ブロック43−1の描画の開始点63として設定するということが、6行目で記述されている。
さらに、8行目で<Reset/>とのコマンドがあるが、この“Reset”は、描画開始基準点を描画可能なY軸上に移動させるためのコマンドである。図8を参照するに、既に、タイトル表示ブロック41、画像表示ブロック42、および、テキスト表示ブロック43−1が表示されているため、これらのブロック以外の部分、すなわち、画像表示ブロック42の下側の部分が、描画可能な領域である。
描画可能なY軸上とは、この場合、図8に示したように、画像表示ブロック42の下側に位置する点64にY軸方向で隣接する点となる。その隣接する点が、描画開始基準点とされる。その描画開始基準点から、9行目および10行目のコマンドにより、テキスト表示ブロック43−2の描画開始点65が設定される。
このように、本実施の形態においては、ブロック単位で処理が行われ、各ブロックの表示位置は、前のブロックからの相対位置で規定されている。このように、前のブロックからの相対位置で表示位置を決定するということは、各ブロック間で、その表示順序が決定されるということである。すなわち、前のブロックが表示された後でないと、そのブロックの表示位置から相対的に表示位置が求められる後のブロックが表示されないため、結果として表示の順序を規定していることにもなる。
表示の順序が規定されるということは、ユーザにコンテンツが提供される際、ユーザがコンテンツを読む順序も規定される(通常、上から下、左から右に読むということを前提としている)ことになる。これにより、拡大などの処理が行われることにより、レイアウトが変更されてしまったような場合においても、表示される順序には変化がないため、結果として、ユーザがコンテンツを読む順序には変更がないということになる。
図4のコンテンツデータ51に従って処理が行われることにより、図3に示したようなコンテンツが表示されるわけだが、この場合、その表示順序は、タイトル表示ブロック41、画像表示ブロック42、テキスト表示ブロック43−1、テキスト表示ブロック43−2の順になる。
このような図4に示したようなコンテンツデータ51に記述されている各行のコマンドが順次処理されることにより、図3に示したようなコンテンツが表示部2に表示される。
次に、図9のフローチャートを参照し、図3に示したようなコンテンツが表示部2上に表示されるまでに、ユーザ端末1が行う処理について説明する。ステップS11において、表示部2に表示させるコンテンツのコンテンツデータ51が取得される。この取得は、例えば、通信部18を介して他の装置から供給されることにより行われても良いし、ドライブ5にセットされた記録媒体から供給されることにより行われても良い。
ステップS11において取得されたコンテンツデータ51に基づいて、ステップS12以下の処理が行われる。ステップS12において、ページ表示に必要なデータの初期値の取得と反映の処理が行われる。このステップS12において取得される初期値とは、ページの背景色、テキストを縦書きにするか横書きするかの情報、ヘッダ、フッタ、マージンなどがあるか否か、ある場合にはその大きさなどの情報に関する値である。
ステップS13において、描画可能領域の算出が行われる。描画可能領域について、図10を参照して説明する。ステップS12において取得された初期値により、図10に示したように、ヘッダ、フッタ、およびマージンの、それぞれの領域が設定された場合、それらの領域を除いた部分が描画可能領域となる。この描画可能領域内において、テキストや画像などのコンテンツが表示される。
また、拡大などが指示された場合、描画可能領域内に表示されているテキストや画像のみが拡大される。換言すれば、拡大などが指示された場合であっても、ヘッダ、フッタ、マージンは、拡大されず、その時点での大きさが維持される。
ステップS14において、ブロックを参照しているか否かが判断される。この判断は、コンテンツデータ51を用いて行われるわけだが、図4に示したコンテンツデータ51を参照するに、処理しているコマンドが、例えば、13行目の<Obj no=“2”Type=“Block”>というように、“Type”が“Block”である場合、ステップS14においてブロックを参照していると判断される。
ステップS14において、ブロックが参照されていると判断された場合、ステップS15に進み、ブロックの成形処理が実行される。ブロックの成形処理とは、図4に示したコンテンツデータ51において、例えば、14行目の<Init no=“22”/>というように、“Init”で指定されている先のオブジェクトナンバーのオブジェクトに従って行われる。
具体的には、ブロックのY軸方向の大きさ、X軸方向の大きさが決定されることにより、成形処理が行われる。ブロックの成形処理が終了されると、ステップS16に進み、ブロックが指定された位置に配置される。ステップS16の処理は、図8を参照して説明したように、“Xspace”、“Yspace”、“ChangeStart”、“Reset”といったコマンドに従って行われる。
このような処理が終了されると、ステップS17において、ページ表示に必要な全てのブロックの配置が完了したか否かが判断される。この判断は、図4に示したコンテンツデータ51において、オブジェクトナンバー1のオブジェクト(TypeがPageであるオブジェクト)の処理が終了したか否かを判断することにより行われる。
ステップS17において、ページ表示に必要な全てのブロックの配置は完了していないと判断された場合、ステップS13に戻り、それ以降の処理が、次のブロックに対して行われ、ステップS13以降の処理が繰り返され、完了したと判断された場合、図9に示したページの描画の処理は終了される。
一方、ステップS14のブロックを参照しているか否かの判断において、ブロックを参照していないと判断された場合、ステップS18に進む。ブロックを参照していないということは、図4に示したコンテンツデータ51において、“Type”が“Block”でないオブジェクトであることを示し、例えば、33行目のように、“Type”が“Text”であるような場合であると考えられる。
このような場合、テキストや画像など、ブロック内に表示されるコンテンツの内容を処理することになる。そこで、ステップS18においては、Typeで宣言されている属性に基づき、そのオブジェクトが処理される。
このようにして、図4に示したテキストデータ51が処理されることにより、図3に示したようなコンテンツが、表示部2上に表示される。
ところで、表示部2上に、図3に示したようなコンテンツが表示された場合、ユーザが、そのコンテンツを見やすい(読みやすい)と必ずしも思うとは限らない。例えば、タイトルや静止画は見やすくても、解説記事などのテキストは、小さな文字で見づらいといったことがある。また、ユーザは、所定の部分だけを表示部2に表示させたい、例えば、テキスト表示ブロック43−1に表示されている解説記事に関するテキストを拡大して、表示部2に表示させたいといったようなときがあると考えられる。
このようなコンテンツの一部分の拡大を行いたいとき、ユーザは、拡大ボタン3−1を操作する。拡大ボタン3−1が操作されると、ユーザにより指示されたブロックが、拡大されて表示される。ユーザにより指示されたブロックとは、例えば、各ブロック間を移動可能に設定されたカーソル(カーソルが位置するブロックは、他のブロックと区別が付くように表示される)を、ユーザが、ボタン4−1乃至4−4(図1)を操作し、移動させることにより選択したブロックである。
所定のブロックが選択され、拡大表示が指示されたときの、ユーザ端末1で行われる処理について、図11のフローチャートを参照して説明する。ステップS31において、ユーザによりブロックの拡大が指示されると、そのブロックの特定が行われる。入力部16(図2)としての拡大ボタン3−1が操作されると、その情報は、CPU11に伝えられる。CPU11は、その情報を取得した時点で、カーソル(不図示)が位置するブロックを特定する。
特定されたブロックに関するオブジェクトが、ステップS32により取得される。この場合、取得されるオブジェクトとしては、特定されたブロックに対応する“Type”が“Block”であるオブジェクトと、そのオブジェクトが“Referto”で参照しているオブジェクトである。
例えば、拡大が指示されたブロックがタイトル表示ブロック41(図3)であると特定された場合、図4に示したコンテンツデータ51において、13乃至17行目で示されるオブジェクトと、そのオブジェクトが参照している33乃至38行目のオブジェクトが、ステップS32において取得される。
ステップS33において、表示用の初期値を、拡大表示にあわせて変更という処理が実行される。この処理は、例えば、ユーザ端末1側でコンテンツを表示させるためのビューアに予め設定されている規則に従って行われる。例えば、ビューアで、“30ポイントで表示されている文字は、それ以上拡大しない”、“20ポイントで表示されている文字は、25ポイントに拡大し、その後、さらに拡大が指示された場合、30ポイントに拡大する”といったような規則が定められている。
このような規則が、ステップS33における処理で取得され、取得された規則に基づいて、拡大するサイズが決定される。この拡大するサイズは、ブロックの大きさと、そのブロック内に表示されるコンテンツの大きさ(例えば、コンテンツが文字で構成されるテキストの場合、その文字の大きさ)が決定される。ブロックに関する大きさが決定される際、ブロックルール(BlockRule)が参照される。ブロックルールは、上述したように、ブロックを拡大する際の規則である。
このようにして決定されたサイズに基づき、ステップS34において、拡大表示用の領域に文字または画像が描画される。すなわち、ステップS34においては、ステップS33において決定されたサイズで、ステップS32において取得されたオブジェクトに基づくコンテンツが、表示部2上に表示されるような処理が実行される。
図3に示したようなコンテンツが表示されているときに、ユーザにより、タイトル表示ブロック41に対して拡大の表示の指示が出され、上述したような処理が実施されることにより、図12に示したように、タイトル表示ブロック41が拡大されて、表示部2上に表示される。
図12に示した表示状態から、拡大ボタン3−1がさらに操作された場合、図11のフローチャートの処理が再度実行され、さらに拡大されたコンテンツが表示されるようにしても良い。また、図12に示した表示状態から、縮小ボタン3−2が操作された場合、図3に示した表示状態に戻るようにしても良い。
このように、1つのブロックに対して拡大の指示が出された場合、そのブロックが拡大表示されるので、ユーザは、所望のブロックを、コンテンツが見やすい大きさまで簡便に拡大させることができる。このような処理が簡便に行えるのは、ブロック単位で処理が実行されるためである。ブロック単位で処理が行えるため、コンテンツ内の所望の部分を抽出する、拡大するといった処理が容易に行える。
このように、ユーザは、1つのブロックに対して拡大の表示の指示を出し、その指示に対応して1つのブロックを拡大表示させることも可能であるが、ブロックを指定しないで、拡大の表示が指示された場合、コンテンツ(ページ)全体(複数のブロック)が拡大表示されるようにしても良い。
コンテンツ全体が拡大されるような場合、図13に示すフローチャートに従って処理が行われる。ここでは、図3に示したようなコンテンツに対して拡大の指示が出されたとして説明する。図3に示したようなコンテンツに対して拡大の指示が出された場合、タイトル表示ブロック41、画像表示ブロック42、テキスト表示ブロック43−1、テキスト表示ブロック43−2の順で、図13に示したようなフローチャートの処理が実行されることにより、各ブロックの拡大表示が行われる。
ステップS51において、初期値と、拡大が指示された時の拡大率に基づいて、仮想描画領域が作成される。初期値は、図11のフローチャートのステップS33で取得される初期値と同様の値であり、ビューアに依存する値である。拡大率とは、例えば、1.5倍、2倍などであり、始めにコンテンツデータ51が処理されたときの拡大率を1としたときに対する比率である。
仮想描画領域は、初期値と、拡大が指示されたときの拡大率に基づいて作成される、処理対象となっているブロックのサイズのことである。この仮想描画領域は、最終的に表示部2に表示されるブロックのサイズではなく、後段の処理で、この仮想描画領域で、実際に表示部2に表示が可能であるか否かを判断するために、仮想的に作成される領域である。
ステップS52において、仮想描画領域が描画可能領域内に収まるか否かが判断される。描画可能領域とは、表示部2の表示領域で、既にブロックが配置された領域を除いた領域である。ステップS52において、仮想描画領域が描画可能領域内に収まらないと判断されるのは、例えば、図14に示すような状態になると判断されるときであり、仮想描画領域の一部分が、表示部2からはみ出してしまうような表示がされると想定されるときである。
ステップS52において、仮想描画領域が描画可能領域内に収まると判断された場合、すなわち、設定したサイズで、表示部2からはみ出すようなことなく、処理しているブロックの表示を行うことができると判断された場合、ステップS53に進む。ステップS53において、ブロック内に描画されるオブジェクトのの取得が行われる。
そして、ステップS54において、拡大表示用の領域(設定された仮想描画領域)に、取得されたオブジェクトに基づく文字または画像の描画の処理が行われる。ステップS53とステップS54の処理は、基本的に、図11のフローチャートのステップS33とステップS34の処理と略同一である。
ステップS55において、描画可能領域の更新の処理が行われる。ステップS54までの処理が行われることにより、新たなブロックが追加されたため、描画可能領域は、その追加されたブロックの分だけ、小さい領域となっている。従って、新たに追加されたブロックの分を描画可能領域から差し引くことにより、描画可能領域の更新が行われる。
このような処理が終了されると、ステップS56において、1ページ分の表示に必要なブロックの配置が完了したか否かが判断され、完了したと判断された場合、図13に示した1ページ分の拡大処理に関わるフローチャートの処理は終了され、完了していないと判断された場合、ステップ51に戻り、新たなブロックに対して同様の処理が繰り返される。
一方、ステップS52において、仮想描画領域が描画可能領域内に収まらないと判断された場合、ステップS57に進む。ステップS57において、ブロックルールに基づき、仮想描画領域が変形される。このように変形された仮想描画領域に対して、ステップS52以降の処理が再度実行され、表示部2から一部分でもはみ出してしまうようなブロックが存在してしまうようなことを防ぐ拡大処理が行われる。
このようにして、拡大処理がされたコンテンツの表示例を図15と図16に示す。なお、図15と図16に示した例は、表示部2に実際に表示される画面とは異なる。説明するに、図15又は図16に示した表示例は、図3に示したコンテンツの表示例を拡大したときの表示例である。
図3に示したコンテンツの表示例においては、表示部2の表示可能領域とほぼ同じ大きさの領域にコンテンツが表示されているが、その状態から、ページ全体に拡大の処理を行うと、表示部2には表示しきれないことになる。従って、図15や図16に示した表示例は、仮想的な表示領域に、仮想的に1ページを表示した場合の表示例であり、実際に、表示部2に表示されるのは、一部分である。表示部2に表示しきれていない部分は、スクロールなどの処理がされることにより参照できるようになっている。
なお、図13のフローチャートを参照した説明においては、図14に示したような、ブロックの一部分が、表示部2からはみ出さないように処理が行われると説明したが、その意味は、補足すると、以下のようになる。すなわち、拡大の処理を行うと、当然、1画面では表示部2に表示しきれない部分が発生する。しかしながら、例えば、図15に示したように、縦方向にスクロールされるようにレイアウトされたコンテンツに対しては、横方向にスクロールすることが無いように、すなわち、横方向に関しては、ブロックが表示部2からはみ出してしまうようなことが無いように処理されるという意味である。
例えば、小説のように、縦書きのテキストの場合、横方向にスクロールがされるが、縦方向には、スクロールしなくても良いように図13の処理が実行される。換言すれば、2方向にするクロールしなくては、ブロック内のコンテンツが参照できないような拡大の処理は行われない。
図15に示した例では、拡大処理が施された後であっても、図3に示したコンテンツの表示例と同じく、各ブロックのレイアウトに変更はない。このように、レイアウトを変更せずに、拡大処理を行うことにより、コンテンツの作成者の意図を崩すようなことなく、ユーザにコンテンツを提供することが可能となる。
図15に示したコンテンツの表示状態から、ユーザがさらに拡大ボタン3−1を操作した場合、図13のフローチャートの処理が再度実行され、図16に示したようなコンテンツの表示状態になる。図16に示したコンテンツの表示状態は、図15に示したコンテンツの表示状態と異なる部分として、テキスト表示ブロック43−1が、画像表示ブロック42の右隣から、下側に移動されている。
これは、まず、画像表示ブロック42が拡大されることにより、画像表示ブロック42の右側の描画可能領域が小さくなる。その後に、テキスト表示ブロック43−1の拡大の処理が実行されるわけだが、小さい領域となった画像表示ブロック42の右側の領域では、拡大されたテキスト表示ブロック43−1を表示することができない。
すなわち、ステップS52の処理により、テキスト表示ブロック43−1を表示するための仮想描画領域は、描画可能領域内には収まらないと判断され、ステップS57に処理が進む。ステップS57において、テキスト表示ブロック43−1のブロックルールが参照されて、この場合、図4におけるコンテンツデータ51の25行目が参照され、ブロックルールがブロックルール3であると判断される。このブロックルール3に基づいてブロックの変形が行われる。
この場合、図15に示した縦長のテキスト表示ブロック43−1から図16に示した横長のテキスト表示ブロック43−1の状態に、ブロックが変形される。変形されることにより、テキスト表示ブロック43−1が、図16に示した位置で、拡大された状態で、かつ、ブロックの一部分がはみだすようなことなく表示される。
このように、拡大されることにより、ユーザは、所望の大きさまでコンテンツを拡大することができる。図16に示したようにコンテンツが表示されると、ブロックの表示位置は変更されることになるが、表示される順、換言すれば、コンテンツの作成者が、ユーザに参照してもらいたいと望んだ順に変更はない状態で、各ブロックが配置される。このようにすることにより、コンテンツのレイアウトが変更されたとしても、そのコンテンツの作成者の意図に、ほぼ基づいた表示を行うことが可能となる。
上述したように、図15や図16に示したコンテンツの表示状態は、仮想的な表示領域に、仮想的に1ページを表示した場合の表示例であり、実際に、表示部2に表示されるのは、図15または図16に示したコンテンツの一部分である。例えば、図16に示したコンテンツが、表示部2に表示された場合の一例を、図17に示す。
図17に示したように、コンテンツが、拡大表示されたことにより、1つのブロック(図17では、画像表示ブロック42)が途中までしか表示されない場合があることが想定される。ブロック内に描画されるオブジェクトがテキストである場合、例えば、オブジェクトが小説などのテキストである場合、そのブロックが途中までしか表示されなくても、スクロールされることにより表示されれば、問題はないと考えられ、また、そのような状況は発生しやすいと考えられる。
しかしながら、ブロック内に描画されるオブジェクトが画像である場合、そのブロックが途中まで(一部しか)表示されないようなときには、たとえ、スクロールされることにより全体が参照できるようにしても、その画像全体を把握させることができず、好ましい状況ではなく、問題があると考えられる。
そこで、ブロック内に描画されるオブジェクトがテキストである場合には、そのブロックが途中で切れてしまうような表示を許可し、ブロック内に描画されるオブジェクトが画像である場合には、そのブロックが途中で切れてしまうような表示を許可しないという仕組みを設けるようにしても良い。
このような仕組みは、例えば、図13に示したフローチャートの処理に、ステップを追加することにより実現することが可能である。そのような仕組みを設けた場合の処理について、図18のフローチャートを参照して説明する。ステップS71乃至S73の処理は、図13のステップS51乃至S53の処理と同様であるので、その説明は省略する。
ステップS73において、ブロック内に描画されるオブジェクト(コンテンツ)が取得されると、そのオブジェクトが画像に関するオブジェクトであるか否かが、ステップS74において判断される。画像に関するオブジェクトであるか否かの判断は、取得されたオブジェクトの“Type”を参照することにより行われる。
例えば、図4のコンテンツデータ51を参照するに、33行目のように、“Type=“Text””と記述されている場合、そのオブジェクトは、テキストであることを示し、39行目のように、“Type=“Image””と記述されている場合、そのオブジェクトは、画像であることを示しているため、オブジェクトのTypeを参照することにより、そのオブジェクトが画像であるか否かを判断することができる。
ステップS74において、取得されたオブジェクト(処理対象とされるオブジェクト)は、画像であると判断された場合、ステップS75に進む。ステップS75において、処理しているブロック(仮想描画領域)は、前のブロックと共に、1画面で、表示部2に表示できるか否かが判断される。
この判断について図17を再度参照して説明するに、処理しているブロックは、画像表示ブロック42であり、その画像表示ブロック42の前のブロックは、タイトル表示ブロック41になる。従って、このタイトル表示ブロック41と画像表示ブロック42が、表示部2に同時に表示されきれるか否か、換言すれば、図17に示したように、画像表示ブロック42のブロックが、途中で切れて表示されてしまうようなことがないか否かが、ステップS75において判断される。
ステップS75において、仮想描画領域が、前のブロックのオブジェクトと共に、1画面で、表示部2に表示できないと判断された場合、すなわち、同一画面で表示してしまうと、処理対象となっているブロックが途中で切れた状態で表示されてしまうと判断された場合、ステップS76に進む。ステップS76において、処理対象とされているブロックが、前のブロックと異なるページに表示されるように、処理対象とされているブロックは、次のページに表示されるように設定される。
すなわち、前のブロックと処理対象とされているブロックの間に、所定の大きさの空欄が設けられる。
一方、ステップS74において、取得された(処理対象とされた)オブジェクトは、画像ではないと判断された場合、ステップS75において、処理対象とされているブロックが前のブロックと同一画面に収まると判断された場合、または、ステップS76において、処理対象とされているブロックを次のページに表示するという設定が終了された場合、ステップS77に進む。
ステップS77乃至S80は、図13に示したフローチャートのステップS54乃至S57と略同一の処理なので、その説明は省略する。
図18に示したフローチャートの処理では、ステップS74において、取得されたオブジェクトは、画像であるか否かが判断されるようにしたが、ブロックルールが5またはブロックルール6であるか否かが判断されるようにしても良い。ブロックルール5やブロックルール6は、主に画像に対して用いられるブロックルールであるため、画像であるか否かを判断するのであれば、ブロックルール5またはブロックルール6であるか否かを判断するようにしても、図18に示したフローチャートの処理で、同様の処理を行うことができる。
このような処理が行われることにより、画像などの、途中で切れた状態で表示されるようなことが好ましくないコンテンツは、途中で切れた状態になるようなことがないようにすることが可能となる。
なお、このような、所定のオブジェクトが描画されるブロックが、途中で切れた状態で表示されるようなことが無いような処理が行われる場合、その所定のオブジェクト(上述した実施の形態においては画像)が描画されるブロックが、最大限に拡大された場合でも、表示部2の表示可能領域の大きさと略同一までの大きさに限定される必要がある。
ところで、上述した実施の形態におけるユーザ端末1は、1画面の表示部2を有している場合を例に挙げて説明したが、2画面の表示部2を有するユーザ端末1に対しても本発明を適用することができる。図19は、2画面の表示部2を有するユーザ端末1’(図1に示した1画面のユーザ端末1と区別するために、ダッシュを付す)の外観の構成例を示す図である。
図19に示したように、ユーザ端末1’は、左右に1画面づつ表示部2−1,2−2を有している。図中左側のは、図1に示したユーザ端末1と同様の構成を有し、拡大ボタン3−1などが備えられている。そのユーザ端末1と同一の構成の装置に対して、右側に新たに表示部2−2を追加した構成とされているのが、ユーザ端末1’である。ユーザ端末1’は、折りたためる構成とされていても良く、そのような構成にしたときには、図19に示したユーザ端末1’は、開いた状態を示しているとする。
このようなユーザ端末1’において図16に示したような拡大されたコンテンツが表示される場合、例えば、図20に示すように表示される。なお、図20以下の図面には、表示部2−1と表示部2−2のみを図示し、拡大ボタン3−1などは図示を省略する。
図20に示したように、2画面を有するユーザ端末1’においては、例えば、表示部2−1には、タイトル表示ブロック41と画像表示ブロック42が表示され、表示部2−2には、テキスト表示ブロック43−1とテキスト表示ブロック43−2が表示されている。
このように、2画面で表示することにより、拡大されたコンテンツにおいても、スクロールなど、ユーザの手を煩わすような処理が行われなくても、ユーザがコンテンツ全体を参照できるような表示を行うことが可能となる。
ユーザ端末1’が2画面を有することにより図21に示したような表示を行うことも可能となる。図21に示したように、表示部2−1には、図3に示したコンテンツが表示され、表示部2−2には、そのコンテンツを拡大した図15又は図16に示したコンテンツの一部が表示されている。換言すれば、表示部2―1には、コンテンツを作成した作成者が意図するレイアウトが変更されること無くコンテンツが表示され、表示部2−2には、ユーザが参照しやすい大きさにまで拡大されたコンテンツが表示されている。
このような表示を行うためにユーザ端末1’が行う処理について、図22のフローチャートを参照して説明する。ステップS101において、表示部2−1(図21)に所定のページが表示されているか否かが判断される。この判断は、後段の処理により、コンテンツ(ページ)の拡大が指示されるわけだが、その拡大が指示されるページは、表示部2−1に表示されているページが対象とされる。従って、ページが表示部2−1に表示されている状態でなければ、後段の処理に進めないため、ステップS101における処理が実行される。
ステップS101において、表示部2−1にページは表示されていないと判断された場合、ステップS102に進み、指示されたページの描画の処理が行われる。このステップS102におけるページの描画処理は、図9のフローチャートの処理に従って行われる。図9のフローチャートの説明は既にしたので、ここではその説明を省略する。図9のフローチャートの処理が実行されることにより、表示部2−1には、図21に示したような画面(図3に示した画面)が表示される。
表示部2−1に所定のページが表示されている状態、すなわち、ステップS101において、表示部2−1に所定のページが表示されていると判断された場合、または、ステップS102における所定のページの描画処理が終了された場合、ステップS103に進む。ステップS103において、表示部2−1に表示されているページ(コンテンツ)に対して、拡大が指示されたか否かが判断される。この判断は、拡大ボタン3−1が操作されたか否かを判断することにより行われる。
ステップS103において、拡大が指示されたと判断されると、ステップS104に進み、その指示された拡大は、表示部2−1に表示されているページ全体を対象とするものであるか、ページ内の一部分を対象とするものであるかが判断される。本実施の形態においては、上述したように、ブロック毎に拡大の指示を出すことが可能である。
ブロック毎に拡大の指示が出される場合、ユーザは、例えば、表示されているカーソルを所望のブロック上に移動させることにより選択し、決定を示す所定の操作を実行することにより、所望のブロックの拡大を指示することができる。このような指示が出されたのか否かが、ステップS104において判断される。
ステップS104において、ページ全体の拡大が指示されたと判断された場合、ステップS105に進み、ページ全体に対する拡大の処理が実行される。このステップS105において行われるページ全体に対する拡大処理は、図13または図18に示したフローチャートの処理に従って行われる。
図13または図18に示したフローチャートの処理が実行されることにより、例えば、図16に示したコンテンツの表示状態が、仮想的に作成され、その仮想的に作成された表示状態の一部が、表示部2−2に表示される。図21に示した表示部2−2には、ページ全体に対して拡大の処理が指示され、図16に示したような表示状態の一部分が表示されている例を示している。
一方、ステップS104において、ページ全体の拡大が指示されたのではないと判断された場合、換言すれば、所定のブロックの拡大が指示されたと判断された場合、ステップS106に進み、部分拡大の処理が実行される。ステップS106において行われる部分拡大の処理は、図11に示したフローチャートの処理に従って行われる。図11に示したフローチャートの処理が、例えば、タイトル表示ブロック41に対して実行されることにより、図12に示したような画面が、表示部2−2に表示される。
このように、ユーザは、表示部2−1に表示されているページを参照しながら、所望の部分(ブロック)を、表示部2−2で拡大された状態で参照することができる。従って、ユーザは、コンテンツの作成者が意図したレイアウトを表示部2−1の表示で楽しむことができると同時に、所望のコンテンツを表示部2−2で確認することが可能となる。
表示部2−1に目次を表示し、その目次の中から所定の項目が選択されると、その選択された項目の内容が、表示部2−2に表示されるといったようなことができるようにしてもよい。
上述した一連の処理は、それぞれの機能を有するハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
記録媒体は、図2に示すように、ユーザ端末1としてのパーソナルコンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク21(フレキシブルディスクを含む)、光ディスク22(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク23(MD(Mini-Disc)(登録商標)を含む)、若しくは半導体メモリ24などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記憶されているROM12や記憶部17が含まれるハードディスクなどで構成される。
なお、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
1 ユーザ端末, 2 表示部, 3―1 拡大ボタン, 3−2 縮小ボタン, 41 タイトル表示ブロック, 42 画像表示ブロック, 43 テキスト表示ブロック, 51 コンテンツデータ