(57)【要約】【課題】最適化されるパラグラフレイアウトのための方法およびコンピュータ可読媒体を提供する。【解決手段】この方法によれば、行ごとのパラグラフレイアウトを生成して、パラグラフの最大ペナルティを判定する。あるポイントに対するパラグラフの可能なレイアウトを表すデータをバッキングストア内に含み、そのレイアウトノードによって定義されたパラグラフのレイアウトによって生じたページの形状に対する任意の変更を識別し、１つまたは複数のレイアウトノードを生成することができる。またペナルティが、レイアウトノードのそれぞれについて計算される。行ごとのフォーマット処理中に計算された最大ペナルティ未満のペナルティを有する各レイアウトノードがノードプールに追加される。ノードプール中に残っているのが、テキストのパラグラフ全体を表す単一のレイアウトノードだけになるまで、このプロセスが繰り返される。【選択図】図２
2006209742.tif 000002
【特許請求の範囲】
【請求項１】
ページ上のテキストのパラグラフをレイアウトするための方法であって、
現行レイアウトノードから前記テキストについての１つまたは複数のレイアウトノードを生成することであって、各レイアウトノードは、あるポイントに対する前記パラグラフの可能なレイアウトを表すデータをバッキングストア内に備え、前記レイアウトノードによって定義された前記パラグラフの前記レイアウトによって生じた前記ページの形状に対する任意の変更を識別することと、
前記テキストについての行ごとのパラグラフレイアウトを生成して、前記パラグラフについての最大ペナルティを判定することと、
前記生成されたレイアウトノードのそれぞれについてペナルティを計算することと、
前記パラグラフの前記最大ペナルティ未満のペナルティを有する各レイアウトノードをノードプールに追加することと、
前記現行レイアウトノードを前記ノードプールから削除することと、
前記ノードプール中に残っているのが、前記テキストのパラグラフ全体を表す単一のノードだけになるまで、前記生成すること、計算すること、追加すること、および削除することを繰り返すことであって、前記パラグラフの行ごとのレイアウトを生成することは、前記テキストを繰り返し処理して、テキストの各行についての可能な最良の改行を特定し、前記パラグラフ中のテキストの各行についてのペナルティを合計することによって、前記行ごとのパラグラフレイアウトのペナルティを計算し、前記パラグラフの前記行ごとのレイアウトを実行した後に前記パラグラフを含むページ上に存在する任意の図を識別し、前記行ごとのレイアウト中に識別された前記図のいずれかを次のページへ押し出すすべてのレイアウトノードを前記ノードプールから削除することと
を備えることを特徴とする方法。
【請求項２】
ペナルティを計算することは、
許容可能なタイポグラフィーリミットを定義することと、
ある行の前記ペナルティが前記許容可能なタイポグラフィーリミットを超えているかどうかを判定することと、
ある行の前記ペナルティが前記許容可能なタイポグラフィーリミットを超えていると判定したことに応答して、タイポグラフィー上のルールに基づかない第２のペナルティ関数を利用して前記行のペナルティを計算することと
を備えることを特徴とする請求項１に記載の方法。
【請求項３】
ペナルティを計算することは、
前記行の位置調整機会のセットを識別することと、
前記位置調整機会のそれぞれを前記許容可能なタイポグラフィーのリミット内で拡張または圧縮できる量を判定することと、
前記行で可能な拡張および圧縮の総量を計算することと、
前記行の理想的な幅、前記行の実際の幅、ならびに拡張および圧縮の可能な量に基づいて前記ペナルティを計算することと
を備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記１つまたは複数のレイアウトノードを生成することは、
前記ノードプール中のあるレイアウトノードを現行ノードとして識別することと、
テキストの次の行の可能なそれぞれの変形を前記現行レイアウトノードに付加することによって、前記現行レイアウトノードから１つまたは複数の新たなレイアウトノードを作成することと
を備えることを特徴とする請求項３に記載の方法。
【請求項５】
前記現行ノードは、最少量のコンテンツを有する前記ノードプール中のレイアウトノードであることを特徴とする請求項４に記載の方法。
【請求項６】
前記ノードプール中のいずれかのレイアウトノードが前記テキスト中の同じポイントで終了しているかどうかを判定することと、
前記ノードプール中の２つ以上のレイアウトノードが前記テキスト中の同じポイントで終了していると判定したことに応答して、前記レイアウトノードのそれぞれ内で定義された形状がページオブジェクトの結果として異なっているかどうかを判定することと、
前記形状がページオブジェクトの結果として異なっていないと判定したことに応答して、前記テキスト中の同じポイントで終了する前記レイアウトノードであって、同じポイントで終了する他のノードよりも高いペナルティを有する前記レイアウトノードを削除することと
をさらに備えることを特徴とする請求項５に記載の方法。
【請求項７】
前記パラグラフのレイアウト中に利用するための前記パラグラフについてのフォーマット情報をキャッシュすることをさらに備えることを特徴とする請求項６に記載の方法。
【請求項８】
前記ノードプール中のノードの数がノード数のしきい値を超えているかどうかを判定することと、
前記ノードプール中のノードの数がノード数のしきい値を超えていると判定したことに応答して、最も高いペナルティを有するいくつかのレイアウトノードを前記ノードプールから削除することと
をさらに備えることを特徴とする請求項７に記載の方法。
【請求項９】
コンピュータによって実行されると、
現行レイアウトノードから前記テキストについての１つまたは複数のレイアウトノードを生成することであって、各レイアウトノードは、あるポイントに対する前記パラグラフの可能なレイアウトを表すデータをバッキングストア内に備え、前記レイアウトノードによって定義された前記パラグラフの前記レイアウトによって生じた前記ページの形状に対する任意の変更を識別することと、
前記テキストについての行ごとのパラグラフレイアウトを生成して、前記パラグラフの最大ペナルティを判定することと、
前記パラグラフの前記行ごとのレイアウトを実行した後に前記パラグラフを含むページ上に存在する任意の図を識別することと、
前記生成されたレイアウトノードのそれぞれについてペナルティを計算することと、
前記パラグラフの前記最大ペナルティ未満のペナルティを有する各レイアウトノードをノードプールに追加することと、
前記行ごとのレイアウト中に識別された前記図のいずれかを次のページへ押し出すすべてのレイアウトノードを前記ノードプールから削除することと、
前記現行レイアウトノードを前記ノードプールから削除することと、
前記ノードプール中に残っているのが、前記テキストのパラグラフ全体を表す単一のノードだけになるまで、前記生成すること、計算すること、追加すること、および削除することを繰り返すことと
を前記コンピュータに行なわせるコンピュータ実行可能命令を格納したことを特徴とするコンピュータ可読媒体。
【請求項１０】
ペナルティを計算することは、
許容可能なタイポグラフィーリミットを定義することと、
ある行の前記ペナルティが前記許容可能なタイポグラフィーリミットを超えているかどうかを判定することと、
ある行の前記ペナルティが前記許容可能なタイポグラフィーリミットを超えていると判定したことに応答して、前記行が前記ページに導入する余白の量に基づいて前記行のペナルティを計算することと
を備えることを特徴とする請求項９に記載の方法。
【請求項１１】
前記コンピュータによって実行されると、前記パラグラフのレイアウト中の利用のために前記パラグラフについてのフォーマット情報をキャッシュすることを前記コンピュータに行なわせるさらなるコンピュータ実行可能命令を備えたことを特徴とする請求項１０に記載のコンピュータ可読媒体。
【請求項１２】
前記１つまたは複数のレイアウトノードを生成することは、
前記ノードプール中のあるレイアウトノードを現行ノードとして識別することと、
テキストの次の行の可能なそれぞれの変形を前記現行レイアウトノードに付加することによって、前記現行レイアウトノードから１つまたは複数の新たなレイアウトノードを作成することと
を備えたことを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記現行ノードは、最少量のコンテンツを有する前記ノードプール中のレイアウトノードであることを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記コンピュータによって実行されると、
前記ノードプール中のいずれかのレイアウトノードが前記テキスト中の同じポイントで終了しているかどうかを判定することと、
前記ノードプール中の２つ以上のレイアウトノードが前記テキスト中の同じポイントで終了していると判定したことに応答して、前記レイアウトノードのそれぞれ内で定義された形状がページオブジェクトの結果として異なっているかどうかを判定することと、
前記形状がページオブジェクトの結果として異なっていないと判定したことに応答して、前記テキスト中の同じポイントで終了する前記レイアウトノードであって、同じポイントで終了する他のノードよりも高いペナルティを有する前記レイアウトノードを削除することと
を前記コンピュータに行なわせるさらなるコンピュータ実行可能命令を備えたことを特徴とする請求項１３に記載のコンピュータ可読媒体。
【請求項１５】
前記コンピュータによって実行されると、前記パラグラフのレイアウト中の利用のために前記パラグラフについてのフォーマット情報をキャッシュすることを前記コンピュータに行なわせるさらなるコンピュータ実行可能命令を備えたことを特徴とする請求項１４に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワードプロセッシングアプリケーションプログラムなどのパラグラフレイアウトに関し、より詳しくは、このようなパラグラフレイアウトを最適化することに関する。
【背景技術】
【０００２】
ユーザが、ワードプロセッシングアプリケーションプログラムや他のタイプのページレイアウトアプリケーションプログラムにテキストをタイプするとき、プログラムは、タイプしたテキストを行ごとにレイアウトし、新たな行へ移るために適当なポイントで定期的にテキストの流れを「改行（ｂｒｅａｋ）」することになる。この改行プロセスの結果、通常、１つまたは複数のパラグラフ（段落）が生じ、そのそれぞれは、各行の始まりと終わりを示すブレイクポイントを有する１つまたは複数の行によって規定される。ワードプロセッシングアプリケーションプログラムおよび他のページレイアウトプログラムにおいて生じる１つの共通の問題は、パラグラフのどこで各行を改行すべきかを判定するという問題である。
【０００３】
ほとんどのワードプロセッシングアプリケーションは、行ごとにテキストを改行し、隣接する行のフォーマットについては考慮していない。たとえば、大半のワードプロセッシングアプリケーションは、パラグラフの最初の文字から最初の行をフォーマットし、その行にとっての最良の改行を見つけ出すことによって開始する。最良の改行を見つけ出す上で考慮され得るいくつかのファクタには、パラグラフの右端をそろえるかどうか、その行で圧縮が許容されるかどうか、ハイフネーションが許容されるかどうか、およびその他のファクタが含まれる。最初の行にとっての最良の改行を特定すると、アプリケーションは、最初の行の改行の後の最初の文字で２行目のフォーマットを同じように継続する。その後の各行も、同様にフォーマットされる。
【０００４】
最適化パラグラフレイアウトアルゴリズムは、Ｄｏｎａｌｄ  Ｋｎｕｔｈ教授によってＴｅＸプログラム用に開発された。Ｋｎｕｔｈによって開発されたこのアルゴリズムは、パラグラフを行へと改行するすべての可能な方法を検討している。詳細には、このアルゴリズムは、ペナルティ関数を計算して、パラグラフを行へと改行するそれぞれの方法の質を評価する。その結果に基づいて、このアルゴリズムは、パラグラフを改行する最良の方法を選ぶ。Ｋｎｕｔｈによって示されたこのアプローチは、行端をそろえたパラグラフについての行間の余白の均一な配分と、右端をそろえていないパラグラフの体裁を改善することによって、テキストのタイポグラフィー上の品質を高めている。これらの利点を線形時間で達成するため、Ｋｎｕｔｈのアルゴリズムは、ダイナミックプログラミングの技術を適用している。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
Ｋｎｕｔｈによって提供されたこのアルゴリズムは、実際にいくつかの利点を提供するが、欠点がないわけではない。詳細には、このＫｎｕｔｈアルゴリズムは、所定の形状を有するページについてのテキストを改行することができるだけである。このアルゴリズムは、文字ストリーム中の特定のポイントに添付され、ページ上のどこにでも配置することができ、フォーマット中にそのページの形状（ｇｅｏｍｅｔｒｙ）を変更する図を含めることを提供していない。Ｋｎｕｔｈによって提供されたこのアルゴリズムは、単語間での位置調整（ｊｕｓｔｉｆｉｃａｔｉｏｎ）（圧縮（ｃｏｍｐｒｅｓｓｉｏｎ）または拡張（ｅｘｐａｎｓｉｏｎ））しかできないので、単語内での位置調整が可能な言語や、単語間に余白のない言語のテキストでは機能しない。さらに、Ｋｎｕｔｈアルゴリズムは、普通は欄（ｃｏｌｕｍｎ）が狭く位置調整の機会に乏しい特定のタイポグラフィー的に劣悪な状況では、満足できるフォーマット結果を得ることができない。これらのケースでは、Ｋｎｕｔｈアルゴリズムは、右マージンにはみ出す行を生じ、ユーザにエラーについて知らせるだけである。ワードプロセッシングアプリケーションプログラムのコンテキストでは、このような結果をエンドユーザに提供することは許容できない。
【０００６】
これらの考察およびその他に鑑みて、本発明のさまざまな実施形態がなされた。
【課題を解決するための手段】
【０００７】
本発明によれば、上記およびその他の問題は、最適化されるパラグラフレイアウトのための方法およびコンピュータ可読媒体によって解決される。本発明の実施形態によれば、単語内で位置調整を使用する言語、および単語間で余白を使用しない言語と共にうまく機能し、そしてページ上のどこにでも配置できる図と共にうまく機能し、また劣悪な状況であってもフォーマット結果を提供するパラグラフレイアウトアルゴリズムが提供される。
【０００８】
本発明の一実施形態によれば、テキストのパラグラフをレイアウトするための、コンピュータによって実施される方法およびコンピュータ可読媒体が提供される。この方法によれば、パラグラフ中のテキストの一部またはすべての可能なレイアウトを表す１つまたは複数のレイアウトノードを生成することができる。レイアウトノードはまた、そのレイアウトノードによって指定されたレイアウトの結果としてテキストがレイアウトされているページの形状に対する何らかの変更を識別するデータを含む。レイアウトノードは、ノードプール中の１つのレイアウトノードを現行ノードとして識別することによって生成される。プール中の第１のレイアウトノードは、空のノードである。新たなレイアウトノードは、テキストの次の行の可能なそれぞれの変形を現行レイアウトノードに付加することによって、現行レイアウトノードから作成される。このようにして、新たなレイアウトノードは、現行ノードにテキストの次の行での可能なそれぞれの改行を加えて生成される。
【０００９】
またペナルティが、新たに生成されたレイアウトノードのそれぞれについて計算される。行ごとのフォーマット処理中に計算された最大ペナルティ未満のペナルティを有する各レイアウトノードが、ノードプールに追加される。次いで現行レイアウトノードが、ノードプールから削除される。次のパスでは、現行レイアウトノードは、最も低いペナルティを有するレイアウトノードである。ノードプール中に残っているのが、テキストのパラグラフ全体を表す単一のレイアウトノードだけになるまで、このプロセスが繰り返される。
【００１０】
本発明の一実施形態によれば、「許容可能なタイポグラフィーリミット」を定義することによって開始するペナルティ関数が提供される。このリミットの外でフォーマットされなければならない行は、非常に劣悪な行であるとみなされ、それらのペナルティが、異なるルールのセットに従って計算される。詳細には、ある行が非常に劣悪であるとみなされると、そのペナルティは、それがページに導入する余白の量に基づいて計算される。結果として、非常に劣悪な行は大きなペナルティを有するが、それらのペナルティは、あまり劣悪とはみなされていない行に対するペナルティよりもずっと遅い割合で増大する。その結果、そうでなければ許容可能な行が、他の劣悪な行の質を改善しようとするときに、あまり劣悪な行にはならない。これによって、このアルゴリズムは、欄が狭いタイポグラフィー的に劣悪ないくつかのケースにおいてさえ右マージンにはみ出さない妥当なレイアウトを生成することができるようになる。
【００１１】
本発明の別の実施形態によれば、レイアウトプロセスは、最初にテキストの行ごとのパラグラフレイアウトを生成して、パラグラフの最大ペナルティを判定することによって、最適化することができる。一実施形態によれば、テキストを行ごとに繰り返し処理して、各行についての最良の可能な改行を特定することによって、行ごとのパラグラフレイアウトが行われる。行サービスコンポーネントを利用して、テキストの可能な改行ポイントのセットを提供することができる。さらに、行サービスコンポーネントによって生成されたフォーマットおよび可能な改行情報は、パラグラフレイアウトプロセス中の性能改善のためにキャッシュすることができる。他のタイプの行ごとのアルゴリズムを利用することもできる。
【００１２】
行ごとのパラグラフレイアウト中に、ペナルティ関数を利用して、パラグラフ中の個々の行ごとにペナルティを計算することもできる。それぞれの行のペナルティが加算されて、パラグラフ全体に対するペナルティが計算される。加えて、一実施形態によれば、行ごとのレイアウトに続いて同じページ上にパラグラフとして存在する何らかの図を識別することもできる。この情報を後で利用して、そのパラグラフの別のレイアウトによって、これらの図が後続のページへ押し出されることがないようにすることができる。
【００１３】
本発明の別の実施形態によれば、パラグラフレイアウトプロセスは、テキスト中の同じポイントで終了する複数のレイアウトノードをマージすることによって、最適化することができる。詳細には、ノードプール中の任意の２つ以上のノードがテキスト中の同じポイントで終了しているかどうかについて判定がなされる。レイアウトノードが実際に同じポイントで終了している場合、それらのレイアウトノードの形状がページ上のオブジェクトの結果として異なっているかどうかについてさらに判定を行うことができる。それらのレイアウトノードの形状がページ上のオブジェクトの結果として異なっていない場合、同じポイントで終了する１つまたは複数の他のノードよりも高いペナルティを有する１つまたは複数のノードが、ノードプールから削除される。この結果、パラグラフ全体の最終的なペナルティが高くなるであろうノードは考慮されないため、計算量が少なくなる。
【００１４】
別の実施形態によれば、行ごとのレイアウト中に識別された図のいずれかを後続のページへ押し出させるレイアウトノードも、ノードプールから削除することができる。所定のしきい値よりも多くのノードがノードプール中に存在するかどうかを判定することによって、パフォーマンスの最適化を行うこともできる。ノードプール中に存在するノードが多すぎる場合は、最も高いペナルティを有するいくつかのレイアウトノードをノードプールから削除することができる。このようにして、ノードプールのサイズを小さくすることによって、レイアウトアルゴリズムのパフォーマンスが改善される。
【００１５】
本発明は、コンピュータプロセスやコンピューティングシステムとして、またはコンピュータプログラム製品やコンピュータ可読メディアなどの製造品として実装することができる。このコンピュータプログラム製品は、コンピュータシステムによって読み取り可能な、コンピュータプロセスを実行するための命令のコンピュータプログラムを符号化しているコンピュータストレージメディアとすることができる。このコンピュータプログラム製品は、コンピューティングシステムによって読み取り可能で、コンピュータプロセスを実行するための命令のコンピュータプログラムを符号化している、搬送波上で伝搬信号とすることもできる。
【００１６】
本発明を特色付けるこれらおよび他のさまざまな特徴ならびに利点は、以下の詳細な説明を読み、関連する図面を検討することにより明らかになるであろう。
【発明を実施するための最良の形態】
【００１７】
ここで、同様の数字は同様の要素を表している図面を参照して、本発明のさまざまな態様について説明する。特に、図１および対応する考察は、本発明の実施形態を実装することができる適切なコンピューティング環境の簡潔で一般的な説明を提供することを意図している。パーソナルコンピュータのオペレーティングシステム上で作動するプログラムモジュールという一般的なコンテキストにおいて本発明を説明することになるが、本発明は他のタイプのコンピュータシステムおよびプログラムモジュールと組み合わせて実装することもできることを当業者は認めるであろう。
【００１８】
一般に、プログラムモジュールは、特定のタスクを実行したり特定の抽象データ型を実装したりするルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造を含む。さらに、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な民生用電子機器、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成と共に実施できることを当業者は理解するであろう。本発明は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートメモリストレージデバイスの両方に配置することができる。
【００１９】
次いで図１を参照して、本発明のさまざまな実施形態で利用されるコンピュータ２の例示的なコンピュータアーキテクチャについて説明する。図１に示されたコンピュータアーキテクチャは、中央処理装置５（「ＣＰＵ」）と、ランダムアクセスメモリ９（「ＲＡＭ」）および読み取り専用メモリ（「ＲＯＭ」）１１を含むシステムメモリ７と、メモリをＣＰＵ５に結合するシステムバス１２とを含む従来のデスクトップまたはラップトップコンピュータを示している。起動中などにコンピュータ内の要素間における情報伝達を助ける基本ルーチンが入っている基本入出力システムは、ＲＯＭ１１に格納されている。コンピュータ２は、オペレーティングシステム１６、アプリケーションプログラム、および他のプログラムモジュールを格納するための大容量ストレージデバイス１４をさらに含み、これについては以降でさらに詳しく説明する。
【００２０】
大容量ストレージデバイス１４は、バス１２に接続された大容量ストレージコントローラ（図示せず）を介してＣＰＵ５に接続されている。この大容量ストレージデバイス１４およびその関連するコンピュータ可読メディアは、コンピュータ２の不揮発性のストレージを提供する。本明細書に含まれるコンピュータ可読メディアの説明は、ハードディスクやＣＤ−ＲＯＭドライブなど、大容量ストレージデバイスを指しているが、コンピュータ可読メディアは、コンピュータ２によってアクセスできる任意の利用可能なメディアとすることができることが当業者に理解されるはずである。
【００２１】
例として、限定ではなく、コンピュータ可読メディアは、コンピュータストレージメディアおよび通信メディアを備えることができる。コンピュータストレージメディアは、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなどの情報のストレージのための任意の方法または技術で実装された揮発性および不揮発性、ならびにリムーバブルおよび非リムーバブルメディアを含む。コンピュータストレージメディアは、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のソリッドステートメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（「ＤＶＤ」）もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または希望の情報を格納するために利用可能で、コンピュータ２によってアクセスできる他の任意のメディアが含まれるが、これらには限定されない。
【００２２】
本発明のさまざまな実施形態によれば、コンピュータ２は、インターネットなど、ネットワーク１８を介したリモートコンピュータへの論理接続を用いて、ネットワーク化された環境中で動作することができる。コンピュータ２は、バス１２に接続されたネットワークインターフェースユニット２０を介してネットワーク１８に接続することができる。ネットワークインターフェースユニット２０は、他のタイプのネットワークおよびリモートコンピュータシステムに接続するために利用することもできることが理解されるはずである。コンピュータ２は、キーボード、マウス、または電子スタイラス（図１には示さず）を含むいくつかの他のデバイスから入力を受け取り処理するための入力／出力コントローラ２２を含むこともできる。同様に入力／出力コントローラ２２は、ディスプレイスクリーン、プリンタ、または他のタイプの出力デバイスに出力を提供することができる。
【００２３】
簡単に上述したように、ワシントン州レドモンドのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮによるＷＩＮＤＯＷＳ（登録商標）  ＸＰオペレーティングシステムなど、ネットワーク化されたパーソナルコンピュータの動作を制御するのに適したオペレーティングシステム１６を含むいくつかのプログラムモジュールおよびデータファイルをコンピュータ２の大容量ストレージデバイス１４およびＲＡＭ９内に格納することができる。大容量ストレージデバイス１４およびＲＡＭ９は、１つまたは複数のプログラムモジュールを格納することもできる。とりわけ、大容量ストレージデバイス１４およびＲＡＭ９は、ワードプロセッシングアプリケーションプログラム１０を格納することができる。当業者に知られているように、ワードプロセッシングアプリケーションプログラム１０は、ドキュメント２４など、電子ドキュメントを作成および編集するための機能を提供するように動作する。本発明の一実施形態によれば、ワードプロセッシングアプリケーションプログラム１０は、ＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮのＭＩＣＲＯＳＯＦＴ  ＷＯＲＤワードプロセッシングアプリケーションプログラムを備える。しかし、他の製造業者によるワードプロセッシングアプリケーションプログラムを利用して、本発明のさまざまな態様を具体化することもできることが理解されるはずである。またドキュメントレイアウト機能を実行する他のタイプのアプリケーションプログラムを本発明の態様と共に利用できることも理解されるはずである。たとえば、本発明の実施形態は、デスクトップパブリッシングプログラム、プレゼンテーションプログラム、ウェブブラウザ、およびドキュメント中のテキストパラグラフを利用する任意の他のタイプのプログラムと共に利用することができる。
【００２４】
ワードプロセッシングアプリケーションプログラム１０は、ワードプロセッシングドキュメントの編集と併せて、ドキュメント２４中のテキストのパラグラフをレイアウトするための機能を提供する。ワードプロセッシングアプリケーションプログラム１０は、テキストパラグラフのレイアウトを含むドキュメント２４のフォーマットを補助するレイアウトマネージャー２６と通信することができる。以降でさらに詳しく説明するが、レイアウトマネージャー２６は、ワードプロセッシングアプリケーションプログラム１０に、そしてコンピュータ２上で実行されている他の任意のプログラムにレイアウトサービスを提供する。詳細には、レイアウトマネージャー２６は、テキストのパラグラフを最適な方法でレイアウトするためのアルゴリズムを実行する。レイアウトマネージャー２６の動作に関しては、以降で図２〜６を参照してさらに詳しく説明する。
【００２５】
次いで図２を参照して、ワードプロセッシングアプリケーションプログラム１０など、クライアントアプリケーションと、レイアウトマネージャー２６との間のインターラクションに関してさらに詳しく説明する。簡単に上述したように、レイアウトマネージャー２６は、ドキュメントレイアウトサービスをアプリケーション１０に提供する。詳細には、アプリケーション１０は、レイアウトマネージャー２６と通信して、バッキングストア３４中に格納されたドキュメント２４の部分のレイアウトを要求することができる。レイアウトマネージャー２６との通信を容易にするために、アプリケーション１０は、図２にコールバックコード３２として示された１つまたは複数のコールバックルーチンを実装することができる。コールバックコード３２の使用を通じて、レイアウトマネージャー２６は、ドキュメントのさまざまな部分をレイアウトするのに必要なさらなる情報についてアプリケーションプログラム１０に問い合わせることができる。
【００２６】
以降でさらに詳しく説明するが、レイアウトマネージャー２６は、テキストのパラグラフをレイアウトするためのファシリティを提供する。レイアウトマネージャー２６は、パラグラフをレイアウトするためのアプリケーションプログラム１０からの要求に応答して、これらのファシリティを提供する。アプリケーションプログラム１０のドキュメントマネージャー３０は、レイアウトマネージャー２６と通信して、パラグラフをレイアウトするよう要求することができる。またドキュメントマネージャー３０は、パラグラフへとレイアウトされるべきドキュメントからのテキストおよび他のコンテンツをレイアウトマネージャー２６に提供することもできる。ドキュメントマネージャー３０は、はじめにコンテンツの一部をレイアウトマネージャー２６に提供することができる。次いでレイアウトマネージャー２６は、テキストをレイアウトする必要に応じて、コールバックコード３２からのさらなるコンテンツを要求することができる。ドキュメントマネージャー３０は、レイアウトされるテキストのスタイルをレイアウトマネージャー２６に示すこともできる。たとえば、ドキュメントマネージャー３０は、テキストをレイアウトするのに必要なタイプスタイル、サイズ、および他の情報をレイアウトマネージャー２６に示すことができる。
【００２７】
テキストのパラグラフをレイアウトするプロセス中に、レイアウトマネージャー２６は、行サービスコンポーネント２７のサービスを利用することができる。行サービスコンポーネント２７は、言語に依存せず、テキストの単行に関してサービスを提供するように動作することができる。詳細には、行サービスコンポーネント２７が、ある長さのテキストに対する可能な改行ポイントのセットを生成することができる。潜在的な改行ポイントは、（西洋の言語の場合）スペース文字、ハイフン文字、および単語内の文法的に正しい改行ポイントが含まれる。行サービスコンポーネント２７はまた、任意の言語についても文字間の位置調整が行われ得るかを判定することができる。本発明の実施形態によれば、行サービスコンポーネント２７によって生成された改行情報は、パラグラフレイアウトプロセス中のパフォーマンスを改善するために、レイアウトマネージャー２６によってキャッシュすることができる。
【００２８】
以降でさらに詳しく説明するが、行サービスコンポーネント２７によって生成された改行ポイント情報は、どの改行ポイントが、ひいてはテキストのどのパラグラフが、他よりも良好かを判定するために、レイアウトマネージャー２６内で実行されるペナルティ関数によって利用することができる。ペナルティ関数は、パラグラフ中の各行のペナルティを計算することによって、パラグラフごとに「ペナルティ」を計算する。ペナルティの計算に影響を与える可能性のあるファクタは、良好な位置調整の機会の数ではなく、１つの行に配分する余白の量であり、あるいは圧縮の機会の数ではなく、圧縮すべき量である。他のファクタとしては、その行にハイフンがあるかどうか、直前または直後の行もハイフンで結ばれているかどうか、そして連続する行の間での長さの違いが含まれ得る。利用できる別のファクタは、特定のハイフネーションの「質」である。たとえば、「ａｕｔｏｍｏｂｉｌｅ」という単語のハイフネーションとしては「ａｕｔｏ−ｍｏｂｉｌｅ」の方が、「ａｕｔｏｍｏ−ｂｉｌｅ」よりも良い選択肢である。辞書を利用して、あるハイフネーションが別のものよりも良いかどうかを判定することができる。他のファクタも、ペナルティ関数によって利用することができる。
【００２９】
本発明の実施形態によれば、レイアウトマネージャー２６によって利用されるペナルティ関数は、分析中のテキストに応じて異なる形で計算することができる。詳細には、許容可能なタイポグラフィーリミットをまず定義することができる。定義された許容可能なタイポグラフィーリミット内にある行について、第１のペナルティを計算することができる。これらの場合、以前の改行アルゴリズムによって利用されたペナルティ関数は、良好な解決策を提供する。しかし、妥当なタイポグラフィーの範囲外にある行については、第２のペナルティを利用することができる。これらの行は、非常に劣悪な行と考えられる。第２のペナルティは、行がページに導入する余白に従って計算される。結果として、非常に劣悪な行は大きなペナルティを有するが、それらのペナルティは、あまり劣悪とはみなされていない行のペナルティよりもずっと遅い割合で増大する。その結果、そうでなければ許容可能な行は、他の劣悪な行の質を改善しようとするときに、あまり劣悪な行にはならないことになる。これによって、このアルゴリズムは、十分な数の位置調整の機会がないタイポグラフィー的に劣悪ないくつかのケースにおいてさえ右マージンにはみ出さない妥当なレイアウトを生成することができる。
【００３０】
レイアウトマネージャー２６が、本明細書に記載の方法でテキストをレイアウトすると、フォーマット結果３６がドキュメントマネージャー３０に渡される。フォーマット結果３６を受け取ることに応答して、ドキュメントマネージャー３０は、アプリケーションプログラム１０によって保持されるディスプレイツリー３８を更新するように動作する。ディスプレイツリー３８に対する変更に基づいて、アプリケーションプログラム１０は、そのレンダリングされた出力４０を更新して、フォーマット結果をユーザに表示することができる。アプリケーション１０およびレイアウトマネージャー２６の動作に関しては、以降で図３〜６を参照してさらに詳しく説明する。
【００３１】
次いで図３Ａ〜３Ｄを参照して、例示的なパラグラフ５０の態様について説明する。図３Ａに示されるように、パラグラフ５０は、ある長さのテキストを備える。図示された例では、テキストは単一の文のみを備えているが、任意の長さのテキストを、本明細書に記載の方法でフォーマットすることができる。パラグラフ５０の適切なレイアウトを判定するにあたって適切であるマージン５２を指定することもできる。詳細には、行の終わりとマージン５２の間に最少量の余白を残しつつマージン５２を横切るのを避けることが通常は望ましい。
【００３２】
図３Ｂ〜３Ｄに示されているパラグラフレイアウト５４Ａ〜５４Ｃは、パラグラフ５０の多くの可能なレイアウトのいくつかを示している。詳細には、レイアウト５４Ａおよび５４Ｂは３行のレイアウトであり、レイアウト５４Ｃは２行のレイアウトである。レイアウト５４Ｃは、各行がレイアウト５４Ａおよび５４Ｂに比べて最少の余白を有するので、最も望ましいと考えられる。他の多くのレイアウトも可能であり、いくつかの可能なレイアウトから最良のレイアウトを選ぶときに余白の量以外の他の多くのファクタを考慮できることが理解されるはずである。
【００３３】
次いで図４Ａ〜４Ｃを参照して、パラグラフをレイアウトするためにレイアウトマネージャー２６によって実行されるプロセスを示す例示的なルーチン４００について説明する。本明細書に記載の本発明の実施形態は、レイアウトマネージャー２６およびワードプロセッシングアプリケーションプログラム１０というコンテキストにおいて提示されているが、本発明は、テキストの行をフォーマットしなければならない他のタイプのアプリケーションプログラムにおいても利用できることが理解されるはずである。たとえば、本明細書に記載の本発明の実施形態は、スプレッドシートアプリケーションプログラム、プレゼンテーションアプリケーションプログラム、または描画もしくはコンピュータ支援設計アプリケーションプログラム内で利用することができる。
【００３４】
本明細書で提示されるルーチンの考察を読むと、本発明のさまざまな実施形態の論理オペレーションは、（１）コンピュータによって実施されるアクトのシーケンスや、コンピューティングシステム上で実行されるプログラムモジュールとして、および／または（２）コンピューティングシステム内で相互に接続されたマシン論理回路や回路モジュールとして実装されることが理解されるべきである。この実装は、本発明を実装するコンピューティングシステムのパフォーマンス要件に依存した選択の問題である。したがって、本明細書に記載の本発明の実施形態を構成する、図４Ａ〜４Ｃに示された論理オペレーションは、オペレーション、構造的なデバイス、アクト、またはモジュールなど、さまざまに呼ばれる。これらのオペレーション、構造的なデバイス、アクト、およびモジュールは、ここに示された特許請求の範囲内に記載された本発明の趣旨および範囲から逸脱することなく、ソフトウェア、ファームウェア、専用のデジタルロジック、およびそれらの任意の組合せにおいて実装できることが当業者に認められるであろう。
【００３５】
ルーチン４００はオペレーション４０２において開始し、そこでレイアウトマネージャー２６は、フォーマットされるテキストをそのプロパティを含め、クライアントアプリケーション（たとえばワードプロセッシングアプリケーション１０）から入手する。次いでルーチン４００はオペレーション４０２へと続き、そこでレイアウトマネージャー２６は、テキストのパラグラフ全体を無限のマージンを持つ１つの行としてフォーマットし、その行内の可能な改行ポイントのすべてを識別するよう行サービスコンポーネント２７に命令する。行サービスコンポーネントは、このタスクをオペレーション４０６において実行し、フォーマット結果をレイアウトマネージャー２６に返す。オペレーション４０４において、レイアウトマネージャー２６は、このパラグラフに関連付けられたフォーマット情報および行サービスコンポーネント２７によって提供された改行情報のすべてをキュッシュする。そしてルーチン４００は、オペレーション４０４からオペレーション４０８へと続く。
【００３６】
オペレーション４０８では、このパラグラフに対して行ごとのフォーマットが生成される。行ごとのパラグラフのフォーマットプロセス中に、そのパラグラフについての最大ペナルティが計算される。さらに、そのパラグラフを含むページ上のいくつかの図を識別することができる。以降でさらに詳しく説明するが、この情報を利用して、パラグラフレイアウトプロセスを最適化する。行ごとのパラグラフレイアウトを実行するための例示的なルーチン５００について以降で説明する。オペレーション４０８から、ルーチン４００はオペレーション４１０へと続く。
【００３７】
オペレーション４１０では、１つまたは複数のレイアウトノードを格納するためのノードプールが作成される。ノードプールは、パラグラフの特定のポイントに対するフォーマットを表すレイアウトノードをバッキングストア３４中に格納するように構成されたデータ構造である。オペレーション４１０から、ルーチン４００はオペレーション４１２へと続き、そこで第１のレイアウトノードがノードプールに追加される。第１のレイアウトノードは空であり、０行のパラグラフの部分的なレイアウトを表す。次いでルーチン４００はオペレーション４１４へと続き、そこで現行レイアウトノードが、最少量のコンテンツを有するノードプール中のレイアウトノードとして識別される。そしてルーチン４００は、オペレーション４１４からオペレーション４１６へと続く。
【００３８】
オペレーション４１６では、新たなレイアウトノードが作成される。詳細には、現行レイアウトノードにテキストの次の行の可能なそれぞれの変形を加えたものに相当するいくつかの新たなレイアウトノードが作成される。これらのノードを生成するために、行サービスコンポーネント２７は、オペレーション４１８において、現行レイアウトノードに続くテキストの行についてすべての可能な改行を識別する。次いでオペレーション４２０において、新たに作成されたレイアウトノードのそれぞれについてペナルティが計算される。そしてルーチン４００は、オペレーション４２０からオペレーション４２２へと続く。
【００３９】
オペレーション４２２では、行ごとのレイアウト中に計算された最大ペナルティ未満のペナルティを有する新たに作成された各レイアウトノードが、ノードプールに追加される。より高いペナルティを有するレイアウトノードは、行ごとのレイアウトが、これらのノードよりも良好なレイアウトを提供し、既に計算済みであるため、ノードプールには追加されない。そしてルーチン４００は、オペレーション４２２からオペレーション４２４へと続く。
【００４０】
オペレーション４２４では、ノードプール中の任意のノードがテキスト中の同じ位置で終了しているかどうかについて判定がなされる。同じ位置で終了する２つ以上のノードがない場合、ルーチン４００は、後述するオペレーション４３２へ分岐する。２つ以上のノードが実際に同じ位置で終了している場合、ルーチン４００はオペレーション４２６へと続く。オペレーション４２６では、同じ位置で終了しているノードの形状が、それらのノードを含むページ上に存在するオブジェクトのために異なっているかどうかについて判定がなされる。形状が異なっていない場合、より高いペナルティを有するノードにより、最終的なフォーマットされたパラグラフもより高いペナルティを有することになると仮定することができる。したがって、こうした場合には、より高いペナルティを有するノードは、ノードプールから削除し、さらなる考慮から外すことができる。
【００４１】
オペレーション４２８において、同じポイントで終了するノードの形状がページ上のオブジェクトのために異なっていると判定された場合、ルーチン４００は、後述するオペレーション４３２へ分岐する。形状が異なっていない場合、ルーチン４００はオペレーション４３０へと続き、そこでより高いペナルティを有する１つまたは複数のマッチするノードが、ノードプールから削除される。次いでルーチン４００は、オペレーション４３２へと続き、そこで現行ノードがノードプールから削除される。そしてルーチン４００は、オペレーション４３２からオペレーション４３４へと続く。
【００４２】
オペレーション４３４では、行ごとのレイアウト中に識別された図のいずれかを現在のページから後続のページへ押し出すことになるであろうレイアウトノードが、ノードプールから削除される。次いでルーチン４００は、オペレーション４３６へと続き、そこでフォーマット結果が見出されたかどうかについて判定がなされる。詳細には、フォーマット結果は、ノードプール中に残っているのが、テキストのパラグラフ全体を示す単一のレイアウトノードだけになったときに特定されることになる。フォーマット結果が見出された場合、ルーチン４００は、後述するオペレーション４４２へ分岐する。そうでない場合、ルーチン４００はオペレーション４３８へと続く。
【００４３】
オペレーション４３８では、ノードプール中のレイアウトノードの数が所定の数を超えているかどうかについて判定がなされる。ノードの数がノード数のしきい値を超えていない場合、ルーチン４００は分岐して、上述のオペレーション４１４へ戻る。ノードの数が実際にしきい値を超えている場合、ルーチン４００はオペレーション４４０へと続き、そこで最も高いペナルティを有するいくつかのレイアウトノードが、ノードプールから削除される。このようにして、これらのノードは考慮から外され、フォーマット結果を計算するのに必要な時間が低減されることになる。オペレーション４４０から、ルーチン４００は上述のオペレーション４１４へ戻る。
【００４４】
オペレーション４４２では、レイアウトマネージャー２６は、行サービスコンポーネント２７をコールして、フォーマット結果中の行を再構築する。これは、オペレーション４４４において行われる。次いでルーチン４００は、オペレーション４４６へと続き、そこでパラグラフキュッシュがレイアウトマネージャー２６によって削除される。行サービスコンポーネント２７は、オペレーション４４８においてそのキュッシュを削除する。そしてルーチン４００は、オペレーション４４６からオペレーション４５０へと続き、そこで終了する。
【００４５】
次いで図５を参照して、行ごとのパラグラフレイアウトを実行するための例示的なルーチン５００について説明する。詳細には、ルーチン５００はオペレーション５０２において開始し、そこでパラグラフ中の最初の行が現在の行として識別される。次いでルーチン５００は、オペレーション５０４へと続き、そこで現在の行について最良の可能な改行が特定される。これは、行サービスコンポーネント２７と通信し、その行についてのすべての可能な改行を生成するよう行サービスコンポーネント２７に要求することによって、達成することができる。このプロセスは、オペレーション５０６において生じる。すべての可能な改行が識別されると、レイアウトマネージャー２６は、行ごとにペナルティを計算し、行ごとに可能な最良の改行を選ぶことができる。このプロセスは、他の行からのペナルティを考慮することなく、各行に対して行われることが理解されるはずである。オペレーション５０４から、ルーチン５００はオペレーション５０８へと続く。
【００４６】
オペレーション５０８では、処理されるべきテキストの行がさらに残っているかどうかについて判定がなされる。処理すべき行がさらに残っている場合、ルーチン５００は、オペレーション５０８からオペレーション５１０へ続き、そこでパラグラフ中の次の行が、現在の行として識別される。次いでルーチン５００は、オペレーション５１０からオペレーション５０４に戻り、そこで再び上述の処理が行われる。
【００４７】
オペレーション５０８において、処理されるべき行はもう残っていないと判定された場合、ルーチン５００は、オペレーション５０８からオペレーション５１２へと分岐する。オペレーション５１２において、パラグラフ中の各行について個々の行ペナルティを合計することによって、行ごとのパラグラフについてのトータルペナルティが計算される。このトータルペナルティを利用して、可能なレイアウトノードを、レイアウトノードのペナルティが行ごとのパラグラフについてのペナルティを超える場合は、考慮の対象から外す。
【００４８】
オペレーション５１２から、ルーチン５００はオペレーション５１４へ続き、そこで行ごとのフォーマットの後にそのパラグラフと同じページ上に存在する任意の図を識別する。上述のように、これらの図のいずれかを後続のページへ押し出させるノードをノードプールから削除することができる。オペレーション５１２から、ルーチン５００はオペレーション５１６へ続き、そこで図４を参照して前述したオペレーション４１０へ戻る。図５に示された方法は、行ごとのレイアウトを行う１つの方法にすぎず、他の方法も利用できることが理解されるはずである。
【００４９】
図４Ａ〜４Ｃおよび図５を参照して上述した処理は、単一のパラグラフのみをレイアウトすることが理解されるはずである。本明細書に記載のさまざまなオペレーションを介したさらなるパスを作成して、ドキュメントの全ページ上のパラグラフのすべてを処理することができる。図４Ａ〜４Ｃおよび図５に示された処理は例示的なものにすぎず、他の処理ルーチンを利用してパラグラフ内の行をレイアウトできることも理解されるはずである。
【００５０】
次いで図６を参照して、図４Ａ〜４Ｃおよび図５に関して上述したルーチンについてテキストの例示的なパラグラフ５０への適用について説明する。詳細には、図６は、各繰り返しの後にノードプール６０中に存在するレイアウトノード６２Ａ〜６２Ｇを示している。初期設定では、ノードプール６０は空のノード６２Ａを含む。第１のパスの後、ノードプール６０は、テキストの最初の行について可能な２つのフォーマットを表すレイアウトノードを含む。詳細には、ノードプール６０は、レイアウトノード６２Ｂおよび６２Ｃを含む。レイアウトノード６２Ｂは、最少量のコンテンツを含むため、第２のパスについての現行ノードである。
【００５１】
パス２の間、２行目の可能なそれぞれの変形が、レイアウトノード６２Ｂに追加される。結果として、レイアウトノード６２Ｄおよび６２Ｅが、ノードプールに追加される。ノード６２Ｄは、ノード６２Ｅよりも大きなペナルティを有するので、削除される。ノード６２Ｂは、パス２にとっての現行ノードであったので、削除される。ノード６２Ｅは、計算された行ごとのフォーマット６４よりも高いペナルティを有するので、ノードプールから削除される。したがって、ノード６２Ｃが、第３のパスについての現行ノードとして選ばれる。
【００５２】
パス３の間、２行目の可能なそれぞれの変形が、レイアウトノード６２Ｃに追加される。結果として、レイアウトノード６２Ｆおよび６２Ｇが、ノードプールに追加される。ノード６２Ｃは、現行ノードであるので、ノードプールから削除される。ノード６２Ｆは、行ごとのフォーマットよりも高いペナルティを有するので、ノードプールから削除される。パス４では、レイアウトノード６２Ｇが、最後に残っているノードであり、パラグラフ５０の全体を表す。したがって、レイアウトノード６２Ｇが、最適化された最も適合するパラグラフレイアウトとして選ばれる。
【００５３】
上述の説明に基づいて、本発明のさまざまな実施形態は、最適化されるパラグラフレイアウトのための方法、システム、装置、およびコンピュータ可読媒体を含むことが理解されるはずである。上述の仕様、例、およびデータは、本発明の構成についての製造および使用の完全な説明を提供する。本発明の多くの実施形態は、本発明の趣旨および範囲から逸脱することなくなすことができるため、本発明は添付の特許請求の範囲に存する。
【図面の簡単な説明】
【００５４】
【図１】本発明のさまざまな実施形態において使用され、提供されるコンピュータシステムを示すコンピュータシステムアーキテクチャの図である。
【図２】本発明の実施形態において利用されるいくつかのソフトウェアコンポーネントの態様を示すソフトウェアアーキテクチャの図である。
【図３Ａ】テキストの例示的なパラグラフと、そのパラグラフについての可能ないくつかのパラグラフレイアウトの態様を示すブロック図である。
【図３Ｂ】テキストの例示的なパラグラフと、そのパラグラフについての可能ないくつかのパラグラフレイアウトの態様を示すブロック図である。
【図３Ｃ】テキストの例示的なパラグラフと、そのパラグラフについての可能ないくつかのパラグラフレイアウトの態様を示すブロック図である。
【図３Ｄ】テキストの例示的なパラグラフと、そのパラグラフについての可能ないくつかのパラグラフレイアウトの態様を示すブロック図である。
【図４Ａ】本発明の一実施形態による最適なパラグラフレイアウトを提供するための例示的なルーチンを示す流れ図である。
【図４Ｂ】本発明の一実施形態による最適なパラグラフレイアウトを提供するための例示的なルーチンを示す流れ図である。
【図４Ｃ】本発明の一実施形態による最適なパラグラフレイアウトを提供するための例示的なルーチンを示す流れ図である。
【図５】本発明の一実施形態による最適なパラグラフレイアウトを提供するための例示的なルーチンを示す流れ図である。
【図６】図４Ａ〜４Ｃおよび図５に示されたルーチンについてテキストの例示的なパラグラフへの適用を示すブロック図である。
【符号の説明】
【００５５】
２  コンピュータ
５  中央処理装置
７  システムメモリ
９  ランダムアクセスメモリ
１０  ワードプロセッシングアプリケーションプログラム
１１  読み取り専用メモリ
１４  大容量ストレージデバイス
１６  オペレーティングシステム
１８  ネットワーク
２０  ネットワークインターフェースユニット
２２  入力／出力コントローラ
２４  ドキュメント
２６  レイアウトマネージャー
２７  行サービスコンポーネント
３０  ドキュメントマネージャー
３２  コールバックコード
３４  バッキングストア
３６  フォーマット結果
３８  ディスプレイツリー
４０  レンダーされた出力
５０  パラグラフ
５２  マージン
５４  レイアウト
６０  ノードプール
６２  ノード
６４  行ごとのフォーマット
【図１】
2006209742.tif 000003
【図２】
2006209742.tif 000004
【図３Ａ】
2006209742.tif 000005
【図３Ｂ】
2006209742.tif 000006
【図３Ｃ】
2006209742.tif 000007
【図３Ｄ】
2006209742.tif 000008
【図４Ａ】
2006209742.tif 000009
【図４Ｂ】
2006209742.tif 000010
【図４Ｃ】
2006209742.tif 000011
【図５】
2006209742.tif 000012
【図６】
2006209742.tif 000013