(57)【要約】【課題】データを流し込むためのデータ領域の領域サイズを各データ領域に設定された優先度に応じて決定可能とし、ユーザの要求に良好に適応可能とする。【解決手段】複数のデータ領域を有するテンプレートのレイアウトを、該複数のデータ領域の各々に提示されるデータに応じて動的に変更するレイアウト処理方法において、リンク（2904）で関連付けられたデータ領域の集合（2901〜2903）が抽出され、抽出されたデータ領域の集合に含まれる複数のデータ領域について、各データ領域に提示すべきコンテンツデータが要求するコンテンツサイズ（2905〜2906）と、各データ領域に設定された優先度に基づいて各データ領域の領域サイズが決定される（2908〜2910）。こうして決定された複数のデータ領域の領域サイズに応じてデータ（コンテンツ）がレイアウトされ、出力される。【選択図】  図２９
2006048532.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ領域を有するテンプレートのレイアウトを、該複数のデータ領域の各々に流し込まれるコンテンツデータに応じて動的に変更するレイアウト処理方法であって、
リンクで関連付けられたデータ領域の集合を抽出する抽出工程と、
前記抽出工程で抽出されたデータ領域の集合に含まれる複数のデータ領域について、各データ領域に流し込まれるコンテンツデータが要求するコンテンツサイズと、各データ領域に設定された優先度に基づく重み付けに応じて各データ領域の領域サイズを決定する決定工程と、
前記決定工程において決定された前記複数のデータ領域の領域サイズに応じて前記コンテンツデータをレイアウトして出力する出力工程とを備えることを特徴とするレイアウト処理方法。
【請求項２】
前記決定工程は、計算されたデータ領域の領域サイズと、該データ領域に流し込まれるコンテンツデータが要求するコンテンツサイズとの差が、優先度の高いデータ領域ほど小さくなるように前記複数のデータ領域の各々の領域サイズを決定することを特徴とする請求項１に記載のレイアウト処理方法。
【請求項３】
前記決定工程において、算出された前記複数のデータ領域の各々の領域サイズと流し込まれる前記コンテンツデータが要求するコンテンツサイズとの差の比は、該複数のデータ領域の各々に設定された優先度の逆数の比となることを特徴とする請求項２に記載のレイアウト処理方法。
【請求項４】
各データ領域に優先度を設定させるためのインターフェースを提示する設定工程を更に備えることを特徴とする請求項１乃至３のいずれかに記載のレイアウト処理方法。
【請求項５】
指定されたデータ領域と、該指定されたデータ領域とリンクで関連付けられたデータ領域に設定された優先度を表示する表示工程を更に備えることを特徴とする請求項１乃至４のいずれかに記載のレイアウト処理方法。
【請求項６】
指定されたデータ領域に設定された優先度を表示する表示工程を更に備えることを特徴とする請求項１乃至４のいずれかに記載のレイアウト処理方法。
【請求項７】
前記決定工程は、  前記データ領域の集合に含まれる複数のデータ領域について、各データ領域に流し込まれるコンテンツデータが要求する第１方向コンテンツサイズと、各データ領域に設定された優先度に基づいて各データ領域の該第１方向領域サイズを算出する第１算出工程と、
前記コンテンツデータが要求する第２方向コンテンツサイズと、各データ領域に設定された前記優先度に基づいて各データ領域の該第２方向領域サイズを算出する第２算出工程と、
前記第１算出工程で算出された前記データ領域の該第１方向領域サイズおよび前記第２算出工程で算出された前記データ領域の該第２方向領域サイズに従って、前記データ領域の領域サイズを決定することを特徴とする請求項１に記載のレイアウト処理方法。
【請求項８】
前記決定工程は、
前記データ領域において、縦横比が設定されて場合、前記第１算出工程で算出された前記第１方向領域サイズおよび前記縦横比から前記第２方向領域サイズを決定することを特徴とする請求項７に記載のレイアウト処理方法。
【請求項９】
前記決定工程は、
前記データ領域において縦横比が設定されており、前記第１方向が垂直方向であった場合、前記データ領域における垂直方向の領域サイズの算出に応じて、前記データ領域における水平方向の領域サイズを算出する垂直・水平方向領域サイズ算出工程と、
前記第１方向が水平方向であった場合、前記データ領域における水平方向の領域サイズの算出に応じて、前記データ領域における垂直方向の領域サイズを算出する水平・垂直方向領域サイズ算出工程と、
前記垂直・水平方向算出工程または前記水平・垂直方向算出工程によって算出された前記データ領域の領域サイズのうち、最適な領域サイズをレイアウト結果として設定するレイアウト設定工程を有することを特徴とする請求項８に記載のレイアウト処理方法。
【請求項１０】
複数のデータ領域を有するテンプレートのレイアウトを、該複数のデータ領域の各々に流し込まれるコンテンツデータに応じて動的に変更するレイアウト処理を行う情報処理装置であって、
リンクで関連付けられたデータ領域の集合を抽出する抽出手段と、
前記抽出手段で抽出されたデータ領域の集合に含まれる複数のデータ領域について、各データ領域に流し込まれるコンテンツデータが要求するコンテンツサイズと、各データ領域に設定された優先度に基づく重み付けに応じて各データ領域の領域サイズを決定する決定手段と、
前記決定手段において決定された前記複数のデータ領域の領域サイズに応じて前記コンテンツデータをレイアウトして出力する出力手段とを備えることを特徴とする情報処理装置。
【請求項１１】
前記決定手段は、計算されたデータ領域の領域サイズと、該データ領域に流し込まれるコンテンツデータが要求するコンテンツサイズとの差が、優先度の高いデータ領域ほど小さくなるように前記複数のデータ領域の各々の領域サイズを決定することを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記決定手段において、算出された前記複数のデータ領域の各々の領域サイズと流し込まれる前記コンテンツデータが要求するコンテンツサイズとの差の比は、該複数のデータ領域の各々に設定された優先度の逆数の比となることを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
各データ領域に優先度を設定させるためのインターフェースを提示する設定手段を更に備えることを特徴とする請求項１０乃至１２のいずれかに記載の情報処理装置。
【請求項１４】
指定されたデータ領域と、該指定されたデータ領域とリンクで関連付けられたデータ領域に設定された優先度を表示する表示手段を更に備えることを特徴とする請求項１０乃至１３のいずれかに記載の情報処理装置。
【請求項１５】
指定されたデータ領域に設定された優先度を表示する表示手段を更に備えることを特徴とする請求項１０乃至１３のいずれかに記載の情報処理装置。
【請求項１６】
前記決定手段は、  前記データ領域の集合に含まれる複数のデータ領域について、各データ領域に流し込まれるコンテンツデータが要求する第１方向コンテンツサイズと、各データ領域に設定された優先度に基づいて各データ領域の該第１方向領域サイズを算出する第１算出手段と、
前記コンテンツデータが要求する第２方向コンテンツサイズと、各データ領域に設定された前記優先度に基づいて各データ領域の該第２方向領域サイズを算出する第２算出手段と、
前記第１算出手段で算出された前記データ領域の該第１方向領域サイズおよび前記第２算出手段で算出された前記データ領域の該第２方向領域サイズに従って、前記データ領域の領域サイズを決定することを特徴とする請求項１０に記載の情報処理装置。
【請求項１７】
前記決定手段は、
前記データ領域において、縦横比が設定されて場合、前記第１算出手段で算出された前記第１方向領域サイズおよび前記縦横比から前記第２方向領域サイズを決定することを特徴とする請求項１６に記載の情報処理装置。
【請求項１８】
前記決定手段は、
前記データ領域において縦横比が設定されており、前記第１方向が垂直方向であった場合、前記データ領域における垂直方向の領域サイズの算出に応じて、前記データ領域における水平方向の領域サイズを算出する垂直・水平方向領域サイズ算出手段と、
前記第１方向が水平方向であった場合、前記データ領域における水平方向の領域サイズの算出に応じて、前記データ領域における垂直方向の領域サイズを算出する水平・垂直方向領域サイズ算出手段と、
前記垂直・水平方向算出手段または前記水平・垂直方向算出手段によって算出された前記データ領域の領域サイズのうち、最適な領域サイズをレイアウト結果として設定するレイアウト設定手段を有することを特徴とする請求項１７に記載の情報処理装置。
【請求項１９】
複数のデータ領域を有するテンプレートのレイアウトを、該複数のデータ領域の各々に流し込まれるコンテンツデータに応じて動的に変更するレイアウト処理をコンピュータに実行させるためのコンピュータプログラムであって、該レイアウト処理が、
リンクで関連付けられたデータ領域の集合を抽出する抽出工程と、
前記抽出工程で抽出されたデータ領域の集合に含まれる複数のデータ領域について、各データ領域に流し込まれるコンテンツデータが要求するコンテンツサイズと、各データ領域に設定された優先度に基づく重み付けに応じて各データ領域の領域サイズを決定する決定工程と、
前記決定工程において決定された前記複数のデータ領域の領域サイズに応じて前記コンテンツデータをレイアウトして出力する出力工程とを備えることを特徴とするコンピュータプログラム。
【請求項２０】
前記決定工程は、計算されたデータ領域の領域サイズと、該データ領域に流し込まれるコンテンツデータが要求するコンテンツサイズとの差が、優先度の高いデータ領域ほど小さくなるように前記複数のデータ領域の各々の領域サイズを決定することを特徴とする請求項１９に記載のコンピュータプログラム。
【請求項２１】
前記決定工程において、算出された前記複数のデータ領域の各々の領域サイズと流し込まれる前記コンテンツデータが要求するコンテンツサイズとの差の比は、該複数のデータ領域の各々に設定された優先度の逆数の比となることを特徴とする請求項２０に記載のコンピュータプログラム。
【請求項２２】
前記レイアウト処理が、各データ領域に優先度を設定させるためのインターフェースを提示する設定工程を更に備えることを特徴とする請求項１９乃至２１のいずれかに記載のコンピュータプログラム。
【請求項２３】
前記レイアウト処理が、指定されたデータ領域と、該指定されたデータ領域とリンクで関連付けられたデータ領域に設定された優先度を表示する表示工程を更に備えることを特徴とする請求項１９乃至２２のいずれかに記載のコンピュータプログラム。
【請求項２４】
前記レイアウト処理が、指定されたデータ領域に設定された優先度を表示する表示工程を更に備えることを特徴とする請求項１９乃至２２のいずれかに記載のコンピュータプログラム。
【請求項２５】
前記決定工程は、  前記データ領域の集合に含まれる複数のデータ領域について、各データ領域に流し込まれるコンテンツデータが要求する第１方向コンテンツサイズと、各データ領域に設定された優先度に基づいて各データ領域の該第１方向領域サイズを算出する第１算出工程と、
前記コンテンツデータが要求する第２方向コンテンツサイズと、各データ領域に設定された前記優先度に基づいて各データ領域の該第２方向領域サイズを算出する第２算出工程と、
前記第１算出工程で算出された前記データ領域の該第１方向領域サイズおよび前記第２算出工程で算出された前記データ領域の該第２方向領域サイズに従って、前記データ領域の領域サイズを決定することを特徴とする請求項１９に記載のコンピュータプログラム。
【請求項２６】
前記決定工程は、
前記データ領域において、縦横比が設定されて場合、前記第１算出工程で算出された前記第１方向領域サイズおよび前記縦横比から前記第２方向領域サイズを決定することを特徴とする請求項２５に記載のコンピュータプログラム。
【請求項２７】
前記決定工程は、
前記データ領域において縦横比が設定されており、前記第１方向が垂直方向であった場合、前記データ領域における垂直方向の領域サイズの算出に応じて、前記データ領域における水平方向の領域サイズを算出する垂直・水平方向領域サイズ算出工程と、
前記第１方向が水平方向であった場合、前記データ領域における水平方向の領域サイズの算出に応じて、前記データ領域における垂直方向の領域サイズを算出する水平・垂直方向領域サイズ算出工程と、
前記垂直・水平方向算出工程または前記水平・垂直方向算出工程によって算出された前記データ領域の領域サイズのうち、最適な領域サイズをレイアウト結果として設定するレイアウト設定工程を有することを特徴とする請求項２６に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テキストやイメージで構成されたドキュメントの生成、編集、そして印刷のための技術に関するものであり、更に詳しくは、バリアブルデータドキュメントの生成、編集、そして印刷に好適なものである。
【背景技術】
【０００２】
近年、商品の多品種化で商品ライフが短くなっていること、インターネット利用の普及による消費者のカスタマイズサービス指向などの要因からＣＲＭ（Customer Relationship Management）、One-to-Oneマーケティングの必要性が注目されている。これらの手法は、顧客満足度を高め、顧客の開拓や囲い込みを目指すという目的に対して非常に効果的なものである。
【０００３】
One-to-Oneマーケティングはデータベース・マーケティングの一種で、顧客の年齢、性別、趣味、嗜好、購買履歴等の個人属性情報をデータベース化し、その内容を分析、顧客のニーズに合った提案を行うものであり、その代表的な具体的手法としてバリアブルプリントが挙げられる。特に、最近ではＤＴＰ（デスクトップパブリッシング）技術の進展とデジタル印刷装置の普及に伴って、文書を顧客毎にカスタマイズして出力するバリアブルプリントシステムが開発されている。このようなバリアブルプリントシステムでは、顧客毎に異なる量のコンテンツが最適にレイアウトされたカスタマイズ文書を作成することが求められる。
【０００４】
一般に、バリアブルプリントシステムにおいてそのようなカスタマイズ文書を作成する際には、ドキュメント上にコンテナをレイアウトする。コンテナとはコンテンツ（描画内容）を描画するための部分領域であり、フィールド領域と呼ばれることもある。すなわち、ドキュメント上にこのようなコンテナをレイアウトし、データベースとレイアウトを関連付ける（データベースの各コンテンツと各コンテナとを関連付ける）といった作業により、カスタマイズ文書（ドキュメント）を作成する。本明細書ではこのようなドキュメントをバリアブルデータドキュメントという。
【０００５】
このようなバリアブルプリントシステムにおいて、レイアウトされた各コンテナには顧客によって異なるコンテンツを流し込むことが可能である。従って、コンテンツに流し込まれるデータのサイズは可変であり、これに対してコンテナのサイズが固定であると次のような課題が生じる。例えば、コンテナのサイズよりも大きなサイズのテキストデータが流し込まれた場合には全てのテキストをそのコンテナ内に表示出来なくなってしまう。あるいは、コンテナのサイズよりも大きなサイズのイメージデータが流し込まれた場合には、そのイメージの一部が欠落してしまう。このような問題をオーバーフローと呼ぶ。
【０００６】
なお、コンテンツがイメージデータの場合には、当該イメージを縮小してコンテナ内に描画することも考えられるが、イメージが極端に小さくなってしまうといった弊害が生じる可能性がある。また、固定サイズのコンテナ内に入りきらないテキストデータが挿入された場合に、テキストのフォントサイズを縮小し、当該コンテナ内に全てのテキストを表示可能にする技術も提案されている。しかしながら、このようにフォントサイズを調節する場合、フォントサイズが小さくなりすぎて、ドキュメント全体のバランスが崩れたり、読みにくくなるという課題が生じる。
【０００７】
このような課題を解決するための自動レイアウトの技術として、あるコンテナのサイズが大きくなった場合に、隣接したコンテナとの間隔を保つべく当該隣接するコンテナのサイズを小さくする技術が特許文献１の「レイアウトデザイン装置」に開示されている。
【特許文献１】特開平７−１２９６５８号公報  （００４９、図８）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、技術背景で記述した自動レイアウトシステムでは、データベースのデータのサイズによって自動的にレイアウトの計算を行った際、どのようにサイズを変化させるかをユーザが設定することはできなかった。例えば、２つのサイズが可変のコンテナＡ・Ｂがあり、双方にデータベースからデータが挿入されたとする。もし、Ａ・Ｂに挿入されるデータが双方とも大きくコンテナ内に収まらなかった際は、Ａ・Ｂに挿入されるデータのサイズを平等に小さくしてコンテナ内に収まるように計算していた。
【０００９】
しかし、上述したＯｎｅ−ｔｏ−Ｏｎｅマーケティングでは顧客のニーズに合わせてカタログやパンフレットを作成するため、顧客にアピールしたい商品のコンテンツデータが流し込まれるコンテナは、他のコンテナよりも優先して大きなコンテナを作成したいにもかかわらず、上記自動レイアウトシステムではユーザの意図を反映したレイアウト作成をすることができなかった。
【００１０】
本発明は上記の課題に鑑みてなされたものであり、データを流し込むためのデータ領域のサイズを各データ領域に設定された優先度に基づく重み付けに応じて決定可能とし、ユーザの要求に良好に適応することのできるレイアウト処理を実現することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決するための本発明によるレイアウト処理方法は、複数のデータ領域を有するテンプレートのレイアウトを、該複数のデータ領域の各々に流し込まれるコンテンツデータに応じて動的に変更するレイアウト処理方法であって、リンクで関連付けられたデータ領域の集合を抽出する抽出工程と、前記抽出工程で抽出されたデータ領域の集合に含まれる複数のデータ領域について、各データ領域に流し込まれるコンテンツデータが要求するコンテンツサイズと、各データ領域に設定された優先度に基づく重み付けに応じて各データ領域の領域サイズを決定する決定工程と、前記決定工程において決定された前記複数のデータ領域の領域サイズに応じて前記コンテンツデータをレイアウトして出力する出力工程とを備える。
【００１２】
また、本発明によれば、上記レイアウト処理方法を実行する情報処理装置が提供される。
【発明の効果】
【００１３】
本発明によれば、データを流し込むためのデータ領域のサイズが、各データ領域に設定された優先度に応じて決定されるので、ユーザの要求に良好に適応したレイアウト処理を実現できる。
【発明を実施するための最良の形態】
【００１４】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【００１５】
＜システム構成＞
まず、図１Ａおよび図１Ｂを参照して、本実施形態のバリアブルプリントシステムの構成を説明する。図１Ａはバリアブルデータドキュメントを印刷するためのバリアブルプリントシステム１００の構成例を示すブロック図である。また、図１Ｂは図１Ａに示されたホストコンピュータ１０１の構成を更に詳細に示すブロック図である。本実施形態で説明されるバリアブルプリント処理は、レイアウト調整装置であるホストコンピュータ１０１（汎用コンピュータモジュールで構成される）によって実行される。システム１００上で実施可能となるレイアウト編集アプリケーションプログラム１２１（本発明のレイアウト調整プログラム）はホストコンピュータ１０１において、そのソフトウェアの全体、あるいは一部分が実行される。特にレイアウト編集のための処理やバリアブルデータドキュメントの印刷のための処理はホストコンピュータ１０１で実行されるソフトウェアにより実現される。
【００１６】
レイアウト編集アプリケーションプログラム１２１はコンピュータの可読媒体に格納され、そのコンピュータの可読媒体からホストコンピュータ１０１のメモリ１３６にロードされ、実行される。そのようなソフトウェアやコンピュータプログラムを格納したコンピュータの可読媒体はコンピュータプログラム製品である。コンピュータにおいてそのコンピュータプログラム製品を使用することにより、ドキュメントのレイアウト編集やバリアブルプリントに好適な装置が提供されることになる。
【００１７】
図１Ｂに示されるように、ホストコンピュータ１０１には、入出力インターフェース１４３を介してキーボード１３２や、マウス１３３のようなポインティングデバイス等が入力装置として接続される。また、出力装置としてのディスプレイ装置１４４がビデオインターフェース１３７を介して接続される。更に、ローカルプリンタ１４５等を入出力インターフェース１３８を介して接続することも可能である。また、入出力インタフェース１３８はコンピュータモジュール１０１をネットワーク１０７へ接続する機能も有する。これにより、ネットワークを介してシステム１００内の他のコンピュータ装置にホストコンピュータ１０１を接続することができる。ネットワーク１０７の典型的な例としては、ローカルエリアネットワーク（ＬＡＮ）、あるいはワイドエリアネットワーク（ＷＡＮ）が挙げられる。
【００１８】
また、図１Ｂに示すように、ホストコンピュータ１０１は少なくとも１つのプロセッサユニット１３５、例えば半導体のランダムアクセスメモリ（ＲＡＭ）やリードオンリーメモリ（ＲＯＭ）から構成されるメモリユニット１３６を含んでいる。格納デバイス１３９は、プログラム等を格納するコンピュータ可読媒体との間でデータのやり取りが可能なハードディスクドライブ１４０やフロッピー（登録商標）ディスクドライブ１４１を含む。なお、図１Ｂには示されていないが、磁気テープドライブ等も格納デバイス１３９として使用可能である。ＣＤ−ＲＯＭドライブ１４２は不揮発性のデータソースとして提供される（もちろん、ＣＤ−ＲＯＭによってコンピュータプログラムを提供してもよい）。
【００１９】
ホストコンピュータ１０１は、ＧＮＵ／ＬＩＮＵＸやマイクロソフトウインドウズ（登録商標）のようなオペレーティングシステムや、典型的にはオペレーティングシステムに従う形で、あるいは関連のある技術で知られているもので形成されたコンピュータシステムの常套的なオペレーションモードによる方法によって、相互接続バス１３４を介して通信を行うコンピュータモジュール１０１のコンポーネント１３５から１４３を利用する。すなわち、上述した１３５〜１４３で示される各構成は、バス１３４を介して通信可能に接続されており、ホストコンピュータ１０１にインストールされたオペレーティングシステムにより利用される。
【００２０】
なお、図１Ｂに示したホストコンピュータ１０１の例としては、ＩＢＭ互換ＰＣやＳＵＮ のSparcstation、あるいはそれらを含んだコンピュータシステムが考えられる。
【００２１】
＜レイアウト編集アプリケーションの概要＞
本実施形態では、レイアウトアプリケーションプログラム１２１はハードディスクドライブ１４０に常駐し、プロセッサ１３５により実行や読み込みがコントロールされるものとする。レイアウト編集アプリケーション１２１のプログラムの媒介記憶装置とネットワーク１０７からフェッチされるデータはハードディスクドライブ１４０に呼応して半導体メモリ１３６を使用する。
【００２２】
一つの例では、レイアウト編集アプリケーション１２１のエンコードされたプログラムは、ＣＤ−ＲＯＭやフロッピー（登録商標）ディスク上に格納され、対応するドライブ１４２や１４１を通じて読み込まれ、ハードディスクドライブ１４０にインストールされる。あるいは、別の例として、レイアウト編集アプリケーションプログラム１２１はネットワーク１０７からホストコンピュータ１０１内に読み込まれて、ハードディスクドライＢ１４０にインストールされてもよい。さらにソフトウェアは、磁気テープまたはＲＯＭまたは集積回路、光磁気ディスク、または、ホストコンピュータ１０１とその他のデバイス間における赤外線等の無線通信、ＰＣＭＣＩＡカードのようなコンピュータ可読カード、そしてＥメール通信やＷＥＢサイト上の記録情報を持つインターネットやイントラネットを含む他の適当なコンピュータからホストコンピュータ１０１内にロードされてもよい。これらは、コンピュータ可読媒体の例であり、他のコンピュータ可読媒体が使用されてもよいことは明らかである。
【００２３】
図１Ａにおいて、本発明のレイアウト編集アプリケーション１２１はコンピュータにバリアブルプリント（バリアブルデータプリント（ＶＤＰ）ともいう）を行わせるものであり、２つのソフトウェアコンポーネント、すなわちレイアウトエンジン１０５とユーザインターフェース１０３、を含んでいる。レイアウトエンジン１０５は、部分領域であるコンテナ（矩形の範囲）に与えられたサイズや位置の制限にしたがって、データベース１１９に格納されているバリアブルデータから１レコードずつ読み込み、読み込んだデータとコンテナの制限とから、読み込んだデータが流し込まれるコンテナの大きさや位置等を計算するソフトウェアコンポーネントである。また、本実施例では、レイアウトエンジン１０５は、更に、コンテナに割り当てられたデータを描画し、バリアブルデータドキュメントのイメージを生成する処理も行う。ただし、本発明はこれに限るものではなく、レイアウトエンジン１０５は各部分領域（コンテナ）のサイズと位置を決定するアプリケーションとして動作し、図示省略したプリンタドライバに描画情報を出力することで、プリンタドライバがバリアブルデータドキュメントのイメージ描画処理を行い、印刷データを生成してもよい。ユーザインタフェース１０３は、ユーザによるコンテナのレイアウトや属性設定を可能とし、ユーザにドキュメントテンプレートを作成させる。また、ユーザインターフェース１０３はドキュメントテンプレート内の各コンテナとデータソースとを関連付けるメカニズムを提供する。ユーザインタフェース１０３とレイアウトエンジン１０５はコミュニケーションチャネル１２３を介して通信する。
【００２４】
図１Ｃは本実施形態によるバリアブルデータプリントの概略を説明する図である。レイアウト編集アプリケーション１２１のユーザインターフェースモジュール１０３（以下、ユーザインタフェース１０３と記載する）により、ユーザからの操作指示に従いページ上に複数のコンテナ１８１〜１８３を配置し、各コンテナに位置やサイズに関する制約条件を付与することによりドキュメントテンプレート１８０が生成される。また、ユーザインターフェース１０３はドキュメントテンプレート１８０とデータソース１９０との関連付け、更に各コンテナとデータソース１９０内の各データフィールドとの関連付けを行う。各コンテナとデータソース１９０内の各データフィールドとの関連付けを示す関連付け情報は、ドキュメントテンプレート内に記述され、該ドキュメントテンプレートは、ＨＤＤ１４０に格納される。また、データソース１９０は、レコード単位で項目データが記載されているファイルであり、ＨＤＤ１４０に格納されている。レイアウトエンジン１０５は、ユーザからの印刷指示もしくはプレビュー指示に応じて、ドキュメントテンプレートの各コンテナ１８１〜１８２に、関連付け情報で関連付けられたデータをデータソース１９０から読み込み、レコード単位で流し込み（例えば、データレコード１のデータフィールドＡ〜Ｃをコンテナ１８１〜１８３へ流し込む）、流し込まれたデータに応じて各コンテナのサイズ等を調整（レイアウト調整）する。プレビュー指示の場合は、レイアウト調整されたドキュメントイメージを生成し、ビデオディスプレイ１４４の画面上にプレビューとして表示するべく出力される。また印刷指示の場合は、レイアウトエンジン１０５もしくはプリンタドライバを用いて生成したドキュメントイメージを印刷データとしてプリントサーバ１０９へ出力する。データレコード１，２，３…を順次処理することにより、バリアブルデータプリントが実現されることになる。
【００２５】
ドキュメント生成のためのデータソース（１９０）は、例えば、データベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバ１１７上の一般的なデータベース１１９であってもよい。この場合、ホストコンピュータ１０１はネットワーク１０７を介してデータベースサーバ１１７と通信し、データソースを取得できる。また、レイアウト編集アプリケーション１２１によって生成された、バリアブルデータプリントのためのドキュメントテンプレート（１８０）は、ホストコンピュータ１０１或いは他のコンピュータで構成されるファイルサーバ１１５に保存される。図１Ｃで上述したように、レイアウト編集アプリケーション１２１のレイアウトエンジン１０５は、データとマージされたドキュメントテンプレートによって構成されたバリアブルデータドキュメントを生成する。これらのドキュメントは、ホストコンピュータ１０１のローカルファイルシステムに保存されるか、ファイルサーバ１１５に保存されるか、あるいはプリンタ１１３に送信されて印刷される。プリントサーバ１０９はネットワークと直接にはつながっていないプリンタにネットワーク機能を提供するためのコンピュータである。プリントサーバ１０９とプリンタ１１３は一般的な通信チャネル１１１を介して接続される。
【００２６】
＜他のシステム構成例＞
図２は、図１Ａと類似のブロック図であるが、エンジンサーバ２２７が追加されている。エンジンサーバ２２７に格納されているレイアウトエンジン２２５は、レイアウトエンジン１０５の分離バージョンである。エンジンサーバ２２７には一般的なコンピュータが用いられる。レイアウトエンジン２２５は、印刷やその他の目的に応じてバリアブルデータドキュメントを生成するために、ファイルサーバ１１５に保存されたドキュメントテンプレートとデータベース１１９に保存されたデータとを結合する。そのようなオペレーションはユーザインタフェース１０３を介して要求される。
【００２７】
＜レイアウト編集アプリケーションの説明＞
以下、レイアウト編集アプリケーション１２１について説明する。
【００２８】
［メインウインドウ］
ユーザインターフェース１０３は、操作時に図３に示されるようなアプリケーションウインドウ３０１によって形成されたユーザインターフェース画面をビデオディスプレイ１４４に表示させる。このウインドウ３０１は、メニューバー３０２、ツールバー３０３、ワークエリア３０６とオプションのパレット３１１を有する。メニューバー３０２とツールバー３０３は非表示にすることや、スクリーン上の色々な場所に移動することが可能である。また、ワークエリア３０６はマウス１３３の操作によってその場所を移動させることが可能である。また、パレット３１１はオプションであり、カーソル／ポインタデバイス３１３はマウス１３３が指し示す位置を表す。
【００２９】
メニューバー３０２は、周知の技術として知られているように、メニューオプションの階層の下に拡張される多くのメニューアイテム３０４を持つ。
【００３０】
ツールバー３０３は、アプリケーションの特別なモードによって非表示状態にする、または表示状態にすることが可能な多くのツールボタンとウィジット３０５を持つ。
【００３１】
ルーラー３０８はオプションであり、ワークエリア内のポインタ、ページ、ライン、マージンガイド、コンテナまたはオブジェクトの位置を示すために使われる。
【００３２】
パレット３１１はバリアブルデータライブラリのような追加機能にアクセスするために使われる。パレット３１１は移動、リサイズ、クローズをするためのウインドウコントロール３１２を持つ。パレット３１１はオプションで、ワークエリアの前面に表示される、あるいはオブジェクトの背面に隠される。パレット３１１はアプリケーションウインドウ３０１の範囲内のみに表示されることを制限される、あるいはアプリケーションウインドウ３０１の外側にその一部或いは全体を表示することを許される。
【００３３】
ツールバー３０３には図４に示されるような、ユーザ選択可能な『ボタン』が配置されている。
（１）選択ツールボタン４０３：コンテナの辺を選択、移動、サイズ変更、リサイズそしてロック／ロック解除のために使われる。コンテナの選択は、コンテナの周りに選択ボックスをドラッグすることによりなされる。また、CTRLキーを押しながら、複数のコンテナについて選択操作をすることによって、複数のコンテナを選択可能である。
（２）テキストコンテナツールボタン４０４：スタティックあるいはバリアブルテキストを持つコンテナを作成するために使われる。
（３）イメージコンテナツールボタン４０５：スタティックあるいはバリアブルイメージを持つコンテナを作成するために使われる。
（４）リンクツールボタン４０６：コンテナ間に関連付けを行うリンクを作成するために使われ、リンクの距離をコントロールするためにも使われる。
【００３４】
レイアウト編集アプリケーション１２１の図３に示したアプリケーションウインドウ３０１は、ページ内に各コンテナやリンクをレイアウトすることで、基本レイアウトを決定することができる。基本レイアウトとは、バリアブルデータプリントで基本となるレイアウトのことである。基本レイアウト内の各コンテナが固定コンテナである場合は、すべてのレコードの印刷結果のレイアウトは同じになる。また、基本レイアウト内の各コンテナが後述する可変コンテナである場合は、レコード単位に読み込まれるデータの量やサイズにより各コンテナのサイズや位置が、後述する制約の範囲内で変動することになる。よって、レイアウト編集アプリケーション１２１で作成されるドキュメントテンプレートは、あくまで基本レイアウトを決定するものであり、可変コンテナが含まれる場合は、最終的な印刷物のレイアウトは読み込まれるデータによりレイアウト調整されることになる。
【００３５】
［ドキュメントテンプレート］
図３において、ワークエリア３０６はドキュメントテンプレート（１８０：基本レイアウト）のデザインを表示・編集するために使われる。また、ドキュメントテンプレートを単にテンプレートということもある。これはユーザがドキュメントテンプレートをデザインする過程において、印刷されるドキュメントの概観をユーザに提示することを可能とする。これにより、ユーザは、データソース（１９０）とマージされたドキュメントが、バリアブルデータの量・サイズに基づいてどのように変化するかを容易に理解できる。
【００３６】
また、データソースがドキュメントテンプレートに関連付けられていた場合は、現在のドキュメントのプレビューができるように、対応するバリアブルテキストやイメージがレイアウトされた各コンテナに表示される。
【００３７】
ドキュメントテンプレートにおけるドキュメント構造とバリアブルデータコンテナの描写をする視覚的な手がかり（コンテナの枠線、アンカー、スライダー、リンク等）は、ドキュメントテンプレート作成時には常に表示され、バリアブルデータを流し込むプレビュー時には、視覚的な手がかりは、カーソルをコンテナ上に移動させたときや、コンテナを選択したときに表示される。
【００３８】
ワークエリア３０６はスクロールバー３０７とオプションのルーラー３０８とドキュメントテンプレート３０９を含む。ドキュメントテンプレート３０９はページが複数あることを示すことができる。また、ドキュメントテンプレート３０９は、図１Ｃのドキュメントテンプレート１８０を表示しているものである。
【００３９】
与えられたドキュメントテンプレートのページサイズは、周知の技術を用いて、ユーザによって指定される。例えばメニューの「ファイル」から「ページ設定」を選択することでページサイズを設定するダイアログを表示し、そこでユーザが指定したページサイズが反映されることになる。それぞれのドキュメントでの実際のページ数は、関連付けられたデータソース内のバリアブルデータによって変化する可能性が有る。これは、ドキュメントテンプレート内に可変表のようにバリアブルデータの量により大きさが変更されるフィールドが設定されている場合、１ページ内にバリアブルデータをフィットできないバリアブルデータが読み込まれると、追加のページが自動的に作成されるからである。
【００４０】
それぞれのページ内に示される境界線３１０は、ページ上の印刷可能なオブジェクトの最大幅を示す、任意のページマージンである。
【００４１】
図４は１ページのドキュメントテンプレート３０９上に表示され得るオブジェクトの例を示す図である。このようなオブジェクトとしては、コンテナ４０７、４０８と、任意に適用するアンカーアイコン４０９、固定されている辺４１１、４１４、固定されていない辺４１０、リンク４１２そしてスライダー４１３を持つ。アンカーアイコン４０９は、コンテナの矩形の角、辺、またはコンテナの中央に設定することが可能である。アンカーアイコン４０９が設定されると、設定された個所の位置が固定となる。つまり、図４の例では、アンカーアイコン４０９は、コンテナ４０７の左上の角に設定されているため、コンテナ４０７はバリアブルデータが流し込まれ、バリアブルデータの画像サイズもしくはテキスト量が多い場合に、右方向及び下方向に拡大可能であることを示している。アンカーアイコン４０９が辺に設定されている場合は、その辺が固定となり、その他の３辺の各方向に拡大可能である。また、アンカーアイコン４０９がコンテナの中央に設定されている場合は、コンテナの中央位置が固定となり、コンテナ矩形の中央位置が変わらないように、４方向に拡大可能である。リンク４１２は詳細は後述するが、コンテナ４０７とコンテナ４０８が関連付けられていることを示しており、このリンクに設定されている長さ（範囲指定可能）を保ちつつ、コンテナ４０８が右方向に移動可能であることを示している。スライダー４１３は、設定されている辺と水平方向に移動可能であることを示している。
【００４２】
［コンテナ］
ここで、コンテナについて説明する。コンテナは、ドキュメントテンプレート内にバリアブルデータファイルから固定あるいは可変のテキスト／イメージが流し込まれ、描画されるスペース（これを部分領域またはデータ領域と呼ぶ）であり、図４に示されるように他のコンテナやオブジェクトと共にレイアウトされる。ユーザインターフェース画面を介して、ユーザからの操作指示により、コンテナはマウス１３３の操作により移動、サイズ調整、再作成される。また、コンテナに流し込まれるデータをコンテンツまたはコンテンツデータとする。
【００４３】
より正確にはコンテナは、設定の集まり、視覚的表現、そしてインタラクションと編集動作をもっている。下記は本実施形態によるコンテナの定義である。
【００４４】
（１）コンテナは固定あるいは可変のコンテンツを持つ。可変コンテンツは、データソースから取得したデータがドキュメント毎、つまりレコード毎に異なる可能性があるという意味でダイナミック（動的）であるということができる。ただし、本実施形態の可変コンテンツは、アニメーション化されたもの、あるいは他の方法で時間的に変化するコンテンツは印刷には適していないため、ここでは意図していない。同様に、固定コンテンツはコンテナを使って生成される全てのドキュメントで、同じように表示される。しかしながら、可変コンテンツとリンクが設定されている場合、可変コンテンツの影響を受けて、固定コンテンツはそれぞれのドキュメントで位置が異なる可能性がある。
【００４５】
（２）コンテナは、コンテンツに適用される背景色、ボーダー、フォント・スタイルのようなテキスト設定と同様の装飾機能を持っている。このような設定をコンテナ属性と呼ぶ。コンテナ属性は、各コンテナごとに設定可能であるが、あるコンテナと同じコンテナ属性であるという設定を行うことも可能である。
【００４６】
（３）コンテナはドキュメントを生成する際にデータソースからのデータとマージされる。装飾機能は、どんな固定コンテンツでもそうであるように、印刷された出力物において可視である。可変コンテンツはデータソースからの特定のデータの表示を提供する。コンテナのこの表現は例えば印刷されるか、ビデオディスプレイ１４４のスクリーン上に表示されるか、その両方が可能である。
【００４７】
（４）コンテナは、図４に示されるように視覚的な手がかりとしてのユーザインターフェースを有している。例えばコンテナの編集そして表示設定のためのインタラクティブなグラフィカルユーザインターフェース（ＧＵＩ）を持つ。ＧＵＩの各要素はビデオディスプレイ１４４のスクリーン上に表示されるが、ドキュメントとしては印刷されない。レイアウト編集アプリケーション１２１のユーザインターフェース１０３は、背景色やフォントのようなコンテナの装飾機能のいくつかを表示し、さらにコンテナの設定の編集や表示を可能にするための機能を有している。
【００４８】
［コンテナの制約］
コンテナはそれぞれのドキュメントで表示されるコンテンツをどのように結びつけるかの制御に関する制約がある。これらの制約（固定／可変コンテンツをコンテナと結びつけることを含む）は、ユーザが一つのドキュメントテンプレートから多数のドキュメントの世代をコントロールする主要な方法である。制約の一つの例は『このコンテナのコンテンツの高さは最大４インチです』である。また、別の制約の例は『コンテナのコンテンツの左エッジは、それぞれのドキュメントにおいて同じ水平位置で表示しなければならない』である。ここに記述される内容は、ＧＵＩを使ってこのような制約を表示、編集するためのいろいろな方法である。
【００４９】
イメージがページ上に定義された場所を持っているように、固定コンテンツの配置を指定するコンテンツプレイスホルダーは、デジタル印刷技術でよく知られている。コンテナは位置とサイズを持ち、それらは公知の技術で知られている手法で編集され、表示される。よって、以下の説明では、バリアブルデータ印刷に特化した方法における表示・編集に焦点を合わせる。
【００５０】
コンテナを用いることにより、ユーザは、ドキュメントにおけるコンテンツのサイズ（描画サイズ）や位置を指定することが可能となる。いく種類ものドキュメントが一つのドキュメントテンプレートから生成されるので、コンテナに多数の可能性と制約を設定することになるが、これらの設定（指定）や表示のために所定のユーザインターフェースが利用される。
【００５１】
１つのコンテナの辺は、関連付けられたコンテンツがドキュメント内で表示される仮想の境界線を定義する。したがって、コンテナの左辺を論じることは、関連付けられたコンテンツが、各ドキュメントにおいて、表示可能であるエリア内の最も左の辺を論じることと同じである。同様に、コンテナの高さを論じることは、生成されたドキュメントで関連付けられたコンテンツの高さの制約を論じることとして理解される。本明細書では、ユーザインターフェース１０３を参照してコンテナの辺あるいは大きさを論じるところで、この区別は明らかにされるであろう。
【００５２】
以下の記載において、コンテンツの表示を制限するために使われるある値を定義している用語『固定』は、全てのドキュメントで同じである。
【００５３】
（１）コンテナの幅が固定である場合、関連付けられたコンテンツに割り当てられる幅は、全てのドキュメントで同じになる。
【００５４】
（２）コンテナの高さが固定である場合、関連付けられたコンテンツに割り当てられる高さは、全てのドキュメントで同じになる。
【００５５】
（３）距離（リンクの長さ）が固定である場合、指定された距離は全てのドキュメントにおける制約となる。
【００５６】
（４）コンテナの左右辺が固定の場合、ページに関する辺の水平位置は全てのドキュメントで同じであることを意味している。ただし、コンテナの高さあるいは垂直方向の位置は、変化する可能性がある。例えば、コンテナの左辺が固定である場合、関連付けられたコンテンツの表示位置は、全てのドキュメントでその左辺の位置は同じ水平位置となるが、あるドキュメントではページの上の方に表示され、他のドキュメントではページの下の方に表示される可能性がある。
【００５７】
（５）コンテナの上下辺が固定の場合、ページにおける辺の垂直位置は全てのドキュメントで同じとなることを意味している。ただし、コンテナの幅あるいは水平位置はドキュメントによって変わる可能性がある。
【００５８】
（６）コンテナの垂直軸はコンテナの右辺と左辺に平行で、それらの中間に位置される仮想の垂直線である。もしコンテナの垂直軸が固定なら、当該コンテナの左右辺の水平位置の平均（すなわち左右の中央位置）は、すべてのドキュメントで同じとなる。この制約において、コンテナの幅は変化する可能性がある。しかしながら、左右辺が垂直軸にもっとも遠いものからもっともものまで、垂直軸は全てのドキュメントで同じ水平位置となる。なお、コンテナの高さと垂直位置はこの制約によって影響されない。
【００５９】
（７）同様に、もし水平軸が固定なら、コンテナの上辺と下辺の平均が同一の垂直方向位置に配置される。ただし、コンテナの幅と水平位置はこの制約によって影響されることはない。
【００６０】
（８）水平軸と垂直軸の両方が固定である場合、コンテナの中心位置が固定されていることを意味する。ただし、コンテナの幅・高さはこの制約によって影響されない。
【００６１】
（９）コンテナの角位置、コンテナの辺の中間位置、あるいはコンテナの中心位置が固定である場合、それぞれの位置はすべてのドキュメントで同じ場所となる。例えば、もしコンテナの左上角が固定なら、配置されたコンテナの左上位置が全てのドキュメントで同じになることを意味している。
【００６２】
（１０）垂直辺あるいは垂直軸は、ページの左辺もしくは右辺、あるいは左ページマージンもしくは右ページマージン、あるいは他の水平位置に関連付けされて固定することができる。同様に、水平辺あるいは水平軸はページの上辺もしくは下辺、あるいは上下ページマージン、あるいは他の垂直位置に関連付けされて固定することができる。
【００６３】
『固定』の反対は、コンテナの辺、軸、角、中間位置、あるいはドキュメント制約がドキュメント間（レコード間）で変化するかもしれないことを意味する『可変』である。例えば、ページ内では、バリアブルデータのサイズや量により、動的にレイアウトが変更されることを期待するが、特定のコンテナについては、大きさや位置を固定にしたり、また、ページの角のコンテナの四隅は固定にしたいということを所望する場合がある。そのため、本レイアウト編集アプリケーション１２１では、各コンテナ（部分領域）について、辺、軸、角、中間位置等を固定にするか、可変にするかを適宜設定できるようにした。これにより、ユーザはドキュメントテンプレート１８０の基本レイアウトを決定する場合に、ユーザが所望とするように基本レイアウトを作成することができる。
【００６４】
［コンテナ表示・編集］
−−新規コンテナの作成方法−−
コンテナは、テキストコンテナとイメージコンテナの２種類で記述される。テキストコンテナはテキストおよび埋め込みのイメージを持つ。イメージコンテナは、イメージだけを持つ。
【００６５】
図４で示されるように、新規のテキストコンテナあるいはイメージコンテナは、テキストコンテナツール４０４あるいはイメージコンテナツール４０５をマウス１３３でクリックし、ドキュメントテンプレート３０９上に四角形をドラッグすることによって、当該ドキュメントテンプレート３０９上に作成される。
【００６６】
あるいは、コンテナは、適切なツール４０４、４０５をアクティブにした後に、ドキュメントテンプレート３０９上で単にクリックすることによって作成されるようにしてもよい。この場合、マウス１３３のクリック操作に応じてデフォルトサイズのコンテナがテンプレート上に挿入されるとともに、当該新規コンテナの寸法等を設定するためのダイアログボックスあるいは他のプロンプトが提供される。なお、コンテナのサイズは自動的に前もって定義されるようにしてもよいし、あるいは、計算されたスキーマによって作成・配置される、等、種々の方法が考えられる。ここで生成されたコンテナをマウス等の入力手段により選択し、右クリックでプロパティを指示する等の操作を行うことにより、コンテナのプロパティダイアログが表示され、コンテナの制約を設定することができる。コンテナのプロパティダイアログＵＩ（部分領域設定手段に相当する）では、上述した各種の制約を設定することができる。また、コンテナのプロパティダイアログでは、コンテナのサイズ（幅、高さ）や位置を決定することができ、可変サイズにする場合は、コンテナの基本パターン（基本サイズと基準位置）を設定し、更に、最大コンテナサイズ（幅、高さ）と最小コンテナサイズ（幅、高さ）を設定することが可能となっている。
【００６７】
［コンテナの表示方法］
図５の（Ａ）から（Ｄ）はコンテナの辺に関する表示ルールを例示している。
【００６８】
アプリケーション１２１は、コンテナの辺の状態を表現するために、実線（アイテム５０３）あるいは点線（５０４）を用いて辺を表すとともに、アンカー（辺の近くに描画された５０６、５０７、５０９によって示されるような線、形状、アイコン）、ハンドル（移動、修正するために領域の辺上あるいは近傍に描画されたコントロール点、５０２）、スライダー（辺の両側に描画された短い並行線、図４の４１３）、拡縮アイコン（５０５）、色を用いる。
【００６９】
図５（Ａ）〜（Ｄ）に示されるコンテナ表示方法のルールは以下の通りである。
（１）それぞれの辺を固定するために、実線で描画する。
（２）幅が固定の場合は、左と右の辺を実線で描画する。
（３）高さが固定の場合は、上と下の辺を実線で描画する。
（４）軸は描画しない。
（５）（１）〜（３）によって描画されていないそれぞれの辺の近くには拡縮アイコンが描画され、それらの辺を点線で描画する。
（６）垂直辺と水平辺、あるいは垂直軸と水平軸のそれぞれのペアで、もし両者が固定なら、それらの交差点にアンカーが描画される。
（７）それぞれの固定辺で、もし辺のどこにもアンカーが描画されていなければ、エッジの中央にスライダーが描画される。
（８）垂直及び水平辺、あるいは垂直及び水平軸のそれぞれのペアで、アンカーやスライダーが描画されていない場合、それらの交差点にハンドルが描画される。
【００７０】
ルール（１）、（２）、（３）で定義された線は、前述したように固定あるいは制限されているため実線で描画される。ルール（５）のように、可変の辺は、点線で描画される。ルール（６）、（７）、（８）で定義された固定された点は、アンカーを表示し、いくつかの固定された辺はスライダーを表示し、他はハンドルを表示する。
【００７１】
上記のルールは、ユーザにより後で設定された制約が優先される。つまり、後で別の制約が設定された場合、上記のルールが描画されるべき辺に影響すれば、実線や点線の描画内容が変更されることになる。
【００７２】
可変の辺が描画される場所は、コンテナのコンテンツに依存する。後に説明するように、ドキュメントテンプレートにコンテンツがマージされて、ユーザインターフェースで可視になることを意味する、『動的な校正処理』が使われる。代わりの実行は、すべてのドキュメントで平均化されるコンテナのコンテンツエリアで、あるいは、可変の辺がユーザインターフェースで、どこにレイアウトされるべきか決定するほかの手段で使われることができる。
【００７３】
これらのコンテンツ表現は、コンテナの各辺の状態を表示するグラフィカルな手段を提供する。その表現の解釈は下記のとおりである。
（１）図４の４１０の辺のように、点線はコンテナのコンテンツに依存してドキュメント内の辺の位置が変化することを意味する。
（２）実線は、固定されている（辺４１４）、あるいはコンテナの幅・高さが固定されている（コンテナ４０８では４辺が実線であり、両方が固定されている）ために制限された辺であることを意味する。
（３）アンカーは辺および軸が交差した場所が固定されていることを意味する。それゆえ、アンカー点は、すべてのドキュメントの水平、垂直位置で現れることになる。アンカーは当然固定される。図４のアイコン４０９は、辺４１４の交差する位置が固定されていることを意味しているアンカーアイコンの例である。
（４）スライダーは関係付けられた辺の長さが固定されているが、並行移動する可能性があることを意味する。例えば、図４でスライダー４１３はコンテナ４０８のコンテンツが、ドキュメント内で特定のダイアグラムで表される位置の、左あるいは右に表示されるかもしれない。例えば、コンテナ４０８と関連付けられている（リンク設定されている）コンテナ４０７に流し込まれるデータの画像サイズもしくはテキスト量が少ない場合は、コンテナ４０７のサイズが小さくなるため、コンテナ４０８は、左方向にスライド（並行移動）してレイアウトされて表示されることになる。また、コンテナ４０７のサイズが大きくなる場合は、逆にコンテナ４０８は右方向にスライドしてレイアウトされることになる。
【００７４】
これらのアイコン・辺のいくつかあるいは全ては、どのツール、どのコンテナを選択・ハイライトあるいはアクティブにするかによって、描画されたりされなかったりする。一般的に、コンテナの辺・アイコンはドキュメントテンプレートのデザインの手助けであるため、印刷物には描画されない。
【００７５】
なお、前述したように、コンテナの幅・高さの基本値・最小値・最大値の基本パターンの設定は、副次的なダイアログウインドウに表示される。
【００７６】
図５の（Ａ）で、コンテナ５０１は、幅・高さの両方が固定されていない（可変である）。固定された辺５０３は実線で表現され、可変の辺５０４は点線で表現されている。拡縮アイコン５０５は、隣接する辺５０４が可変であることを示す。他の形態のインジケータを代わりにあるいは追加的に用いてもよい。
【００７７】
図５の（Ｂ）において、コンテナ５０１は幅・高さ両方が可変である。アンカーアイコン５０６が、交差している両方の辺５０３の角の位置が固定されていることを明示的に表すべく追加されている。
【００７８】
図５の（Ｃ）において、コンテナ５０１は、コンテナの幅及び高さの両方が可変であり、任意のアンカーアイコン５０７で示されるような中心点の周りを平等に広がるという状態を示している。すなわち、コンテナ５０１はアンカーアイコン５０７を中心に拡大あるいは縮小が可能である。ここでの拡大／縮小は、アンカーアイコン５０７の位置が常にコンテナ５０１の中心点となるようにレイアウト調整される。
【００７９】
図５の（Ｄ）において、コンテナ５０１は、上辺５０８が固定されているが、幅・高さの両方が可変である。上辺５０８の中心に位置付けられて示されるアンカーアイコン５０９は、固定されている。そしてコンテナ５０１の左辺・右辺（５０２）は、アンカーアイコン５０９を通って垂直な中心軸（垂直軸）の周りを、拡大・縮小する。
【００８０】
［リンク］
リンクは、コンテナとコンテナの関連を示している。関連とはコンテナ間の距離を示しており、リンクによって関連付けられたコンテナ同士は、互いのレイアウト変更の影響を受けてレイアウトを計算する。図４の４１２で示されているものがリンクであり、図４ではコンテナ４０７と４０８とを関連づけている。リンクの設定方法および、リンクで関連付けられたコンテナのレイアウト計算方法については、後述する。
【００８１】
［リンクの設定方法］
次に、コンテナ同士を関連付けるためのリンクの設定について説明する。図６はリンクの設定方法を示したフローチャートである。また図７の（Ａ）〜（Ｃ）はリンク設定時のユーザインターフェース（ＵＩ）の遷移例を示している。図６，図７を用いてコンテナにリンクを設定する方法について説明する。
【００８２】
まず、ステップＳ６０１において、レイアウト編集アプリケーション１２１は、ユーザインターフェース画面のワークエリア３０６上に編集すべく選択されたドキュメントテンプレートを表示する。リンクを設定するためには、リンクを設定するためのコンテナ（最低２つ）がドキュメントテンプレート上に作成されている必要がある。図７の（Ａ）〜（Ｃ）では、ステップＳ６０１で２つのコンテナを作成してリンクを設定する場合のユーザインターフェースの遷移例を示している。
【００８３】
次に、ステップＳ６０２において、レイアウト編集アプリケーション１２１は、前述したリンクツールが選択状態（図４のボタン４０６をクリックすることにより選択状態となる）になったかを判断する。リンクツールが選択上体でなければ、必要に応じて他の各種処理を実行し（ステップＳ６０９）、ステップＳ６０２に戻る。
【００８４】
図７の（Ａ）において、コンテナ７０１と７０２はすべて固定されている辺で構成されているものとする。また、７０３と７０４は、図４の４０９と同じであり、アンカーを意味する。７０５はマウスポインタを意味している。さて、リンクツールが選択状態となっている間に、ユーザはリンクを設定する２つのコンテナのうちの一方（コンテナ７０１とする）をクリックして選択する。この操作に応じて、レイアウト編集アプリケーション１２１のユーザインターフェース１０３は第１のコンテナが指定されたことを認識し（ステップＳ６０３）、選択されたコンテナを特定する情報を保持する。また、以降のマウスカーソルの移動に応じた軌跡を画面に表示するようにする（ステップＳ６０４）。例えば、図７の（Ｂ）における線分７０６は、（Ａ）の状態におけるクリック位置と現在のマウスカーソルの位置とを結んだ線を示しており、このＵＩによりどの位置にリンクが設定されるのかをユーザに明示することができる。
【００８５】
次に、ユーザは、図７の（Ｂ）で示されるように、もう一方のコンテナ（コンテナ７０２）までマウスポインタを移動してクリックする。この操作に応じて、ユーザインターフェース１０３は第２のコンテナが指定されたことを認識し（ステップＳ６０５）、レイアウト編集アプリケーション１２１は、ステップＳ６０４で保持した第１のコンテナと、ステップＳ６０５で指定が認識された第２のコンテナとの間にリンクを設定する（ステップＳ６０６）。
【００８６】
こうして、ユーザにより選択された２つのコンテナ７０１，７０２の間にリンクが設定されると、リンクＵＩ７０７が表示される（ステップＳ６０７）。更に、このリンク設定を受けて、コンテナの表示状態は図７の（Ｃ）の状態になる（ステップＳ６０８）。すなわち、リンクが設定されたことにより、コンテナのＵＩが自動的に変更される。ここでは、リンクによって関連付けられた辺が可変となり、点線で示される。図７の（Ｃ）において、７０８は点線で示されている辺であり、前述した通り可変の辺を示すものである。
【００８７】
なお、図７の（Ｃ）のようなコンテナの辺の状態の変化は、リンクを設定したことによりコンテナの辺を可変にする必要が生じたことにより自動的に実行されたものであり、リンクを設定したにもかかわらず全ての辺が固定であるという矛盾の発生を防ぐことを目的としている。また、７０９は図５の５０５と同じで、リンクを設定したことにより、コンテナが変化できる方向をユーザに視覚的に示したマークである。また、図７の（Ｃ）の例では、左のコンテナの右辺と右のコンテナの左辺が可変な状態へ変化したが、これは一例であり、たとえば、右コンテナが図４の４１３で示したスライダーを持つ設定に変化してもかまわない。
【００８８】
＜レイアウトエンジンによるレイアウト計算処理＞
［レイアウト計算方法（全体フロー）］
本実施形態のレイアウト編集アプリケーションは、ユーザインターフェース１０３を用いてコンテナを作成し、そのコンテナ間に関連付け（リンク設定）を行ってレイアウトを作成するレイアウトモードと、レイアウトエンジン１０５により、作成したレイアウトにデータソースの各レコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。このプレビューモードにおいて、実際のレコードが挿入され、前述した優先順位に従ってレイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レイアウトエンジン１０５が各コンテナにデータを挿入してレイアウトを計算するが、その際の計算方法はプレビューモードと同じである。
【００８９】
図８はレイアウト計算のフローを示している。まず、プレビューモードが選択される（ステップＳ８０１）。プレビューモードになったら、レイアウト編集アプリケーション１２１は、ユーザにプレビューするレコードをデータソースより選択させ、選択されたレコードの各フィールドデータを各コンテナに挿入するよう決定する（ステップＳ８０２）。各コンテナへのフィールドデータの挿入が決定されると、レイアウト編集アプリケーション１２１は、そのレコードをレイアウトするための計算を行い、必要に応じてレイアウト調整を行う（ステップＳ８０３）。ステップＳ８０３におけるレイアウト計算の詳細については後述する。そして、レイアウト編集アプリケーション１２１は、ステップＳ８０３で計算されたレイアウトを表示する（ステップＳ８０４）。レイアウト編集アプリケーション１２１は、他のレコードについてもプレビューを行うかどうかをユーザの指示により判断する（ステップＳ８０５）。ステップＳ８０５で、他のレコードについてプレビューを行う必要がないと判断した場合は、プレビューモードを終了する（ステップＳ８０７）。他のレコードについてプレビューを行うのであれば、レイアウト編集アプリケーション１２１は、他のレコードを選択して再度レイアウト計算を行い、プレビューを行う（ステップＳ８０６）。
【００９０】
なお、プレビューモードでなく印刷時においては、印刷するレコード全てについて順にレイアウトの計算を行う。したがって、ステップＳ８０４は存在せず、ステップＳ８０５は印刷するレコードを全て処理したかの判断を行う。ステップＳ８０３でレイアウト計算された結果を、描画出力して出力し、プリンタドライバを用いて印刷データとして生成し、プリンタに印刷データが出力される。この場合、全てのレコード（印刷すべく指定された全レコード）について印刷データの出力が終了した時点で本処理を終了することになる。
【００９１】
［レイアウト計算方法（詳細）］
次に、上記ステップＳ８０３によるレイアウト計算の詳細について説明する。図９は本実施形態によるレイアウトの優先順位を設定しない場合のレイアウト計算の方法を示したフローチャートである。また、図１０はそのときのＵＩ表示例を示した図である。本図はレイアウト計算の処理方法についてのみ説明するためのフローチャートであるため、バリアブルデータプリントの１レコードの印刷／プレビュー時のレイアウト計算方法に相当する。複数レコードの場合は、下記の処理が繰り返されることになる。
【００９２】
まず、レイアウト編集アプリケーション１２１は、レイアウトを計算するコンテナの集合を求める（ステップＳ９０１）。レイアウト計算は、関連付けられたコンテナを一つの集合として計算を行う。例えば図１１を参照すると、ページ上に４つのコンテナがレイアウトされており、各コンテナに関連付けが設定されている。この場合、コンテナＡとコンテナＢ、そしてコンテナＣとコンテナＤがリンクによって関連付けされている。したがって、コンテナＡ、Ｂが集合１、コンテナＣ、Ｄが集合２となる。すなわち、リンクによって接続されたコンテナ群を一つの集合として特定する。前述したように、１１０１はアンカー、１１０２は固定された辺、１１０３はコントローラー、１１０４は可変の辺の変化方向を示している矢印、１１０５は可変の辺、１１０６はリンク、そして１１０７はスライダーを示している。
【００９３】
次に、レイアウト編集アプリケーション１２１は、ステップＳ９０１で求めたコンテナの集合から、レイアウトを計算するために一つを選択する（ステップＳ９０２）。そして、選択したコンテナの集合について、レイアウトの計算を行う。まず、選択したコンテナの集合に含まれる可変要素である２つのコンテナ（Ａ，Ｂ）について、流し込まれるデータの画像サイズもしくはテキスト量から各コンテナがなにも制約を受けない場合の大きさを計算する。具体的には、レイアウト編集アプリケーション１２１は、コンテナＡが画像データ用コンテナであるか、テキスト用コンテナであるかを判断する。この判断は、前述したように、コンテナに対して設定されている属性により判断できる。次に、レイアウト編集アプリケーション１２１は、コンテナＡに流し込まれるデータを読み込み、コンテナＡが画像データ用コンテナである場合は、その画像データのサイズ（幅、高さのピクセル数、および解像度）がコンテナＡの制約を受けない場合の大きさになる。また、コンテナＡがテキスト用コンテナである場合は、そのテキストデータも文字数と、コンテナＡのコンテナ属性で指定されているフォントタイプ、フォントサイズ、文字ピッチ、行ピッチなどの文字属性に基づいて、コンテナＡに流し込まれるべきデータ量が計算できる。ここで、テキスト用コンテナの場合は、コンテナＡの縦横比が制約を考えないと決定できないため、制約を当てはめる。図１１の例では、コンテナＡは、左上および左下の角にアンカーが設定されているため、高さ（縦方向）が固定となる。よって、レイアウト編集アプリケーション１２１は、コンテナＡの基本パターンとして設定されている幅（横方向）のコンテナＡに、計算したデータ量（テキスト量）の文字を流し込めるか否かを判断する。すべて流し込めると判断された場合は、コンテナＡは、基本パターンで設定されているサイズ（幅、高さ）に変更はない。また、すべて流し込めないと判断された場合は、コンテナＡは、アンカー設定により高さが固定であるため、横方向に伸びることになる。ここで、レイアウト編集アプリケーション１２１は、コンテナＡの幅がどれだけになると、計算したデータ量の文字を流し込めるかを計算し、コンテナＡのサイズを算出する。
【００９４】
次に、レイアウト編集アプリケーション１２１は、レイアウトされるコンテナのサイズが、実際のコンテンツのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う（ステップＳ９０３）。レイアウトの最適化は、動的にサイズを変化することが可能なように関連付けられたコンテナにおいて、それぞれに挿入されるコンテンツのサイズとレイアウトされるサイズとの差が、できる限り同じになるように行われる。レイアウト編集アプリケーション１２１は、ステップＳ９０２で算出したコンテナの集合のサイズ、つまりコンテナＡとコンテナＢとリンク１１０６（ここでは固定リンク）の合計サイズを求め、この合計サイズと、基本レイアウトにおける当該コンテナの集合のサイズ（図１１の例ではコンテナＡとコンテナＢのそれぞれのアンカーアイコンの距離に相当する）との差を求める。コンテナＡやコンテナＢの幅が大きくなると前ステップで計算されている場合は、差分値が発生する。レイアウト編集アプリケーション１２１は、この差分値をコンテナの集合の各要素に均等に分配することでレイアウト調整を行う。
【００９５】
レイアウト編集アプリケーション１２１は、レイアウトの最適化を行い、ルールに違反していた場合は、再度ルールを違反しないように計算をする（ステップＳ９０４）。ここで記述したルールとは、レイアウト作成時にユーザによって設定される制限であり、コンテナのサイズの可変範囲や位置の制限、可変リンクの場合はリンクの長さの変化の制限などである。ルールを違反しないようにレイアウトが計算されたら、その集合のレイアウトは完成される。そして、ステップＳ９０２〜Ｓ９０４の処理をページ上のすべての集合について施し、レイアウト編集アプリケーション１２１は、ページ全体のレイアウトを計算する（ステップＳ９０５）。
【００９６】
図１０の（Ａ）〜（Ｃ）は優先順位の設定なしでのレイアウト時のＵＩ例である。
【００９７】
図１０の（Ａ）は、あるレコードが挿入されレイアウトが決定されている状態を表している。１００１と１００２はアンカー、１００３と１００４は固定された辺、１００５は可変の辺、１００６は可変の辺の変化方向を示している矢印、１００８はリンクをそれぞれ示している。この状態において、レコードを変更し、異なったサイズのコンテンツを挿入する。図１０の（Ｂ）は（Ａ）の状態に新しいコンテンツのサイズを重ねて示している。１００９はそれぞれのコンテナに挿入されるコンテンツサイズを表している。そして、レイアウト計算が行われる。図１０の（Ｃ）はレイアウト計算された結果を示している。計算後の各コンテナのサイズは、実際挿入されるコンテンツのサイズと同等に差異があるように計算され、且つ前述したルールを違反しないように計算される。図１０の（Ｃ）で示されるように、（Ｂ）で示した挿入されるコンテンツサイズ（１００９）と計算後のコンテンツサイズ（１０１０）は、双方において同等な差異がある。
【００９８】
［長さが可変のリンクの設定］
図１２では可変リンクの設定のためのユーザインターフェースを表している。図４と同様にアプリケーションウインドウ３０１とツールバー３０３がある。図１２の状態では、ドキュメントテンプレート３０９上にコンテナ１２０３とコンテナ１２０４が存在する。それぞれのコンテナはアンカーアイコン１２０１、アンカーアイコン１２０２と固定された辺１２０５、辺１２０６を含んで構成されている。コンテナ１２０３と１２０４の間には可変サイズのリンク１２０９があり、コンテナ１２０３とコンテナ１２０４を結んでいる。コンテナ１２０３とコンテナ１２０４の間にはリンクが設定されているのでそれぞれの右辺１２０７と左辺１２０８は点線で表現されている。このため各コンテナにインジケーター１２１０、インジケーター１２１１が表示され、それぞれ辺１２０７と辺１２０８が可変であることを示している。
【００９９】
また、図１４は、リンク設定手段におけるユーザインタフェース画面であり、リンク１２０９の情報をセットするためのダイアログウインドウ１４０１の例である。このダイアログは、タイトルバー１４０２、ツールボタン１４０３、ダイアログウインドウの開閉を行うボタン１４０４、各種の情報をセットするエリア１４０９で構成されている。このダイアログウインドウではリンクタイプが可変長（１４０７）のリンクであるか、あるいは固定長（１４０６）のリンクであるかの択一的な選択を行える。リンクタイプが可変の場合にはリンクの長さの最小値（Min.Distance１４１０）、最大値（Max.Distance１４１２）、ならびに基準値（Distance１４１１）が設定できる。図１４のダイアログ１４０１は、たとえば、図６，図７で説明したリンクの設定操作によって２つのコンテナ間にリンクを設定した後に、この設定されたリンクをクリック等の操作によって選択したときに表示される。あるいは、リンクを設定した直後に、当該リンクに関するダイアログウインドウ１４０１が自動的に表示されるようにしてもよい。ここで各コンテナ間の距離の基準値１４１１は、データを流し込んだ際に各コンテナのサイズが変更されない場合に用いられるリンクの長さである。
【０１００】
図１３は、本実施形態のユーザインターフェース１０３による可変リンクの設定手順を説明するフローチャートである。例えば図１１のコンテナＡとコンテナＢの間に図６、図７で説明した手順でリンクを張ると、まず固定サイズのリンクが張られる。そして、このリンクを選択して図１３に示す処理を実行することにより、当該リンクを固定サイズのリンク１１０６（図１１）の状態から可変サイズのリンク１２０９（図１２）へと遷移させることができる。
【０１０１】
まず、マウスにより所望のリンク（たとえばリンク１１０６）を選択状態とし、リンクプロパティを表示させるための所定の操作が行われると、レイアウト編集アプリケーション１２１のユーザインターフェース１０３は、リンクプロパティの表示指示の入力として認識する（ステップＳ１３０１）。リンクプロパティの表示指示を認識すると、選択状態のリンク（以下、対象リンクという）に対応したプロパティダイアログウインドウ１４０１（図１４）が表示される。次に、ユーザインタフェース１０３は、リンクプロパティを表示する（ステップＳ１３０２）。なお、リンクの選択操作としては、コンテナの基本パターンの設定時と同様に、マウスの右クリックあるいはキーボードの特定のキーの操作等、いかなるものであってもよい。
【０１０２】
ステップＳ１３０２で表示されるダイアログウインドウ１４０１には選択されたリンクの現在の状態が示される。本例では、リンク１１０６が選択されたので、この段階ではリンクサイズは固定であり、Link Type１４０５においては、固定長を示すFixed Length１４０６が選択されている。
【０１０３】
このダイアログウインドウ１４０１においてリンクを固定サイズから可変サイズに変更するために、Link Type１４０５においてリンクサイズを可変に設定するためのFlexible Length１４０７を選択する。これによりLink Distance１４０８内に配置されているMax. Distance１４１２、Min. Distance１４１０、Distance１４１１が有効になり、数値の設定が可能となる。ユーザは、リンクの可変サイズを設定するために、そのリンクの長さの最大値をMax. Distance１４１２に、最小値をMin. Distance１４１０に、現在の値をDistance１４１１に設定することになる。
【０１０４】
設定を終えると、ユーザは一般的なダイアログウインドウ開閉ボタン１４０４によって当該設定の適用を指示する。ユーザインターフェース１０３はこの指示を検出すると、ステップＳ１３０３からステップＳ１３０４以降へ処理を進め、当該対象リンクに上記設定状態を反映させる。
【０１０５】
すなわち、まず、ステップＳ１３０４において、レイアウト編集アプリケーション１２１は、対象リンクが固定サイズか可変サイズかを判定する。固定サイズが指定されていればステップＳ１３０８へ進み、対象リンクを「固定サイズ」に設定し、ステップＳ１３０７で対象リンクの表示状態を「固定リンク」を表す「実線」とする。
【０１０６】
一方、ステップＳ１３０４において、可変サイズが指定されていれば、ステップＳ１３０５へ進み、レイアウト編集アプリケーション１２１は、対象リンクを「可変サイズ」に設定する。そして、ステップＳ１３０６にて、上記ダイアログウインドウ１４０１によって設定された対象リンクの現在値（基準値）、最大値、最小値を登録する。その後、ステップＳ１３０７で対象リンクの表示状態を「可変リンク」を表す「点線」とする。この結果、図１２のリンク１２０９に示すような状態にリンクのＵＩ表示が変化する（ステップＳ１３０６）。以上のダイアログウインドウ７０１の設定情報はメモリに格納される。
【０１０７】
なお、Distance１４１１に設定される現在の値には、現在のレイアウトとして配置されているコンテナの間の距離がデフォルト値として自動的に入力されるようにしてもよい。
【０１０８】
図１５は固定サイズのリンクを使用した場合のレイアウト結果を示している。レイアウト計算方法は前述したとおりに従って行われる。例えば図１２においてコンテナ１２０３とコンテナ１２０４にそれぞれ違ったサイズのイメージデータが挿入された場合を考える。この場合、それぞれのコンテナはデータの大きさを最適とみなし、コンテナ１２０３は挿入されたイメージサイズになる枠１５０４（最適コンテナサイズ）に近づこうと右方向へ、同様にコンテナ１２０４は挿入されたイメージサイズになる枠１５０５（最適コンテナサイズ）に近づこうと左方向へサイズを変更しようとする。しかしコンテナ１２０３とコンテナ１２０４はアンカー１２０１とアンカー１２０２によってそれぞれ左辺１２１２と右辺１２１３の移動ができず、上記のようにサイズを変更しようとすると両者の間隔を狭めるしかない。しかしながら、コンテナ間には固定サイズのリンク１５０３が設定されており、レイアウト計算時にその長さ維持されるため、コンテナ１２０３とコンテナ１２０４のサイズが変更されることになる。
【０１０９】
その結果、コンテナ１２０３とコンテナ１２０４はデータの縦横比に合わせた最適なサイズを確保することが出来ず、最終的に図１５に示すように、最適なサイズ（枠１５０４、枠１５０５）よりも小さくなってしまう。すなわちリンク１５０３のサイズが固定であるためコンテナ１５０１とコンテナ１５０２は最適サイズを達成できない（図１５において、各コンテナ内の一点差線で示した範囲がデータの持つ縦横比である）。
【０１１０】
一方、図１６は図１５と同様の状態でリンクを可変サイズにした場合を示している。この場合、上記の例でコンテナ１２０３とコンテナ１２０４の間には図示の通り可変サイズのリンクが設定されている。したがって、コンテナ１２０３とコンテナ１２０４のサイズが変更される際には、リンクサイズが縮まることでコンテナ１２０３とコンテナ１２０４のサイズを図１５の例より大きくすることができる。この結果、挿入されるデータサイズに合わせた最適なサイズを達成できる、あるいはより挿入データサイズ（最適サイズ）に近いコンテナの枠を設定することが出来る。図１６はこの結果を示しており、可変リンク１２０９はレイアウト計算の結果、可変リンク１６０３に示されるようなサイズ状態となる。なお、この場合コンテナ１２０３とコンテナ１２０４はそれぞれ最適なサイズ（データサイズに合った大きさ）になっている。
【０１１１】
［サイズに関する優先度をコンテナに設定可能な自動レイアウト処理］
図１７は本実施形態による、サイズに関する優先度をコンテナに設定可能な自動レイアウト処理を示すフローチャートである。
【０１１２】
まず、ステップＳ１７０１でサイズ決定時の優先度を各コンテナについて設定する。ステップＳ１７０１による優先度設定の処理については図１８、図１９を参照して後述する。次に、ステップＳ１７０２にて、ステップＳ１７０１で設定した優先度を確認するためにユーザインターフェース上で表示を行うかどうかをユーザに問い合わせる。表示させる旨の指示があればステップＳ１７０３へ進み、ステップＳ１７０１で設定された優先度をビデオディスプレイ１４４上に表示させる。ステップＳ１７０３による優先度表示処理については図２０〜図２４を参照して後述する。
【０１１３】
ステップＳ１７０２で優先度の表示を行う必要がないと指示された場合や、ステップＳ１７０３による表示作業を終了すると、ステップＳ１７０４に進み、プレビューを行うか印刷を行うかをユーザに問い合わせる。プレビューまたは印刷を行うと指示された場合は、ステップＳ１７０５へ進み、レイアウトテンプレートにコンテンツをマージし、レイアウトを自動計算する処理が行われる。そのレイアウト計算の際に、ステップＳ１７０１で設定した「優先度（割合）」が適用されて計算される。具体的には設定された優先度（割合）を各コンテナに重み付けてコンテナサイズ（領域サイズ）を計算している。ステップＳ１７０５によるレイアウト計算については図２５以降を参照して後に詳述する。なお、この全体フローのステップのうち、表示ステップおよびプレビューまたは印刷のステップは１度のみ行われるわけではなく、ユーザによって任意の回数繰り返すことも可能である。
【０１１４】
［優先度設定処理］
図１８は実施形態による優先度の設定処理（図１７のＳ１７０１）を示すフローチャートである。
【０１１５】
まず、ステップＳ１８０１で、ユーザによって優先度を設定するコンテナが選択されたことを認識する。ここで認識というのはレイアウトされたコンテナをマウスクリックなどで選択された際に、図５の５０２で示すハンドルなどを表示させて選択状態に遷移させることを意味する。次に、ステップＳ１８０２において、認識したコンテナに対応する優先度設定ダイアログを表示させる。このようなダイアログを表示させる方法としては、マウス右クリックメニューやウインドウメニューから表示させるなどで実現される。このダイアログの表示例を図１９に示す。
【０１１６】
図１９の（Ａ）はダイアログの全体図を示している。１９００は優先度設定ダイアログの概観を示している。１９０１はダイアログを閉じる指示を行うためのボタンを示している。１９０２は優先度の設定を有効にするのかしないかを設定するためのチェックボックスである。尚、チェックボックス１９０２のデフォルトはチェックなしであり、優先度の設定は無効となっている。ラジオボタン１９０３は設定する優先度をあらかじめシステム側で用意している値から設定する際にチェックオンするラジオボタンである。リストボックス１９０４は、ラジオボタン１９０３がチェックオンされたときに有効となり、矢印ボタン１９０５がマウス押下されると選択可能な優先度をリスト表示する。１９０６は設定する優先度の値をユーザが任意の値にしたいときにチェックオンするチェックボックスである。チェックボックス１９０６をチェックオンにするとテキストボックス１９０７が有効になり、値入力可能になる。このテキストボックス１９０７で任意の値を入力して優先度を設定することができる。
【０１１７】
テストボタン１９０８を押下することにより、本ダイアログで設定した優先度を仮適用してみて、レイアウトの変化を確認するテスト処理が実行される。このときに設定される優先度は、対応するコンテナのプロパティに一時的に設定されるもので、テスト処理が終了すると、実行前のプロパティ値に戻る。このボタンは、ユーザビリティ向上のために用意されているもので、本発明を実施するに当たって必須のものではなく、任意に用意されるものである。ＯＫボタン１９０９を押下することによって、本ダイアログで設定した優先度を対応するコンテナのプロパティに適用してダイアログを閉じる。Cancelボタン１９１０を押下することによって、本ダイアログで設定した優先度を対応するコンテナに適用せずにダイアログを閉じる。
【０１１８】
図１９（Ｂ）は優先度設定ダイアログ１９００において、あらかじめシステムに用意された優先度を使うときの例を示している。チェックボックス１９０２を有効にして優先度を設定する。ラジオボタン１９０３を有効にすると、リストボックス１９０４が有効となり、１９１３、１９１４で示すようにリスト表示され、所望の優先度を選択可能になる。このリスト表示は、矢印ボタン１９０５を押下することにより実行され、システムにあらかじめ用意された優先度が表示される。ここでは、High（７５％）、Normal（５０％）、Low（２５％）が用意されていることとなる。なお、ここで示した優先度は一例であり、他の優先度が用意されていてもかまわない。リスト１９１５からユーザによって選択された優先度がボックス１９１３に表示される。ＯＫボタン１９０９を押下することで、選択した優先度が該当するコンテナのプロパティに設定される。
【０１１９】
図１９（Ｃ）は優先度設定ダイアログ１９００において、ユーザによって任意の値で指定する優先度を設定する場合を示している。チェックボックス１９０２を有効にして優先度を設定する。ラジオボタン１９０６を有効にすると、テキストボックス１９０７が有効になり、優先度（数値）の入力が可能になる。入力可能になったテキストボックス１９０７にユーザは任意の値を指定することができる。ＯＫボタン１９０９を押下することによって、テキストボックス１９０７で指定された優先度が該当するコンテナのプロパティに設定される。このように様々な優先度を設定を可能にすることで、ユーザの意図したレイアウトを作成しやすくする。
【０１２０】
図１８に戻り、ステップＳ１８０３では、上述したように、ダイアログ１９００により指定した優先度をコンテナに設定する処理を行う。ステップＳ１８０４では、優先度の設定が終了かどうかをユーザに確認し、他のコンテナについても優先度を設定する必要があれば、ステップＳ１８０１からの処理を繰り返す。優先度の設定が終了であれば、本処理を終了する。
【０１２１】
［優先度表示処理（その１）］
次に、ステップＳ１７０３における優先度表示処理について説明する。図２０は優先度表示処理を示すフローチャートである。以下、各ステップの処理について、図２１および図２２によるユーザインターフェースの表示例を用いながら詳しく説明する。
【０１２２】
まず、ステップＳ２００１で優先度表示モードに遷移する。優先度表示モードというのは、上述した優先度設定処理において所望のコンテナに設定した優先度を、ユーザインターフェース上でユーザに示すために表示を行うモードである。このモードはユーザビリティの向上を目的として設けられており、優先度を表示させることにより、現在のコンテナの設定状態を明示する。
【０１２３】
優先順位表示モードへの遷移方法としては、例えば図２１に示すようなインターフェースを用いる。図２１（Ａ）〜（Ｃ）は本実施形態の自動レイアウトシステムが提供するメニューバー（２１０１）の表示メニューより、表示されるメニューリスト（２１０２）を示している。メニューリストには複数の項目があり、その中に“優先度表示”という項目を用意する（２１０５）。このメニューリストは一般のＷｉｎｄｏｗｓ（登録商標）アプリケーションと同様であり、２１０３で示すような２階層構造になっているメニュー項目や、２１０４で示すようなチェックマークが用意されていても構わない。マウスポインタ２１０６を項目上に移動させると、（Ｂ）に示すように、その項目が選択されていることを示すように網掛け（２１０７）が表示される。そして、その状態でマウスをクリックすると、（Ｃ）に示すようにチェックマーク２１０８が表示され、優先度表示モードへ遷移する。なお、優先度表示モード時に以上の動作を行うと、優先度表示モードを解除することができる。また、以上に示した手法は一般的なものを示しており、表示モードへの遷移方法はこの方法に限らなくても良いことはいうまでもない。また、優先度表示モードを特別設けずに、常に優先度の表示を行うモードであるようにしても構わない。
【０１２４】
図２０のフローチャートに戻り、ステップＳ２００２で自動レイアウトシステムのレイアウト画面であるコンテナ（ここではコンテナＣとする）の上をマウスオーバーしたかどうかを認識する。もしコンテナＣ上をマウスオーバーしたのであれば、ステップＳ２００３に進み、コンテナＣと、コンテナＣとリンクによって関連付けられたコンテナの優先度をユーザインターフェースにより表示する。
【０１２５】
図２２はユーザインターフェースにおける優先度の表示例を示している。図２２において、２２０１は本実施形態による自動レイアウトシステムのレイアウト画面を示している。２２０２はＷｉｎｄｏｗｓ（登録商標）のダイアログで用意されているウインドウの最小化・縮小／拡大・閉じるボタンを示している。２２０３は本システムの各種ツールボタンを示しており、図示されているのは一例である。２２０４は本システムのレイアウトページを示しており、このページ内にコンテナを配置してレイアウトテンプレートを作成する。２２０５はコンテナを示している。２２０６はコンテナ間の関連を示すリンクを示している。２２０７は２２０５と同じくコンテナを示している。説明の利便上、上からＡ，Ｂ，Ｃと振っておく。２２０８はマウスポインタを示している。２２０９はＵＩ表示された優先度を示している。図２２では、マウスポインタがコンテナＡ上にある（コンテナＡがマウスオーバーされている）。すると、コンテナＡおよびコンテナＡとリンクによって関連付けられたコンテナＢ，Ｃの優先度がそれぞれのコンテナに、例えば図２２の２２０９で示されるように表示される。この例では、コンテナＡはHigh（７５％）、コンテナＢ、ＣはNormal（５０％）と設定されていたことがわかる。
【０１２６】
図２０に戻り、ステップＳ２００４で表示モードを終了にする指示がなされたかどうかを判断する。表示モードを終了する指示の例は上述したとおりである。終了が指示されていれば優先度表示モードを終了にする。一方、優先度表示モードを続行するのであればステップＳ２００２からの処理を繰り返す。
【０１２７】
［優先度表示処理（その２）］
優先度表示処理について別の例を示す。図２３は優先度表示処理の他の例を示すフローチャートである。なお、各ステップの詳細を説明するために図２４のユーザインターフェース表示例を用いる。
【０１２８】
まず、ステップＳ２３０１で優先度表示モードに遷移する。ステップ２３０１の処理は前述したステップＳ２００１と同様であるので説明は省略する。次にステップＳ２３０２でマウスで選択されたコンテナを認識する。上述した優先度表示処理では、マウスオーバーしたコンテナとそのコンテナと関連のあるコンテナの優先度を表示したが、この優先度表示処理では、マウスでユーザが任意に選択したコンテナの優先度の表示を行う。図２４で示すように、コンテナＡ〜Ｈがレイアウトされていたとする。マウスカーソル２４０３を所望のコンテナ上へ移動しクリックボタンを押すことによりコンテナを選択する。選択されたコンテナは２４０１で示すようにコンテナのエッジが変化し選択されたことを明示する。ステップＳ２３０３では、選択されたコンテナの優先度を表示させる。なお、優先度は２４０２のように表示される。
【０１２９】
このように優先度を表示させることによってユーザはどういった経緯でレイアウトが決定したかを把握することが可能となる。
【０１３０】
次に、ステップＳ２３０４で表示モードを終了にする指示がなされたかどうかを判断する。表示モードを終了する指示の例は優先度表示処理（その１）で上述したとおりである。終了が指示されていれば優先度表示モードを終了にする。一方、優先度表示モードを続行するのであればステップＳ２３０２からの処理を繰り返す。従って、優先度表示モードを続行する間は、コンテナがマウス操作によって選択される度にそのコンテナの優先度が表示される。ただし、ユーザビリティの向上を考慮すると、一度選択したコンテナをもう一度選択すると非選択状態に戻すとすると良い。この場合、所定のキー（例えばコントロールキー）とともにマウスクリックを行ってコンテナを選択することにより、複数の紺店を選択状態とし、図２４に示すように複数のコンテナの優先度を同時に表示可能にしてもよい。
【０１３１】
［優先度を考慮したコンテナのサイズ計算］
図２５は、本実施形態による、優先度を考慮したレイアウト計算の概要を示すフローチャートである。
【０１３２】
まず、ステップＳ２５０１において、レイアウトされている各コンテナに設定された優先度を取得する。次に、ステップＳ２５０２において、ページの水平方向についてレイアウト計算を行う。次に、ステップＳ２５０３へ進み、ページの垂直方向についてレイアウト計算を行う。これらのレイアウト計算についての詳細は後述する。そして、ステップＳ２５０４において、ステップＳ２５０２とＳ２５０３による水平・垂直方向のレイアウト計算結果をレイアウト後の計算結果として設定する。
【０１３３】
以下、ステップＳ２５０２とＳ２５０３におけるレイアウト計算について、図２６のフローチャートを参照して詳細に説明する。
【０１３４】
まず、ステップＳ２６０１において、レイアウト計算の対象となるコンテナの集合（リンクにより関連付けられたコンテナで構成される集合）を抽出し、ステップＳ２６０２において、抽出されたコンテナの集合の数をＲに代入する。次に、ステップＳ２６０３へ進み、変数ｒに０を代入する。ステップＳ２６０４において、Ｒが０であった場合、すなわち計算するコンテナの集合が０個であったときは、レイアウトされているコンテナが存在していないことを意味するため、計算は行わず本処理を終了する。また、Ｒが０でない場合は、ステップＳ２６０５においてＲとｒの比較を行う。ｒ＜Ｒであった場合は、ｒによって特定されるコンテナの集合についてレイアウト計算を行うべく、ステップＳ２６０６へ進む。反対にｒ≧Ｒであった場合は、計算すべきコンテナの集合についてはすべて計算が終了していることを意味するので、本処理を了する。
【０１３５】
Ｓ２６０６からは実際のレイアウト計算処理である。まず、ステップＳ２６０６において、ｒによって特定されるコンテナの集合（以下、集合ｒという）のコンテナの数を抽出し、これをＮに代入する。次に、ステップＳ２６０７において、変数ｉに０を代入する。ステップＳ２６０８〜Ｓ２６１０で示される処理を、集合ｒが有するコンテナの数分繰り返し行い、コンテナｉに設定されている優先度を配列Prio[i]に代入する。このときに、優先度が設定されていないコンテナがあった場合は、Normal（５０％）として設定される。優先度の取得が終了すると、ステップＳ２６１２において、集合ｒに関してレイアウト計算を行う。レイアウト計算の詳細については、後述する。集合ｒについてレイアウト計算が終了すると、ステップＳ２６１３へ進んでｒを１だけインクリメントし、ステップＳ２６０５へ戻る。すなわち次のコンテナの集合ｒについて処理が行われることになる。全てのコンテナ集合について処理を終えるとｒ≧Ｒとなり、ステップＳ２６０５から本処理が終了することになる。
【０１３６】
次に、図２７、図２８、図２９を用いてステップＳ２６１２におけるレイアウト計算処理の詳細を説明する。図２７はコンテナの各集合に対して行われるレイアウト計算の詳細フローを示している。図２８はレイアウトされたコンテナにコンテンツが挿入されたときに、優先順位のない状態でレイアウト計算を行った場合のコンテナサイズの計算例を示した図例である。図２９は図２８の図例に対して優先度を設定した場合の計算例を示している。
【０１３７】
まず、ステップＳ２７０１において、集合ｒに対して最小二乗法と各コンテナに設定された優先度を用いてレイアウト計算を行う。レイアウト計算については図２８および図２９を参照して具体的に後述する。ステップＳ２７０２では、ステップＳ２７０１でレイアウト計算を行った結果がルールに違反しているかを判断する。ここで、ルールというのは、コンテナに設定されている最大・最小サイズや、リンクに設定されている最大・最小サイズを意味する。例えば、計算された値が設定した最大・最小サイズを満たしていない場合は、そのコンテナはルールを違反したと判断される。ルールを違反したと判断されるコンテナが存在する場合はステップＳ２７０２からステップＳ２７０３へ進み、ルールを違反していると判定されたそのコンテナについてレイアウト調整を行う。
【０１３８】
ここで示しているレイアウト調整とは、例えばあるコンテナＡについてレイアウト計算を行った結果、水平方向のサイズが１０となったとする。しかし、コンテナＡに最小サイズとして１５という値が設定されていたときは、計算結果の１０よりも最小サイズの１５を優先してコンテナＡの水平方向のサイズは１５になる（Ｓ２７０３）。しかし、ここで本来１０と計算されたコンテナＡのサイズを１５へ設定したため、１５−１０＝５が新たにストレスとしてコンテナの集合に対して与えられる。このストレスを再度レイアウト集合内のルールを違反しなかったコンテナに対して分配する必要があるので、ステップＳ２７００４ではそれらのコンテナについて再計算を行う。ルール違反が発生しなくなるまでステップＳ２７０２〜Ｓ２７０４を繰り返し行い、ルール違反が発生しなくなったらステップＳ２７０５へ進み、計算されたレイアウトを一時保存する。
【０１３９】
以上、図２６、図２７で説明したレイアウト計算を水平方向（Ｓ２５０２）、垂直方向（Ｓ２５０３）に関して実行する。ステップＳ２７０５で一時保存されたコンテナのレイアウトは水平・垂直方向それぞれについて計算が終了した後、前述したステップＳ２５０４にて計算後のレイアウトとして各コンテナに設定される。
【０１４０】
上述したステップＳ２７０１によるレイアウト計算について、図２８、図２９を参照して詳しく説明する。なお、優先度を考慮したレイアウト計算の効果をわかりやすく示すために、同一のレイアウトに関して、優先度を考慮しない場合のレイアウト計算（図２８）と優先度を考慮した場合のレイアウト計算（図２９）を示す。
【０１４１】
図２８を用いて、優先度を考慮しない場合のレイアウト計算を説明する。２８０１〜２８０３で示すコンテナＡ、Ｂ、Ｃは固定リンク２８０４にて関連付けられている。各コンテナおよびリンクの水平方向のサイズは図示した通りであり、水平方向に合計５７というサイズを持っている。このレイアウトではこの水平方向の合計サイズは固定であるとする。このレイアウトに２８０５〜２８０７で示した、コンテンツＡ'、Ｂ'、Ｃ'が新たにコンテナへ挿入されると、ストレス（レイアウトの負荷）が発生する。
【０１４２】
それぞれのコンテンツは実サイズ（理想サイズ）を持っている。各コンテンツの実サイズは図示した通りであり、Ａ'は１７、Ｂ'は１３、Ｃ'は２７である。なお、コンテンツがテキストの場合、理想サイズは、現在コンテンツが持っているコンテンツ量（文字量）とデータの流し込み先であるコンテナに設定されたフォントサイズや縦横サイズの可変／固定、最大値／最小値等に基づいて決定されることになる。また、コンテンツがイメージの場合、当該イメージデータのサイズ（縦横画素数）が理想サイズである。このコンテンツをコンテナに挿入した後にすべてを理想サイズでレイアウトするためには、１７＋５＋１３＋７＋２７＝６９の水平サイズが必要になるが、前述した通りこのレイアウトは水平サイズが５７で固定になっている。したがって６９−５７＝１２がこのレイアウトにかかるストレスということになる。次に、上記ストレスを各コンテナに分配する。本自動レイアウトシステムでは、このストレスのかかり具合が最小になるように計算するようになっており、そのときに用いる手法が最小二乗法である。
【０１４３】
各コンテナの計算後のサイズをａ、ｂ、ｃとすると、各コンテナにかかるストレスの二乗の合計であるコストｋは、
ｋ＝(ａ−１７)2＋(ｂ−１３)2＋(ｃ−２７)2  …（１）
と表すことができる。
このレイアウトでは、優先度の設定はされていないため、コストｋが最小になるのは、
ａ−１７＝ｂ−１３＝ｃ−２７    …（２）
と表すことができる。
さらに、計算後のレイアウトのサイズより、
ａ＋５＋ｂ＋７＋ｃ＝５７    …（３）
と表すことができる。
【０１４４】
（２）（３）の等式より、各コンテナの計算後のサイズが求められる。ここでは、各コンテナにかかるストレスは４であり、計算後の各コンテナ（２８０８〜２８１０）Ａ”、Ｂ”、Ｃ”の各サイズは図示したとおりになる。
【０１４５】
次に図２９を例にとり図２８と同じレイアウトにおいて優先度が適用されていた場合の計算方法を説明する。なお、コンテナＡ（２９０１）には７５％、コンテナＢ（２９０２）には５０％、コンテナＣ（２９０３）には２５％の優先度が設定されているものとして説明する。
【０１４６】
レイアウト計算の手法は、前述した優先度設定なしのときとほぼ同じである。まず、各コンテナの計算後のサイズをａ、ｂ、ｃとすると、各コンテナにかかるストレスの二乗の合計であるコストｋは上記（１）式により求めることができる。次にコストｋが最小になるときの等式を導き出すが、今回は優先度が設定されているため、各コンテナのストレスに優先度を掛ける必要がある。したがって、
75/100（ａ−１７）＝50/100（ｂ−１３）＝25/100（ｃ−２７）  …（４）
と表すことができる。さらに計算後のレイアウトサイズは上記（３）式により表される。
【０１４７】
よって、（４）、（３）の等式より、優先度を考慮した各コンテナの計算後のサイズが求められる。ここでは、各コンテナにかかるストレスは優先度により分配され、計算後の各コンテナ（２９０８〜２９１０）Ａ”、Ｂ”、Ｃ”の各サイズは１４．８２、９．７３、２０．４５となる。図２８の優先度なしのレイアウト計算結果に比べて、優先度の高いコンテナが理想サイズに近いサイズでレイアウトされていることがわかる。また、ここでの例では水平方向のみについてであったが、垂直方向のレイアウト計算についても同様の方法で行われる。
【０１４８】
すなわち、（４）式において優先度を作用させたことにより、リンクで関連付けられたコンテナ群に関して、各コンテナの計算後のレイアウトサイズと対応するコンテンツの理想サイズとの差の比が、各コンテナに設定された優先度の逆数の比に等しくなっている。この結果、優先度の高いコンテナほど理想サイズとの差が小さくなり、コンテンツデータの理想サイズ（実サイズ）を反映したレイアウトを作成することが可能となる。
【０１４９】
［コンテンツの縦横比を考慮したレイアウト計算処理］
上述のレイアウト計算処理は挿入されるコンテンツの縦横比に関係なく計算される処理を示した。しかし、コンテンツに縦横比がある場合（例えばイメージ画像がそれにあたる）、縦横比に関係なくレイアウトが決定してしまうと、クリッピングを行ったり、ストレッチなどで縦横比を変更してコンテンツを表示したりする必要が生じる。コンテンツを適切なサイズで表示するためには縦横比を考慮したほうがより良いことは明白である。そこで、以下では、上述したレイアウト計算処理に更に縦横比の考慮を加えたレイアウト計算処理について説明する。なお、縦横比を考慮すべきコンテナは予めコンテナの属性として設定してもよいし、コンテナに流し込まれるコンテンツの属性に基づいて自動的に設定される（例えば、コンテンツがイメージの場合には、対応するコンテナが縦横を考慮するコンテナに設定される）ようにしてもよい。
【０１５０】
図３０は自動レイアウトシステムにおいて縦横比を考慮する場合の基本的なレイアウト計算処理について説明するフローチャートである。
【０１５１】
まず、ステップＳ３００１において、コンテンツサイズおよびコンテンツが持つ縦横比を取得する。次に、ステップＳ３００２において、そのコンテンツが挿入されるコンテナレイアウトの水平もしくは垂直方向についてレイアウト計算を行う。水平・垂直のどちらか一方についてレイアウト計算が終了したら、ステップＳ３００３において、ステップＳ３００２の計算結果とステップＳ３００１で取得した縦横比に基づいて残り一方の方向についてサイズを決定する。すなわち、上述した縦横比を考慮しないレイアウトアウト計算では、水平・垂直双方において最小二乗法を用いて計算を行っていたが、縦横比を考慮する場合は、縦横のどちらが一方のレイアウトを計算すると、もう片方のレイアウトは、そのコンテンツの縦横比を用いて強制的に計算される。
【０１５２】
図３１は縦横比を考慮した際のレイアウト計算の簡単な例を示している。（Ａ）では、コンテナ３１０１にあるコンテンツが挿入されてレイアウトされている状態が示されている。コンテナのエッジの状態は、３１０２が固定辺、３１０３可変の辺である。このコンテナに、（Ｂ）に示すコンテンツ３１０４が挿入されるとする。コンテンツ３１０４の縦横比は、Ｘ：Ｙである。コンテンツを挿入した結果、（Ｃ）に示すように、３１０８で示す理想サイズから３１０７で示すサイズになったと仮定する。この場合のレイアウト計算は、上述した水平方向のレイアウト計算処理によってＸ'が求まると、垂直方向については、Ｘ：Ｙ＝Ｘ'：Ｙ'となるようにＹ'が計算され、前述したレイアウト計算処理を用いない。
【０１５３】
図３２、図３３は前述した優先度付きレイアウト計算処理にコンテンツの縦横比を考慮させた場合のレイアウト計算処理を示すフローチャートである。また、図３４はレイアウト計算処理によるレイアウト例を示す図である。
【０１５４】
ステップＳ３２０１において、各コンテナに設定されている優先度を取得する。次に、ステップＳ３２０２において、水平方向についてのレイアウト計算を行う。レイアウト計算処理は図２６、図２７により説明したとおりである。水平方向のレイアウト計算が終了したら、ステップＳ３２０３において、縦横比を優先させるコンテナを検出し、そのコンテナについて前述した縦横比を考慮したレイアウト計算を行う。ステップＳ３２０３のレイアウト計算により求めた垂直方向のサイズはこの時点で固定し、ステップＳ３２０４の垂直方向についてのレイアウト計算の時には、計算対象のコンテナからはずす。すなわち、ステップＳ３２０４では、縦横比を考慮するコンテナについては、ステップＳ３２０３で算出されたサイズを固定として用いて、垂直方向についてレイアウト計算を行う。垂直方向のレイアウト計算処理に関して、その他の処理は図２６、図２７により上述したとおりである。そして、ステップＳ３２０５において、水平・垂直方向のレイアウト計算が終了したら各コンテナのレイアウトをメモリ上に一時保存する。ここでは説明の便宜上、Layout1という名前の領域にレイアウト情報を保存したことにする。
【０１５５】
ステップＳ３２０５では、計算されたレイアウトは一時保存されたのみであり、各コンテナへ適用されてはいない。従って、この段階ではまだ各コンテナのレイアウト情報は計算前の状態になっている。
【０１５６】
次に、ステップＳ３２０６〜Ｓ３２０９により、垂直方向についてのレイアウト計算を先に行い、その後水平方向のレイアウト計算を行った結果をLayout2として保存する。まず、ステップＳ３２０６において、当該コンテナ集合に対して垂直方向についてのレイアウト計算を行う。レイアウト計算処理は前述したとおりである。垂直方向の計算が終了したら、ステップＳ３２０７において、縦横比を優先させるコンテナを検出し、そのコンテナについて前述した縦横比を考慮したレイアウト計算を行う。ステップＳ３２０７のレイアウト計算によって求めた水平方向のサイズはこの時点で固定する。そして、ステップＳ３２０８において、水平方向についてレイアウト計算を行うが、ステップＳ３２０７にて求められた水平方向のサイズは固定として扱う。水平・垂直方向のレイアウト計算が終了したら、ステップＳ３２０９へ進み、各コンテナのレイアウトをメモリ上に一時保存する。ここでは説明の便宜上、Layout2という名前の領域にレイアウト情報を保存したことにする。
【０１５７】
以上のように水平方向→垂直方向と垂直方向→水平方向の２つの方法でレイアウト計算を行った理由は、縦横比を考慮するレイアウト計算では、水平方向が先に計算される場合と、垂直方向が先に計算される場合によって、最終的に計算されるレイアウトが異なってくるためである。ステップＳ３２０５とＳ３２０９において２パターンのレイアウト結果をメモリ上に一時保存しておき、どちらの方がより最適なレイアウトであるかを判断して最終的なレイアウトとして設定していく。その処理を行うために、ステップＳ３２０９の後に、ステップＳ３２１０においてレイアウト調節を行う。ステップＳ３２１０の処理については図３３により後述する。このレイアウト調整処理により、最適なレイアウト結果がコンテナへ反映され、本処理は終了となる。
【０１５８】
図３３はステップＳ３２１０におけるレイアウト調整処理を説明するフローチャートである。レイアウト調整処理では、それぞれのコンテナの集合についてLayout1とLayout2に保存されたレイアウトのいずれがより適切であるかを判定し、各コンテナの集合に関して適切な方のレイアウトを採用して最終的な計算結果（Layout3）とする。
【０１５９】
まず、ステップＳ３３０１において、レイアウト全体におけるコンテナの集合の数をＮに代入する。次に、ステップＳ３３０２において変数ｉに０を代入する。ステップＳ３２０５で一時保存されたLayout1には各コンテナ集合についてレイアウトの計算結果が存在するが、そのコンテナ集合ｉのレイアウト計算結果をLayout1[i]と指定することで取得できるものとする。これはLayout2についても同じである。
【０１６０】
そして、ステップＳ３３０３において、Layout1[i]より、縦横比を考慮するコンテナＰを抽出する。このとき、縦横比を考慮するコンテナが複数個存在する場合にはそれら複数個のコンテナが取得されるものとする。ステップＳ３３０４では複数のコンテナが取得されたかどうかを判断する。複数個のコンテナが取得された場合は、ステップＳ３３０５において、取得されたコンテナの内、一番優先度の高いコンテナをコンテナＰとする。優先度の等しいコンテナが複数個あった場合は、レイアウト座標上一番左上のコンテナをコンテナＰとする。また、コンテナＰが複数個取得されなかった場合は、そのままステップＳ３３０６へ進む。ステップＳ３３０６は、ステップＳ３３０３或いはステップＳ３３０５で取得したコンテナＰについて、Layout1[i]とLayout2[i]におけるサイズの比較を行う。そして、コンテナＰに挿入されるコンテナサイズに近いレイアウト結果をLayout_N[i]に代入する。逆に遠いほうのレイアウト結果をLayout_F[i]に代入する。例えば、もしLayout1[i]のほうがコンテンツサイズに近いサイズであった場合は、Layout_N[i]＝Layout1[i]を行う。
【０１６１】
次に、ステップＳ３３０８において、コンテナＰに設定された優先度が、計算対象になっているコンテナ集合の、その他のコンテナの優先度の平均値より高いか、もしくは等しいかを判断する。高いもしくは等しいと判定された場合は、ステップＳ３３０９において、一時保存用に用意されたLayout3にステップＳ３３０７で設定されたLayout_N[i]を代入する。逆に、低かった場合は、ステップＳ３３１０へ進み、Layout3にLayout_F[i]を代入する。代入が終了したら、ステップＳ３３１１において、それぞれの一時保存用の領域Layout_N[i]とLayout_F[i]を削除する。その後、ステップＳ３３１２で変数ｉをインクリメントし、ステップＳ３３１３において、全コンテナ集合についてレイアウト調整が終了しているかどうかを判断する。すべてのコンテナ集合に対してレイアウト調整が終了していれば、ステップＳ３３１４へ進み、一時保存していたレイアウト調整結果Layout3をコンテンツの縦横比を考慮したレイアウト計算の結果として設定する。まだ全てのコンテナ集合に対して処理が終了していなければ、ステップＳ３３０３に戻り処理を繰り返す。
【０１６２】
図３４は上述したコンテンツの縦横比を考慮したレイアウト計算を行った際のレイアウト例を示している。コンテナ３４０１と３４０２がリンク３４０３で関連付けをされているとする。コンテナ３４０１はイメージが挿入されるイメージコンテナ、３４０２はテキストが挿入されるテキストコンテナとする。また、コンテナ３４０１は優先度７５％、コンテナ３４０２は優先度５０％が設定されている。さらに、コンテナ３４０１には縦横比を考慮する設定がされている。サイズは、３４０１は水平方向１５、垂直方向８、コンテナ３４０２は水平方向２０、垂直方向９、リンクは幅５である。このレイアウトに、３４０４で示すイメージコンテンツと、３４０５で示すテキストコンテンツが挿入されるとする。それぞれのサイズは、イメージコンテンツは水平方向２２、垂直方向８、テキストコンテンツは、水平方向２５、垂直方向９である。コンテンツが挿入されると、前述したレイアウト計算が行われる。
【０１６３】
コンテナの計算後のサイズをａ、ｂとすると、レイアウトに掛かるコストｋは
ｋ＝(ａ−２２)2＋(ｂ−２５)2    …（５）
と表すことができる。
また、各コンテナの優先度を考慮すると、コストｋが最小になるときは、
75/100（ａ−２２）＝50/100（ｂ−２５）  …  （６）
のときである。
また、レイアウト計算後のレイアウト集合のサイズより、
ａ＋ｂ＋５＝４０  …（７）
と表すことができる。
【０１６４】
（６）、（７）の等式より、各コンテナの計算後のサイズが求められる。計算後のコンテナサイズは、コンテナ３４０６が１７．２、コンテナ３４０７が１７．８となる。さらに、コンテナ３４０６には縦横比を考慮する設定がされているため、コンテナ３４０６の垂直方向のサイズは、３４０４の縦横比を考慮しなければならない。よって、コンテナ３４０６の垂直方向のサイズをＸとすると、
２２：８＝１７．２：Ｘ  …（８）
と表すことができ、（８）式よりＸ＝６．２５が求まる。よって、コンテナ３４０６の垂直サイズは６．２５になる。３４０８はコンテンツサイズを示している。コンテナ３４０６がコンテンツの縦横比を保って変化したことがわかる。
【０１６５】
図３４では水平方向のみを考慮したレイアウト計算を説明したが、図３５、図３６を用いて水平、垂直方向を考慮したレイアウト計算を説明する。すなわち、優先度付きのレイアウト計算処理に加えて、縦横比を考慮した場合のレイアウト計算処理について、コンテナが水平方向のみではなく、水平・垂直両方向に関連を持っていた場合のレイアウト計算方法について説明する。レイアウト計算処理は、図３２により説明した手順を利用することにより、水平方向のみだけではなく、水平・垂直方向に関連を持つレイアウト集合でもレイアウト計算を行うことが可能である。
【０１６６】
図３５，図３６は、水平・垂直方向に関連を持つレイアウト計算の例を示している。それぞれの図はともに、同じレイアウト集合を扱っている。図３５は優先度が設定されていないときの例を、図３６は優先度が設定されているときの例を示している。これらの図を用いて本実施形態の計算処理を説明する。
【０１６７】
図３５はコンテナ３５０１と３５０２と３５０３がリンク３５０４によって関連付けられているレイアウト集合の計算の様子を示している。また、コンテナ３５０１は縦横比を考慮する設定がされており、図３５のページサイズは横幅６０を想定している。今、コンテナ３５０１にはコンテンツ３５０５、コンテナ３５０２にはコンテンツ３５０６、コンテナ３５０３にはコンテンツ３５０７が挿入されるとする。それぞれの理想サイズは、３５０５、３５０６、３５０７に図示した通りである。まず水平方向のレイアウト計算を行う（Ｓ３２０２）。計算後の水平方向のコンテナサイズをコンテナ３５０１はａｈ、コンテナ３５０２はｂｈ、コンテナ３５０３はｃｈとする。水平方向に掛かるコストｋｈは、
ｋｈ＝(ａｈ−２２)2＋(ｂｈ−６０)2  …（９）
と表すことができる。コンテナ３５０３については、水平方向のサイズが固定であるため、コストは掛からない。さて、各コンテナの優先度は等しいので、コストｋが最小になるときは、
ａｈ−２２＝ｂｈ−６０  …（１０）
のときである。また、レイアウト計算後のレイアウト集合のサイズより、
ａｈ＋ｂｈ＋５＝４０    …（１１）
と表すことができる。
【０１６８】
（１０）、（１１）の等式より、各コンテナの計算後のサイズが求められる。計算後のコンテナサイズは、コンテナ３５０１が−１．５、コンテナ３５０２が３６．５となる。実際コンテナサイズがマイナス値になることはないので、コンテナ３５０１はルール違反していることとなる。コンテナのサイズには最小値・最大値が設定されており、マイナス値は設定できない。例えば、コンテナ３５０１に最小値１０・最大値３０が設定されていたとすると、コンテナ３５０１は、どんなストレスが掛かったとしても１０のサイズより小さくなることはない。そのとき、分配できなかったストレスはほかのレイアウトに分配される。ここでは、コンテナ３５０２へ分配されることとなる。したがって、水平方向のレイアウト結果は、コンテナ３５０１は１０、コンテナ３５０２は２５になる。またコンテナ３５０３は変化しないので４０である。
【０１６９】
つぎに垂直方向について、サイズ計算を行う。コンテナ３５０１は縦横比を考慮する設定がされているため、水平サイズ１０より垂直方向のサイズを計算する（Ｓ３２０３）。垂直方向のサイズをａｖとすると、
２２：８＝１０：ａｖ  …（１２）
と表すことができる。（１２）式より、ａｖ＝３．６…が求まる。よって、コンテナ３５０１の垂直サイズは３．６となる。
【０１７０】
次に垂直方向のレイアウト計算を行う（Ｓ３２０４）。上記で、コンテナ３５０１の垂直サイズが求まったことにより、次の等式、
３．６＋３＋ｃｖ＝２０  …（１３）
が成り立つ。ｃｖはコンテナ３５０３の垂直サイズである。
【０１７１】
（１３）式はレイアウト集合の垂直サイズに対する等式であり、この等式よりｃｖ＝１３．４５が求まる。さらに、コンテナ３５０３の垂直サイズが求まったことにより、次の等式、
ｂｖ＋２＋１３．４５＝２０  …（１４）
も成り立つ。ｂｖはコンテナ３５０２の垂直サイズである。式（１４）はレイアウト集合の垂直サイズに対する等式であり、この等式よりｂｖ＝４．６が求まる。等式（９）〜（１４）で求めたレイアウト結果を水平・垂直の順で計算したレイアウト結果として一時保存する（Ｓ３２０５）。
【０１７２】
次に、同じレイアウト計算を垂直方向から行う（Ｓ３２０６）。垂直方向のコストは、
ｋｖ1＝(ａｖ−８)2＋(ｃｖ−１０)2  …（１５）
ｋｖ2＝(ｂｖ−４)2＋(ｃｖ−１０)2  …（１６）
の２通りのパターンが存在する。以下、（１５）式に基づくパターンをパターンＡ、（１６）式に基づくパターンをパターンＢと称する。
【０１７３】
まずパターンＡについて計算を行う。各コンテナの優先度は等しいので、コストｋｖ1が最小になるのは、
ａｖ−８＝ｃｖ−１０  …（１７）
のときである。また、レイアウト計算後のレイアウト集合のサイズより、
ａｖ＋ｃｖ＋３＝２０  …（１８）
と表すことができる。(１７）、（１８）の等式より、各コンテナの計算後のサイズが求められる。計算後のコンテナサイズは、コンテナ３５０１が７．５、コンテナ３５０３が９．５となる。結果的にコンテナ３５０２のサイズは８．５となる。こうして得られたパターンＡのレイアウト結果を一時保存しておく。
【０１７４】
次にパターンＢについて計算を行う。各コンテナの優先度は等しいので、コストｋｖ2が最小になるときは、
ｂｖ−４＝ｃｖ−１０  …（１９）
のときである。また、レイアウト計算後のレイアウト集合のサイズより、
ｂｖ＋ｃｖ＋２＝２０  …（２０）
と表すことができる。（１９）、（２０）の等式より、各コンテナの計算後のサイズが求められる。計算後のコンテナサイズは、コンテナ３５０２が６、コンテナ３５０３が１２となる。結果的にコンテナ３５０１のサイズは５となる。こうして得られたパターンＢのレイアウト結果を一時保存しておく。
【０１７５】
次に、コンテナ集合の中で一番優先度の高いコンテナを抽出する。このコンテナ集合にはレイアウトの優先度は設定されていないので、すべて同じである。その場合は、このコンテナ集合の一番左上に存在するコンテナを優先度が高いコンテナとして抽出する。よって、コンテナ３５０１が抽出される。ここで、一時保存した上記パターンＡ，Ｂのレイアウト結果のうち、コンテナ３５０１が実際のサイズに近くレイアウトされているパターンを検出する。コンテナ３５０１の実際のサイズは８であるため、７．５と計算された（１５）式に基づくパターンＡのレイアウト結果が垂直方向のレイアウト結果として扱われる。
【０１７６】
次に水平方向について、計算を行う（Ｓ３２０７，Ｓ３２０８）。コンテナ３５０１は縦横比を考慮する設定がされているため、垂直サイズ７．５より水平方向のサイズを計算する（Ｓ３２０７）。水平方向のサイズをａｈとすると、
２２：８＝ａｈ：７．５  …（２１）
と表すことができる。式（２１）より、ａｈ＝２０．６…が求まる。よって、コンテナ３５０１の水平サイズは２０．６となる。
【０１７７】
ここで、コンテナ３５０１の水平サイズが求まったことにより、次の等式、
２０．６＋５＋ｂｈ＝４０  …（２２）
が成り立つ。ｂｈはコンテナ３５０２の水平サイズである。（２２）式はレイアウト集合の水平サイズに対する等式であり、この等式よりｂｈ＝１４．４が求まる。コンテナ３６０３の水平サイズは固定なので、そのまま４０である。以上の式（１５）〜（２２）を用いて求めたレイアウト結果を垂直・水平の順で計算したレイアウト結果として一時保存する（Ｓ３２０９）。
【０１７８】
次に、水平・垂直で一時保存したレイアウト結果と、垂直・水平で一時保存したレイアウト結果の比較によりレイアウト調整を行う（Ｓ３２１０）。前述したとおり、このレイアウト集合には優先度が設定されていないため、一番左上に位置するコンテナ３５０１を一番優先度の高いコンテナとして扱う。そのコンテナ３５０１のレイアウト結果が理想のサイズに近い方をレイアウト集合のレイアウト結果として設定する。コンテナ３５０１について水平・垂直の順で計算したレイアウト結果は水平方向１０、垂直方向３．６である。垂直・水平の順で計算したレイアウト結果は水平方向２０．６、垂直方向７．５である。コンテナ３５０１に挿入されるコンテンツ３５０５の実際のサイズ（理想サイズ）は水平方向２２、垂直方向８であるため、垂直・水平の順で計算したレイアウト結果のほうが、実際のサイズ（理想サイズ）に近いレイアウトになる。したがって、垂直・水平の順で計算したレイアウト結果をコンテナ集合のレイアウト結果として設定する（Ｓ３３０７〜Ｓ３３０９）。計算後のレイアウト結果はコンテナ３５０８〜３５１０で示す通りである。なお、今回はレイアウト調整を行う際の対象がイメージデータであったため実際のサイズが理想サイズとなっているが、対象がテキストデータであった場合は、テキストデータが保持するコンテンツ量とテキストデータが流し込まれるコンテナのフォント属性やコンテナ属性に基づいて理想サイズが決定される。
【０１７９】
次に図３６のレイアウトフローについて説明をする。図３６は図３５と同じレイアウト集合に対して優先度を設定したものである。優先度はコンテナ３６０１に７５％、コンテナ３６０２に５０％、コンテナ３６０３に２５％が設定されている。これらのコンテナに対してコンテンツ３６０５、３６０６、３６０７が挿入される。コンテンツのサイズまたページ幅（６０）は図３５の場合と同じである。
【０１８０】
まず、各コンテナに設定された優先度を取得し（Ｓ３２０１）、水平方向のレイアウト計算を行う（Ｓ３２０２）。計算後の水平方向のコンテナサイズとして、コンテナ３６０１はａｈ、コンテナ３６０２はｂｈ、コンテナ３６０３はｃｈとする。水平方向にかかるコストｋｈは、
ｋｈ＝(ａｈ−２２)2＋(ｂｈ−６０)2  …（２３）
と表すことができる。コンテナ３６０３については、水平方向のサイズが固定であるためコストはかからない。
【０１８１】
各コンテナの優先度を考慮した上で、コストｋが最小になるときは、
75/100(ａｈ−２２)＝50/100(ｂｈ−６０)  …（２４）
のときである。また、レイアウト計算後のレイアウト集合のサイズより、
ａｈ＋ｂｈ＋５＝４０  …（２５）
と表すことができる。
【０１８２】
（２４）、（２５）の等式より、各コンテナの計算後のサイズが求められる。計算後のコンテナサイズは、コンテナ３６０１が３．５、コンテナ３５０２が３１．５となる。ここで、図３５と同様に、コンテナ３６０１に最小値１０・最大値３０が設定されているとすると、水平方向のレイアウト結果は、コンテナ３６０１は１０、コンテナ３６０２は２５になる。また、コンテナ３６０３は変化しないので４０である。
【０１８３】
次に垂直方向について計算を行う（Ｓ３２０３、Ｓ３２０４）。コンテナ３６０１は縦横比を考慮する設定がされているため、水平サイズ１０より垂直方向のサイズを計算する。垂直方向のサイズをａｖとすると、
２２：８＝１０：ａｖ  …（２６）
と表すことができる。（２６）式より、ａｖ＝３．６…が求まる。よって、コンテナ３６０１の垂直サイズは３．６となる。
【０１８４】
ここで、コンテナ３６０１の垂直サイズが求まったことにより、次の等式、
３．６＋３＋ｃｖ＝２０  …（２７）
が成り立つ。ｃｖはコンテナ３６０３の垂直サイズである。（２７）式はレイアウト集合の垂直サイズに対する等式であり、この等式よりｃｖ＝１３．４５が求まる。さらに、コンテナ３６０３の垂直サイズが求まったことにより、次の等式、
ｂｖ＋２＋１３．４５＝２０  …（２８）
も成り立つ。ここで、ｂｖはコンテナ３６０２の垂直サイズである。（２８）式は、レイアウト集合の垂直サイズに対する等式であり、この等式よりｂｖ＝４．６が求まる。以上、（２３）〜（２８）式で求めたレイアウト結果を水平・垂直の順で計算したレイアウト結果として一時保存する（Ｓ３２０５）。
【０１８５】
次に、レイアウト計算を垂直方向から行う（Ｓ３２０６）。垂直方向のコストは２通り存在する。
【０１８６】
ｋｖ1＝(ａｖ−８)2＋（ｃｖ−１０)2  …（２９）
ｋｖ2＝(ｂｖ−４)2＋（ｃｖ−１０)2  …（３０）
である。以下、（２９）式によるレイアウト計算をパターンＡ、（３０）式によるレイアウト計算をパターンＢとする。まずパターンＡについて計算を行う。
【０１８７】
各コンテナの優先度を考慮したうえで、コストｋｖ1が最小になるのは、
75/100（ａｖ−８）＝25/100（ｃｖ−１０）  …（３１）
のときである。また、レイアウト計算後のレイアウト集合のサイズより、
ａｖ＋ｃｖ＋３＝２０  …（３２）
と表すことができる。
【０１８８】
（３１）、（３２）の等式より、各コンテナの計算後のサイズが求められる。計算後のコンテナサイズは、コンテナ３６０１が７．６、コンテナ３６０３が９．４となる。結果的にコンテナ３６０２のサイズは８．６となる。このパターンＡのレイアウト結果を一時保存しておく。
【０１８９】
次にパターンＢについて計算を行う。各コンテナの優先度は等しいので、コストｋｖ2が最小になるのは、
50/100（ｂｖ−４）＝25/100（ｃｖ−１０）  …（３３）
のときである。また、レイアウト計算後のレイアウト集合のサイズより、
ｂｖ＋ｃｖ＋２＝２０  …（３４）
と表すことができる。（３３）、（３４）の等式より、各コンテナの計算後のサイズが求められる。計算後のコンテナサイズは、コンテナ３６０２が５．３、コンテナ３６０３が１２．７となる。結果的にコンテナ３６０１のサイズは４．３となる。このパターンＢのレイアウト結果を一時保存しておく。
【０１９０】
ここで、コンテナ集合の中で一番優先度の高いコンテナを抽出する。このコンテナ集合の中で一番優先度が高く設定されているのは、コンテナ３６０１である。ここで、一時保存したパターンＡとパターンＢのレイアウト結果のうち、コンテナ３６０１が実際のサイズに近くレイアウトされているパターンを検出する。コンテナ３６０１に挿入されるコンテンツ３６０５の実際のサイズは８であるため、７．６と計算されたパターンＡのレイアウト結果が垂直方向のレイアウト結果として扱われる。
【０１９１】
つぎに水平方向について、計算を行う（Ｓ３２０７，Ｓ３２０８）。コンテナ３６０１は縦横比を考慮する設定がされているため、垂直サイズ７．６より水平方向のサイズを計算する（Ｓ３２０７）。水平方向のサイズをａｈとすると、
２２：８＝ａｈ：７．６  …（３５）
と表すことができる。（３５）式より、ａｈ＝２０．９…が求まる。よって、コンテナ３６０１の水平サイズは２０．９となる。ここで、コンテナ３６０１の水平サイズが求まったことにより、次の等式、
２０．９＋５＋ｂｈ＝４０  …（３６）
が成り立つ。ｂｈはコンテナ３６０２の水平サイズである。（３６）式はレイアウト集合の水平サイズに対する等式であり、この等式よりｂｈ＝１４．１が求まる。コンテナ３６０３の水平サイズは固定なので、そのまま４０である。
【０１９２】
以上、（２９）〜（３６）式で求めたレイアウト結果を垂直・水平の順で計算したレイアウト結果として一時保存する（Ｓ３２０９）。
【０１９３】
次に、水平・垂直で一時保存したレイアウト結果と、垂直・水平で一時保存したレイアウト結果の比較により、レイアウト調整を行う（Ｓ３２１０）。このレイアウト集合では、コンテナ３６０１が一番優先度の高いコンテナであるため、そのコンテナ３５０１のレイアウト結果が理想のサイズに近い方をレイアウト集合のレイアウト結果として設定する。コンテナ３６０１について水平・垂直の順で計算したレイアウト結果は水平方向１０、垂直方向３．６である。垂直・水平の順で計算したレイアウト結果は水平方向２０．９、垂直方向７．６である。コンテナ３６０１に挿入されるコンテンツ３６０５の実際のサイズは水平方向２２、垂直方向８であるため、垂直・水平の順で計算したレイアウト結果のほうが、実際のサイズに近いレイアウトになる。したがって、垂直・水平の順で計算したレイアウト結果をコンテナ集合のレイアウト結果として設定する（特に、Ｓ３３０７〜Ｓ３３０９）。計算後のレイアウト結果は、図３６においてコンテナ３６０８〜３６１０で示す通りである。このように、水平・垂直または垂直・水平の両方向からの計算結果を比較することによって最適なレイアウトを作成することが可能となる。
【０１９４】
図３５のレイアウト結果と比べてみると、優先度を設定した図３６のレイアウト結果は、優先度を高く設定したコンテナが最適（理想サイズに近く）にレイアウトされていることが分かる。
【０１９５】
以上のように、本実施形態によれば、自動レイアウトシステムにおいて、複数のコンテナが関連付けられており、相互に影響を与えながらレイアウトを変化させるような場合においても、流し込まれるコンテンツデータのコンテンツサイズを考慮しながら、各コンテナに優先順位の設定が可能になるため、ユーザがアピールしたいコンテナを、他のコンテナに比べ優先的にコンテナサイズ（領域サイズ）を計算することが可能になる。また、設定する優先度（割合）の重みを付けて計算させることにより、さまざまなバリエーションの優先順位を設定可能にし、互いのコンテナ間でネゴシエーションしてレイアウト計算を行えるようになる。さらに、設定した優先順位を視覚的に示すことが可能になるため、ユーザは自動レイアウトした後のレイアウト結果を予測しやすくなる。
【０１９６】
なお、本発明は、上記形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体(又は記録媒体)を、システム又は装置に供給し、そのシステム又は装置のコンピュータ(又はＣＰＵやＭＰＵ)が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成されることは云うまでもない。
【０１９７】
この場合、記憶媒体から読み出されたプログラムコード自体が上記実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(ＯＳ)などが実際の処理の一部又は全部を行い、その処理によって上記実施の形態の機能が実現される場合も含まれることは云うまでもない。
【０１９８】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わる記憶媒体に書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは云うまでもない。
また、本発明は、上記実施の形態の機能を実現するソフトウェアのプログラムコードがネットワークを介して配信されることにより、システム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納され、そのシステム又は装置のコンピュータ(又はＣＰＵやＭＰＵ)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行することによっても、達成されることは云うまでもない。
【図面の簡単な説明】
【０１９９】
【図１Ａ】実施形態によるバリアブルプリントシステムの構成を示す図である。
【図１Ｂ】図１におけるホストコンピュータの構成の概略を示す図である。
【図１Ｃ】バリアブルデータプリントの概要を説明する図である。
【図２】実施形態によるバリアブルプリントシステムの他の構成を示す図である。
【図３】メニューバー、ツールバー、ワークエリア、フローティングパレットを含む、実施形態によるユーザインターフェースの例を示す図である。
【図４】ユーザインターフェースにおけるコンテナの表示例を示す図である。
【図５】実施形態によるコンテナルールを説明する図である。
【図６】実施形態によるリンクの作成処理を説明するフローチャートである。
【図７】リンク作成時のユーザインターフェースの遷移例を示す図である。
【図８】実施形態のレイアウトエンジンによるレイアウト計算処理を示すフローチャートである。
【図９】実施形態のレイアウトエンジンによるレイアウト計算処理を示すフローチャートである。
【図１０】実施形態によるレイアウト計算処理を説明するための図である。
【図１１】実施形態のレイアウト計算時における、コンテナの集合について説明した図である。
【図１２】可変リンクによってコンテナを配置したときのユーザインターフェースにおける表示例を示す図である。
【図１３】実施形態のユーザインターフェースにより可変リンクを設定するための処理を説明するフローチャートである。
【図１４】実施形態によるリンクの設定ダイアログウインドウを示す図である。
【図１５】固定リンクによるレイアウト結果例を示す図である。
【図１６】可変リンクによるレイアウト結果例を示す図である。
【図１７】本実施形態による、サイズに関する優先度をコンテナに設定可能な自動レイアウト処理を示すフローチャートである。
【図１８】実施形態による優先度の設定処理を示すフローチャートである。
【図１９】実施形態による、優先度設定時のユーザインターフェース例を示す図である。
【図２０】実施形態による優先度表示処理を示すフローチャートである。
【図２１】実施形態による優先度表示処理時のユーザインターフェース例を示す図である。
【図２２】実施形態による優先度表示処理時のユーザインターフェース例を示す図である。
【図２３】実施形態による他の優先度表示処理を示すフローチャートである。
【図２４】図２３に示した優先度表示処理時のユーザインターフェース例を示す図である。
【図２５】実施形態による、優先度を考慮したレイアウト計算の全体的な処理を示すフローチャートである。
【図２６】水平あるいは垂直方向についてのレイアウト計算処理を示すフローチャートである。
【図２７】図２６のステップＳ２６１２の処理の詳細を示すフローチャートである。
【図２８】優先度を考慮しない場合のレイアウト計算例を示す図である。
【図２９】優先度を考慮した場合のレイアウト計算例を示す図である。
【図３０】縦横比を考慮したレイアウト計算処理を説明するフローチャートである。
【図３１】縦横比を考慮するレイアウト計算の一例を示す図である。
【図３２】縦横比および優先度を考慮したレイアウト計算処理を示すフローチャートである。
【図３３】縦横比および優先度を考慮したレイアウト計算処理における、レイアウト調整処理（３２１０）を示すフローチャートである。
【図３４】縦横比および優先度を考慮したレイアウト計算の処理例を示す図である。
【図３５】縦横比を考慮したレイアウト計算の処理例を示す図である。
【図３６】図３６のレイアウト計算に優先度を加味した場合のレイアウト計算の処理例を示す図である。
【図１Ａ】
2006048532.tif 000003
【図１Ｂ】
2006048532.tif 000004
【図１Ｃ】
2006048532.tif 000005
【図２】
2006048532.tif 000006
【図３】
2006048532.tif 000007
【図４】
2006048532.tif 000008
【図５】
2006048532.tif 000009
【図６】
2006048532.tif 000010
【図７】
2006048532.tif 000011
【図８】
2006048532.tif 000012
【図９】
2006048532.tif 000013
【図１０】
2006048532.tif 000014
【図１１】
2006048532.tif 000015
【図１２】
2006048532.tif 000016
【図１３】
2006048532.tif 000017
【図１４】
2006048532.tif 000018
【図１５】
2006048532.tif 000019
【図１６】
2006048532.tif 000020
【図１７】
2006048532.tif 000021
【図１８】
2006048532.tif 000022
【図１９】
2006048532.tif 000023
【図２０】
2006048532.tif 000024
【図２１】
2006048532.tif 000025
【図２２】
2006048532.tif 000026
【図２３】
2006048532.tif 000027
【図２４】
2006048532.tif 000028
【図２５】
2006048532.tif 000029
【図２６】
2006048532.tif 000030
【図２７】
2006048532.tif 000031
【図２８】
2006048532.tif 000032
【図２９】
2006048532.tif 000033
【図３０】
2006048532.tif 000034
【図３１】
2006048532.tif 000035
【図３２】
2006048532.tif 000036
【図３３】
2006048532.tif 000037
【図３４】
2006048532.tif 000038
【図３５】
2006048532.tif 000039
【図３６】
2006048532.tif 000040