(57)【特許請求の範囲】
【請求項１】
ページ上のレイアウト領域に複数のコンテンツをレイアウトするレイアウト方法であって、
レイアウト手段が、ページ上のレイアウト領域において、コンテンツを収める複数の矩形領域が重複しないように、前記複数の矩形領域を移動及び縮小するレイアウト工程と、
解析手段が、前記レイアウト工程で移動及び縮小した前記複数の矩形領域のそれぞれにコンテンツが収まるか否かを解析する解析工程と、
縮小限界サイズ設定手段が、前記コンテンツが収まらない矩形領域について、前記コンテンツが収まる縮小限界サイズを設定する縮小限界サイズ設定工程と、
前記解析工程で前記コンテンツが収まらないと解析された矩形領域が存在する場合、前記レイアウト工程で移動及び縮小された複数の矩形領域のうち前記コンテンツが収まらない矩形領域が前記縮小限界サイズ設定工程で設定された縮小限界サイズ以上となり、かつ前記複数の矩形領域が重複しないように、前記レイアウト手段が前記複数の矩形領域を再レイアウトする再レイアウト工程とを有し、
前記解析工程で前記コンテンツが収まると解析された前記複数の矩形領域に、前記コンテンツを収めてレイアウト結果とすることを特徴とするレイアウト方法。
【請求項２】
前記縮小限界サイズ設定工程での前記矩形領域の縮小限界サイズは、前記矩形領域を定義する構造化文書内に設定されることを特徴とする請求項１に記載のレイアウト方法。 
【請求項３】
ページ上のレイアウト領域に配置する複数のコンテンツをレイアウトするレイアウト手順をコンピュータに実行させるためのプログラムであって、
ページ上のレイアウト領域において、コンテンツを収める複数の矩形領域が重複しないように、前記複数の矩形領域を移動及び縮小するレイアウト手順と、
前記レイアウト手順で移動及び縮小した前記複数の矩形領域のそれぞれにコンテンツが収まるか否かを解析する解析手順と、
前記コンテンツが収まらない矩形領域について、前記コンテンツが収まる縮小限界サイズを設定する縮小限界サイズ設定手順と、
前記解析手順で前記コンテンツが収まらないと解析された矩形領域が存在する場合、前記レイアウト手順で移動及び縮小された複数の矩形領域のうち前記コンテンツが収まらない矩形領域が前記縮小限界サイズ設定手順で設定された縮小限界サイズ以上となり、かつ前記複数の矩形領域が重複しないように、前記複数の矩形領域を再レイアウトする再レイアウト手順と、
前記解析手順で前記コンテンツが収まると解析された前記複数の矩形領域に、前記コンテンツを収めてレイアウト結果とする手順と、
をコンピュータに実行させるためのプログラム。
【請求項４】
前記縮小限界サイズ設定手順での前記矩形領域の縮小限界サイズは、前記縮小限界サイズが設定される矩形領域を定義する構造化文書内に設定されたことを特徴とする請求項３に記載のプログラム。
【請求項５】
ページ上のレイアウト領域に複数のコンテンツをレイアウトするレイアウト装置であって、
ページ上のレイアウト領域において、コンテンツを収める複数の矩形領域が重複しないように、前記複数の矩形領域を移動及び縮小するレイアウト手段と、
前記レイアウト手段が移動及び縮小した前記複数の矩形領域のそれぞれにコンテンツが収まるか否かを解析する解析手段と、
前記コンテンツが収まらない矩形領域について、前記コンテンツが収まる縮小限界サイズを設定する縮小限界サイズ設定手段と、を有するレイアウト装置であって、
前記レイアウト手段は、前記解析手段によって前記コンテンツが収まらないと解析された矩形領域が存在する場合、前記レイアウト手段によって移動及び縮小された複数の矩形領域のうち前記コンテンツが収まらない矩形領域が前記縮小限界サイズ設定手段によって設定された縮小限界サイズ以上となり、かつ前記複数の矩形領域が重複しないように、前記複数の矩形領域を再レイアウトし、
前記レイアウト装置は、前記解析手段によって前記コンテンツが収まると解析された前記複数の矩形領域に、前記コンテンツを収めてレイアウト結果とすることを特徴とするレイアウト装置。
【請求項６】
前記矩形領域を定義する構造化文書を記憶する記憶手段を更に有し、
前記縮小限界サイズ設定手段は、前記矩形領域の縮小限界サイズを前記構造化文書内に設定することを特徴とする請求項５に記載のレイアウト装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像やテキストで構成されたコンテンツのレイアウト方法及びその装置に関する。
【背景技術】
【０００２】
従来、ドキュメントに使用される画像やテキストなどのコンテンツを、ある領域内にレイアウトする場合、組版アプリケーションなどを利用して、人間が手作業で個々のコンテンツをどこに配置するかを決めていた（特許文献１）。
【０００３】
また、人間の直感や手作業に頼ったコンテンツのレイアウトの良し悪しを評価する技術（特許文献２）もある。
【特許文献１】特開平０４−３１３９５７号公報
【特許文献２】特開２００３−３０６７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、ドキュメント内のコンテンツをいかにレイアウトするかを定めるレイアウト情報が無いところから手作業によりレイアウト処理を行う場合、試行錯誤による作業者の負荷が大きくなり、人的コストも膨大なものになる。また、コンテンツデータを決まった形のレイアウト形式に出力できるテンプレートを作成し、そのテンプレートを使用して、画像やテキストをレイアウトさせて出力させた場合でも、何種類かの決まったパターンでしか出力することができない。したがって、入力される様々なコンテンツデータのサイズや種類などに対応し、フレキシブルにレイアウトされた結果を得ることができないという問題がある。
【０００５】
この問題を解決するため、本発明者は、平成１６年１０月１４日に、特願２００４−３００２７９を出願した。この出願は、ドキュメントに使用される画像やテキストなどのコンテンツを、人手を介さずある領域内に自動的にレイアウトし、レンダリングするレイアウト技術を開示する。この出願では、配布可能あるいは印刷可能なデータへと変換させる場合に、複数の構造化文書の自動統合及びアプリケーションデータへの変換装置を利用し、まずコンテンツをレンダリングする領域となる１つ１つの矩形をレイアウトする。それぞれの矩形のレイアウトが決まったあと、実際のコンテンツデータを対応する矩形にそれぞれレンダリングしていく、という流れで実現している。そして、コンテンツデータをレンダリングした場合に対応する矩形に収まりきれない時は、画像データの最小限度の解像度までの縮小及び／又はテキストデータの最小フォントサイズまでの縮小を行なって、矩形内に収まるように工夫している。
【０００６】
又、平成１６年１１月２５日に、特願２００４−３４０８０５を出願した。この出願は、ドキュメント領域内に配置される画像やテキストなどの複数のコンテンツを矩形領域と見立て、ドキュメント領域内にそれらの矩形を自動的にレイアウトする自動レイアウト技術を開示する。
【０００７】
しかしながら、ある領域内に複数の矩形をレイアウトして、その後、１つ１つの矩形内に、対応する実際のコンテンツデータをレンダリングしていくという流れで処理を進めると、以下のような問題が生じる場合がある。例えば、コンテンツデータである画像データを、指定した最小限度の解像度（サイズ）に縮小しても矩形内に収まりきれないことがある。また、コンテンツデータであるテキストデータを最小フォントサイズに縮小しても、すべてのテキストが矩形内に収まりきれないことがある。
【０００８】
その場合の問題として、画像に関しては、矩形のサイズに合うように強制的に縮小してしまうことにより、画質が劣化し過ぎて画像が見づらくなることがあった。また、テキストデータに関しては、納まらない分のデータを削除してしまうことがあり、従ってコンテンツデータの情報の一部が欠落することがあった。
【０００９】
本発明は、上記のような問題点に鑑み、レイアウトされたそれぞれの矩形内にコンテンツを画質の劣化や情報の欠落なしに収めることが可能なレイアウト方法及びその装置を提供する。
【課題を解決するための手段】
【００１０】
かかる課題を解決するために、本発明のレイアウト方法は、ページ上のレイアウト領域に複数のコンテンツをレイアウトするレイアウト方法であって、レイアウト手段が、ページ上のレイアウト領域において、コンテンツを収める複数の矩形領域が重複しないように、前記複数の矩形領域を移動及び縮小するレイアウト工程と、解析手段が、前記レイアウト工程で移動及び縮小した前記複数の矩形領域のそれぞれにコンテンツが収まるか否かを解析する解析工程と、縮小限界サイズ設定手段が、前記コンテンツが収まらない矩形領域について、前記コンテンツが収まる縮小限界サイズを設定する縮小限界サイズ設定工程と、前記解析工程で前記コンテンツが収まらないと解析された矩形領域が存在する場合、前記レイアウト工程で移動及び縮小された複数の矩形領域のうち前記コンテンツが収まらない矩形領域が前記縮小限界サイズ設定工程で設定された縮小限界サイズ以上となり、かつ前記複数の矩形領域が重複しないように、前記レイアウト手段が前記複数の矩形領域を再レイアウトする再レイアウト工程とを有し、前記解析工程で前記コンテンツが収まると解析された前記複数の矩形領域に、前記コンテンツを収めてレイアウト結果とすることを特徴とする。
【００１１】
ここで、前記縮小限界サイズ設定工程での前記矩形領域の縮小限界サイズは、前記矩形領域を定義する構造化文書内に設定される。
【００１２】
更に、ページ上のレイアウト領域に配置する複数のコンテンツをレイアウトするレイアウト手順をコンピュータに実行させるためのプログラムであって、ページ上のレイアウト領域において、コンテンツを収める複数の矩形領域が重複しないように、前記複数の矩形領域を移動及び縮小するレイアウト手順と、前記レイアウト手順で移動及び縮小した前記複数の矩形領域のそれぞれにコンテンツが収まるか否かを解析する解析手順と、前記コンテンツが収まらない矩形領域について、前記コンテンツが収まる縮小限界サイズを設定する縮小限界サイズ設定手順と、前記解析手順で前記コンテンツが収まらないと解析された矩形領域が存在する場合、前記レイアウト手順で移動及び縮小された複数の矩形領域のうち前記コンテンツが収まらない矩形領域が前記縮小限界サイズ設定手順で設定された縮小限界サイズ以上となり、かつ前記複数の矩形領域が重複しないように、前記複数の矩形領域を再レイアウトする再レイアウト手順と、前記解析手順で前記コンテンツが収まると解析された前記複数の矩形領域に、前記コンテンツを収めてレイアウト結果とする手順と、をコンピュータに実行させるためのプログラムを提供する。
【００１３】
又、本発明のレイアウト装置は、ページ上のレイアウト領域に複数のコンテンツをレイアウトするレイアウト装置であって、ページ上のレイアウト領域において、コンテンツを収める複数の矩形領域が重複しないように、前記複数の矩形領域を移動及び縮小するレイアウト手段と、前記レイアウト手段が移動及び縮小した前記複数の矩形領域のそれぞれにコンテンツが収まるか否かを解析する解析手段と、前記コンテンツが収まらない矩形領域について、前記コンテンツが収まる縮小限界サイズを設定する縮小限界サイズ設定手段と、を有するレイアウト装置であって、前記レイアウト手段は、前記解析手段によって前記コンテンツが収まらないと解析された矩形領域が存在する場合、前記レイアウト手段によって移動及び縮小された複数の矩形領域のうち前記コンテンツが収まらない矩形領域が前記縮小限界サイズ設定手段によって設定された縮小限界サイズ以上となり、かつ前記複数の矩形領域が重複しないように、前記複数の矩形領域を再レイアウトし、前記レイアウト装置は、前記解析手段によって前記コンテンツが収まると解析された前記複数の矩形領域に、前記コンテンツを収めてレイアウト結果とすることを特徴とする。
【００１４】
ここで、前記矩形領域を定義する構造化文書を記憶する記憶手段を更に有し、前記縮小限界サイズ設定手段は、前記矩形領域の縮小限界サイズを前記構造化文書内に設定する。
【発明の効果】
【００１５】
本発明により、レイアウトされたそれぞれの矩形内にコンテンツを画質の劣化や情報の欠落なしに収めることが可能なレイアウト方法及びその装置を提供できる。
【００１６】
すなわち、画像の強制縮小やテキストデータの欠落といった不具合が無くなり、実際のコンテンツのより適切なレイアウト結果が得られ、より紙面形成を意識した配布可能あるいは印刷可能なデータへと変換できる。また、レイアウトやレンダリング処理の制限を意識したコンテンツ作りをする必要が無いため、より自由にコンテンツの作成ができ、コンテンツ自体の質の向上も期待できる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施形態を図面を参照しながら詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【００１８】
本実施形態では、入力されたレイアウトする矩形とコンテンツデータ情報とにより、指定されたレイアウト領域内に矩形をレイアウトし、その矩形にコンテンツデータ情報をレンダリングする。そして、その矩形内に対応するコンテンツデータが収まらない場合、そのコンテンツデータから逆にコンテンツデータが収まる矩形サイズの縮小限界を割り出して、再度レイアウトを行う。これにより指定されたレイアウト領域に、目的とするコンテンツが確実に収容できる矩形をレイアウトするという、レイアウトとレンダリングとの両方を考慮して適切なレイアウトを行う方法及びその装置を提供する。従って、画像の強制縮小やテキストデータの欠落といった不具合が無くなり、実際のコンテンツデータの、より最適なレイアウト及びレンダリング処理結果が得られる。
【００１９】
尚、本実施形態の矩形サイズの縮小限界の割り出しは、コンテンツデータが収まらない場合に行なっているが、最初のレイアント処理の前に予めコンテンツデータ情報に基づいて行なっておくことによっても可能である。又、本実施形態では、各矩形内の画像の解像度やテキストのフォントサイズを独立に設定している。しかし、全ての矩形内又はクループ化された一部の矩形内では同じ解像度とフォントサイズとする、又はある範囲内で共通にする、又は特定の矩形については縮小をしない等の優先度付けのような制限を設けることもでき、これらも本発明に含まれる。
【００２０】
＜本実施形態の自動レイアウト装置の構成例＞
（全体構成の概念図）
図１Ａは、本実施形態における自動レイアウト装置の全体構成を概念的に示すブロック図である。
【００２１】
図１Ａ中で、１０１は装置内部の各処理部を示したものである。１０２は複数の矩形情報及びコンテンツデータ（画像データへのパスやテキストデータ等）を記述したデータであり、入力部１０３で受け取り、矩形情報及びコンテンツデータを取得する。矩形情報及びコンテンツデータ１０２の構成例については、図１Ｂを参照して以下に示す。１０４は、レイアウト処理部であり、レイアウト処理を制御する様々な設定情報を記述した設定ファイル１０５と、レイアウトの方向性を示す重み付けテンプレート１０６とを読み込む。これらの情報と入力部１０３から受け取った矩形情報から、矩形の拡大縮小を行いながら重なりを取り、指定された領域内に最適化アルゴリズムによって自動的にそれぞれの矩形を配置する。その結果を、矩形の配置座標やサイズ等を記述したレイアウト結果１０７としてまとめる。
【００２２】
１０８は、レンダリング及び不具合情報まとめ処理部である。まず、前記レイアウト結果１０７と実体データ格納領域１０９に保存されている実際のコンテンツデータとを取得する。これらを用いて、前記レイアウト処理部１０４で配置が決められた各矩形に、それぞれ対応するコンテンツデータをレンダリングする。その結果、コンテンツデータが矩形内に収まらない場合、コンテンツデータに画像があれば画像サイズの縮小をし、更にテキストデータのフォントサイズの縮小をすることで、矩形内にコンテンツデータを収められるように処理を繰り返す。しかし、コンテンツデータの縮小を予め決められた縮小限界まで行っても矩形内に収まりきらないと判断したら、実際のコンテンツデータから矩形サイズがどれくらいであれば収まりきるかを解析して矩形サイズを割り出す。これらの情報を矩形サイズ制限付き矩形情報１１１としてまとめる。
【００２３】
レンダリング結果に不具合があるか判断する判定部１１０の判定で、不具合があると判定すると、矩形サイズ制限付き矩形情報１１１を前記レイアウト処理部１０４に渡す。そのデータを受け取ったレイアウト処理部１０４は、矩形サイズが制限された矩形に関しては制限サイズ未満に縮小させないでレイアウト処理を完了させるように、矩形の再レイアウトを行う。このようにレイアウト処理とレンダリング処理とを繰り返すことで、矩形内にコンテンツデータを確実にレンダリングできるようにする。ただし、矩形サイズの制限付きで再レイアウト処理をさせることにより、レイアウトが決まらなくなる可能性もある。その場合は、コンテンツデータの個数を減らす、コンテンツデータの一部を削除してしまう、別の領域（紙面）に移すなど、どのような処理をさせるか優先順位などをあらかじめ決めておき、柔軟に対応できるようにしておく。
【００２４】
判定部１１０で、不具合無く矩形内にコンテンツデータをレンダリングできたと判定した場合は、アプリケーションデータ１１２に変換して出力部１１３に渡し、出力部１１３はそのままアプリケーションデータ１１４を出力する。
【００２５】
図１Ｂは、本実施形態における矩形及びコンテンツデータ情報１０２の一例を示す図である。図１Ｂは、矩形及びコンテンツデータ情報１０２のＸＭＬ形式で記述した例（矩形及びコンテンツデータ情報．xml）である。
【００２６】
図１Ｂから分かるように、本例では内容が、＜layout＞＜/layout＞の間に記述されている。大きくは、＜property＞の部分２０２と、＜objectlist＞の部分とからなる。
【００２７】
＜property＞の部分２０２は、レイアウト領域及びコンテンツ数のデータ設定部であって、レイアウトサイズ（レイアウトする領域の縦横長）を表す部分＜layoutsize＞と矩形の数を表す＜documentnum＞とからなる。レイアウトサイズは、レイアウト領域の幅のデータ＜width＞（ここでは４９６０）と、レイアウト領域の高さのデータ＜height＞（ここでは７０１５）からなる。矩形の数＜documentnum＞は、図１Ｂでは３つの矩形の例を示している。
【００２８】
＜objectlist＞は、レイアウト領域にレイアウトする複数の矩形のサイズとコンテンツとを表す部分である。＜object number="1"＞＜/object＞間２０３が、上述のレイアウト領域にレイアウトする１番目の矩形に対して必要な情報がまとめられた部分である。＜block＞の部分は、矩形の縦横のサイズを表す。即ち、矩形の幅のデータ＜width＞はここでは１２８であり、矩形の高さのデータ＜height＞はここでは６４である。
【００２９】
更に、本実施形態では矩形の縦横サイズの縮小できる限界の値を示す＜limit＞要素２０５を有する。ここで、＜limit switch=on＞は、この限界の値をレイアウト処理の中で適用させるか／させないかを判別するフラグを設定するswitch属性である。矩形の幅のデータ縮小限界は＜limitwidth＞に、矩形の高さのデータ縮小限界は＜limitheight＞に記述される。図１Ｂでは、最初のレイアウト処理における例として、制限なし（すなわち、ゼロ）が設定されている。
【００３０】
＜data＞２０６には、この矩形内にレンダリングするにテキストデータ及び画像データへのパスが記述されている。テキストは＜text xml:space=preserve＞に、イメージは＜image src="photoA．jpg"＞に記述されている。
【００３１】
以下、２つ目の矩形情報２０７、３つ目の矩形情報２０８というように矩形の数（図１Ｂの例では３つ）だけデータが続く。
【００３２】
尚、図１Ｂの例では、矩形情報の表現方法として、ＸＭＬデータによる構造化文書の例を示したが、本発明の趣旨はこれに限定するものではなく、例えば、ＨＴＭＬ、ＳＧＭＬ等の構造化文書、あるいは、単純なテキストデータにより表現するようにしてもよい。
【００３３】
（本実施形態の装置のハードウエア構成例）
図２は、図１に示した本実施形態における処理を行うシステムのハードウエア構成例を示す図である。尚、図２には本実施形態の説明に必要な部分のみが記載してあり、他の部分は割愛してある。
【００３４】
１は、システム全体の処理を行う演算制御用のＣＰＵである。２は、オペレータによりシステムに対して指示を行ったり、システムの状態を表示したりする表示部であり、キーボードやマウスなどの操作部を含む。３は、入力処理や出力処理に通信を用いる場合に利用する通信部であり、レイアウトを行う矩形情報１０２を受け取ったり、レイアウト結果１０７やアプリケーションデータ１１４を出力することもできる。４は、ＣＰＵ１を中心に各部と接続するシステムバスでありデータバス、制御バスなどを含む。
【００３５】
５は、システムの固定情報を記憶するＲＯＭであり、フラッシュメモリのような書き換え可能な記憶装置でも、書き換え不可能な記憶装置でも良い。本例では、ＲＯＭ５に図１の各処理部を実現するプログラム（図１と同じ参照番号で示す）が記憶されている。尚、本実施形態の説明に必要としないＯＳや周辺機器のドライバ等、通常のシステムのために必要とする他の機能は省略してある。又、これらプログラムは、後述のディスクファイル７に記憶され、ＲＡＭ６にロードされてＣＰＵ１に実行される構成でもよい。
【００３６】
６は、一時記憶として使用される主記憶装置となるＲＡＭである。ＲＡＭ６には、ＣＰＵ１のプログラム実行に従って種々のデータが一時記憶されるが、ここでは、本実施形態のレイアウト処理で使用される矩形自動レイアウト用データの例を示す。このデータは、最初のドキュメント領域への矩形領域の自動レイアウトの時も、矩形サイズのサイズ限界を決めた再度の自動レイアウトの時も、同じ役割で使用される。
【００３７】
６１は、矩形を自動レイアウトをするためのグリッドを示すグリッド座標データである（図５の右図参照）。６２は、各グリッドに重みを付けた重み付けテンプレートである（図９参照）。６３〜６６は、本実施形態のシュミレーテッド・アニーリング（ＳＡ）手法で自動レイアウトを実行する間に演算される中間結果である（ＳＡ法については、図８を参照して以下で説明する）。６３は現在のエネルギーを示す評価値、６４は矩形領域を任意に移動した次のエネルギーを示す評価値、６５は移動を進めるか否かの判定に使用される現在と次の評価値の差、６６はＳＡ法の演算結果から移動を進めるか否かの矩形移動フラグである。
【００３８】
６７は、矩形自動レイアウト中に使用される矩形領域を表わす矩形情報である。矩形情報６７は、先の図１Ｂの情報を全て持つ必要はない。本例では、各ブロック６８に対応してグリッド位置６９、矩形領域の幅(width)と高さ(heigh)７０、サイズ縮小制限の実行フラグ(limit switch)７１、幅縮小制限値(w-limiti)と高さ縮小制限値(h-limit)７２、フラグ７３を持っていれば、自動レイアウトは実行できる。なお、フラグ７３は、レンダリング結果が矩形に収まったか否かを示す。グリッド位置６９は、例えば、左上角のグリッド座標である。７４は、上述のディスクファイル７に記憶されている前記図１Ｂの詳細なブロック情報へのポインタである。以下、レイアウトする矩形領域の数だけのブロック情報が記憶される。
【００３９】
７は、ハードディスク等の大容量の記憶をする装置に記憶されたファイルであり、本実施形態の自動レイアウト処理に必要な情報が記憶されている。ファイル７には、図１Ａに図示のデータファイルが同じ符号で図示されている。尚、プログラムをＲＡＭ６にロードして実行する構成に場合は、ＲＯＭ５に図示のプログラムもファイル７に格納されている。
【００４０】
８は、レイアウトの結果や、レイアウトできなかった矩形に関する情報などを出力する、例えばプリンタなどを含む出力部である。
【００４１】
＜本実施形態の自動レイアウト装置の動作例＞
上記構成の自動レイアウト装置がどのように本発明の余白への再レイアウトをするかの動作手順例を順に説明する。
【００４２】
＜全体の処理手順＞
図３は、本実施形態の全体の処理手順を示すフローチャートである。尚、図３のステップの参照番号は、図１Ａの各処理部及び図２のＲＯＭ５の各処理部に対応している。
【００４３】
ステップＳ１０３：入力処理
入力部１０３により、矩形情報及びコンテンツデータ情報１０２を入力する。例えば、通信部３を介してインターネットよりＸＭＬデータとして入力し、ファイル７の矩形及びコンテンツデータ情報１０２に記憶する。
【００４４】
ステップＳ１０４：レイアウト処理
詳細は、図４Ａ及び図４Ｂに従って後述するが、ステップＳ１０３で入力した矩形及びコンテンツデータ情報１０２の矩形情報に従ってレイアウト領域に矩形をレイアウトする。このレイアウトの際には、レイアウト処理を制御する様々な情報を記述したデータからなる設定ファイル１０５と、レイアウトの方向性を示す重み付けテンプレート１０６とを参照する。
【００４５】
ステップＳ１０８:レンダリング＆不具合まとめ処理
詳細は図１１及び図１２に従って後述するが、ステップＳ１０４でレイアウトされたレイアウト結果１０７の各矩形に対して、実体データ格納領域１０９に格納されている実際のコンテンツデータを取得し、それぞれ対応するコンテンツデータをレンダリングする。
【００４６】
この実際のコンテンツデータのレンダリングで、コンテンツデータがそのまま矩形内に収まらなければ、コンテンツデータに画像があれば画像サイズの縮小を、更に収まらなければ、テキストデータのフォントサイズの縮小をする。矩形内にコンテンツデータを収められるよう、この画像サイズの縮小処理、フォントサイズの縮小処理を繰り返す。しかし、コンテンツデータの縮小などを、予め決められた縮小させられる限界の値まで行っても矩形内に収まりきらないならば、実際のコンテンツデータが収まる矩形サイズを解析してその矩形サイズを割り出す。これらの情報を、矩形サイズ制限付き矩形情報１１１としてまとめる。矩形内にコンテンツデータをレンダリングできた場合は、レイアウトデータ１０７の矩形領域にコンテンツデータをレンダリングしたアプリケーションデータ１１２を生成して、例えばファイル７へ出力する。
【００４７】
ステップＳ１１０：レンダリング結果に不具合ありの判別
矩形サイズ制限付き矩形情報１１１が作成された場合、即ち、結果が不具合であれば、矩形サイズ制限付き矩形情報１１１を前記レイアウト処理部１０４に渡して、ステップＳ１０４に戻る。そのデータを受け取ったレイアウト処理部１０４は、矩形サイズが制限された矩形に関してはそのサイズ未満に縮小させないで、レイアウト処理を完了させるように再び矩形のレイアウト処理を行う。以上のようにして、矩形内にコンテンツデータをレンダリングできるようにレイアウト処理とレンダリング処理を繰り返す。
【００４８】
尚、矩形サイズの制限付きで再レイアウト処理をすることにより、レイアウトが決まらなくなる可能性もある。その場合は、１）コンテンツデータの個数を減らす、２）コンテンツデータの一部を削除する、３）別の領域（紙面）に移す等、どのような処理をさせるか優先順位などを予め決めておき、柔軟に対応できるようにしておく。
【００４９】
Ｓ１１３：出力処理
レンダリング結果に不具合ありの判定（Ｓ１１０）で、レンダリング結果に不具合が無ければ、レイアウト結果１０７（各矩形を配置する座標と縦横のサイズ情報等、レイアウトされた結果）をそれぞれの矩形に対してまとめる。そして、必要に応じ、システムのファイル７にアプリケーションデータ１１２として出力することや、アプリケーションデータ１１２を、アプリケーションデータ１１４として出力する処理を行い、全てのレンダリングを終了する。
【００５０】
また、ステップＳ１１３では、出力部８を介してハードコピーとしてプリント出力をしたり、通信部３による通信回線を介して出力したりする。ここで、通信部３によりインターネットを含むネットワーク上への出力を行うことも可能である。レイアウト結果は、ＸＭＬで記述されたＸＭＬデータで出力可能である。
【００５１】
＜各処理部の詳細処理と具体例＞
以下、本実施形態の特徴ある処理部の処理例を、具体例を参照して詳細に説明する。
【００５２】
本例では、入力部１０３に入力された矩形情報により規定された矩形領域の例を、図４Ａや図１３に示す。尚、図５の５０１は矩形自動レイアウト処理を説明するために、レイアウトの対象となるイメージやテキストに対応する矩形領域（１）、（２）、（３）、（４）を包含するドキュメントの場合を示している。
【００５３】
＜レイアウト処理部１０４:Ｓ１０４＞
（レイアウト処理部１０４の構成例）
図４Ａは、図１に示すレイアウト処理部１０４の処理をさらに細分化した構成例を示している。細分化したレイアウト処理部１０４の構成は、矩形情報処理部４０１、レイアウト準備処理部４０２、最適化アルゴリズムによるレイアウト処理部４０３、矩形情報処理部４０４からなる。ここで、矩形及びコンテンツデータ情報１０２は、前述のように矩形及びコンテンツデータ情報をＸＭＬ形式で示した矩形及びコンテンツデータ情報．xmlである。
【００５４】
矩形情報処理部４０１は、ＸＭＬデータとして入力された矩形及びコンテンツデータ情報１０２（矩形及びコンテンツデータ情報．xml）より、定められたレイアウト領域にレイアウトするそれぞれの矩形のサイズ情報等を抽出する。
【００５５】
レイアウト準備処理部４０２は、レイアウト処理部１０４の処理を行うのに必要な情報が記述されている設定ファイル１０５を参照して、最適化アルゴリズムによるレイアウト処理を行わせる為の前段階のレイアウト処理を、以下のように行う。
【００５６】
配置処理：レイアウト処理で指定領域に矩形をランダムに配置した例の参照番号４０５に示すように、取得した矩形サイズの情報から、まず矩形(1)〜(5)をランダム指定領域に配置する。
【００５７】
重複除去処理：次に、参照番号４０６に示すように、ランダムに配置した矩形を、矩形の配置換えをしたり、矩形をそれぞれ縮小させたりすることで、矩形の重なりを除去する。ここで、縮小させる際に、それぞれの矩形に対して縮小の限界値の指定があり、それを有効にする指示が矩形情報に記述されていれば、その限界値よりも矩形を縮小させないようにしながら、重なりを除去する。
【００５８】
最適化アルゴリズムによるレイアウト処理部４０３は、遺伝的アルゴリズムや、SimulatedAnnelineg法などの、最適化アルゴリズムアルゴリズムと、レイアウトの方向性を指し示す重み付けテンプレート情報１０６を参照する。参照番号４０７の中央寄せの処理をした例に示すように、例えば中央寄せが指定してある場合は、矩形同士が隙間なく中央に寄って指定領域内からはみ出すことがない最適なレイアウトを導き出す。
【００５９】
本実施形態では、中央寄せの一例を挙げているが、本発明は、このような中央寄せには、限定されない。すなわち、重み付けテンプレート１０６により、中央寄せだけでなく、中央を空けて所定の領域内の周りに配置する場合、左上から順に並べていく場合など、様々なレイアウト方針を決めてその条件に従った処理が可能である。
【００６０】
矩形情報処理部４０４は、レイアウト処理部４０３により最適なレイアウト結果が得られると、矩形レイアウト情報（レイアウト結果）１０７として整形して出力する。例えば、矩形領域の微調整などを含む。
【００６１】
（レイアウト処理Ｓ１０４の手順例）
レイアウト処理部１０４の処理を、図４Ｂのフローチャートに従って説明する。
【００６２】
レイアウト処理を制御する様々な設定情報を記述した設定ファイル１０５と、レイアウトの方向性を示す重み付けテンプレート１０６を、例えば、ディスクファイル７から読み込み、矩形情報のレイアウトを制御するために必要な初期設定を行う（Ｓ１０４１）。必要であれば、各矩形領域を拡大処理などをして、各矩形領域をそれぞれの矩形の縦と横のサイズを指定した分割領域（グリッド）の幅で割り切れるサイズに調整する（Ｓ１０４２）。本実施形態では、図５の（ａ）に示すように、予め調整したか、あるいはグリッドの幅で割りきれるサイズの矩形領域を提供している。
【００６３】
グリッド状にされた各矩形領域のデータをランダムに配置する配置処理で、グリッド状にされたレイアウト領域内からはみ出ないように配置処理を行う（Ｓ１０４３）。かかる処理が図５であり、これらのグリッド状にされた矩形領域を、図５の（ｂ）に５０２で示すように、矩形領域の角部（四隅のコーナー部）がグリッドの１マスの角にあてはまる形で、グリッド状に分割したレイアウト領域内にランダムに配置する。このとき矩形領域同士は重なっていても構わない。
【００６４】
（重複除去処理：Ｓ１０４４）
各矩形領域のデータの重なりを、ある規則性に従って矩形領域を移動、あるいは必要であれば縮小して、重複している部分を無くす重複除去処理を行なう（Ｓ１０４４）。
【００６５】
図６は、重複除去処理の処理手順例を示すフローチャートであり、図７は矩形領域の重なりを除去する処理に関し、重なりを除去する状態を視覚的に示した図である。以下、図６及び図７を用いて、重複除去処理の処理内容を説明する。
【００６６】
まず、ステップＳ６０２で、レイアウト処理を制御する様々な設定情報、例えば、処理の繰り返し回数（ループさせる回数を制御するパラメータ（Ｉｔｅｒａｔｅｒ）の上限値（Ｍａｘ））や、縮小させる回数、等の設定値を設定ファイル１０５から取得する。
【００６７】
ステップＳ６０３で、重複除去処理ループを開始する。処理の繰り返しを制御するパラメータ（Ｉｔｅｒａｔｅｒ）が処理回数として設定されている上限値（Ｍａｘ）に達するまで、または、矩形領域の重複がなくなるまで、ステップＳ６０８までの処理を繰り返す。
【００６８】
ステップＳ６０４で、各矩形領域の中（例えば、図５の（ａ）のドキュメント５０１に含まれる矩形領域（１）〜（４））で、移動させる対象となる矩形領域の順番を決める。そして、ステップＳ６０５で、先のステップで決定した順番に従い、移動させる対象となる一の矩形領域が他の矩形領域と重なりある状態を調べる。さらに、ステップＳ６０６で、その重なり具合に応じた移動パターンに従って、基準となっていた一の矩形領域を移動させる。
【００６９】
ステップＳ６０７で、基準となっていた一の矩形領域が移動した後、まだ、矩形領域の重なりがあるか（移動させた矩形領域以外の領域間で重複があるか否か）チェックする。ステップＳ６０８で、矩形同士の重なりが取れるか、ループ回数がループの上限値を超えるか否かを判断し、設定された繰り返し回数の範囲内で、矩形領域同士の重なりを除去する。たとえば、移動の基準として最初に矩形領域（１）を選び、矩形領域（１）に関して重複を解消した後、残りの矩形領域（２）〜（４）についても順次、重複の有無を判定していく。重複している場合は、レイアウト領域内で、移動の対象として選択されている矩形領域を順次移動させていき、全体として重複領域を解消するための処理を行う。
【００７０】
ステップＳ６０９において、矩形領域の重複が解消したか否かを判定し、重複が解消した場合（Ｓ６０９でＹｅｓ）、処理をステップＳ６１０に進め重複除去に関する処理を終了する。一方、ステップＳ６０９の判定で、矩形領域の重複が解消しなかった場合（Ｓ６０９でＮｏ）、処理をステップＳ６１１に進める。
【００７１】
矩形領域の重複が解消しなかった場合（例えば、繰り返し処理回数をオーバーしてしまった場合）は、ステップＳ６１１で縮小させる回数をチェックする。ステップＳ６１２で縮小回数をオーバーしていなければ（Ｓ６１２のＹｅｓ）、処理をステップＳ６１３に進め、各矩形領域を設定ファイル１０５によって与えられた一定の割合でそれぞれ縮小させる。そして、再度ステップＳ６０３に処理を戻し、再度重複を除去する処理を行う。
【００７２】
一方、縮小回数をオーバーしていれば（Ｓ６１２のＮｏ）、処理をステップＳ６１４に進め、設定した縮小回数、重なり除去のループ回数では、矩形領域の重複が最終的に取れないと判断をし、レイアウト失敗の通知処理を行い（Ｓ６１４）、処理を終了する。
【００７３】
図７は、複数の矩形領域の配置とその重複の除去を説明する図である。
【００７４】
図７の（ａ）における７０１は、配置処理がレイアウト領域に複数の矩形領域を配置した状態を示している（図５の（ｂ）に相当）。矩形領域の重複関係から、各矩形領域（１）〜（４）はそれぞれ矢印７０２〜７０５の方向への移動と縮小処理（縦横方向にそれぞれ１グリッド分縮小させる処理）とを組合せる。その結果、図７の（ｂ）の７０６に示すような、各矩形領域の配置において、最終的に重複が除去された状態になる。
【００７５】
（レイアウト処理：Ｓ１０４５）
重なりが除去できると、最適化アルゴリズム手法によるレイアウト処理を行う（Ｓ１０４５）。レイアウト処理は、各矩形領域を、レイアウトの方向性を示す重み付けテンプレートの内容にそって、レイアウト領域内に最適に配置する。以下、最適化アルゴリズム手法によるレイアウト処理を、図８、図９、図１０を参照して説明する。
【００７６】
レイアウト処理の最適化アルゴリズム手法として、シミュレーティド・アニーリング（Simulated Annealing）手法（以下、「ＳＡ法」と記す）を利用することができる。ＳＡ法についての詳細な説明は省略するが、ＳＡ法は、組み合わせ最適化問題を解決するための手法の一つである。
【００７７】
その手法は、例えば、「固体の温度を十分な自由エネルギーを持つまで高くする。その後、温度を制御しつつ冷却していく際、ある手続きによりその自由エネルギーを最小化していく」というものである。ある固体Ｓにおいて、現在の状態Ｓｉが与えられた時、エネルギーＥｉを持っているとする。ランダムに粒子を選択してランダムな量だけ粒子を移動させることにより、エネルギーＥｊを持つ、次の状態Ｓｊが生成される。現在の状態のエネルギーが次の状態のエネルギーより小さい場合、すなわち、
ΔＥ＝Ｅｉ−Ｅｊ≦０      ・・・（１）
の時、その移動が採択されて、Ｓｊが現在の状態となる。
【００７８】
また、現在の状態のエネルギーが次の状態のエネルギーより大きい場合、すなわち、
ΔＥ＝Ｅｉ−Ｅｊ＞０      ・・・（２）
の時、移動するかどうかは次式（３）に基づき確率的に求められる。
【００７９】
Ｐｒｏｂ＝ｅ−(ΔE/(KB・T))          ・・・（３）
ここで、KBはボルツマン定数、Tは温度である。
【００８０】
この場合、移動するかどうかの採択基準は、膨大な回数分の繰り返しによるメトロポリスアルゴリズムとして知られている。この全体を通した解法のことをＳＡ法と呼んでいる。本実施形態におけるレイアウト処理においては、この手法を応用して矩形領域のレイアウトを制御している。
【００８１】
図８は、レイアウトの方向性を示す重み付けテンプレート１０６と、ＳＡ法を組み合わせて、どのようにレイアウト処理が行われるかを概略的に示す図である。尚、本例では９×９のグリッドで、４つの矩形領域をレイアウト処理するが、簡単のため図８では４×４のグリッドで、３つの矩形領域のレイアウト処理を説明する。
【００８２】
図８の（ａ）では、レイアウト領域上に矩形領域（１）〜（３）が配置されたグリッドがあり、それぞれの矩形領域が配置されているグリッドに割り当てられている重み付けの数字の総和を評価値として扱う。
【００８３】
矩形領域（１）に関して：１＋１＋２＋１＝５        ・・・（４）
矩形領域（２）に関して：１＋２＝３                ・・・（５）
矩形領域（３）に関して：２                        ・・・（６）
この場合、矩形領域の全体で評価値は（７）式のようになる。
【００８４】
（５＋３＋２）×１０＝１００                      ・・・（７）
ここで、（７）式において、評価値１を１０ポイントとして扱うために、（４）〜（６）の評価値の総和に「×１０」を乗じている。
【００８５】
次に矩形領域（１）をランダムな方向、例えば、図８の（ｂ）で示すような配置として、評価値を求めると、以下の（８）〜（１１）式のようになる。
【００８６】
矩形領域（１）に関して：２＋１＋３＋１＝７        ・・・（８）
矩形領域（２）に関して：１＋２＝３                ・・・（９）
矩形領域（３）に関して：２                        ・・・（１０）
この場合、矩形領域の全体で評価値は（１１）式のようになる。
【００８７】
（７＋３＋２）×１０＝１２０                      ・・・（１１）
矩形領域（１）が移動した後の新しい評価値（（１１）式）は、前の評価値（（７）式）よりも大きい値になるため、（１）式の関係に基づいて（１１）式の値が採用される。すなわち、矩形領域（１）の位置が移動後の位置（新しい評価値を得た図８の（ｂ）の位置）として採択され、配置される。
【００８８】
次に矩形領域（２）をランダムな方向、例えば、図８の（ｃ）で示すような配置として、評価値を求めると、以下の（８）〜（１１）式のようになる。
【００８９】
矩形領域（１）に関して：２＋１＋３＋１＝７        ・・・（１２）
矩形領域（２）に関して：１＋１＝２                ・・・（１３）
矩形領域（３）に関して：２                        ・・・（１４）
この場合、矩形領域の全体で評価値は（１５）式のようになる。
【００９０】
（７＋２＋２）×１０＝１１０                      ・・・（１５）
矩形領域（２）が移動した後の新しい評価値（（１５）式）は、前の評価値（（１１）式）よりも小さく値になるため、（２）式の関係に基づいて、レイアウト処理部１０４はこの矩形領域（２）の移動の採択を（３）式に従って、確率的に決定する。
【００９１】
現在温度が１００℃、ボルツマン係数１の場合、
ΔＥ＝ Ｅｉ−Ｅｊ＝１２０−１１０＝１０・・・（１６）
Ｐｒｏｂ＝ｅ−(ΔE/(KB・T))＝ ０．９０４８        ・・・（１７）
さらに、この計算とは別に、ボルツマン係数０〜１までのランダムな数値を抽出する。例えば、０．６が求められたとすると、０．６＜Ｐ（＝０．９０４８）なので、矩形領域（２）の位置が、移動後の位置（新しい評価値を得た図８の（ｃ）の位置）として採択され、配置される。
【００９２】
逆にもしランダムに抽出された数値が０．９５の場合、０．９５＞Ｐ（＝０．９０４８）となる。この場合、（３）式に基づく確率的な判断手法により、レイアウト処理部１０４は、矩形領域（２）の移動を採択せず、矩形領域（２）の位置は図８の（ｂ）のままとなる。
【００９３】
ここで、現在温度に関しては、Ｐｒｏｂの計算結果があまり偏りすぎないような温度をあらかじめ試験的に評価値（数値１に対して１０ポイント）とのバランスで求めておくことが好ましい。上述の計算例では、温度を１００℃として計算を行ったが、本発明の趣旨はこれに限定されるものでないことは言うまでもない。
【００９４】
レイアウト処理では、各矩形領域の位置と、重み付けの値に基づいて、全体的なレイアウトの評価値を求め、評価値の関係（（１）〜（３）等）に従い、各矩形領域を最適な位置に配置していく。
【００９５】
図９は、本例の９×９のグリッドで図７の（ｂ）の矩形領域の配置を、隙間無く中央に寄るように方向付ける重み付けテンプレートの例である。
【００９６】
図１０は、矩形領域の重複がない場合におけるＳＡ法によるレイアウト処理を説明する図である。
【００９７】
図１０の（ａ）は、矩形領域（１）〜（４）をランダムにレイアウト領域に配置した状態を示しており（図７の（ｂ）に相当）、図１０の（ｂ）は、レイアウト処理部によるＳＡ法によってレイアウトされた結果を示している。各矩形同士は隙間無く中央に寄ってレイアウトされている。
【００９８】
（微調整処理：Ｓ１０４６）
グリッド化された各矩形領域の縦横のサイズを元の画像のアスペクト比に合うサイズに戻すことで生じる、矩形領域と矩形領域の隙間を除去する処理（Ｓ１０４６）を行う。
（１）各矩形領域のサイズをグリッドかされる前のアスペクト比を保ったサイズに戻す。
（２）各矩形領域間に隙間が生ずるので、隙間がないようにする。
【００９９】
隙間を詰める処理は、以下のように行われる。
（２−１）レイアウト領域の中心と、各矩形領域の中心の距離を求める。
（２−２）レイアウトの中心に一番近い矩形領域を、その矩形に一番近い矩形領域に向かって辺が接するまで移動する。
（２ー３）次にレイアウトの中心に近い矩形領域を、一番近い矩形に向かって辺が接するまで移動する。
（２−４）移動しようとする矩形領域が他の２つの矩形領域に２辺で接していて移動できない場合、中心位置の一番遠い矩形領域を移動させ、矩形領域間に隙間がないようなレイアウト結果を得る。
【０１００】
図１０の（ｃ）は、図１０の（ｂ）から上記微調整処理を施した結果である。  尚、このレイアウト処理の更に詳細については、特願２００４−３４０８０５を参照されたい。
【０１０１】
＜レンダリング及び不具合情報まとめ処理部１０８：Ｓ１０８＞
（レンダリング及び不具合情報まとめ処理部１０８の構成例）
図１１は、図１に示すレンダリング及び不具合情報まとめ処理部１０８の処理を更に細分化した構成の一例である。本実施形態のレンダリング処理と不具合情報まとめの具体的な一例を視覚的に示したものを図１３に示す。尚、図１１の矩形レイアウト情報１０７は、図１のレイアウト処理部１０４の処理の結果出力された、レイアウト結果１０７のことである。
【０１０２】
以下、レンダリング及び不具合情報まとめ処理部１０８の各部の説明を詳細にする。
【０１０３】
矩形レイアウト情報処理部１１０１は、矩形レイアウト情報即ち、レイアウト処理部１０４のレイアウト結果１０７の情報から、それぞれの矩形にレンダリングするコンテンツデータの情報を抽出する処理を行う。実体データ取得部１１０２は、コンテンツデータとして画像データへのパスなどがあった場合には、その実際の画像データを実体データ格納領域１０９からそれぞれ取得する。実体データによるレンダリング処理部１１０３は、図１３の（ａ）の矩形レイアウト結果１３０１に基づき、レイアウトが決まったそれぞれの矩形（(1)〜(5)）に対して、画像データとテキストデータをレンダリングさせる。レンダリングの結果は、例えば、図１３の（ａ）のレンダリング結果１３０２のようになる。尚、本例では画像は各矩形内に収まる場合を説明しているが、テキストデータと同様に、画像も解像度を画質劣化が目立たない限界の縮小によっても矩形内に納まらなければ、矩形の縮小制限を行なうこともできる。
【０１０４】
実体データが矩形内に収まっているか解析処理部１１０４は、それぞれの矩形内にコンテンツデータが収まっているか解析し、図１３の（ａ）のテキストデータがはみ出すような結果の例１３０３を見付ける。収まっているか否かの判定部１１０５は、実体データが矩形内に収まっているか否かの解析処理部１１０４の解析結果により、収まっていない場合はＮＯの処理へ進む。解析処理部１１０４で全てのコンテンツデータが収まったと判断された場合は、ＹＥＳの処理へ進む。
【０１０５】
限界値解析処理部１１０６では、テキストデータのフォントサイズが縮小できる限界の値に達していないか、あるいは画像の解像度が縮小できる限界の値に達していないかを解析する。限界判定部１１０７は、限界値解析処理部１１０６でもし片方でも縮小できる限界に達していなければ、ＮＯの処理へ進む。もし、限界値解析処理部１１０６において、テキスト及び画像ともに縮小できる限界の値まで達していたら、ＹＥＳの処理へ進む。
【０１０６】
コンテンツサイズ調整処理部１１０８ではコンテンツサイズの縮小処理を行い、再度実体データによるレンダリング処理部１１０３にレンダリング処理を繰り返しさせる。この処理の具体例を図１３の（ｂ）に示す。参照番号１３０４のように、矩形に収まらない場合にはレンダリング結果から、参照番号１３０５のようにテキストデータのフォントサイズを縮小させてレンダリングする。フォントサイズを最小にしても矩形内収まりきらなければ、参照番号１３０６のように、画像を縮小させて収まるように試みる。
【０１０７】
矩形サイズ調整及び矩形レイアウト情報生成処理部１１０９は、図１３の（ｃ）の参照番号１３０７に示すように、コンテンツサイズ調整処理部１１０８で画像及びテキストの両方とも縮小限界の値でレンダリングしても矩形内に収まりきらない場合の処理である。テキストデータの残りの文字数などから矩形のサイズがどの位あれば矩形内にコンテンツを収めることができるかを、参照番号１３０８のように（下部の点線の枠部分のように）算出する。そして、参照番号１３０９に示すように、算出結果の矩形サイズを参照番号１３１０に示すように、矩形及びコンテンツデータ情報．xmlの中の参照番号１３１１で示す部分に設定する。すなわち、＜limitwidth＞及び＜limitheight＞に縮小限界値として付加し、この限界値を有効にするフラグとして＜limit＞のswitch属性をＯＮにすることで、図１１の矩形サイズ制限付き矩形情報１１１として出力する。この情報１１１は、図１のレイアウト処理部１０４へ渡され、矩形の再レイアウト処理が行われる。
【０１０８】
従って、図１３の（ａ）の参照番号１３０３のようにコンテンツが矩形からはみ出した矩形に対しては、コンテンツが収まりきる矩形サイズが確保されてレイアウトがされ、そのレイアウトされた矩形に対して再度レンダリング処理をかけることになる。
【０１０９】
アプリケーションデータ生成処理１１１０は、最終的なレンダリング結果、即ち最終的なレイアウト結果１０７からＰＤＦなどアプリケーションデータ１１２に変換して出力する。
【０１１０】
（レンダリング及び不具合情報まとめ処理Ｓ１０８の処理例）
図３のステップＳ１０８のレンダリング＆不具合情報まとめ処理を、図１２のフローチャートを参照して詳細に説明する。
【０１１１】
ステップＳ１１０１：矩形レイアウト情報処理
図３におけるステップＳ１０４のレイアウト処理の出力であるレイアウト結果１０７の情報から、それぞれの矩形にレンダリングするコンテンツデータの情報を抽出する処理を行う。
【０１１２】
ステップＳ１１０２：実体データ取得処理
コンテンツデータとして画像データへのパスなどがあった場合には、その実際の画像データを、実体データ格納領域１０９からそれぞれ取得する処理を行う。
【０１１３】
ステップＳ１１０３：実体データによるレンダリング処理
レイアウト結果１０７のそれぞれの矩形に対して、対応する画像データとテキストデータをレンダリングする処理を行う。レンダリング処理では、まず画像を、縦サイズが横サイズより大きければ矩形の縦サイズに合うようにアスペクト比を保ったまま縮小させ、もし横サイズが縦サイズよりも大きければ矩形の横サイズに合うようにアスペクト比を保ったまま縮小させる。このように、矩形に画像データを合わせ込む処理を行う。次に、矩形の中で、画像データが埋まってない残りの領域に対応するテキストデータを埋め込む処理を行う。
【０１１４】
ステップＳ１１０４：実体データが矩形内に収まっているか解析処理
それぞれの矩形内にコンテンツデータが収まっているか解析し、テキストデータが矩形からはみ出すような結果になっているか否かを解析する処理を行う。
【０１１５】
ステップＳ１１０５：収まっているか否かの判定処理
実体データが矩形内に収まっているか否かの、ステップＳ１１０４の解析結果により、収まっていない場合はＮＯの方の処理へ分岐し、全てのコンテンツデータが収まったと判断された場合はＹＥＳの方の処理へ分岐する。
【０１１６】
ステップＳ１１０６：限界値解析処理
テキストデータのフォントサイズが縮小できる限界の値に達していないか、あるいは画像データの縮小できる限界の値に達していないかの解析処理を行う。
【０１１７】
ステップＳ１１０７：限界判定処理
ステップＳ１１０６でもし片方でも限界に達していなければ、ＮＯの方の処理へ分岐する。もし、ステップＳ１１０６で、テキスト及び画像ともに縮小できる限界の値まで達していたらＹＥＳの方へ分岐する。
【０１１８】
ステップＳ１１０８：コンテンツサイズ調整処理
コンテンツの縮小処理を行い、再度実体データにより、ステップＳ１１０３のレンダリング処理でレンダリング処理を繰り返す処理を行う。
【０１１９】
ステップＳ１１０９：矩形サイズ調整及び矩形レイアウト情報生成処理
画像とテキストの両方を縮小できる限界値でレンダリングしてもコンテンツが収まりきらないときは、テキストデータの残りの文字数などから、矩形サイズがどの位あれば矩形内に収めることができるかの演算を行う。演算結果の矩形サイズを、矩形及びコンテンツデータ情報．xmlに縮小限界値として付加し、この限界値を有効にするフラグとしてswitch属性をＯＮにする。図２に示す矩形サイズ制限付き矩形情報１１１としてステップＳ１０４のレイアウト処理へそのデータを渡し、矩形の再レイアウト処理を行わせる。
【０１２０】
ステップＳ１１１０：アプリケーションデータ生成処理
最終的なレンダリング結果、即ち図２のファイル７にある最終的なレイアウト結果１０７からＰＤＦなどアプリケーションデータ１１２に変換し、レンダリング＆不具合情報まとめ処理部の処理を終了する。
【０１２１】
＜最終的なレイアウト結果の具体例＞
図１４は、本実施形態の具体例で本体の矩形領域のレイアウトとレンダリングとが完了した場合の、最終的な結果の例を示す図である。
【０１２２】
図１３の（ａ）の１３０２において、矩形領域(2),(3),(5)でテキストが収まらないので、まずテキストの縮小が行われて、矩形領域(3),(5)は収まる。収まりきれない矩形領域(2)で画像の縮小が行われ、更に矩形領域の縮小限界値が設定される。
【０１２３】
その矩形領域の縮小限界値が設定されると、矩形領域(2)はレイアウト結果１３０１ではレイアウト領域に収まらない。図１４のレイアウト結果はその一例であり、矩形領域の縮小限界値が設定された矩形領域(2)と矩形領域(5)の位置が入れ替わり、矩形領域(3),(4)の位置が移動して、レイアウト領域に収まり各矩形内にコンテンツが収まるようになる。
【０１２４】
以上詳細に説明したように、本実施形態によれば、レイアウト処理とレンダリング処理との組み合わせにより、レンダリング処理でコンテンツをレンダリングする時に生じた不具合を訂正できる。すなわち、不具合をレイアウト処理の必要パラメータ（例えば、矩形のサイズや、テキストのサイズや画像のサイズ）に反映させて再度レイアウト処理行う。これにより、実際のコンテンツデータを意識した、より最適なレイアウトを決定するレイアウト及びレンダリング結果を得ることが可能となる。
【０１２５】
尚、本発明は、複数の機器(例えばコンピュータ、インタフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなるレイアウト装置に適用してもよい。
【０１２６】
また、本発明の目的は、前述した実施形態で示したフローチャートの手順を実現するプログラムコードを記憶した記憶媒体をシステムあるいは装置に挿入する。そして、システムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても達成される。
【０１２７】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１２８】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１２９】
また、コンピュータが読み出したプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【０１３０】
【図１Ａ】本実施形態における処理の全体構成の概念を示すブロック図である。
【図１Ｂ】本実施形態で使用される矩形情報の一例を示す図である。
【図２】本実施形態のレイアウト装置のハードウエア構成例を示す図である。
【図３】本実施形態のレイアウト手順例を示すフローチャートである。
【図４Ａ】図１のレイアウト処理部１０４の構成例を示すブロック図である。
【図４Ｂ】図３のレイアウト処理（ステップＳ１０４）の手順例を示すフローチャートである。
【図５】矩形領域をランダムに配置する処理を視覚的に示した図である。
【図６】図４の重複除去処理（ステップＳ１０４４）の処理手順を示すフローチャートである。
【図７】複数の矩形領域の配置とその重複の除去を説明する図である。
【図８】レイアウトの方向性を示す重み付けテンプレートとシミュレーティド・アニーリング法とを組み合わせて、どのようにレイアウト処理が行われるかを概略的に示す図である。
【図９】本実施形態で使用したレイアウトの方向性を示す重み付けテンプレートの具体例を示した図である。
【図１０】レイアウト処理１０４の例を説明するための図である。
【図１１】図１のレンダリング＆不具合まとめ処理部１０８の構成例を示すブロック図である。
【図１２】図３のレンダリング＆不具合まとめ処理（Ｓ１０８）の手順例を示すフローチャートである。
【図１３】レンダリング＆不具合まとめ処理の例を示す図である。
【図１４】本実施形態によるレイアウト及びレンダリング結果の例を示す図である。
【図１Ａ】
0004827498.tif 000002
【図１Ｂ】
0004827498.tif 000003
【図２】
0004827498.tif 000004
【図３】
0004827498.tif 000005
【図４Ａ】
0004827498.tif 000006
【図４Ｂ】
0004827498.tif 000007
【図５】
0004827498.tif 000008
【図６】
0004827498.tif 000009
【図７】
0004827498.tif 000010
【図８】
0004827498.tif 000011
【図９】
0004827498.tif 000012
【図１０】
0004827498.tif 000013
【図１１】
0004827498.tif 000014
【図１２】
0004827498.tif 000015
【図１３】
0004827498.tif 000016
【図１４】
0004827498.tif 000017