(57)【要約】      （修正有）【課題】レイアウト時に設定されたコンテナのサイズを適切に維持し、レイアウト設計時のユーザの意図を反映したレイアウト処理を実現する。【解決手段】複数のコンテナを有するテンプレートのレイアウトを、コンテナに流し込まれるコンテンツデータに応じて動的に変更するレイアウト処理は、コンテナに対して流し込まれるコンテンツデータのサイズに適応するべく該コンテナのサイズをレイアウト設定時の基準サイズから変更する変更処理と、リンクで関連付けられた複数のコンテナのうち、少なくとも一つのコンテナがレイアウト設定時の基準サイズから変更される場合、該複数のコンテナの各々のサイズを各コンテナに流し込まれるコンテンツデータのサイズに基づいて決定する。そして、ベーシックサイズ優先が設定されたコンテナに対しては、流し込まれるコンテンツデータのサイズが当該コンテナの基準サイズより大きい場合にのみ変更処理を実行する。【選択図】  図２３Ｂ
2006074224.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１４１１に設定される現在の値には、現在のレイアウトとして配置されているコンテナの間の距離がデフォルト値として自動的に入力されるようにしてもよい。
【０１１５】
図１５は固定サイズのリンクを使用した場合のレイアウト結果を示している。レイアウト計算方法は前述したとおりに従って行われる。例えば図１２においてコンテナ１２０３とコンテナ１２０４にそれぞれ違ったサイズのイメージデータが挿入された場合を考える。この場合、それぞれのコンテナはデータの大きさを最適とみなし、コンテナ１２０３は挿入されたイメージサイズになる枠１５０４（最適コンテナサイズ）に近づこうと右方向へ、同様にコンテナ１２０４は挿入されたイメージサイズになる枠１５０５（最適コンテナサイズ）に近づこうと左方向へサイズを変更しようとする。しかしコンテナ１２０３とコンテナ１２０４はアンカー１２０１とアンカー１２０２によってそれぞれ左辺１２１２と右辺１２１３の移動ができず、上記のようにサイズを変更しようとすると両者の間隔を狭めるしかない。しかしながら、コンテナ間には固定サイズのリンク１５０３が設定されており、レイアウト計算時にその長さ維持されるため、コンテナ１２０３とコンテナ１２０４のサイズが変更されることになる。
【０１１６】
その結果、コンテナ１２０３とコンテナ１２０４はデータの縦横比に合わせた最適なサイズを確保することが出来ず、最終的に図１５に示すように、最適なサイズ（枠１５０４、枠１５０５）よりも小さくなってしまう。すなわちリンク１５０３のサイズが固定であるためコンテナ１５０１とコンテナ１５０２は最適サイズを達成できない（図１５において、各コンテナ内の一点差線で示した範囲がデータの持つ縦横比である）。
【０１１７】
一方、図１６は図１５と同様の状態でリンクを可変サイズにした場合を示している。この場合、上記の例でコンテナ１２０３とコンテナ１２０４の間には図示の通り可変サイズのリンクが設定されている。したがって、コンテナ１２０３とコンテナ１２０４のサイズが変更される際には、リンクサイズが縮まることでコンテナ１２０３とコンテナ１２０４のサイズを図１５の例より大きくすることができる。この結果、挿入されるデータサイズに合わせた最適なサイズを達成できる、あるいはより挿入データサイズ（最適サイズ）に近いコンテナの枠を設定することが出来る。図１６はこの結果を示しており、可変リンク１２０９はレイアウト計算の結果、可変リンク１６０３に示されるようなサイズ状態となる。なお、この場合コンテナ１２０３とコンテナ１２０４はそれぞれ最適なサイズ（データサイズに合った大きさ）になっている。
【０１１８】
［ベーシックサイズ優先のレイアウト方法］
図１７は本実施形態によるベーシックサイズ優先のレイアウト方法を説明する図である。なお、ベーシックサイズとは、コンテナの作成時（レイアウト設計時）において設定された基準サイズのことである。
【０１１９】
図１７(Ａ)は、コンテナに何もコンテンツが挿入されていないときの状態を示している。このときのコンテナ１７０１のサイズはレイアウト設計時のものであり、ベーシックサイズを表している。矩形１７０１はコンテナを表しており、上辺・左辺・下辺が固定、そして右辺が可変に設定されている。表示上、辺の状態を区別するために上辺・左辺・下辺は実線、右辺は点線にして示している。
【０１２０】
図１７（Ｂ）はコンテナ１７０１にテキストのコンテンツが流し込まれ、コンテナ1７０２となった状態を示している。コンテナ１７０２によって示されるように、コンテンツであるテキストは、コンテナの左上から右下方向へフローしている。このケースではコンテナ１７０２に挿入されたコンテンツサイズはコンテナ１７０２のサイズよりも小さい。本実施形態によるベーシックサイズ優先のレイアウト方法では、このような場合には、ベーシックサイズを優先させるためにコンテナのサイズを変化させない。なお、（Ｂ）において、１７０３はコンテナ１７０２の右辺がコンテンツサイズの合わせて移動する動きがないことを示している。
【０１２１】
図１７（Ｃ）はコンテナ１７０１に図１７（Ｂ）の場合とは異なるテキストのコンテンツが流し込まれたときの別の例を示している。流し込まれたテキストは、コンテナの左上から右下方向へフローしている。このケースではコンテナ１７０４に挿入されたコンテンツサイズはコンテナ１７０４のサイズよりも大きい。よって図１７（Ｃ）では、テキストがコンテナ１７０４から溢れ出ている（オーバーフロー）ことを示している。この場合、コンテンツを全て表示させるためにコンテナ１７０４のサイズを変化させることが望まれる。
【０１２２】
図１７（Ｄ）は図１７（Ｃ）からレイアウト処理が行われた状態を示している。コンテナ１７０５は、図１７（Ｃ）のコンテナ１７０４のサイズが変化した後の状態を示している。コンテナ１７０５の右辺は可変に設定されているため、コンテナは右に大きくなることが出来、矢印１７０６はコンテナ１７０５が右方向に大きくなろうとしている状態を示している。コンテナに挿入されたコンテンツを全て表示しようとした結果、コンテナ１７０４は最終的にコンテナ１７０５の大きさとなり、結果的にコンテナ１７０５に挿入したコンテンツを全て表示することが出来る。なお、１７０７はコンテナ１７０５の右辺の元の位置（ベーシックサイズにおける位置）を示している。これは、図１７（Ｃ）のコンテナ１７０４の右辺と同じ位置である。レイアウト計算後のコンテナ１７０５の右辺が１７０７の位置よりも右側にあるため、コンテナサイズが大きくなったことが分かる。
【０１２３】
図１７（Ｅ）はコンテナにテキストのコンテンツが入ってきたときの別の例を示している。この例ではコンテンツが挿入されるだけでなく、外部の要素から何らかの影響がある場合を示している。外部の要素の典型的な例はコンテナである。図１７（Ｅ）では、コンテナ１７０８は外部要素の影響１７０９を受けている状態が示されている。また、コンテナ１７０８にはテキストのコンテンツが流し込まれており、そのテキストはコンテナの左上から右下方向へフローしている。このケースではコンテナ１７０８に挿入されたコンテンツサイズはコンテナ１７０８のサイズよりも小さい。従って、図１７（Ｂ）で説明したように、コンテンツサイズによるコンテナ１７０８のサイズの変化は生じない。しかしながら、この場合は外部要素から何らかの影響１７０９をコンテナの右辺に受けているため、コンテナサイズを変化させ、レイアウトすることが望まれる。
【０１２４】
図１７（Ｆ）は図１７（Ｅ）の状態からレイアウト処理が行われる直前の状態を示している。ここでは外部要素１７１１がコンテナ１７１０を押してきた場合の動作について述べる。レイアウト処理前であるのでコンテナ１７１０は図１７（Ｅ）のコンテナ１７０８のサイズと同様である。外部要素１７１１がコンテナ１７１０を押してくると、コンテナ１７１０はサイズを保つことなく、外部要素１７１１との間でレイアウト計算を行う。矢印１７１３は外部要素１７１１がコンテナ１７１０を押す方向を示している。また矢印１７１２はコンテナ１７１０が外部要素１７１１によって押されることで、外部要素１７１１とレイアウト計算を行うことを示している。１７１４はコンテナ１７１０と外部要素１７１１のレイアウト上での衝突状態を示している。なお、図１７（Ｅ）にある矢印１７０９のような外部要素からの押すための力を「押す力」として以降記述する。
【０１２５】
以上のようにベーシックサイズ優先のレイアウト方法は、以下の３点の規則に則ってレイアウト処理が制御される。
１．コンテナサイズよりも小さいコンテンツが挿入された時、かつ外部要素からの影響がないときは、コンテナサイズを変化させない。
２．コンテナサイズよりも大きいコンテンツが挿入された時は、自らコンテナサイズを変化させようとする。
３．コンテンツサイズに関わらず、外部要素から影響を受ける場合は、外部要素とのレイアウト計算を行う。なお、ここでいう影響とは上述したように外部要素からの押す力または図１９で後述する引く力を指す。
このベーシックサイズ優先のレイアウト属性をコンテナごとに設定できるようにすることで、ユーザが予め設定したコンテナの基準サイズを反映したレイアウト処理を行うことが可能となる。
【０１２６】
［コンテンツサイズ優先のレイアウト方法］
図２７はコンテンツサイズ優先のレイアウト方法を説明している図である。
【０１２７】
図２７（Ａ）はコンテナ２７０１にテキストコンテンツが流し込まれた状態の一例を示している。コンテナの状態については図１７（Ａ）と同じく、コンテナの右辺のみが可変に設定されている。また、コンテナ２７０１においてテキストコンテンツはコンテナ２７０１の左上から右下方向へフローしている。このケースではコンテナ２７０１に挿入されたコンテンツサイズはコンテナ２７０１のサイズよりも小さい。しかしコンテンツサイズ優先のレイアウト方法では、コンテンツサイズを優先させるので、コンテンツの大きさに合わせてコンテナサイズを変化させる。
【０１２８】
図２７（Ｂ）は図２７（Ａ）の状態からコンテンツサイズ優先によるレイアウト処理が行われた状態を示している。コンテナ２７０２は図２７（Ａ）のコンテナ２７０１のサイズが変化した後の大きさを示している。コンテナ２７０２の右辺が可変に設定されているため、コンテナは右辺が移動することによってコンテナサイズを小さくなることが出来る。矢印２７０３はコンテナ２７０２が左方向に小さくなろうとしている状態を示している。コンテナ２７０２に挿入されたコンテンツに合わせ、コンテナのサイズを小さくしようとした結果、コンテナ２７０１は最終的にコンテナ２７０２の大きさとなり、結果的にコンテナ２７０２に挿入したコンテンツに合わせたコンテナサイズにすることが出来る。なお、２７０４はコンテナ２７０２の右辺の元（ベーシック）サイズ位置を示している。これは図２７（Ａ）のコンテナ２７０１の右辺と同じ位置である。レイアウト計算後のコンテナ２７０２の右辺が２７０４の位置よりも左側にあるため、コンテナサイズが小さくなったことが分かる。
【０１２９】
図２７（Ｃ）はコンテナ２７０５にテキストコンテンツが流し込まれた状態の別の例を示している。コンテナ２７０５にテキストコンテンツが流し込まれ、テキストはコンテナの左上から右下方向へフローしている。このケースではコンテナ２７０５に挿入されたコンテンツサイズはコンテナ２７０５のサイズよりも大きい。よって図２７（Ｃ）ではテキストがコンテナ２７０５から溢れ出ている（オーバーフロー）ことを示している。この場合では、コンテンツを全て表示させたいため、コンテナ２７０５のサイズを変化させることが望まれる。
【０１３０】
図２７（Ｄ）は図２７（Ｃ）からレイアウト処理が行われた状態を示している。コンテナ２７０６は図２７（Ｃ）のコンテナ２７０５のサイズが変化した後の大きさを示している。コンテナ２７０６の右辺は可変に設定されているため、コンテナは右に大きくなることが出来る。矢印２７０７はコンテナ２７０６が右方向に大きくなろうとしている状態を示している。コンテナ２７０６に挿入されたコンテンツを全て表示しようとした結果、コンテナ２７０５は最終的にコンテナ２７０６の大きさとなり、結果的にコンテナ２７０６に流し込まれたコンテンツを全て表示することが出来る。なお、２７０８はコンテナ２７０６の右辺の元（ベーシック）サイズ位置を示している。これは図２７（Ｃ）のコンテナ２７０５の右辺と同じ位置である。レイアウト計算後のコンテナ２７０６の右辺が２７０８の位置よりも右側にあるため、コンテナサイズが大きくなったことが分かる。以上、図２７（Ｃ），（Ｄ）で説明したレイアウト処理は図１７（Ｃ），（Ｄ）のレイアウト処理と結果が同じになる。
【０１３１】
図２７（Ｅ）はコンテナ２７０９にテキストコンテンツが流し込まれた状態の別の例を示している。この例ではコンテンツが流し込まれるだけでなく、外部の要素から何らかの影響がある場合が示されており、コンテナ２７０９は外部要素の影響である押す力２７１０を受けている。また、コンテナ２７０９にはテキストコンテンツが流し込まれ、そのテキストはコンテナの左上から右下方向へフローしている。このケースではコンテナ２７０９に挿入されたコンテンツサイズはコンテナ２７０９のサイズと全く等しい。従って、通常はコンテナ２７０９のサイズは既に理想のサイズとなっているために変化しない。しかしながら、図２７（Ｅ）の場合では、外部要素から何らかの影響（押す力）２７１０をコンテナの右辺に受けているため、コンテナサイズを変化させ、レイアウトすることが望まれる。
【０１３２】
図２７（Ｆ）は図２７（Ｅ）からレイアウト処理が行われる直前の状態を示している。ここでは外部要素２７１２がコンテナ２７１１を押してきた場合の動作について述べる。レイアウト処理前であるのでコンテナ２７１１は図２７（Ｅ）のコンテナ２７０９のサイズと同様である。外部要素２７１２がコンテナ２７１１を押してくると、コンテナ２７１１はサイズを保つことなく、外部要素２７１２との間でレイアウト計算を行う。矢印２７１４は外部要素２７１２がコンテナ２７１１を押す方向を示している。また矢印２７１３はコンテナ２７１１が外部要素２７１２によって押されることで、外部要素２７１２とレイアウト計算を行うことを示している。２７１５はコンテナ２７１１と外部要素２７１２のレイアウト上での衝突状態を示している。
【０１３３】
以上のようにコンテンツサイズ優先のレイアウト方法は、以下の２点の規則に則ってレイアウト処理が制御される。すなわち、
１．コンテナサイズの大きさ如何に関わらず、コンテナは常にコンテンツサイズの大きさになろうと、サイズを変化させようとする。
２．挿入されたコンテンツサイズがコンテナサイズと全く同じで、コンテナサイズを変化させる必要がないにも関わらず、外部要素からの影響がある場合は、外部要素とのレイアウト計算を行う。なお、ここでいう影響も前述した通り押す力または引く力を指す。
このようにコンテンツサイズ優先のレイアウト属性をコンテナごとに設定できるようにすることで、コンテナは流し込まれるコンテンツサイズに基づいてサイズ変更が行われるのでコンテンツの実サイズを反映したレイアウトを作成することが可能となる。
【０１３４】
［ベーシックサイズ優先とコンテンツサイズ優先のコンテナへの設定］
上述したベーシックサイズ優先のレイアウト方法にするか、コンテンツサイズ優先のレイアウト方法にするか、はコンテナ毎に設定することが可能である。
【０１３５】
図２６はコンテナのプロパティを設定するユーザインターフェース（ＵＩ）ダイアログの一例を示す図である。プロパティダイアログウィンドウは、例えばキーボード１３２やマウス１３３によりコンテナを選択し、マウスの右クリックメニューの選択、あるいはキーボードからのAltキー等により表示させることができる。本実施形態ではコンテナのエッジを可変にするかどうか、そしてどのレイアウト方法を適用するか、またはそれに伴う設定に関してプロパティダイアログウィンドウ内に表示している。
【０１３６】
このプロパティダイアログウィンドウ２６０１は、タイトルバー２６０２、ツールボタン２６０３、プロパティダイアログウィンドウのオープン、クローズを行うボタン２６０４、各種の情報をセットするエリア２６５１で構成されている。このプロパティダイアログウィンドウ２６０１には、コンテナサイズを可変にするかを設定するための選択オプション２６１２〜２６１５を含むEdge Status（２６１１）がある。この選択オプションをＯＮにすると、Container Size（２６２１）内のBasic Sizeの指定ボックス（２６２５、２６２９）と、単位系の指定ボックス（２６２７、２６３１）以外がEnableされる。Basic Sizeの指定ボックス（２６２５、２６２９）と、単位系の指定ボックス（２６２７、２６３１）はコンテナの基準サイズを示しているため、常にEnableになっている。この例の場合、Edge Status２６１１においてRight（右辺）２６１４のみFlexible（可変）にチェックが入っているため、このコンテナは横方向（実際は右方向）にしかサイズを変化させることが出来ない。そのため、Container Size２６２１において、幅サイズの項目２６２４と２６２６がEnableとなり、高さサイズの項目２６２８と２６３０はDisableのままとなっている。
【０１３７】
図形２６２２はコンテナの幅サイズの指定、図形２６２３はコンテナの高さサイズの指定を視覚的に補助するビットマップである。ボックス２６２４（Min. Size）にはコンテナの幅の最小値が設定される。現在ここには値８０が設定されている。ボックス２６２５（Basic Size）にはコンテナの基本幅が表示されている。ボックス２６２６（Max. Size）にはコンテナの幅の最大値が設定される。現在ここには値１２０が設定されている。同様に２６２８はコンテナの高さの最小値、２６２９はコンテナの基本幅、２６３０はコンテナの高さの最大値が設定されることがある。リストボックス２６２７とリストボックス２６３１ではコンテナサイズの単位が設定される。ここでは単位の例としてｍｍが表示されているが、inchやpixel等も考えられる。このプロパティダイアログウィンドウ２６０１には上記の他に、ベーシックサイズとコンテンツサイズのどちらを優先してレイアウトの計算を進めるかの選択ボタン２６４２、２６４３を有する（Layout Method２６４２）。これらの２つの選択ボタンは、コンテナサイズが可変に設定されていない場合は、計算方法の優先を設定する必要がない。よって、Layout Method２６４２は、上述のEdge Status２６１１で選択オプション２６１２〜２６１５のいずれかがチェックされている場合にEnableとなる。ここでは選択ボタン２６４２（Prioritize Basic Size）が選択されているため、このコンテナに対してベーシックサイズを優先したレイアウト計算が行われることになる。
【０１３８】
２６４１のようにベーシックサイズを優先したレイアウト計算を行うか、またはコンテンツサイズを優先したレイアウト計算を行うかの設定を各コンテナに対して行えるようにすることで、予めデザインしたドキュメントテンプレートを生かしたレイアウト処理をするのか、それとも流し込まれるコンテンツサイズを反映したレイアウト処理をするのかといったユーザの意図を考慮したレイアウト処理を実現することができる。
【０１３９】
図２４は図２６で説明したＵＩプロパティダイアログによる設定処理を示すフローチャートである。なお、これらの処理はホストコンピュータ１０１内のプロセッサ１３５が制御することによって実現される。不図示のレイアウト編集画面上でコンテナが選択され、例えばマウスの右クリックによるメニュー選択によりＵＩプロパティダイアログの表示が指示されると、当該コンテナのＵＩプロパティダイアログ（図２６）を表示する（ステップＳ２４０２、ステップＳ２４０３）。ステップＳ２４０４〜Ｓ２４０６は、ＵＩプロパティダイアログにおける操作制限の制御である。まず、コンテナエッジを可変に設定されているかどうかをEdge Status２６１１内の各辺の項目に対して判断し（ステップＳ２４０４）、少なくとも一つのエッジが可変に設定されている場合には、可変に設定されたエッジに応じてコンテナサイズの最大値・最小値のボックス（２６２４，２６２６，２６２８，２６３０）をEnableにする（ステップＳ２４０５）。また同時にレイアウト方法の選択項目もEnableにする（ステップＳ２４０６）。
【０１４０】
ＵＩプロパティダイアログのＯＫボタンにより設定の実行が指示されると当該プロパティダイアログを閉じ、設定内容を対応するコンテナに適用する（ステップＳ２４０７、Ｓ２４０８）。一方、キャンセルボタンによりキャンセルが指示されると設定内容を破棄し、当該プロパティダイアログを閉じる（Ｓ２４０９、Ｓ２４１０）。
【０１４１】
［コンテナに対する処理］
図２３Ａ，Ｂはある１つのコンテナに注目し、設定されたレイアウト方法によってそのコンテナがどう動作するのかを示すフローチャートである。なお、これらの処理はホストコンピュータ１０１内のプロセッサ１３５が制御することによって実現される。
【０１４２】
図２３Ａにおいて、まずデータベースなどからデータをコンテナに流し込む（ステップＳ２３０２）。そしてそのコンテナに設定されているレイアウト方法がベーシックサイズ優先なのかコンテンツサイズ優先なのかを判断し（ステップＳ２３０３）、もしコンテンツサイズ優先であったならばネゴシエーション処理を行う（ステップＳ２３０４）。ここで言うネゴシエーション処理とは、前述の図８、または図９において説明をしたレイアウト計算のことである。そしてその後、レイアウト結果を表示して（ステップＳ２３０６）終了する。
【０１４３】
一方、ステップＳ２３０３において、コンテナに設定されているレイアウト方法がベーシックサイズ優先であったならば、ベーシックサイズ処理を行い（ステップＳ２３０５）、レイアウト結果を表示する（ステップＳ２３０６）。ベーシックサイズ処理では、図２３Ｂのフローチャートで示された処理に従ってレイアウト計算が行われる。
【０１４４】
ベーシックサイズ処理ではまず、そのコンテナに流し込まれたデータ（コンテンツ）がコンテナサイズと等しい或いはそれよりも小さいかどうかを判断する（ステップＳ２３１２）。すなわち、流し込まれたデータに対応する表示が当該コンテナからあふれる（オーバーフロー）かどうかをチェックし、あふれない場合に「コンテンツサイズがコンテナサイズと等しい或いはそれよりも小さい」と判定する。「コンテンツサイズがコンテナサイズと等しい或いはそれよりも小さい」場合には、他の関連付けされているコンテナから押される（押す力）、あるいは引っ張られる（引く力）といった影響があるかどうかを判断する（ステップＳ２３１３）。もし影響がない場合はそのまま何もレイアウト処理を行わず、つまりコンテナサイズを変化させず、ステップＳ２３０６でそのままレイアウト結果として表示させるべく、図２３Ｂの処理を終了する。
【０１４５】
ステップＳ２３１２においてコンテンツサイズがコンテナサイズより大きい場合はネゴシエーション処理を行って（ステップＳ２３１４）本処理を終了することにより、そのネゴシエーション結果をレイアウト結果として表示させる（ステップＳ２３０６）。また、ステップＳ２３１３において他のコンテナからの影響（押す力または引く力）があると判定された場合は、そのコンテナと関連するコンテナとネゴシエーション処理を行って（ステップＳ２３１４）本処理を終了することにより、そのネゴシエーション結果をレイアウト結果として表示させる（ステップＳ２３０６）。なお、Ｓ２３１４で行うネゴシエーション処理は前述の図８、または図９において説明をしたレイアウト計算のことである。
【０１４６】
［ベーシックサイズ優先とコンテンツサイズ優先のコンテナが関連づけられた場合のレイアウト処理の例］
図１８〜図２０はベーシックサイズ優先のレイアウト方法を適用したコンテナとコンテナサイズ優先のレイアウト方法を適用したコンテナが、関連付けられている場合において、それらがどのようにレイアウト処理されるのかを示した図である。
【０１４７】
図１８（Ａ）ではコンテナ１８０１と１８０２が配置され、コンテンツが挿入された状態を示している。コンテナ１８０１とコンテナ１８０２はリンク１８０３で関連付けられている。そしてコンテナ１８０１にはベーシックサイズ優先のレイアウト方法、コンテナ１８０２にはコンテンツサイズ優先のレイアウト方法が設定されている。コンテナ１８０１は上辺・左辺・下辺が固定、そして右辺が可変に設定されている。コンテナ１８０２は上辺・右辺・下辺が固定、そして左辺が可変に設定されている。コンテナ１８０１とコンテナ１８０２にテキストコンテンツが流し込まれ、そのテキストはコンテナの左上から右下方向へフローしている。
【０１４８】
コンテナ１８０１ではコンテナ１８０１に挿入されたコンテンツサイズはコンテナ１８０１のサイズよりも小さい。よってベーシックサイズ優先のレイアウト方法では、まずベーシックサイズ（コンテナの基準サイズ：コンテナ作成時に決定されたサイズ）を優先させるため、コンテナ１８０１は自身のコンテンツサイズによる変化は生じない。一方、コンテナ１８０２では、挿入されたコンテンツサイズがコンテナ１８０２のサイズよりも大きい。図１８（Ａ）ではそのような状態をテキストがコンテナ１８０２から溢れ出ていることで示している。コンテンツサイズ優先のレイアウト方法では、まずコンテンツサイズ（データベース等から挿入されるデータサイズ）を優先させるため、コンテンツを全て表示させるためにコンテナ１８０２のサイズを変化させる。
【０１４９】
図１８（Ｂ）は図１８（Ａ）からレイアウト処理が行われた状態を示している。コンテナ１８０５はレイアウト処理によって図１８（Ａ）のコンテナ１８０１のサイズが変化したものである。またコンテナ１８０６はレイアウト処理によって図１８（Ａ）のコンテナ１８０２のサイズが変化したものである。コンテナ１８０１はベーシックサイズ優先のレイアウト方法が設定されているが、コンテナ１８０２がコンテンツサイズに合わせるためにコンテナ１８０１を押してくるため、コンテナ１８０１はコンテナ１８０２から影響（押す力）１８０４を受けることとなる。このため、コンテナ１８０１とコンテナ１８０２に間ではネゴシエーション処理が実行され、レイアウトが計算される。図１８（Ｂ）ではコンテナ１８０１がコンテナ１８０５のサイズに変化し、コンテナ１８０２はコンテナ１８０６のサイズに拡大している。１８０９はコンテナ１８０６の左辺の元（ベーシック）サイズ位置を示している。これは図１８（Ａ）のコンテナ１８０２の左辺と同じ位置である。レイアウト計算後のコンテナ１８０６の左辺が１８０９の位置よりも左側にあるため、コンテナサイズが大きくなったことが分かる。またその分コンテナ１８０５の大きさは小さくなっている。
【０１５０】
図１９（Ａ）では、コンテナ１９０１，１９０２が配置され、テキストコンテンツが挿入された状態が示されている。コンテナ１９０１とコンテナ１９０２はリンク１９０３で関連付けられている。また、コンテナ１９０１にはベーシックサイズ優先のレイアウト方法が、コンテナ１９０２にはコンテンツサイズ優先のレイアウト方法が設定されている。コンテナ１９０１は上辺・左辺・下辺が固定、そして右辺が可変に設定されている。コンテナ１９０２は上辺・右辺・下辺が固定、そして左辺が可変に設定されている。
【０１５１】
コンテナ１９０１とコンテナ１９０２にテキストコンテンツが流し込まれ、そのテキストはコンテナの左上から右下方向へフローしている。コンテナ１９０１に流し込まれたテキストコンテンツのコンテンツサイズはコンテナ１９０１のサイズよりも小さく、上述したようにベーシックサイズ優先が設定されているコンテナ１９０１ではコンテンツサイズに起因したコンテナサイズの変化は生じない。一方、コンテナ１９０２に流し込まれたテキストコンテンツのサイズもコンテナ１９０２のサイズより小さい。しかしながら、コンテンツサイズ優先のレイアウト方法では、コンテンツサイズに合わせるためにコンテナ１９０２のサイズを変化させる処理が実行されるため、１９０４に示した矢印のような引く力が発生する。
【０１５２】
図１９（Ｂ）は図１９（Ａ）からレイアウト処理が行われた後の状態を示している。コンテナ１９０５は図１９（Ａ）のコンテナ１９０１に対応している。またコンテナ１９０６は図１９（Ａ）のコンテナ１９０２に対応している。コンテナ１９０２がコンテンツサイズに合わせるためにコンテナ１９０１を引っ張ってくるため、コンテナ１９０１はコンテナ１９０２から引く力１９０４を受けることとなる。このため、コンテナ１９０１にはベーシックサイズ優先のレイアウト方法が設定されていることにより通常はコンテナサイズの変更は行われないが、この場合コンテナ１９０２のサイズをコンテンツサイズにあわせるためサイズの変更処理が行われコンテナ１９０６の状態となり、その際に生じる引く力１９０４によってコンテナ１９０１はコンテナ１９０５のサイズとなる。このように、上述の押す力のみだけでなく引く力によってもベーシックサイズは変更されることとなる。
【０１５３】
図２０（Ａ）ではコンテナ２００１とコンテナ２００２があり、それらはリンク２００３で関連付けられている。コンテナ２００１にはベーシックサイズ優先のレイアウト方法、コンテナ２００２にはコンテンツサイズ優先のレイアウト方法が設定されている。また、コンテナ２００１は上辺・左辺・下辺が固定、そして右辺が可変に設定されている。コンテナ２００２は上辺・右辺・下辺が固定、そして左辺が可変に設定されている。また、コンテナ２００１とコンテナ２００２にはテキストコンテンツが流し込まれており、テキストはコンテナの左上から右下方向へフローしている。コンテナ２００１ではコンテナ２００１に挿入されたテキストコンテンツのサイズはコンテナ２００１のサイズよりも大きい。よってテキストがコンテナ２００１から溢れ出ている。ベーシックサイズ優先のレイアウト方法では、この場合はコンテンツを全て表示しようとするため、コンテナのサイズを変化させようとする。コンテナ２００２においても流し込まれたテキストコンテンツのサイズはコンテナ２００２のサイズよりも大きい。よってテキストがコンテナ２００２から溢れ出ている。コンテンツサイズ優先のレイアウト方法では、まずコンテンツサイズを優先させるため、コンテンツのサイズに合わせるためにコンテナ２００２のサイズを変化させようとする。
【０１５４】
図２０（Ｂ）は図２０（Ａ）からレイアウト処理が行われる直前までの状態を示している。コンテナ２００４は図２０（Ａ）のコンテナ２００１に、コンテナ２００５はコンテナ２００２に対応し、両コンテナ間に発生した影響が矢印２００７、２００８により示されている。なお、この影響は両コンテナとも互いに押し合っているので矢印２００７、２００８は押す力である。コンテナ２００４はベーシックサイズ優先のレイアウト方法が設定されているが、コンテンツサイズが大きいためコンテナサイズを広げようとする。コンテナ２００５はコンテンツサイズ優先のレイアウト属性が設定されているため、コンテナ２００５はコンテンツサイズに合わせるように拡大しようとする。そのため、両コンテナ間で押し合いが発生することとなるため、コンテナ２００４とコンテナ２００５の間ではネゴシエーション処理が実行され、レイアウトが計算される。２００９はコンテナ２００４とコンテナ２００５間にレイアウトの衝突が起きていることを示している。この場合、コンテナ２００４は矢印２００７の方向に、コンテナ２００５は矢印２００８の方向にそれぞれコンテナサイズを変化させようとしている。よってお互いが押し合うため衝突が起きている。
【０１５５】
図２０（Ｃ）は図２０（Ｂ）からレイアウト処理が行われた後の状態を示している。コンテナ２０１０は図２０（Ｂ）のコンテナ２００４のサイズが変化した後の大きさを示している。またコンテナ２０１１は図２０（Ｂ）のコンテナ２００５のサイズが変化した後の大きさを示している。図２０（Ｂ）より、コンテナサイズとコンテンツサイズの差（コンテンツのオーバーフローの量）がコンテナ２００４の方が大きいため、ネゴシエーション処理の結果、コンテナ２００４がコンテナ２０１０のサイズに（矢印２０１３の方向に）拡大している。２０１４はコンテナ２０１０の右辺の元（ベーシック）サイズ位置を示している。これは図２０（Ｂ）のコンテナ２００４の右辺と同じ位置である。レイアウト計算後のコンテナ２０１０の右辺が２０１４の位置よりも右側にあるため、コンテナサイズが大きくなったことが分かる。これによって、コンテナ２０１１はサイズが小さくなっている。また、コンテナ２０１０とコンテナ２０１１内のコンテンツのフォントは、コンテナ内に全て表示するために縮小されている。
【０１５６】
［ベーシックサイズ優先のコンテナが関連づけられた場合のレイアウト処理の例］
図２１はベーシックサイズ優先のコンテナが関連づけられた場合における、レイアウト処理の一例を示す図である。
【０１５７】
図２１（Ａ）では、コンテナ２１０１とコンテナ２１０２があり、それらはリンク２１０３で関連付けられている。コンテナ２１０１、２１０２にはベーシックサイズ優先のレイアウト方法が設定されている。コンテナ２１０１は上辺・左辺・下辺が固定、そして右辺が可変に設定されている。コンテナ２１０２は上辺・右辺・下辺が固定、そして左辺が可変に設定されている。コンテナ２１０１とコンテナ２１０２にテキストコンテンツが流し込まれ、そのテキストはコンテナの左上から右下方向へフローしている。コンテナ２１０１では、流し込まれたテキストコンテンツのサイズはコンテナ２１０１のサイズよりも大きい。よって図ではテキストがコンテナ２１０１から溢れ出ていることを示している。この場合、コンテンツを全て表示しようとするため、コンテナのサイズを変化させようとする。一方、コンテナ２１０２では、流し込まれたテキストコンテンツのサイズはコンテナ２１０２のサイズよりも小さい。コンテナ２１０２はベーシックサイズ優先であるので、流し込まれたコンテンツサイズに起因してコンテナサイズを変更することはない。
【０１５８】
図２１（Ｂ）は図２１（Ａ）からレイアウト処理が行われる直前までの状態を示している。コンテナ２１０４はコンテナ２１０１に、コンテナ２１０５はコンテナ２１０２に対応している。コンテナ２１０４はベーシックサイズ優先のレイアウト方法が設定されているが、コンテンツサイズが大きいためコンテナサイズを広げようとする。コンテナ２１０５はサイズを維持しようとするがコンテナ２１０４から押されるためコンテナ２１０４とコンテナ２１０５の間でネゴシエーション処理が実行される。２１０９はコンテナ２１０４とコンテナ２１０５間にレイアウトの衝突が起きていることを示している。この場合、コンテナ２１０４は矢印２１０７の方向に、コンテナ２１０５は（コンテンツサイズがコンテナサイズより小さいので）矢印２１０８の方向にそれぞれコンテナサイズを変化させようとすることになる。
【０１５９】
図２１（Ｃ）は、図２１（Ｂ）からレイアウト処理が行われた後の状態を示している。コンテナ２１１０は、レイアウト計算後のコンテナ２１０４を示す。またコンテナ２１１１はレイアウト計算後のコンテナ２１０５を示している。図２１（Ｃ）では、コンテナ２１０４がコンテナ２１１０のサイズに変化し、矢印２１１３の方向に拡大している。２１１４はコンテナ２１１０の右辺の元（ベーシック）サイズ位置を示している。これは図２１（Ｂ）のコンテナ２１０４の右辺と同じ位置である。レイアウト計算後のコンテナ２１１０の右辺が２１１４の位置よりも右側にあるため、コンテナサイズが大きくなったことが分かる。一方、コンテナ２１０５はそのサイズが縮小され、コンテナ２１１１となっている。
【０１６０】
［コンテナサイズが変化しない例］
図２２（Ａ）はベーシックサイズ優先のレイアウト方法を適用したコンテナとベーシックサイズ優先のレイアウト方法を適用したコンテナが関連付けられている状態においてそれぞれのコンテナサイズが全く変わらない場合を、図２２（Ｂ）はベーシックサイズ優先のレイアウト方法を適用したコンテナとコンテンツサイズ優先のレイアウト方法を適用したコンテナが関連付けられている状態においてそれぞれのコンテナサイズが全く変わらない場合を示している。
【０１６１】
図２２（Ａ）では、ベーシックサイズ優先のレイアウト方法が適用されたコンテナ２２０１とコンテナ２２０２が示されている。これらのコンテナはリンク２２０３で関連付けられている。コンテナ２２０１は上辺・左辺・下辺が固定、そして右辺が可変に設定されている。コンテナ２２０２は上辺・右辺・下辺が固定、そして左辺が可変に設定されている。コンテナ２２０１とコンテナ２２０２にはテキストコンテンツが流し込まれており、そのテキストはコンテナの左上から右下方向へフローしている。コンテナ２２０１およびコンテナ２２０２に流し込まれたテキストコンテンツのサイズは夫々のコンテナサイズよりも小さい。よって、ベーシックサイズ優先が設定された両コンテナにおいてコンテナのサイズの変化は生じない。よって、矢印２２０４や矢印２２０５で示されるような影響は生じず、ネゴシエーション処理によるレイアウト計算は行われない。従ってこのようなケースではコンテナサイズが変化することはなく、レイアウトは全く変わらない結果となる。
【０１６２】
図２２（Ｂ）ではコンテナ２２０６とコンテナ２２０７がリンク２２０８で関連付けられている。そしてコンテナ２２０６にはベーシックサイズ優先のレイアウト方法、コンテナ２２０７にはコンテンツサイズ優先のレイアウト方法が設定されている。コンテナ２２０６は上辺・左辺・下辺が固定、そして右辺が可変に設定されている。コンテナ２２０７は上辺・右辺・下辺が固定、そして左辺が可変に設定されている。コンテナ２２０６とコンテナ２２０７にはテキストコンテンツが流し込まれ、テキストはコンテナの左上から右下方向へフローしている。
【０１６３】
コンテナ２２０６では流し込まれたコンテンツのサイズはコンテナサイズよりも小さく、コンテナサイズの変化は生じない。一方、コンテナ２２０７では流し込まれたコンテンツのサイズはコンテナ２２０７のサイズと同じである。よってコンテンツサイズ優先のレイアウト処理の結果、コンテンツサイズに変化は生じない。従って、コンテナ２２０６からもコンテナ２２０７からも影響は生じず、ネゴシエーション処理によるレイアウト計算は行われない。従ってこのようなケースではコンテナサイズが変化することはなく、レイアウトは全く変わらない結果となる。
【０１６４】
［ベーシックサイズ優先のレイアウト例］
図２５ではベーシックサイズ優先のレイアウト方法を適用したコンテナを利用した、典型的なレイアウトを紹介している。図中の（Ａ）〜（Ｄ）は左右のコンテナがベーシックサイズ優先のレイアウト方法で動く時の例である。
【０１６５】
（Ａ）は左のコンテナ２５０１と右のコンテナ２５０３のそれぞれはベーシックサイズ優先が設定されている。また各コンテナにはＤＢフィールドが割り付けられており、リンク２５０２によって関連付けられている状態が示されている。なお、コンテナ２５０１は上辺・左辺・下辺が固定、そして右辺が可変に設定されている。また、コンテナ２５０３は上辺・下辺が固定、そして左辺が可変に設定されている。なお、コンテナ２５０１の左辺およびコンテナ２５０３の右辺は位置が固定されている。また、２５４１および２５４２は（Ａ）〜（Ｄ）の位置が固定であることを示すためのものであるが、実際のレイアウト上には示されない。以下（Ｂ）〜（Ｄ）に、実際にコンテンツデータが流し込まれた際のレイアウト方法について記載する。
【０１６６】
（Ｂ）は（Ａ）の設定状態の各コンテナにデータベースからコンテンツを流し込んだ状態である。左のコンテナ２５１１には“Bixus ”の文字列（コンテンツデータ）が入り、右のコンテナ２５１３には“Photos!”の文字列（コンテンツデータ）が挿入されている。コンテナ２５１３に入ったコンテンツはコンテナサイズとコンテンツサイズが同じであるため、また、コンテナ２５１１に入ったコンテンツは左のコンテナ２５１１のサイズよりも小さいため、それぞれのコンテナサイズは変化しない。このように、ベーシックサイズ優先のレイアウト方法を採用することにより、最初に作成したレイアウト（配置や見た目）をなるべく維持したいというユーザの要望が達成されることになる。具体的には、例えば、ユーザはこのレイアウトでタイトル（２５０１）と爆弾（２５０３）を左右に配置し、それぞれ背景色を付けている。このように色を配色したようなレイアウトでは紙面上のバランスや見た目を考慮してコンテナを配置しているため、できればこのレイアウトで留めておきたいという希望がある。従って、コンテナのエッジが可変に設定されているのにも関わらず、なるべく大きさを変化させないようにすることにより、ユーザの要望に応えることができる。
【０１６７】
（Ｃ）は、各コンテナに対してデータベースから”Image reader c3232”が左側のコンテナへ、”Photos!”が右側のコンテナへ流し込まれた状態を示したものである。この場合、左側のコンテナであるコンテナ２５２１に入ったコンテンツが大きいため、コンテナサイズを変化させ大きくすることが望まれる。コンテナサイズが大きくなったときは、リンクしているコンテナ２５２３を押す「押す力」２５２４が発生する。なお、フォントをシュリンクすることも考えられるが「タイトル」のような場合、できればあまりフォントサイズを小さくしないでレイアウトすることが望まれる。しかし、コンテナ２５２１の左辺とコンテナ２５２３の右辺は位置が固定であるため流し込まれた２つのコンテンツデータをそのままのサイズで表示しようとすると２５４１および２５４２を超えてレイアウトしなければならなくなってしまう。そこで、コンテナ２５２１およびコンテナ２５２３に流し込まれたコンテンツのサイズ（この場合はフォントサイズ）が縮小されるが、上述した通りタイトルなどのフォントサイズはできるだけ小さくしないことが望まれると考えられるので、その変化量（縮小率）は最小となるようにレイアウト計算が行われる。
【０１６８】
（Ｄ）は各コンテナに対してデータベースから”XYZ”が左側のコンテナへ、”Handy & Super High Class!”が右側のコンテナへ流し込まれた状態を示したものであり、右側のコンテナであるコンテナ２５３３に入ったコンテンツが大きく、コンテナ２５３１を押してきた例である。この場合もコンテナ２５３３に挿入されたコンテンツのフォントをシュリンクすることが考えられるが、ユーザにとっては爆弾の内容もアピールしたい内容であるためなるべく大きく表示したい。そこでコンテナ２５３１を押し、コンテナ２５３１が押されたことによって生じた領域を使用することが望まれる。ベーシックサイズ優先のレイアウト方法は以上のようなケース全てをカバーできる有効なレイアウト方法である。
【０１６９】
以上説明したように、本実施形態によれば、レイアウト編集アプリケーション１２１は、コンテンツデータのサイズとコンテナの基準サイズが異なるか否かを判断することができ、さらに各コンテナに設定されているレイアウト属性（ベーシックサイズ優先またはコンテンツサイズ優先）も認識することができる。コンテンツデータを流し込む場合、各コンテナに流し込まれるコンテンツデータおよびリンクによって関連付けられているコンテナからの影響（押す力または引く力）およびレイアウト属性に基づいて、各コンテナに設定されている基準サイズの変更が必要か否かが判断される。なお、変更が必要と判断された場合はデータ領域に流し込まれるコンテンツデータのサイズに合わせてコンテナのサイズを変更し、変更の必要がないと判断された場合は、基準サイズをコンテナのサイズとする。
【０１７０】
また、ユーザがレイアウトを行う際において、コンテナ毎にベーシックサイズ優先かコンテナサイズ優先かを割り当てることができ、ユーザの意図をより反映させたレイアウトを作成することが出来る。すなわち、１つ１つのコンテナに対してベーシックサイズ優先のレイアウト方法、またはコンテンツサイズを優先したレイアウト方法を取るよう指定することが可能である。このため、レイアウト方法の選択肢が増え、ユーザの思惑を反映させることが出来、より思い通りのレイアウトを作成することができるのである。
【０１７１】
また、ベーシックサイズ優先のレイアウト方法とは、言うなればレイアウトされたコンテナサイズを出来る限り守り、サイズをブレイクされた場合、あるいはコンテナが押された、または引っ張られた場合には、コンテンツサイズに合わせた計算をするレイアウト方法であり、従来の技術である固定サイズのコンテナと可変サイズのコンテナの、両方の機能を各コンテナに対して適宜ユーザが設定できるようにしたことで、データベースから挿入されるコンテンツサイズ、あるいはその他のコンテナからの影響を受け、自動的にサイズ変更の有無を判断する画期的なレイアウト方法である。
【０１７２】
なお、本発明は、上記形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体(又は記録媒体)を、システム又は装置に供給し、そのシステム又は装置のコンピュータ(又はＣＰＵやＭＰＵ)が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成されることは云うまでもない。
【０１７３】
この場合、記憶媒体から読み出されたプログラムコード自体が上記実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(ＯＳ)などが実際の処理の一部又は全部を行い、その処理によって上記実施の形態の機能が実現される場合も含まれることは云うまでもない。
【０１７４】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わる記憶媒体に書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは云うまでもない。
また、本発明は、上記実施の形態の機能を実現するソフトウェアのプログラムコードがネットワークを介して配信されることにより、システム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納され、そのシステム又は装置のコンピュータ(又はＣＰＵやＭＰＵ)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行することによっても、達成されることは云うまでもない。
【図面の簡単な説明】
【０１７５】
【図１Ａ】実施形態によるバリアブルプリントシステムの構成を示す図である。
【図１Ｂ】図１におけるホストコンピュータの構成の概略を示す図である。
【図１Ｃ】バリアブルデータプリントの概要を説明する図である。
【図２】実施形態によるバリアブルプリントシステムの他の構成を示す図である。
【図３】メニューバー、ツールバー、ワークエリア、フローティングパレットを含む、実施形態によるユーザインターフェースの例を示す図である。
【図４】ユーザインターフェースにおけるコンテナの表示例を示す図である。
【図５】実施形態によるコンテナルールを説明する図である。
【図６】実施形態によるリンクの作成処理を説明するフローチャートである。
【図７】リンク作成時のユーザインターフェースの遷移例を示す図である。
【図８】実施形態のレイアウトエンジンによるレイアウト計算処理を示すフローチャートである。
【図９】実施形態のレイアウトエンジンによるレイアウト計算処理を示すフローチャートである。
【図１０】実施形態によるレイアウト計算処理を説明するための図である。
【図１１】実施形態のレイアウト計算時における、コンテナの集合について説明した図である。
【図１２】可変リンクによってコンテナを配置したときのユーザインターフェースにおける表示例を示す図である。
【図１３】実施形態のユーザインターフェースにより可変リンクを設定するための処理を説明するフローチャートである。
【図１４】実施形態によるリンクの設定ダイアログウインドウを示す図である。
【図１５】固定リンクによるレイアウト結果例を示す図である。
【図１６】可変リンクによるレイアウト結果例を示す図である。
【図１７】本実施形態によるベーシックサイズ優先のレイアウト方法を説明する図である。
【図１８】ベーシックサイズ優先のコンテナとコンテナサイズ優先のコンテナが関連付けられている場合のレイアウト処理を説明する図である。
【図１９】ベーシックサイズ優先のコンテナとコンテナサイズ優先のコンテナが関連付けられている場合のレイアウト処理を説明する図である。
【図２０】ベーシックサイズ優先のコンテナとコンテナサイズ優先のコンテナが関連付けられている場合のレイアウト処理を説明する図である。
【図２１】ベーシックサイズ優先のコンテナどうしが関連づけられた場合のレイアウト処理の一例を示す図である。
【図２２】本実施形態のレイアウト処理においてコンテナサイズが変化しない例を示した図である。
【図２３Ａ】設定されたレイアウト方法によって１つのコンテナを処理する手順を説明したフローチャートである。
【図２３Ｂ】図２３Ａのベーシックサイズ処理を示すフローチャートである。
【図２４】ＵＩプロパティダイアログによる設定処理のための処理を示すフローチャートである。
【図２５】ベーシックサイズ優先のレイアウト方法を適用したコンテナを利用した、典型的なレイアウト処理例を示す図である。
【図２６】ＵＩプロパティダイアログの表示例を示す図である。
【図２７】コンテンツサイズ優先のレイアウト処理を説明する図である。
【図１Ａ】
2006074224.tif 000003
【図１Ｂ】
2006074224.tif 000004
【図１Ｃ】
2006074224.tif 000005
【図２】
2006074224.tif 000006
【図３】
2006074224.tif 000007
【図４】
2006074224.tif 000008
【図５】
2006074224.tif 000009
【図６】
2006074224.tif 000010
【図７】
2006074224.tif 000011
【図８】
2006074224.tif 000012
【図９】
2006074224.tif 000013
【図１０】
2006074224.tif 000014
【図１１】
2006074224.tif 000015
【図１２】
2006074224.tif 000016
【図１３】
2006074224.tif 000017
【図１４】
2006074224.tif 000018
【図１５】
2006074224.tif 000019
【図１６】
2006074224.tif 000020
【図１７】
2006074224.tif 000021
【図１８】
2006074224.tif 000022
【図１９】
2006074224.tif 000023
【図２０】
2006074224.tif 000024
【図２１】
2006074224.tif 000025
【図２２】
2006074224.tif 000026
【図２３Ａ】
2006074224.tif 000027
【図２３Ｂ】
2006074224.tif 000028
【図２４】
2006074224.tif 000029
【図２５】
2006074224.tif 000030
【図２６】
2006074224.tif 000031
【図２７】
2006074224.tif 000032