(57)【特許請求の範囲】
【請求項１】
記憶媒体に格納された文書ページの複数のプリミティブエリアの読み取り順序を規定するための方法であって、前記方法は１つ以上の処理部によって実行され、
前記文書ページ内の前記複数のプリミティブエリアの位置に基づく第１ソート基準に従って前記複数のプリミティブエリアをプリミティブエリアのソート済シーケンスにソートする工程と、
第１プリミティブエリア及び第２プリミティブエリアを含む、前記ソート済シーケンス内で連続しているプリミティブエリアのペアを選択する工程と、
一次エリア及び二次エリアを決定するために、前記第１プリミティブエリアの座標系での前記第１プリミティブエリアの始点と前記第２プリミティブエリアの始点とを比較するとともに前記第２プリミティブエリアの座標系での前記第１プリミティブエリアの始点と前記第２プリミティブエリアの始点とを比較する第２ソート基準に基づいて、前記第１プリミティブエリアと前記第２プリミティブエリアとのうちの一方を前記一次エリアとして指定し、他方を前記二次エリアとして指定する工程と、
前記第２ソート基準に従って、前記二次エリアに対して前記一次エリアの前記始点の位置を比較する工程と、
前記二次エリアに対する前記一次エリアの前記始点の前記比較が前記第２ソート基準を満たす場合に、前記プリミティブエリアのソート済シーケンス内の前記第１プリミティブエリアと前記第２プリミティブエリアとを入れ換える工程と、
前記入れ換わったプリミティブエリアのシーケンスに基づいて前記複数のプリミティブエリアの読み取り順序を規定するための順序リストを生成する工程と
を有することを特徴とする方法。
【請求項２】
第２ソート基準に基づいて、前記第１プリミティブエリアと前記第２プリミティブエリアとのうちの一方を前記一次エリアとして指定し、他方を前記二次エリアとして指定する前記工程は、
前記第１プリミティブエリアの始点及び前記第２プリミティブエリアの始点を識別する工程と、
前記ページの座標系の下で識別された前記第１プリミティブエリアの始点と前記第２プリミティブエリアの始点とを比較する工程と、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記第１ソート基準は、前記複数のプリミティブエリアの始点の比較にさらに基づき、前記第２ソート基準は前記連続している２つのプリミティブエリアのうちの１つの読み取りフローにさらに基づくことを特徴とする請求項１に記載の方法。
【請求項４】
前記一次エリアの始点が前記二次エリアの先行領域内にある場合に前記一次エリアは前記二次エリアの前にあることを特徴とする請求項１に記載の方法。
【請求項５】
前記一次エリアの始点が前記二次エリアの後続領域内にある場合に前記一次エリアは前記二次エリアの後にあることを特徴とする請求項１に記載の方法。
【請求項６】
前記二次エリアの座標において重なる水平範囲を有する前記二次エリアのすべてのカラムの完全に上に前記一次エリアの内部領域が位置し、且つこのようなカラムが２つ以上存在する場合に、前記一次エリアは前記二次エリアの前にあることを特徴とする請求項１に記載の方法。
【請求項７】
前記入れ換わったシーケンス内のプリミティブエリアの位置に従って前記複数のプリミティブエリアのそれぞれに順序インデックスを割り当てる工程をさらに有することを特徴とする請求項１に記載の方法。
【請求項８】
前記複数のプリミティブエリアを１つ以上の区画にグループ分けする工程をさらに有することを特徴とする請求項１に記載の方法。
【請求項９】
前記複数のプリミティブエリアのグループ分けと、前記入れ換わったシーケンス内の前記プリミティブエリアの位置とに従って、前記複数のプリミティブエリアのそれぞれに順序インデックスを割り当てる工程をさらに有することを特徴とする請求項８に記載の方法。
【請求項１０】
少なくとも１つの処理部によって実行された場合に文書ページの複数のプリミティブエリアの読み取り順序を規定するプログラムを格納する、機械で読み取り可能な記憶媒体であって、前記プログラムは、
前記文書ページ内の前記複数のプリミティブエリアの複数の始点を比較する第１ソート基準に基づいて前記複数のプリミティブエリアをプリミティブエリアのソート済シーケンスにソートするための命令セットであって、前記ソート済シーケンスは、第１プリミティブエリアと、前記シーケンスにおいて前記第１プリミティブエリアに後続する第２プリミティブエリアとを含む、命令セットと、
前記第２プリミティブエリアに先行する領域及び前記第２プリミティブエリアに後続する領域に関して前記第１プリミティブエリアの始点の位置を比較する第２ソート基準に従って前記第１プリミティブエリアと前記第２プリミティブエリアとを比較するための命令セットと、
前記第１プリミティブエリアの前記始点が前記第２プリミティブエリアに後続する前記領域内にある場合に、前記ソート済シーケンス内の前記第１プリミティブエリアと前記第２プリミティブエリアとを入れ換えるための命令セットと、
前記入れ換わったプリミティブエリアのシーケンスに基づいて前記複数のプリミティブエリアの読み取り順序を規定するための順序リストを生成するための命令セットと
を含むことを特徴とする記憶媒体。
【請求項１１】
前記プログラムは、前記入れ換わったシーケンスのプリミティブエリアの位置に従って前記複数のプリミティブエリアのそれぞれに順序インデックスを割り当てるための命令セットをさらに含むことを特徴とする請求項１０に記載の記憶媒体。
【請求項１２】
前記第２プリミティブエリアに先行する前記領域は前記第２プリミティブエリアの読み取りフローにおいて前記第２プリミティブエリアに先行する前記文書ページ内の領域を含み、前記第２プリミティブエリアに後続する前記領域は前記第２プリミティブエリアの前記読み取りフローにおいて前記第２プリミティブエリアに後続する前記文書ページ内の領域を含むことを特徴とする請求項１０に記載の記憶媒体。
【請求項１３】
前記第２プリミティブエリアの前記読み取りフローは、前記第２プリミティブエリアと前記文書ページにおける水平線との間の角度に基づくことを特徴とする請求項１２に記載の記憶媒体。
【請求項１４】
前記複数の始点のそれぞれは垂直座標及び水平座標を有し、前記第１ソート基準は前記複数の始点の垂直座標を比較することを特徴とする請求項１０に記載の記憶媒体。
【請求項１５】
前記第１ソート基準は、２つのプリミティブエリアの垂直座標が閾値以下だけ異なる場合に前記複数の始点の水平座標を比較することを特徴とする請求項１４に記載の記憶媒体。
【請求項１６】
少なくとも１つの処理部で実行された場合に文書ページの複数のプリミティブエリアの読み取り順序を規定するプログラムを格納する、機械で読み取り可能な記憶媒体であって、前記プログラムは、
前記文書ページ内の前記複数のプリミティブエリアの位置に基づく第１ソート基準に従って前記複数のプリミティブエリアをプリミティブエリアのソート済シーケンスにソートするための命令セットと、
第１プリミティブエリア及び第２プリミティブエリアを含む、前記ソート済シーケンス内で連続しているプリミティブエリアのペアを選択するための命令セットと、
一次エリア及び二次エリアを決定するために、前記第１プリミティブエリアの座標系での前記第１プリミティブエリアの始点と前記第２プリミティブエリアの始点との比較及び前記第２プリミティブエリアの座標系での前記第１プリミティブエリアの始点と前記第２プリミティブエリアの始点との比較に基づいて、前記第１プリミティブエリアと前記第２プリミティブエリアとのうちの一方を前記一次エリアとして指定し、他方を前記二次エリアとして指定するための命令セットと、
第２ソート基準に従って、前記二次エリアに対して前記一次エリアの前記始点の位置を比較するための命令セットと、
前記二次エリアに対する前記一次エリアの前記始点の前記比較が前記第２ソート基準を満たす場合に、前記プリミティブエリアの前記ソート済シーケンス内の前記連続した２つのプリミティブエリアを入れ換えるための命令セットと、
前記入れ換わったプリミティブエリアのシーケンスに基づいて前記複数のプリミティブエリアの読み取り順序を規定するための順序リストを生成するための命令セットと
を有することを特徴とする記憶媒体。
【請求項１７】
前記第１ソート基準は前記複数のプリミティブエリアの複数の始点の比較にさらに基づくことを特徴とする請求項１６に記載の記憶媒体。
【請求項１８】
前記第２ソート基準は前記連続した２つのプリミティブエリアのうちの１つのプリミティブエリアの読み取りフローにさらに基づくことを特徴とする請求項１６に記載の記憶媒体。
【請求項１９】
前記連続した２つのプリミティブエリアのうちの１つのプリミティブエリアは、文字グリフを含むレイアウトエリアであることを特徴とする請求項１８に記載の記憶媒体。
【請求項２０】
特定のプリミティブエリアの読み取りフローは、前記特定のプリミティブエリアと前記文書ページ内の水平線との間の角度に基づくことを特徴とする請求項１８に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は文書のページの複数のプリミティブエリアを編成するための技術に関する。
【背景技術】
【０００２】
文書は、規定の位置でページ上に描かれたプリミティブ要素の集まりに過ぎないものであると定義されることがある。例えば、ＰＤＦ（ポータブルドキュメントフォーマット）ファイルは構造的定義を有しないかもしれないが、その代わりに様々な位置にグリフ、形状及びビットマップを描くための命令に過ぎないものを有するだろう。
【０００３】
ユーザはこのような文書を標準的なモニタで閲覧して構造を推測できる。しかしながら、このようなファイルはプリミティブ要素の集まりに過ぎないので、文書閲覧アプリケーションは文書の意図された構造の知識を何も有さない。文書を表示するアプリケーションは、テキストのまとまりの行及び列に基づいてテキストのまとまりが互いに関連性を有しうるということを全く示さないだろう。なぜなら、文書はこのような情報を含まないからである。同様に、アプリケーションはページ内のテキストのフロー（例えば、１つのカラムから次のカラムへのフロー、又は埋め込まれた画像の周りのフロー）又は人間のユーザにより即座に決定されうる他の様々な重要な性質を何も示さない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許公開第２０１０／０１７４９８５号明細書
【特許文献２】米国特許出願公開第２０１０／０１７４９８３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
文書構造に関する知識がこのように欠如していることは、ユーザが単に標準的なモニタで文書を閲覧する場合には常に問題となるわけではないだろう。しかしながら、あたかもワードプロセッサにより作成された文書であるかのように文書にアクセスし編集できるので、構造と要素間の関連性とを有する画像編集アプリケーションなどは読者にとって価値を有することもあるだろう。人間は文書のページ内のコンテンツを見ることができ、大部分についてコンテンツの読み取り順序を決定できる。これは、大抵の場合に人間の目にはすぐに分かる作業である。しかしながら、このような作業はコンピュータアプリケーションにとってすぐに分かるものではない。ページが複雑になる（縦方向だけのテキストのカラムとは対照的に、方向が異なる複数のテキストのカラムになる）につれて、順序の決定はさらに難しくなる。さらに、このようなページのどの部分を人が選択しようとしているかの決定も同様に難しい作業である。
【課題を解決するための手段】
【０００６】
本発明の一部の実施形態は文書のコンテンツを編成する方法を提供する。プリミティブエリアに構造化されているコンテンツを有する文書ページについて、本方法はプリミティブエリアを順序リストにソートすることによって文書ページのコンテンツを体系化する。一部の実施形態では、本方法は第１ソート基準に従って複数のプリミティブエリアをプリミティブエリアのシーケンスにソートし、第２ソート基準に従ってシーケンス内の連続したプリミティブエリアを入れ換える。本方法は入れ換わったプリミティブエリアのシーケンスに基づいて順序リストを生成する。
【０００７】
一部の実施形態では、本方法はまず、ページ内のプリミティブエリアの始点の位置を比較する始点順序関係を用いて文書内のプリミティブエリアをソートし、その後、本方法は、プリミティブエリア内のコンテンツの読み取りフローに従ってプリミティブエリアをソートする文脈的順序関係を用いて始点順序関係により作成された最初のソート結果を改良する。文脈的順序関係は各プリミティブエリアについて先行領域及び後続領域を規定し、隣接エリアの始点がプリミティブエリアの後続領域内にあるか又は先行領域内にあるかを判定する。一部の実施形態では本方法は始点順序関係に従ってプリミティブエリアをまずソートし、その後に正しく順序付けされていないプリミティブエリアを文脈的順序関係に従って入れ換えることによって順序リストを生成する。
【０００８】
一部の実施形態は順序リスト内の順序インデックスによって各プリミティブエリアの各要素を表す。順序インデックスは順序リスト内のプリミティブエリアの順序に従うとともに、各プリミティブエリア内の要素の順序に従って割り当てられる。ページ内に可視の仕切りが存在する例では、一部の実施形態はページ内の可視の仕切りにより課された区画に従って順序リスト内のプリミティブエリアをグループ分けする。その後、本方法はプリミティブエリアのグループ分けに従って順序インデックスを割り当てる。
【０００９】
順序リストに基づいて、本発明の一部の実施形態は文書内の相異なるプリミティブエリアにわたる文書コンテンツの連続した選択を実行する方法を提供する。一部の実施形態は連続した選択の最初と最後のプリミティブ要素を識別することによって順序リスト内の連続した選択を規定する。最初のプリミティブ要素は読み取りフローにおいてページ上の開始選択点に最も近いプリミティブ要素として識別され、最後のプリミティブ要素は読み取りフローにおいてページ上の終了選択点に最も近いプリミティブ要素として識別される。
【００１０】
上述の概要は本発明の一部の実施形態の簡潔な導入として役立つことが意図される。本文書で開示されるすべての発明の主題の導入又は概説であることを意味しない。以下の詳細な説明と詳細な説明で参照される図面とは概要に記載された実施形態だけでなく他の実施形態をさらに記載するだろう。従って、本明細書に記載されるすべての実施形態を理解するために、概要、詳細な説明及び図面の全部を検討することが必要となる。さらに、請求項に係る主題は概要、詳細な説明及び図面における例示の詳細には限定されず、添付の特許請求の範囲によって規定される。なぜなら、請求項に係る主題は当該主題の精神から逸脱することなく他の特定の形式で具現化されうるからである。
【００１１】
本発明の新規な特徴は添付の特許請求の範囲で説明される。しかしながら、説明のために、本発明のいくつかの実施形態が以下の図面に説明される。
【図面の簡単な説明】
【００１２】
【図１】電子文書のコンテンツを順序リストに構造化し、当該順序リストを用いて電子文書内の隣接するコンテンツの選択を容易にする例示のシステムを概念的に説明する図である。
【図２】プリミティブ要素から構造化されたいくつかのプリミティブエリアを含む文書のページを説明する図である。
【図３】ページ内のプリミティブエリアから生成された例示の順序リストを概念的に説明する図である。
【図４】図２の文書ページに関する例示の連続した選択を説明する図である。
【図５】図２の文書ページに基づいて生成された順序リスト内のプリミティブ要素の連続した選択を概念的に説明する図である。
【図６】ページ内の一部のタイプのエリアについて始点及び終点の例を説明する図である。
【図７】レイアウトエリアの内部エリア、先行エリア及び後続エリアの例を説明する図である。
【図８】４つの相異なるシナリオにおける始点順序関係の例を説明する図である。
【図９】ページ内の２つのエリア間の順序を決定するために文脈的順序関係を用いる処理を概念的に説明する図である。
【図１０】ページの座標系にアライメントされているエリアとページの座標系にアライメントされていない別のエリアとを含むページを説明する図である。
【図１１】、
【図１２】、
【図１３】図９に説明される処理により実行される一次エリアと二次エリアとの間の順序の決定を説明する図である。
【図１４】ページ上の複数のエリアを順序付けするために始点順序関係と文脈的順序関係とを用いる例示の処理を概念的に説明する図である。
【図１５】例示のページと例示のページに対応する例示の順序リストとを説明する図である。
【図１６】２つの区間を有するページから順序リストを作成することを説明する図である。
【図１７】開始選択点及び終了選択点を用いてページ上の連続した選択を実行するための処理を概念的に説明する図である。
【図１８】開始選択点及び終了選択点を用いたページ上の連続した選択を説明する図である。
【図１９】いくつかの例示の選択点とプリミティブエリアとを説明する図である。
【図２０】選択点のｙ変位に基づいて選択点に最も近いプリミティブエリアを決定することを説明する図である。
【図２１】レイアウトエリアがグラフィックエリアの境界内に含まれる場合に当該レイアウトエリアが最も近いプリミティブエリアとして選択されることを説明する図である。
【図２２】選択カラムを有しない２つのレイアウトエリアの比較を説明する図である。
【図２３】ｘ変位値の様々な決定に基づくプリミティブエリアの比較を説明する図である。
【図２４】どのレイアウトエリアが選択点から最小のｘ変位を有する選択カラムを有するかを判定することによって選択カラムを有するレイアウトエリアを比較することを説明する図である。
【図２５】様々な基準を用いて選択点に最も近いプリミティブエリアに基づいて選択インデックスを決定するための処理を概念的に説明する図である。
【図２６】選択点の位置と選択インデックスの決定との間の関係を説明する図である。
【図２７】連続した選択のいずれかの端部においてプリミティブ要素を含むか除くかを判定する例を説明する図である。
【図２８】一部の実施形態の文書編集アプリケーションのソフトウェアアーキテクチャを概念的に説明する図である。
【図２９】本発明の一部の実施形態が実施されるコンピュータシステムを概念的に説明する図である。
【発明を実施するための形態】
【００１３】
以下の記載では、説明のために数多くの詳細が説明される。しかしながら、当業者は本発明がこれらの特定の詳細を用いずに実施されてもよいことを理解するだろう。他の例では、不必要な詳細で本発明の記載を妨げないようにブロック図において周知の構造及びデバイスが示される。本明細書を通じて、読み取りフローの２つの主方向（左から右、上から下）は西洋言語に基づいて選択される。特に、以下に記載される一部の実施形態はｘ座標における比較の前にｙ座標における比較が実行される。しかしながら、当業者は他の言語（例えば、読み取りフローが上から下、次いで右から左である東アジアの言語）における文書に順応するように読み取りフローの主方向が変更されうることを理解するだろう。この例では、一部の実施形態はｙ座標における比較の前にｘ座標における比較を実行する。
【００１４】
本発明の一部の実施形態は文書のコンテンツを編成する方法を提供する。プリミティブエリアに構造化されているコンテンツを有する文書ページについて、本方法はプリミティブエリアを順序リストにソートすることによって文書ページのコンテンツを編成する。一部の実施形態では、本方法は第１ソート基準に従ってプリミティブエリアをプリミティブエリアのシーケンスにソートし、第２ソート基準に従ってシーケンス内の連続したプリミティブエリアを入れ換える。本方法はプリミティブエリアの入れ換え後のシーケンスに基づいて順序リストを生成する。
【００１５】
図１は電子文書のコンテンツを順序リストに構造化し、当該順序リストを用いて電子文書内の隣接するコンテンツの選択を容易にする例示のシステムを概念的に説明する。図１は図２〜図５を参照して記載される。図１は、パーサ１１０、レイアウト識別モジュール１２０、順序分析モジュール１３０及び文書インタラクション・表示モジュール１４０を含む例示のシステム１００を説明する。文書インタラクション・表示モジュール１４０は選択モジュール１５０を含む。
【００１６】
パーサ１１０は文書１０５を受信し、これを文字グリフ又は画像のような様々なプリミティブ要素に構文解析する。一部の実施形態では、パーサは文書のビットストリームを受信し、これをプリミティブ要素に構文解析する。一部の実施形態では、パーサ１１０はまた、写真、図表又は他のスタンドアロン画像のようなグラフィック要素を文書１０５から認識する。パーサ１１０は認識されたデータ要素及び文書内でのそれらの地理的位置に基づいてプリミティブ要素１１５を識別する。一部の実施形態では、パーサによって構文解析されたプリミティブ要素１１５はまた、単語、テキスト行、段落及びカラムのようなページ内のコンテンツに関する高レベル情報を含む。一部の実施形態では、システム１００はパース１０５を含まず、その結果としてその代わりにレイアウト識別モジュール１２０が直接にプリミティブ要素１１５を受信する。
【００１７】
レイアウト識別モジュール１２０はプリミティブ要素１１５を受信し、受信したプリミティブ要素をプリミティブエリア１２５の集まりに構造化する。一部の実施形態では、プリミティブエリアはページのコンテンツをモデル化するために用いられる高レベルデータ構造である。ページ上のプリミティブエリアは互いに重なりうる。これらのエリアのそれぞれは、適宜配置され、回転され、又はその自身のアフィン変換によって他のように変換されうる。これらのエリアはレイアウトエリア、スタンドアロン形状、スタンドアロン画像及び（場合によっては入れ子になった）区画又はマルチ形状グラフィックのような様々なカテゴリのエリアのグループを含む。一部の実施形態では、各レイアウトエリアは左から右へレイアウトされた一連のカラムであり、各カラムは上から下へレイアウトされた一連の段落であり、各段落は上から下へレイアウトされた一連のテキスト行である。各テキスト行は左から右へレイアウトされた一連の単語及びインライングラフィックであり、単語は左から右へレイアウトされた一連の文字である。プリミティブ要素をプリミティブエリアに構造化する一部の実施形態の方法は特許文献１に記載され、これは参照によって本明細書に組み込まれる。
【００１８】
図２はプリミティブ要素から構造化されたいくつかのプリミティブエリアを含む文書のページを説明する。説明されるように、ページ２００はプリミティブエリア２１０（Ａ１）、２２０（Ａ２）、２３０（Ａ３）、２４０（Ａ４）、２５０（Ａ５）を含む。プリミティブエリア２５０はスタンドアロン画像である。プリミティブエリア２３０、２４０はテキストを含むレイアウトエリアである。特に、レイアウトエリア２３０はテキストカラムＣ１、Ｃ２、Ｃ３を含み、レイアウトエリア２４０はテキストカラムＣ４、Ｃ５を含む。一部の実施形態では、レイアウト識別モジュールはカラムＣ１〜Ｃ３内の文字からレイアウトエリア２４０を構造化し、カラムＣ４、Ｃ５内の文字からレイアウトエリア２３０を構造化するために用いられる。
【００１９】
プリミティブエリアのそれぞれは始点を有する（プリミティブエリア２１０は始点２１５を有し、プリミティブエリア２２０は始点２２５を有し、プリミティブエリア２３０は始点２３５を有し、プリミティブエリア２４０は始点２４５を有し、プリミティブエリア２５０は始点２５５を有する。）。一部の実施形態では、プリミティブエリアの始点はプリミティブエリアの左上の角にある。なぜなら、ここは通常、プリミティブエリアの読み取りが始まるところだからである。一部の実施形態では、レイアウトエリアの始点は左上の角ではなくテキストの先頭である（例えば、レイアウト／プリミティブエリアＡ４の始点２４５はＡ４の左上の角の代わりに段落Ｃ１の先頭にある。）。
【００２０】
図１の順序分析モジュール１３０はプリミティブエリア１２５を受信し、受信したプリミティブエリアをソートすることによって順序リスト１３５を生成する。一部の実施形態では、順序分析モジュールは相異なるプリミティブエリアの始点の位置を比較することによってソートを実行する。特に、プリミティブエリア２１０、２２０、２３０、２４０、２５０の始点２１５、２２５、２３５、２４５、２５５は、プリミティブエリア同士の順序を決定するために互いに比較される。これは、一部の実施形態では始点順序関係と呼ばれる。一部の実施形態は、どのプリミティブエリアの始点がページの上に近いか（すなわち、大きなｙ座標値を有するか）を判定することによってこの決定を行う。ｙ座標を比較してもどのページが先に来るべきかを決定できないならば（例えば、２つのプリミティブエリアが同じｙ座標の始点を有するならば）、一部の実施形態は順序リストにおいてどのプリミティブエリアが先に来るべきかを判定するために始点の水平位置（すなわちｘ座標）を用いる。一部の実施形態では、始点の比較は西洋言語の読み取りフローの方向を模倣するためにこの順序（すなわち、上から下、次いで左から右）で実行される。当業者は他の言語（例えば、読み取りフローが上から下へ、次いで右から左へである東アジアの言語）における文書に順応するように始点の比較が変更されうることを理解するだろう。始点の順序はセクションＩ−Ａにおいて図８を参照しつつさらに後述される。
【００２１】
一部の実施形態では、順序分析モジュール１３０はさらに、ページ内のプリミティブ要素及びプリミティブエリアの読み取りフローに従ってソート結果を改良する。ページに関するプリミティブエリアの方向はプリミティブエリアの主読み取りフローを決定する。一部の実施形態では、レイアウトエリアはその階層構造における各レベル（例えば、カラム、段落、テキスト行など）における新たな読み取りフローの方向を確立する。確立された読み取りフローのそれぞれは、プリミティブエリア間の順序に影響する。結果として、始点を比較しても、ページ内の読み取りフローに整合するプリミティブエリアの順序は必ずしも得られない。従って、順序分析モジュール１３０は読み取りフローに従ってプリミティブエリアを識別して再び順序付けすることによって、始点の比較で得られた順序を改良する。読み取りフローに従ってプリミティブエリアをソートすることは文脈的関係順序付けとして知られ、これはセクションＩ−Ｂにおいて図９〜図１４を参照してさらに後述される。
【００２２】
図２の例示の文書ページ２００について、始点順序関係に従うソートは、順序Ａ１→Ａ２→Ａ３→Ａ４→Ａ５に従って５つのプリミティブエリアをソートするだろう。なぜなら、Ａ１の始点はＡ２の始点よりも上にあり、Ａ２の始点はＡ３の始点よりも上にあり、Ａ３の始点はＡ４よりも上にあり、Ａ４の始点はＡ５の始点よりも上にあるからである。しなしながら、ページ２００を読む人間の読者はＡ４及びＡ３のテキストフローに従い、Ａ１→Ａ４→Ａ３→Ａ２→Ａ５の順序で読むだろう。さらに、ページ２００を読む人間はＡ３が他のプリミティブエリアに対して傾いていることに気が付き、Ａ３の傾斜又は回転に従ってテキストのフローをたどるように試みるだろう。
【００２３】
よって、始点順序関係だけに基づいて順序リストを作る代わりに、一部の実施形態は文脈的順序関係に従ってソート結果を改良する。文脈的順序関係はプリミティブエリアのそれぞれの内部の読み取りフローに従って相異なるプリミティブエリア間の順序を確立する。一部の実施形態は、各プリミティブエリアについて先行領域及び後続領域を定義し、隣接するエリアの始点がプリミティブエリアの後続領域にあるか先行領域にあるかを判定することによって、文脈的順序関係ソートを実行する。先行領域及び後続領域の定義はプリミティブエリアの読み取りフローに基づく（それ故、エリアの傾斜を考慮に入れる。）。例示のページ２００では、Ａ３の先行領域は読み取りフローにおいてＡ３の上にあり左にあるエリアであると定義され、Ａ３の後続領域は読み取りフローにおいてＡ３の右にあり下にあるエリアであると定義される。Ａ２の始点２２５はＡ３の後続領域内にあるので、プリミティブエリアＡ２はレイアウトエリアＡ３に後続する。Ａ４の始点２４５はＡ３の先行領域内にあるので、レイアウトエリアＡ４はレイアウトエリアＡ３に先行する。よって、文脈的順序関係に基づく順序は、Ａ１→Ａ４→Ａ３→Ａ２→Ａ５となる。
【００２４】
図３は図２のページ２００内のプリミティブエリアから生成された例示の順序リストを概念的に説明する。図３に説明される順序リスト３００は木構造によって表される。当業者は、順序構造が表、配列、連結リスト又はプリミティブエリア間のシーケンシャルな関係を表せる任意の他のデータオブジェクトモデリング構造でありうることを理解するだろう。例えば、以下の図１５及び図１６は配列１５５０、１６４０で表される順序リストを説明する。
【００２５】
ページ２００から生成される順序リストはルートノードといくつかの子ノードとを含む木構造３００により表される。ルートノード３０５はページ２００に対応し、子ノード３１０、３２０、３３０、３４０、３５０はそれぞれプリミティブエリア２１０、２２０、２３０、２４０、２５０に対応する。子ノード３４０はカラムＣ１〜Ｃ３に対応する孫ノード３４１〜３４３を有する。子ノード２３０はカラムＣ４、Ｃ５に対応する孫ノード３３１、３３２を有する。順序リスト内の子ノードは順序分析モジュール１３０により実行されたソート動作に従って左から右へ（点線矢印で示されるようなＡ１→Ａ４→Ａ３→Ａ２→Ａ５に）順序付けされている。一部の実施形態では、１つのプリミティブエリアのすべてのプリミティブ要素は直前のプリミティブエリア内のすべてのプリミティブ要素の後にあるとみなされる。従って、エリアＡ４のカラムＣ１、Ｃ２、Ｃ３は順序リスト３００内でエリアＡ３のカラムＣ４、Ｃ５の前にある。一部の実施形態では、エリアＡ４内のカラムよりも階層構造において下にあるプリミティブ要素（例えば、段落、テキスト行、グリフなど）も、Ａ３内のプリミティブ要素の前にあるとみなされる。
【００２６】
プリミティブエリア内のプリミティブ要素はプリミティブエリアにおける読み取り順序に従ってソートされる。参照によって本明細書に組み込まれる特許文献１に記載されるように、文字グリフ及びグラフィックプリミティブの位置及びサイズだけから始めることによって、レイアウトエリア内の要素の読み取り順序を含むレイアウトエリアのすべての要素を再構築できる。Ａ４の下にあるカラムは（点線矢印に示されるように）読み取り順序Ｃ１→Ｃ２→Ｃ３に従ってソートされ、Ａ３の下にあるカラムは読み取り順序Ｃ４→Ｃ５に従ってソートされる。順序リスト内のすべてのプリミティブエリアがソートされ、各プリミティブエリア内のプリミティブ要素もソートされるので、順序リストは１つの連続したリスト内で実質的にすべてのプリミティブ要素をリンクする。
【００２７】
一部の実施形態では、各プリミティブエリアの各要素は順序リストにおいて順序インデックスで表される。順序インデックスは順序リストにおけるプリミティブエリアの順序に従うとともに、各プリミティブエリア内の文書要素の順序に従って割り当てられる。一部の実施形態では、順序リスト内のプリミティブエリアはページ内の可視の仕切りによって課された区画に従ってグループ分けされる。ページ内の可視の仕切りによるプリミティブエリアのグループ分けは図１６を参照して後述される。
【００２８】
図１の文書インタラクション・表示モジュール１４０は順序分析モジュールによって生成された順序リスト１３５を受信する。一部の実施形態では、文書インタラクション・表示モジュールはまた、レイアウト識別モジュール１２０によって作成されたプリミティブエリア１２５と、パーサ１１０によって抽出されたプリミティブ要素１１５とを受信するか、これらにアクセスできる。受信した順序リスト及び／又はプリミティブ要素・エリアに基づいて、文書インタラクション・表示モジュール１４０は文書のコンテンツの表示を可能にし、文書とのインタラクションを容易にする。
【００２９】
一部の実施形態では、文書インタラクション・表示モジュールは、文書内のコンテンツの選択、検索、ナビゲーション、リフロー、コピー／ペースト、置換又は編集のような機能を実行するコンテンツ選択モジュール１５０を含む。１つの特定のレイアウトエリアにおいてこれらのソフトウェア機能を実行する方法は特許文献２に記載され、この文献は参照によって本明細書に組み込まれる。順序リスト１３５を用いることによって、コンテンツ選択モジュール１５０はまた、相異なるプリミティブエリアにわたって文書コンテンツに対してこれらの動作を実行する。
【００３０】
一部の実施形態では、コンテンツ選択モジュール１５０は順序リスト内のプリミティブ要素を参照することによって文書コンテンツの選択を規定する。順序リストは１つの連続したリスト内のすべてのプリミティブ要素をリンクするので、コンテンツ選択モジュール１５０は順序リストの１つの連続した区間内のプリミティブ要素を連続したコンテンツとして処理する。従って、これらの実施形態の一部では、文書内の連続したコンテンツの選択（すなわち、文書内のコンテンツの連続した選択）は、順序リスト内の連続した区間によって規定されうる。一部の実施形態は、連続した区間の最初のプリミティブ要素と最後のプリミティブ要素とによって、連続した区間を規定する。一部の実施形態は順序リストを参照するインデックスのペアによって、連続した選択における最初のプリミティブ要素と最後のプリミティブ要素とを識別する。
【００３１】
一部の実施形態では、文書内のコンテンツ要素を選択するために開始選択点と終了選択点とを用いることによって、連続した選択を実行する。一部の実施形態では、開始選択点及び終了選択点はＧＵＩ環境で決定される。一部の実施形態は選択動作が始まった時（例えば、選択動作中にユーザが最初にマウスボタンを押した時やタッチスクリーンにタッチした時）のカーソルの位置によって開始選択点を決定し、選択動作が終わった時（例えば、選択動作中にユーザがマウスボタンを離した時やタッチスクリーンへのタッチをやめた時）のカーソルの位置によって終了選択点を決定する。
【００３２】
図４は図２の文書ページ２００に関する例示の連続した選択を説明する。上述のように、ページ２００はプリミティブエリアＡ１〜Ａ５を含み、プリミティブエリアＡ４はカラムＣ１、Ｃ２、Ｃ３を含み、プリミティブエリアＡ３はカラムＣ４、Ｃ５を含む。カラムＣ３、Ｃ４、Ｃ５及びプリミティブエリアＡ３、Ａ２、Ａ５は連続した選択の部分として選択されていることを示すためにハイライト表示されている。図４はまた、（△で説明される）開始選択点４１０と（Ｘで説明される）終了選択点４２０とを説明し、これらは連続した選択を決定するために用いられる。当業者は、図４における開始選択点及び終了選択点の説明が説明するためのものであることを理解するだろう。一部の実施形態は開始選択点及び／又は終了選択点を表示しない。他の一部の実施形態は矩形選択ボックスの角のような他の視覚的手がかりを用いて開始選択点及び終了選択点を表示する。
【００３３】
一部の実施形態はページ内のどのプリミティブ要素が読み取り順序において選択点に最も近いかを決定することによって、連続した選択における最初のプリミティブ要素及び最後のプリミティブ要素を決定する。図４の例では、コンテンツ選択モジュール１５０はエリアＡ４のカラムＣ３内の最初の文字グリフを読み取り順序において開始選択点４１０に最も近いプリミティブ要素として識別し、エリアＡ５内の画像を読み取り順序において終了選択点４２０に最も近いプリミティブ要素として識別する。言い換えると、Ｃ３の先頭及びＡ５の末尾が、連続した選択における最初のプリミティブ要素及び最後のプリミティブ要素として識別される。その後、一部の実施形態は識別された最初のプリミティブ要素及び最後のプリミティブ要素を用い、連続した選択におけるすべてのプリミティブ要素及びプリミティブエリアを、順序リストを用いて識別する。
【００３４】
図５はページ２００に基づいて生成された順序リスト３００内のプリミティブ要素の連続した選択を概念的に説明する。説明されるように、ノード３４３（カラムＣ３を表すノード）とノード３５０（プリミティブエリアＡ５を表すノード）との間の順序リスト３００内のすべてのノードが（Ｃ３、Ａ３、Ｃ４、Ｃ５、Ａ２、Ａ５を表すノードのハイライトによって示された）連続した選択の部分である。コンテンツ選択はセクションＩＩでさらに後述される。
【００３５】
本発明をさらに記載する前に、一部の実施形態で用いられるいくつかの用語及び概念を先に導入し、説明する。一部の実施形態は、ページ上のコンテンツ（例えば、段落、１つ以上の段落を含むカラム、１つ以上のカラムを含むレイアウトなど）の境界を、当該コンテンツを含む最小の直立した四角形であると定義する。これらの実施形態の一部は四角形の辺がコンテンツの局所座標系の軸に平行である場合に境界が「直立」していると定義する。さらに、一部の実施形態はレイアウトエリアの始点を、その最初のカラムの境界の左上の角であると定義し、終点をその最後のカラムの境界の右下の角であると定義する。境界の「左上」の角及び「右下」の角はレイアウトエリアの局所座標に基づいて定義される。形状、画像又は形状及び画像のグループのような、レイアウトエリアではない他のタイプのエリアについて、始点は一部の実施形態では局所座標における当該エリアの境界の左上の角であると定義される。同様に、これらの非レイアウトタイプのエリアの終点は一部の実施形態では局所座標における当該エリアの境界の右下の角であると定義される。
【００３６】
一部の実施形態について、図６はページ内の一部のタイプのエリアについて例示の始点及び終点を説明する。図６はエリア６１０、６２０、６３０を含むページ６００を説明する。エリア６１０は始点６１２及び終点６１４を有する。エリア６２０は始点６２２及び終点６２４を有する。エリア６３０は始点６３２及び終点６３４を有する。
【００３７】
エリア６１０は男性のグラフィカル表現を含むがテキストを含まない。一部の実施形態はこのようなエリアをレイアウトエリアではなくグラフィカルエリアと分類する。グラフィカルエリア６１０の始点６１２はグラフィカルエリアの左上の角であると定義され、グラフィカルエリア６１０の終点６１４はグラフィカルエリアの右下の角であると定義される。一部の実施形態では、「上」、「下」、「左」、「右」の定義はグラフィカルエリア６１０の（不図示の）局所座標系を基準とする。グラフィカルエリア６１０はページに対して回転していないので、グラフィカルエリア６１０の局所座標系に従う上／下／左／右の定義はページ６００の座標系６８０に従う上／下／左／右の定義と同一である。
【００３８】
エリア６２０はいくつかのテキストのカラム６６１〜６６４を含む。一部の実施形態はこのようなエリアをレイアウトエリアと分類する。グラフィカルエリア６１０とは異なり、レイアウトエリア６２０の始点及び終点はエリアの左上の角及び右下の角であるとは定義されない。その代わりに、レイアウトエリア６２０の始点６２２は最初のカラム６６１の境界６５１の左上の角であると定義される。レイアウトエリア６２０の終点６２４は最後のカラム６６４の境界６５４の右下の角であると定義される。レイアウトエリア６２０はページに対して回転していないので、レイアウトエリア６２０の（不図示の）局所座標系に従う上／下／左／右の定義はページ６００の座標系６８０に従う上／下／左／右の定義と同一である。
【００３９】
エリア６３０もいくつかのテキストのカラム６６５〜６６７を含む。一部の実施形態はエリア６２０と同様にエリア６３０をレイアウトエリアとして分類する。レイアウトエリア６２０と同様に、レイアウトエリア６３０の始点６３２は最初のカラム６６５の境界６５５の左上の角であると定義され、レイアウトエリア６３０の終点６３４は最後のカラム６６７の境界６５７の右下の角であると定義される。
【００４０】
しかしながら、レイアウトエリア６２０とは異なり、レイアウトエリア６３０はページ６００に対して回転している。回転したエリア６３０についての上／下／左／右の定義はページ６００の座標系６８０ではなく回転したエリア６３０の回転した局所座標系６８３を基準とする。始点及び終点の定義も同様にこの回転した座標系６８３に基づく。
【００４１】
一部の実施形態はまた、エリアの内部領域、先行領域及び後続領域を定義する。レイアウトエリアでないエリアについて、当該エリアの内部領域は一部の実施形態では、当該エリアの境界の内部にある領域であると定義される。レイアウトエリアについて、内部領域は、レイアウトエリアの境界の内部にある領域から、最初のカラムの境界の真上のスペース及び最後のカラムの境界の真下のスペースを除いた領域であると定義される。（これらのコンポーネント部分とは異なり、レイアウトエリアの境界は四角形によって適切に近似されない。なぜなら、各カラムはその他のカラムとは異なる高さで開始・終了し、レイアウト内に大きなホワイトスペースが存在し、このホワイトスペースにおいて自身のコンテンツが他のエリアのような障害物の周りを流れるうるからである。）エリアの先行領域は内部領域の上又は真左にある点の軌跡であり、後続領域は内部領域の下又は真右にある点の軌跡である。
【００４２】
図７はレイアウトエリア７２０の内部領域、先行領域及び後続領域の例を説明する。説明されるように、ページ７００はグラフィカルエリア７１０及びレイアウトエリア７２０、７３０を含む。レイアウトエリア７２０はテキストカラム７６１〜７６４を含む。最初のカラム７６１は境界７５１を有し、最後のカラム７６４は境界７５４を有する。レイアウトエリア７２０の内部領域は点線の境界線７４０によって包含され、境界線７４０は一部の実施形態では４つのすべてのカラム７６１〜７６４を含みうる最小の直立した四角形から最初のカラムの境界の真上のスペースと最後のカラムの境界の真下のスペースとを除いたものであると定義される（すなわち、レイアウトエリア７２０の左上の角及び右下の角は内部領域の一部ではない。）。レイアウトエリア７２０の先行領域は内部領域の左及び上にある領域であると定義され、レイアウトエリア７２０の後続領域は内部領域の右及び下への領域であると定義される。よって、グラフィカルエリア７１０は先行領域であり、レイアウトエリア７３０はレイアウトエリア７２０の後続領域である。
【００４３】
レイアウトエリア７２０について、一部の実施形態では先行領域（すなわち、内部領域の上及び左にある領域）及び後続領域（すなわち、内部領域の下及び右にある領域）の定義は上／下／左／右の定義についてページ７００ではなくレイアウトエリア７２０に局所的な座標系を基準とする。図７に説明される例では、レイアウトエリア７２０はページ７００にアライメント（align）されておらず、よってページ７００に従う上／下／左／右の定義はレイアウトエリア７２０に従う上／下／左／右の定義に必ずしも一致しない。この環境の下での先行領域及び後続領域の定義は一部の実施形態ではページ７００ではなくレイアウトエリア７２０の上／下／左／右の定義を基準とする。
【００４４】
一部の実施形態の一層詳細な例が以下に記載される。セクションＩは始点順序関係及び文脈的順序関係に従う文書ページ内のエリアの順序を記載する。続いて、セクションＩＩは開始選択点及び終了選択点を用いて、順序リストの連続した区間内の文書要素の連続した選択を記載する。
【００４５】
Ｉ．コンテンツの順序付け
文書の相異なるプリミティブエリアにわたって行われる文書内のコンテンツに関する動作（コンテンツの選択、検索、ナビゲーション、リフロー、コピー／ペースト、置換又は編集のような動作）を容易にするために、一部の実施形態はまず相異なるプリミティブエリア同士の順序を確立する。一部の実施形態は相異なるプリミティブエリアの始点の位置を比較することによってプリミティブエリアをソートする（始点順序関係）。一部の実施形態はプリミティブエリアのそれぞれにおける読み取りフローに従って相異なるプリミティブエリア同士の順序を確立する（文脈的順序関係）。一部の実施形態は、まず始点順序関係を用いてプリミティブエリアをソートし、次いで文脈的順序関係を用いてソート結果を修正する。順序リストは修正されたソート結果に基づいて構築される。
【００４６】
Ａ．始点順序関係
一部の実施形態では、所与のエリアＡ１は、（ある人がＡ２の前にＡ１を読み終わるかどうかにかかわらず）人がＡ２を読む前にＡ１を読み始めることが想定されるならば、読み取り順序において別のＡ２の前にあるとみなされる。（ある人がＡ２の前にＡ１を読み終わるかどうかはＡ２が論理的にＡ１内に含まれるかどうかに依存しうる。）一部の実施形態は、Ａ１がＡ２の前にあることを特定する順序関係を有するものとしてＡ１及びＡ２を参照する。このような順序関係の例は始点順序関係である。一部の実施形態の始点順序関係に従うと、Ａ１及びＡ２はページ座標におけるそれぞれの自身の始点（ｘ１，ｙ１）及び始点（ｘ２，ｙ２）によって順序付けされる。ページの右を指すｘ軸とページの上を指すｙ軸とを有するページ座標系について、始点順序関係は、（ｉ）ｙ１＞ｙ２又は（ｉｉ）ｙ１＝ｙ２且つｘ１＜ｘ２が成り立つならば、この場合に限りＡ１＜Ａ２（エリアＡ１がエリアＡ２の前にある）ことを特定する。一部の実施形態では、ｘ座標はｙ１とｙ２とが互いに十分に近い（すなわち、Ａ１とＡ２との垂直位置が顕著に異ならない）場合に限り、始点順序を決定するために用いられる。これらの実施形態の一部は、εを正の閾値とした場合に、（ｉ）ｙ１−ｙ２≧ε又は（ｉｉ）｜ｙ１−ｙ２｜＜ε且つｘ１＜ｘ２が成り立つならば、この場合に限りＡ１＜Ａ２であることを特定する。一部の実施形態では、εはエリアＡ１及び／又はエリアＡ２内のテキストの高さの平均又は中央値に基づいて決定される。（例えば、Ａ１及びＡ２内のテキストの高さの平均が１／８インチ（３．１７５ｍｍ）である場合に、Ａ１及びＡ２の始点のｙ座標の差が１／８インチ（３．１７５ｍｍ）未満であればＡ１とＡ２とは同じ垂直位置を有するとみなされる。）
【００４７】
図８は４つの相異なるシナリオ８０１〜８０４における始点順序関係の例を説明する。４つのシナリオのそれぞれは、第１レイアウトエリア８１０及び第２レイアウトエリア８２０を含むページ８００を説明する。第１レイアウトエリア８１０（Ａ１）は（ｘ１，ｙ１）に始点を有し、第２レイアウトエリア８２０（Ａ２）は（ｘ２，ｙ２）に始点を有する。（ｘ１，ｙ１）及び（ｘ２，ｙ２）の両方ともページ８００の座標系における座標である。レイアウトエリア８１０はカラム８３１〜８３４も含む。
【００４８】
第１シナリオ８０１では、エリアＡ１の始点（ｘ１，ｙ１）はエリアＡ２の始点（ｘ２，ｙ２）の上にある（すなわち、ｙ１＞ｙ２）。従って、始点順序関係に従って、エリアＡ１はＡ２の前にある（Ａ１＜Ａ２）。
【００４９】
第２シナリオ８０２では、Ａ１の始点（ｘ１，ｙ１）はエリアＡ２の始点（ｘ２，ｙ２）と同じレベルにある（すなわち、ｙ１＝ｙ２）。２つのエリアのｙ座標が同じであり、このシナリオでは順序を決定するために用いることができないので、一部の実施形態はその代わりにｘ座標を用いてエリアＡ１とエリアＡ２との間の順序を決定する。Ａ２はＡ１の右にある（すなわち、ｘ２＞ｘ１）ので、始点順序関係に従って、エリアＡ１はＡ２の前にある（Ａ１＜Ａ２と表される。）。
【００５０】
第３シナリオ８０３では、エリアＡ１の始点（ｘ１，ｙ１）はエリアＡ２の始点（ｘ２，ｙ２）の下にある。始点順序関係に従って、Ａ２はＡ１の前にあるとみなされるだろう。しかしながら、Ａ２の上の角はＡ１の上側境界よりも下にあるので、人間の読者は通常、Ａ２の前にＡ１を読むだろう。従って、一部の実施形態では２つのエリア間の始点順序関係を度外視することによって、順序リストにおいてＡ２の前にＡ１を配置する。
【００５１】
第４シナリオ８０４では、エリアＡ１の始点（ｘ１，ｙ１）はまた、エリアＡ２の始点（ｘ２，ｙ２）の下にある（すなわち、ｙ１＜ｙ２）。始点順序関係に従って、Ａ２は同様にＡ１の前にあるとみなされるだろう。しかしながら、（Ａ２がＡ１の「吹き出し」である場合のように）Ａ２がＡ１の境界の内部にあるので、この状況において読者はＡ２の前にＡ１を読むかもしれない。よって、一部の実施形態は、Ａ１の始点がＡ２の始点の下にあったとしても、Ａ１をＡ２の前にあると特定する。
【００５２】
８０３、８０４に類似するシナリオにおけるこれらの実施形態の一部は、エリア間の文脈的順序関係を調べることによって、始点順序関係を度外視する決定を行う。文脈的順序関係が以下に記載される。
【００５３】
Ｂ．文脈的順序関係
始点順序関係は、直感的ではなく、実際の人間が文書のページを読むであろう順序を模倣できない結果を生むこともある。図８で説明された例では、実際の人間はＡ２の前にＡ１を読むであろうが、シナリオ８０３及びシナリオ８０４の両方において始点順序関係はＡ２がＡ１の前にあることを要求する。一般に、始点順序関係は、１つ以上のエリアが、そのうちの１つ以上のコンテンツのフロー順序に依存性が暗示されるように配置及び／又は変形される場合に、人間の読み取り順序を模倣できないかもしれない。従って、一部の実施形態は、プリミティブエリアのコンテンツのフロー順序を調べる文脈的順序関係を用いて順序を確立する。
【００５４】
一部の実施形態では、文脈的順序関係は始点順序関係に加えて、又は始点順序関係に代えて、エリア間の順序を規定するために用いられる。これらの実施形態の一部では文脈的順序関係は２つのエリアのそれぞれの局所座標系を用いてページ内の２つのエリア間の順序を決定する順序付け方式である。図９はページ内の第１エリアＡ１と第２エリアＡ２との間の順序を決定するために文脈的順序関係を用いる処理９００を概念的に説明する。処理９００は図８を参照して説明される。
【００５５】
図９の処理９００は（９１０で）第１エリアの局所座標系において２つのエリアの始点を比較し、順序を決定する。次いで、処理は（９２０で）第２エリアの局所座標系において２つのエリアの始点を比較し、順序を決定する。一部の実施形態では、局所座標系のいずれかの下で２つのエリアの始点を比較することは、異なる座標系が用いられること以外は、上述の始点順序関係の比較と同様である。例えば、第１エリアの始点が第２エリアの始点のｙ座標よりも大きなｙ座標を有するならば、第１エリアは第２エリアの前にあるとみなされる。２つのエリアの始点のｙ座標が等しいならば、処理は２つのエリアの始点のｘ座標を比較する。
【００５６】
次いで、処理は（９３０で）どのエリアが最初の始点を有するかに関して２つの局所座標系が一致するかどうかを判定する。上記の図８に説明された例示のシナリオ８０１〜８０４では、Ａ１及びＡ２の局所座標系はどのエリアが最初の始点を有するかに関して一致する。なぜなら、２つのエリアはアライメントされているからである。どのエリアが最初の始点を有するかに関して２つの局所座標系が一致するかどうかの判定は図５を参照しつつさらに後述される。２つの局所座標系が２つのエリアの順序に関して一致するならば、処理は９３５へ進み、最初の始点を有するエリアを一次エリアとして割り当て、２番目の始点を有するエリアを二次エリアとして割り当てる。他方、２つの局所座標系が２つのエリアの順序に関して一致しないならば、処理は９４０へ進む。
【００５７】
処理９００は（９４０で）２つの局所座標系が２つのエリアの順序に関して一致しない場合にページ座標における始点の順序を評価する。ページ座標における順序は２つの座標系が一致しない場合には必ず、一方のエリアの座標における順序に不一致であり、他方のエリアの座標における順序に一致するので、処理は（９５０で）ページの座標系に一致しない局所座標系を有するエリアを一次エリアとして指定する。処理はまた、（９５５で）ページの座標系に一致する局所座標系を有するエリアを二次エリアとして指定する。
【００５８】
一次エリア及び二次エリアを指定した後、処理９００は次に（９６０で）一次エリアの始点が二次エリアの先行領域内にあるかを判定する。そうであるならば、処理は（９８５で）一次エリアが二次エリアの前にあることを報告する。そうでないならば、処理は９７０へ進む。以下の図７は二次エリアの先行領域内にある一次エリアの始点の例を説明する。
【００５９】
処理は（９７０で）一次エリアの始点が二次エリアの後続領域内にあるかを判定する。そうであるならば、処理は（９８０で）二次エリアが一次エリアの前にあることを報告する。そうでないならば、処理は９７５へ進む。上記の図８で説明された例示のシナリオ８０３では、Ａ２は一次エリアＰであり、Ａ１は二次エリアＳである。なぜなら、Ａ２の始点はＡ１の始点の前にあるからである（ｙ２＞ｙ１）。しかしながら、一次エリアとしてのＡ２は二次エリアＡ１の後続領域内にあるので、Ａ１は文脈的順序関係の下でＡ２の前にあるとして報告されるだろう。以下の図６は一次エリアの始点が二次エリアの後続領域内にある場合の例を説明する。
【００６０】
処理は（９７５で）一次エリアＰの内部領域と二次エリアＳの内部領域との間のインタラクションが、二次エリアＳが一次エリアＰの前にあることを示すかを判定する。Ｐの始点がＳの内部領域内にある場合に、一部の実施形態は、Ｓの座標において重なる水平範囲を有するＳのすべてのカラムの完全に上にＰの内部領域があるか、及びこのようなカラムが２つ以上あるかに基づいてこの判定を行う。そうであるならば、処理は（９８５で）一次エリアが二次エリアの前にあると報告する。そうでないならば、処理は（９８０で）二次エリアが一次エリアの前にあると報告する。一次エリアと二次エリアとの間の順序を報告した後に、処理９００は終了する。
【００６１】
上記の図８で説明された例示のシナリオ８０４では、Ａ２は（ｙ１＜ｙ２なので）最初の始点を有し、よって一次エリアＰとして割り当てられる。よって、Ａ１は二次エリアＳとして割り当てられる。Ｐ（Ａ２）の始点はＳ（Ａ１）の内部領域内であるが、Ｓ（Ａ１）はＰ（Ａ２）の完全に下にあり且つＰ（Ａ２）に重なる水平範囲を有する唯１つのカラム８３２を有する（カラム８３２はＰ（Ａ２）の完全に下にあり且つＰ（Ａ２）と重なる水平部分を有するＳ（Ａ１）の唯一のカラムである。Ａ１のカラム８３１、８３３、８３４はＡ２と重なる水平範囲を有さない。）。従って、ＰはＳの前にはなく、それ故Ａ１はＡ２の前にある。（他方、Ａ２がカラム８３３とも水平に重なるほど幅広ければ、ＰはＳの座標系において重なる水平範囲を有するＳのすべてのカラムの完全に上にあり、且つこのようなカラムが２つ以上存在するだろう。）一次エリアＰの内部領域と二次エリアＳの内部領域との間のインタラクションに基づく順序の決定は図８を参照して以下にさらに説明される。
【００６２】
文脈的順序関係は図１０〜図１３を参照して以下にさらに記載される。図１０は（処理９００により９３０で実行されるように）どのエリアが最初の始点を有するかに関して２つの座標系が一致するかを判定する例を説明する。図１０は２つのエリア１０１０、１０２０を有するページ１０００を説明する。エリア１０１０はページ１００にアライメントされている。エリア１０１０の局所座標系１０１５はページ１０００の座標系１００５にアライメントされている。エリア１０２０はページ１０００にアライメントされていない。その局所座標系１０２５はページ１０００の座標系１００５から回転した角度を有する。
【００６３】
エリア１０１０（Ａ１）の局所座標系１０１５（ｘ’−ｙ’）の下で、Ａ１の始点（ｘ１，ｙ１）はＡ２の始点（ｘ２，ｙ２）の上にある（すなわち、ｙ１＞ｙ２）。対照的に、エリア１０２０（Ａ２）の局所座標系１０２５（ｘ”−ｙ”）の下で、Ａ１の始点（ｘ１，ｙ１）はＡ２の始点（ｘ２，ｙ２）の「下」にある。言い換えると、Ａ１の局所座標系の下ではＡ１が最初の始点を有するが、Ａ２の局所座標系の下ではＡ２が最初の始点を有する。従って、２つのエリアの２つの座標系はどのエリアが最初の始点を有するかに関して一致しない。
【００６４】
ページ１０００の座標系１００５（ｘ，ｙ）の下で、Ａ１の始点（ｘ１，ｙ１）はＡ２の始点（ｘ２，ｙ２）の上にある（ｙ１＞ｙ２）。よって、ページの座標系はＡ１の局所座標系に一致するが、Ａ２の局所座標系とは一致しない。よって、処理９００は９３０でＡ１を二次エリアとして割り当て、Ａ２を一次エリアとして割り当てるだろう。
【００６５】
図１１〜図１３は処理９００によって９６０〜９８５で実行されるような一次エリアと二次エリアとの間の文脈的順序関係の下での順序の決定を説明する。図１０と同様に、図１１〜図１３のそれぞれは２つのプリミティブエリアを説明する。そして、図１０と同様に、プリミティブエリアの１つはページに対してある角度で回転されており、その結果として２つのプリミティブエリアはどのプリミティブエリアが最初の始点を有するかに関して一致しない局所座標系を有する。回転されたエリアはこの例では一次エリアＰとして割り当てられる。なぜなら、ページの座標系と一致しない局所座標系を有するからである。ページにアライメントされているエリアは二次エリアＳとして割り当てられる。
【００６６】
図１１〜図１３では、一次エリアＰの始点の位置は二次領域Ｓの領域を参照して評価される。Ｐの始点がＳの先行領域内にあるならば、Ｐ＜Ｓである（すなわち、一次エリアは二次エリアの前にある。）。Ｐの始点がＳの後続領域内にあるならば、Ｓ＜Ｐである（すなわち、二次エリアは一次エリアの前にある。）。Ｐの始点がＳの内部領域内にあるならば、結果は２つの内部同士の正確なインタラクションに依存する。Ｓの座標系において重なる水平範囲を有するＳのすべてのカラムの完全に上にＰの内部領域があり、且つこのようなカラムが２つ以上存在するならば、Ｐ＜Ｓであり、それ以外の場合にＳ＜Ｐである。
【００６７】
図１１は二次エリアＳの後続領域内に始点を有する一次エリアＰを有するページについての例示の文脈的順序関係を説明する。図１１はレイアウトエリア１１１０、１１２０を含む例示のページ１１００を説明する。レイアウトエリア１１１０は始点１１１５を有し、レイアウトエリア１１２０は始点１１２５を有する。ページ１１００の座標系の下で、レイアウトエリア１１２０の始点１１２５ではなくレイアウトエリア１１１０の始点１１１５が最初の始点である。なぜなら、始点１１１５は始点１１２５の上にあるからである。レイアウトエリア１１１０の局所座標系の下で、始点１１１５が最初の始点である。レイアウトエリア１１２０の局所座標系の下で、始点１１２５が最初の始点である。よって、ページ１１００の座標系は、２つの始点のどちらが最初の始点であるかについて、レイアウトエリア１１１０の座標系に一致し、レイアウトエリア１１２０の座標系に一致しない。よって、一部の実施形態はレイアウトエリア１１２０を一次エリアＰとして指定し、レイアウトエリア１１１０を二次レイアウトエリアＳとして指定する。一次エリアＰは、二次エリアＳ（すなわち、レイアウトエリア１１１０）の後続領域内に始点１１２５を有するレイアウトエリア１１２０であるので、一次エリアＰ（すわなち、レイアウトエリア１１２０）は文脈的順序関係の下で二次エリアＳの後にあるだろう。
【００６８】
図１２は二次エリアＳの先行領域内に始点を有する一次エリアＰを有するページについての例示の文脈的順序関係を説明する。図１２はレイアウトエリア１２１０、１２２０を含む例示のページ１２００を説明する。レイアウトエリア１２１０は始点１２１５を有し、レイアウトエリア１２２０は始点１２２５を有する。ページ１２００の座標系の下で、レイアウトエリア１２１０の始点１２１５ではなくレイアウトエリア１２２０の始点１２２５が最初の始点である。なぜなら、始点１２２５は始点１２１５の上にあるからである。レイアウトエリア１２１０の局所座標系の下で、始点１２２５が最初の始点である。レイアウトエリア１２２０の座標系の下で、始点１２１５が最初の始点である。よって、ページ１２００の座標系は、２つの始点のどちらが最初の始点であるかについて、レイアウトエリア１２１０の座標系に一致し、レイアウトエリア１２２０の座標系に一致しない。よって、一部の実施形態はレイアウトエリア１２２０を一次エリアＰとして指定し、レイアウトエリア１２１０を二次レイアウトエリアＳとして指定する。一次エリアＰは、二次エリアＳ（すなわち、レイアウトエリア１２１０）の先行領域内に始点１２２５を有するレイアウトエリア１２２０であるので、一次エリアＰ（すわなち、レイアウトエリア１２２０）は文脈的順序関係の下で二次エリアＳの前にあるだろう。
【００６９】
図１３は二次エリアＳの内部領域内に始点を有する一次エリアＰを有するページについての例示の文脈的順序関係を説明する。図１３はレイアウトエリア１３１０、１３２０を含む例示のページ１３００を説明する。レイアウトエリア１３１０は始点１３１５を有し、レイアウトエリア１３２０は始点１３２５を有する。レイアウトエリア１３１０はカラム１３３１〜１３３４も含む。ページ１３００の座標系の下で、レイアウトエリア１３２０の始点１３２５ではなくレイアウトエリア１３１０の始点１３１５が最初の始点である。なぜなら、始点１３１５は始点１３２５の上にあるからである。レイアウトエリア１３１０の局所座標系の下で、始点１３１５が最初の始点である。レイアウトエリア１３２０の局所座標系の下で、始点１３２５が最初の始点である。よって、ページ１３００の座標系は、２つの始点のどちらが最初の始点であるかについて、レイアウトエリア１３１０の座標系に一致し、レイアウトエリア１３２０の座標系に一致しない。よって、一部の実施形態はレイアウトエリア１３２０を一次エリアＰとして指定し、レイアウトエリア１３１０を二次レイアウトエリアＳとして指定する。
【００７０】
一次エリアＰは二次エリアＳ（すなわち、レイアウトエリア１３１０）の内部領域に自身の始点１３２５を有するレイアウトエリア１３２０であるので、文脈的順序関係に従うＰとＳとの間の順序は２つの内部領域間のインタラクションに基づくだろう。一部の実施形態は、Ｓの座標において重なる水平範囲を有するＳのすべてのカラムの完全に上にＰの内部領域が位置するかどうか、及びこのようなカラムが２つ以上存在するかどうかに基づいてこの判定を行う。そうであるならば、ＰがＳの前である。そうでないならば、ＳがＰの前である。
【００７１】
図１３に説明される例では、Ｐの始点はＳの内部領域内にあるが、ＳはＰの完全に下にあるカラムであってＰに重なる水平範囲を有するカラムを有さない。（Ｓのカラム１３３２〜１３３４はＰに重なる水平範囲を有するが、これらのどれもＳの座標系においてＰの内部領域の完全に下にあるものではない。）従って、文脈的関係に従って、ＰはＳの前にない。
【００７２】
一部の実施形態では、図９〜図１３を参照して上述されたような文脈的順序関係はページ上のすべてのエリアを順序付けるためにそのまま用いられない。なぜなら、文脈的順序関係が推移的ではないエリアの集合を作成することができ、それ故これらのエリアの集合を順序付けるために用いることができないからである。しかしながら、一部の実施形態は「隣接する」エリアに関して文脈的順序関係を用いる。なぜなら、文脈的順序関係は、エリア内の読み取りフローが隣接エリアについて把握された読み取りフローに影響を与える仕方を評価するからである。よって、一部の実施形態は始点順序関係を（初期隣接ペアを確立する）最初の順序付けとして用い、その後、示された入れ換えが一貫しており曖昧でない限り、文脈的順序関係によって示される隣接ペアの一連の入れ換えを行うことによって、よりよい順序に収束する。
【００７３】
図１４はページ上の複数のエリアを順序付けるために始点順序関係と文脈的順序関係とを用いる例示の処理１４００を概念的に説明する。処理１４００はページ内のプリミティブエリアの集合を受信した場合に始まり、これらのプリミティブエリアはページ内のレイアウトエリアやグラフィックエリア（形状、画像、並びに形状及び画像のグループ）でありうる。
【００７４】
処理１４００は（１４１０で）ページの座標系における始点順序関係に従って昇順にエリアを並べ、その結果として、エリアのシーケンスＡ１，Ａ２，…，ＡＮとなる。始点順序関係に従ってエリアのシーケンスをソートするためにクイックソートのような標準アルゴリズムが用いられうる。
【００７５】
処理は（１４２０で）文脈的順序関係に従ってシーケンス内の隣接エリアのペアを比較する。具体的には、エリアＡＫが、文脈的順序関係でＡＫ＜ＡＫ−１となるようなシーケンスにおける最初のエリアであるならば、シーケンスにおいて先行するＡＫ−１を有するＡＫを入れ換える必要があるだろう（すなわち、ＡＫ−１，ＡＫ→ＡＫ，ＡＫ−１）。一部の実施形態では、シーケンス内に対応する後続エリアＡＫ＋１を有するＡＫについて、ＡＫとＡＫ−１との入れ換えはＡＫ＜ＡＫ＋１の場合にのみ行われるだろう。一部の実施形態では、ＡＫ＜ＡＫ−１且つＡＫ＞ＡＫ＋１ならばＡＫとＡＫ−１とを入れ換えるべきか、又はＡＫとＡＫ＋１とを入れ換えるべきかが曖昧であるので、どの隣接を入れ換えるべきかが曖昧でない場合にのみ入れ換えが生じることを保証するためにこの条件が追加される。
【００７６】
処理１４００は次に（１４２５で）、１４２０で実行された比較に従ってエリアの隣接ペアのいずれかのペアを入れ換える必要があるかを判定する。入れ換える必要のある隣接ペアが少なくとも１つ存在するならば、処理は１４３０へ進む。文脈的順序関係の下で入れ換える必要のあるエリアの隣接ペアがなければ、処理は１４４０へ進む。
【００７７】
処理は（１４３０で）これらの隣接エリア間の文脈的順序関係に従ってエリアのシーケンス内の隣接エリアを入れ換える。文脈的順序関係に従うシーケンス内の隣接エリアの入れ換えが終了した後に、処理１４００は１４２０に戻り、文脈的順序関係に従って隣接エリアの各ペアの比較を繰り返す。動作１４３０で実行された入れ換えによって、文脈的順序関係の下で比較されていなかったエリアの新たな隣接ペアが作成されるので、一部の実施形態ではこの処理が必要となる。よって、処理１４００は、エリアのシーケンス全体が文脈的順序関係を満たすまで繰り返される反復処理である。この反復処理が常に完了することが証明されうる。これは、始点順序関係と文脈的順序関係との両方を用いてページ上のすべてのプリミティブエリアの線形順序を確立する。
【００７８】
１４４０で、処理１４００は結果のエリアのシーケンスを出力する。一部の実施形態は結果のシーケンスに従ってエリアのそれぞれに順序インデックスを割り当て、各順序インデックスはシーケンスにおける位置を表す。一部の実施形態はまた、結果のシーケンスを用いてプリミティブエリアの順序リストを構築する。結果のエリアのシーケンスを出力した後、処理１４００は終わる。
【００７９】
図１５は例示のページ１５００内のプリミティブエリアから構築される順序リスト１５５０を説明する。ページ１５００はレイアウトエリアＡ１（１５０１）、Ａ２（１５０２）、Ａ３（１５０３）、Ａ４（１５０４）を含む。エリア１５０１は（ｘ１，ｙ１）に始点１５１１を有し、エリア１５０２は（ｘ２，ｙ２）に始点１５１２を有し、エリア１５０３は（ｘ３，ｙ３）に始点１５１３を有し、エリア１５０４は（ｘ４，ｙ４）に始点１５１４を有する。
【００８０】
順序リスト１５５０はページ１５００のエリアＡ１〜Ａ４の順序を表す配列によって表される。順序リスト１５５０はまた、木構造、またはＡ１〜Ａ４間のシーケンシャルな関係を表現できる任意の他のデータオブジェクトモデリング構造によって表されうる。ｙ１＞ｙ２＞ｙ３＞ｙ４であり、エリアＡ１〜Ａ４の何れも始点順序関係を文脈的順序関係と異ならせるように配置又は変形されていないので、処理９００は昇順Ａ１→Ａ２→Ａ３→Ａ４に基づいてエリアＡ１〜Ａ４の順序１５５０を生み出すだろう。
【００８１】
一部の実施形態では、順序インデックスは各プリミティブエリアの各プリミティブ要素に割り当てられる。各プリミティブ要素に割り当てられた順序インデックスはプリミティブ要素が属するプリミティブエリアの順序に基づく。図１５の例では、プリミティブエリアＡ１〜Ａ４間の順序は相異なるプリミティブエリアの間のプリミティブ要素の順序を決定する。例えば、Ａ１内のプリミティブ要素はＡ２内のプリミティブ要素の前の順序インデックスが与えられ、Ａ２内のプリミティブ要素はＡ３内のプリミティブ要素の前の順序インデックスが与えられえるなどである。
【００８２】
各プリミティブエリアにおいて、プリミティブエリア内の階層構造により確立された読み取りフローはプリミティブ要素に割り当てられる順序インデックスを決定する。例えば、プリミティブ要素として文字グリフ及びインライングラフィックを含むレイアウトエリアは、レイアウトエリア内のテキスト行、段落及びカラムによって確立される読み取りフローに従ってグリフ及びインライングラフィックのそれぞれに割り当てられた順序インデックスを有しうる。
【００８３】
一部の実施形態では、プリミティブエリアはさらに、（例えば、可視の仕切りによって、または複数ページのヘッダ／フッタ・テンプレートを認識することによって示されるような）ページの区画又は入れ子の区画にグループ分けされる。これらの実施形態の一部は木構造を用いてページをモデル化する。木構造はルートとしてページから始まり、子として区画及び／又はプリミティブエリアを有する。区画はさらに、続いて子としてサブ区画及び／又は他のプリミティブエリアを有してもよい。各区画にはその最初の子孫のエリアのインデックスが与えられる。その後、一部の実施形態は各兄弟の集合を昇順で並べるために木のノードの順序インデックスを用いて、区画のグループ分けを実行するためにエリアの順序を再計算する。これは順序木を生み出す。プリミティブエリアの新たな順序シーケンスを得るために、一部の実施形態はルートから始めて、プリミティブエリアだけが残るようになるまで、各区画をその子の順序シーケンスに再帰的に置き換える。ページ上のすべてのプリミティブエリアの順序はこのようにして変更されてもよい。なぜなら、２つの区画は元々の順序において交互に並んだプリミティブエリアから構成されうるからである。
【００８４】
図１６は２つの区画を有するページから順序リストを作成することを説明する。例示のページ１６００は、開始順序関係及び文脈的順序関係に従ってＡ１＜Ａ２＜Ａ３＜Ａ４となるようなレイアウトエリアＡ１、Ａ２、Ａ３、Ａ４を含む。しかしながら、ページ１５００とは異なり、ページ１６００はページを区画Ｌ（レフト）及び区画Ｒ（ライト）に分割する可視の仕切り１６１０を含む。区画ＬはエリアＡ１、Ａ３を含み、区画ＲはエリアＡ２、Ａ４を含む。
【００８５】
図１６はまた、ページ１６００をモデル化するために用いられる木構造１６２０とページ１６００内の可視の仕切りによる影響とを説明する。木構造１６２０はルートノード１６２１としてのページから始まるページ１６００のモデルである。ルートノード１６２１は、ページ１６００の２つの区画を表す２つの子ノード１６２２、１６２３を有する。子ノード１６２２は区画Ｌを表し、子ノード１６２３は区画Ｒを表す。（区画Ｌを表す）子ノード１６２２は、区画Ｌ内の２つのプリミティブエリアＡ１、Ａ３を表すための２つの孫ノード１６２４、１６２５を有する。同様に、（区画Ｒを表す）子ノード１６２３は、区画Ｒ内の２つのプリミティブエリアＡ２、Ａ４を表すための２つの孫ノード１６２６、１６２７を有する。
【００８６】
一部の実施形態は相異なる区画間のエリアの順序を決定することによって、各区画内のエリアの順序を決定する。図１６の例では、区画Ｌ及び区画Ｒ内のエリアの順序はＡ１〜Ａ４間の順序に基づいて決定されうる。Ａ１〜Ａ４間の順序は、Ａ１＜Ａ２＜Ａ３＜Ａ４となるように、始点順序関係又は文脈的順序関係の何れか一方によって決定されうる。従って、区画Ｌ内のエリアの順序はＡ１＜Ａ３であり、区画Ｒ内のエリアの順序はＡ２＜Ａ４である。この順序はノード１６２４からノード１６２５への点線矢印及びノード１６２６からノード１６２７への点線矢印によって説明される。
【００８７】
ページ内のすべてのエリアの順序及び各区画内のエリアの順序に基づいて、相異なる区画間の順序が決定されうる。図１６の例では、一部の実施形態は区画Ｌが区画Ｒの前にあることを決定する。なぜなら、区画Ｌの最初のエリア（Ａ１）は区画Ｒの最初のエリア（Ａ２）の前にあるからである。この順序はノード１６２２からノード１６２３へ延びる点線矢印によって説明される。
【００８８】
区画Ｌ及び区画Ｒとの間の順序と、区画Ｌ及び区画Ｒ内のエリアの順序とに基づいて、順序リスト１６４０が作成される（配列で表現される）。新たに作成された順序リスト１６４０はＡ１→Ａ３→Ａ２→Ａ４の順序であり、可視の仕切り１６１０によって課されたプリミティブエリアのグループ分けを反映する。これは、ページ１６００と同様ではあるが、ページ１６００に提示される可視の仕切りを有さないページ１５００から作成される図１５の順序リスト１５５０（Ａ１→Ａ２→Ａ３→Ａ４）とは対照的である。一部の実施形態では、最初のエリア（Ａ１）の最初の要素に最初のインデックス（例えば、０）が割り当てられ、最後のエリア（Ａ４）の最後の要素に最後のインデックス（例えば、Ｎ）が割り当てられるように、順序リスト内の各エリアの相異なる要素に順序インデックスが割り当てられる。
【００８９】
ＩＩ．コンテンツ選択
文字及びインライングラフィックはレイアウトエリア内で既に暗黙的に順序付けられているので、上述のプリミティブエリアの順序は結果としてページ上のすべての文字及びグラフィックについての読み取り順序になる。よって、ページ上の連続した選択は選択における最初のプリミティブ要素及び最後のプリミティブ要素によって規定されうるか、又はこの読み取り順序における開始位置及び終了位置を表すインデックスのペアによって規定されうる。一部の実施形態では、選択を指定するための一般的なユーザインタフェースはページ上の位置のペアへのユーザポインティングを伴う。その後、読み取り順序において対応するインデックスが位置座標から演繹される。
【００９０】
一部の実施形態について、図１７は開始選択点及び終了選択点を用いて文書コンテンツの連続した選択を実行するための処理１７００を概念的に説明する。処理１７００は図１８を参照して説明され、図１８は文書ページ１８００上の連続した選択であって、ページ１８００のコンテンツから生成される順序リスト１８５０に関する連続した選択を説明する。ページ１８００はエリア１８０１〜１８０６（Ａ１〜Ａ６）、開始選択点１８１０及び終了選択点１８２０を含む。開始選択点１８１０及び終了選択点１８２０はエリアＡ３〜Ａ５を含む連続した選択を規定する。連続した選択１８３０はエリアＡ３の要素１８３２から始まり、エリアＡ５の要素１８３４で終わる。点線の四角形はＡ３〜Ａ５の一部が図１８の連続した選択１８３０に含まれることを概念的に説明するためだけに用いられ、ユーザインタフェースの一部ではない（しかしながら、一部の実施形態はユーザ選択の指標を表示してもよい。）。
【００９１】
処理１７００は（１７１０で）文書コンテンツの順序リストを受信する。図１８の例では、順序リスト１８５０はページ１８００内のエリアの順序に基づき、この順序は始点順序関係、文脈的順序関係、及び／又は他のタイプの順序付け方式を用いて確立されうる。順序リスト１８５０はＡ１→Ａ２→Ａ３→Ａ４→Ａ５→Ａ６のシーケンスであり、６個のエリア間に確立された順序を反映する。エリアのそれぞれはプリミティブ要素（すなわち、文字グリフ又はインライングラフィック）を含むことができ、順序インデックスはシーケンス内のエリアのそれぞれのプリミティブエリアのそれぞれに割り当てられる。
【００９２】
次に、処理１７００は（１７２０で）開始選択点及び終了選択点を受信する。選択点は順序リスト内のプリミティブ要素の連続した選択を処理するためにユーザによって特定されたページ上の位置である。一部の実施形態はユーザインタフェースからの位置指示（例えば、カーソル又はタッチスクリーン上の接触点）を解釈することによって選択点を導出する。図１８の例では、開始選択点及び終了選択点はＡ３の近くから始まりＡ５の近くで終わる連続した選択１８３０を規定する。
【００９３】
処理１７００は（１７３０で）開始選択点に「最も近い」プリミティブエリアを見つける。処理はまた、（１７４０で）終了選択点に「最も近い」プリミティブエリアを見つける。本明細書を通じて、「選択点に最も近いプリミティブエリア」という用語は、読み取り順序において選択点に最も近いプリミティブエリアを意味する。読み取り順序において選択点に最も近いプリミティブエリアは、選択点によって選択されるべきエリアとして文書の読者が意図する可能性が最も高いプリミティブエリアであり、選択点への距離が最も近いプリミティブエリアであってもよいし、そうでなくてもよい。図１８の例では、開始選択点１８１０はプリミティブエリア１８０３（Ａ３）に最も近く、終了選択点１８２０はエリア１８０５（Ａ５）に最も近い。選択点に最も近いプリミティブエリアを見つけることの例は、以下のサブセクションＡにさらに記載される。
【００９４】
次に、処理は（１７５０で）開始選択点に最も近いプリミティブエリアから開始選択インデックスを決定する。処理はまた、（１７６０で）終了選択点に最も近いプリミティブエリアから終了選択インデックスを決定する。開始選択インデックス及び終了選択インデックスの決定は以下のサブセクションＢでさらに記載される。
【００９５】
処理は次に（１７７０で）開始選択インデックス及び終了選択インデックスから開始プリミティブ要素及び終了プリミティブ要素を決定する。一部の実施形態では、開始プリミティブ要素は順序リストにおいて開始選択インデックスに割り当てられたプリミティブ要素であり、終了プリミティブ要素は順序リストにおいて終了選択インデックスに割り当てられたプリミティブ要素である。終了プリミティブ要素が読み取り順序において実際には開始プリミティブ要素の前にあるならば、一部の実施形態は「開始」の指定と「終了」の指定とを交換して、開始選択点及び開始プリミティブ要素が終了選択点及び終了プリミティブ要素になり、終了選択点及び終了プリミティブ要素が開始選択点及び開始プリミティブ要素になるようにする。
【００９６】
処理は（１７８０で）開始選択点と開始プリミティブ要素との間の関係に基づいて開始選択インデックスを改良する。一部の実施形態は、開始選択点が開始プリミティブ要素の中間地点の後にあるならば、連続した選択から開始プリミティブ要素を除くことによって開始選択インデックスを改良する。処理は（１７９０で）終了選択点と終了プリミティブ要素との間の関係に基づいて終了選択インデックスを改良する。一部の実施形態は、終了選択点が終了プリミティブ要素の中間地点よりも前にあるならば、連続した選択から終了プリミティブ要素を除くことによって終了選択インデックスを改良する。開始選択インデックス及び終了選択インデックスの改良（すなわち、開始プリミティブ要素及び終了プリミティブ要素を含めるかどうかの判定）は、以下のサブセクションＣでさらに記載される。処理１７００は選択点に最も近いプリミティブエリアから開始選択インデックス及び終了選択インデックスを決定した後に終了する。
【００９７】
図１８の例では、開始選択点１８１０及び終了選択点１８２０は、連続した選択の開始位置及び終了位置を示すための開始選択インデックス１８１５及び終了選択インデックス１８１５に変換される。開始選択インデックス１８１５は、開始選択点１８１０に最も近いプリミティブエリアであるプリミティブエリアＡ３に関連するインデックスに基づく。同様に、終了選択インデックス１８２５は、終了選択点１８２０に最も近いプリミティブエリアであるプリミティブエリアＡ５に関連するインデックスに基づく。一部の実施形態では、開始インデックス１８１５及び終了インデックス１８２５は、連続した選択１８３０においてどのエリアのどの要素が最初であり、どのエリアのその要素が最後であるかを開始インデックス１８１５及び終了インデックス１８２５が示すように、プリミティブエリアＡ３、Ａ５内の個別の要素のインデックスに基づく。この例では、開始選択インデックス及び終了選択インデックスはＡ３の要素１８３２に対応するインデックス及びＡ５の要素１８３４に対応するインデックスである。要素１８３２は開始プリミティブ要素であり、要素１８３４は終了プリミティブ要素である。
【００９８】
Ａ．最も近いプリミティブエリアを決定するための基準
文書コンテンツの連続した選択の開始及び終了を決定するために、一部の実施形態はまず、読み取り順序においてどのプリミティブエリアが開始選択点に最も近く、読み取り順序においてどのプリミティブエリアが終了選択点に最も近いかを決定する。選択点（開始選択点又は終了選択点）に最も近いプリミティブエリアの決定は、選択点が唯１つのプリミティブエリアの境界内にある場合に自明である。しかしながら、選択点がどのプリミティブエリアの境界内にもない場合や選択点が２つ以上のコンテンツ項目の境界内にある場合にこれは自明ではない。従って、一部の実施形態は、通常の読み取り方向を考慮に入れてページ上の所与の選択点に最も近いプリミティブエリアを見つける。一部の実施形態では、「最も近い」プリミティブエリアはこれらの方向の何れかにおいて到達した最初のプリミティブエリアとして当初は決定される。一部の実施形態は現在の最適な選択として最初のプリミティブエリアから始め、シーケンス内の残りのプリミティブエリアを探索し、よりよいものが見つかったら現在の最適な選択を置き換える。以下の図２０〜図２４は最も近いプリミティブエリアを決定するためにプリミティブエリアを互いに比較するためのいくつかの基準を説明する。図２０〜図２４の説明で用いられるいくつかの用語がまず図１９を参照しつつ以下に説明される。図１９はいくつかの例示の選択点及びプリミティブエリアを説明する。説明されるように、選択点１９１５はプリミティブエリア１９１０の近くにあり、選択点１９２５はプリミティブエリア１９２０の近くにあり、選択点１９３５はプリミティブエリア１９３０内にある。プリミティブエリア１９３０はカラム１９４１〜１９４４を含む。カラム１９４４は段落１９４５を含む。
【００９９】
一部の実施形態では、選択点から対象への“ｘ変位”の概念は、選択点のｘ座標と対象の境界内の任意の点のｘ座標との間の差の絶対値の最小値であると定義される。ここで、すべての座標は対象の局所座標系におけるものである。図１９に説明される例では、選択点１９１５はレイアウトエリア１９１０から非ゼロのｘ変位を有し、当該ｘ変位はレイアウトエリア１９１０の最も近い辺と選択点１９１５との間の水平距離である。他方、選択点１９２５はレイアウトエリア１９２０とゼロのｘ変位を有する。なぜなら、選択点１９２５はレイアウトエリア１９２０よりも垂直方向にみて下にあり、選択点１９２５のｘ座標とレイアウトエリア１９２０の境界内の何れか任意の点のｘ座標との間の距離の絶対値の最小値はゼロであるからである。
【０１００】
同様に、一部の実施形態は、選択点から対象へのｙ変位を、選択点のｙ座標と対象の境界内の任意の点のｙ座標との間の差の絶対値の最小値であると定義する。図１９に説明される例では、選択点１９２５はレイアウトエリア１９２０から非ゼロのｙ変位を有し、当該ｙ変位はレイアウトエリア１９２０の最も近い辺と選択点１９２５との間の垂直距離である。他方、選択点１９１５はレイアウトエリア１９１０とゼロのｙ変位を有する。なぜなら、選択点１９１５はレイアウトエリア１９１０よりも水平方向にみて左にあり、選択点１９１５のｙ座標とレイアウトエリア１９１０の境界内の何れか任意の点のｙ座標との間の距離の絶対値の最小値はゼロであるからである。図１９はまた、プリミティブエリア１９３０の境界内にある選択点１９３５を説明する。このような場合に、当該エリアへのｘ変位と当該エリアへのｙ変位との両方がゼロである。
【０１０１】
一部の実施形態はまた、レイアウトエリア内の選択カラムを、ゼロのｙ変位を有する段落が存在するカラムのうち最小のｘ変位を有するカラムであると定義する。言い換えると、一部の実施形態は選択点を通る水平線（すなわち、レイアウトエリアのｘ軸に平行な線）を用い、この線が段落のコンテンツと交差する最も近いカラムを見つける。このような交差が存在しないならば、選択カラムは存在しない。このような交差が存在するならば、交差する段落は選択段落と呼ばれる。図１９に説明される例では、選択点１９３５を通るように描かれる水平線はカラム１９４１、１９４２、１９４４と交差するだろう。具体的には、この水平線は段落１９４５でカラム１９４４と交差するだろう。カラム１９４４はゼロのｙ変位を有する段落１９４５を含み、最小のｘ変位を有するカラムであるので、カラム１９４４は選択カラム（ハイライトされたカラム）であり、段落１９４５は選択段落（ハイライトされた段落）である。一部の実施形態は水平線を図示的に描かないが、その代わりに、選択カラムを決定するために選択点を通る仮想的に水平線に沿って探索する。
【０１０２】
一部の実施形態はさらに、選択点から対象へのｘ到達範囲を、選択点のｘ座標と対象の境界内の任意の点のｘ座標との間の差の絶対値の最大値であると定義する。図１９に説明される例では、レイアウトエリア１９２０の右の辺が選択点１９２５のｘ座標とレイアウトエリア１９２０の境界内の任意の点のｘ座標との間の差の絶対値の最大値を有する。従って、選択点１９２５とレイアウトエリア１９２０の右の辺との間の水平距離が選択点１９２５とレイアウトエリア１９２０とのｘ到達範囲である。
【０１０３】
１．ｙ変位の比較
一部の実施形態は選択点からエリアへの最小のｙ変位を有するエリアを選ぶ。両方のエリアが同じｙ変位を生じるならば、エリアの選択は未解決のままである。図２０は選択点のｙ変位に基づいて選択点へ最も近いプリミティブエリアを判定することを説明する。説明されるように、選択点２０１０はレイアウトエリア２０１２、２０１４の両方の近くにあり、選択点２０２０はレイアウトエリア２０２２、２０２４の両方の近くにある。選択点２０１０はレイアウトエリア２０１２とはゼロのｙ変位を有するが、レイアウトエリア２０１４とは非ゼロのｙ変位を有する。この例では、（ハイライトされた）レイアウトエリア２０１２が選択点２０１０に最も近いプリミティブエリアとみなされるだろう。他方で、選択点２０２０はレイアウトエリア２０２２、２０２４の両方にゼロのｙ変位を有する。この例では、一部の実施形態は、両方のプリミティブエリアへのｙ変位が同じである場合に、２つのプリミティブエリアを比較するためのｙ変位の使用を差し控える。
【０１０４】
２．グラフィックエリア内のレイアウトエリア
レイアウトエリアとグラフィックエリアとを比較する際に、選択点がレイアウトエリアの内部領域内にあり、この領域がグラフィックエリアの境界内に完全に含まれるならば、一部の実施形態は当該レイアウトエリアを最も近いプリミティブエリアとして選択する。そうでなければ、選択は未解決のままである。（この基準は、印刷物の電子スキャンから作成されたＯＣＲファイルで一般的であるように、レイアウトエリアの境界線又は背景として、若しくはレイアウトエリア内のテキストの重畳画像として、テキストを視覚的に装飾するためにグラフックが用いられる一般的な場合を認識する。）図２１は、レイアウトエリアがグラフィックエリアの境界内に含まれる場合に当該レイアウトエリアが最も近いプリミティブエリアとして選択されることを説明する。
【０１０５】
図２１は選択点２１１０、２１２０を説明する。選択点２１１０はレイアウトエリア２１１２とグラフィックエリア２１１４との両方の中にある。選択点２１２０はレイアウトエリア２１２２とグラフィックエリア２１２４との両方の中にある。選択点２１１０がレイアウトエリア２１１２の中にあり、レイアウトエリア２１１２がグラフィックエリア２１１４の完全に中にあるので、一部の実施形態は（ハイライトされた）レイアウトエリア２１１２を選択点に最も近いプリミティブエリアとして選択する。
【０１０６】
他方で、選択点２１２０はレイアウトエリア２１２２内にあるが、レイアウトエリア２１２２はグラフィックエリア２１２４の完全に中にあるわけではないので、レイアウトエリア２１２２は最も近いプリミティブエリアとしてはみなされないだろう。一部の実施形態は、この状況で、選択点２１２０に最も近いプリミティブエリアを決定するためにこの基準を用いることを差し控える。
【０１０７】
３．選択カラムを有さないレイアウトエリアの比較
選択カラムを有さない２つのレイアウトエリアを比較する際に、一部の実施形態は両方のレイアウトエリアから最小のｘ変位を有するカラムと最小のｙ変位を有する段落とを決定する。一部の実施形態は、各エリアのカラムのｘ変位が他のエリアのｘ到達範囲よりも小さいならば、その段落へ最小のｙ変位を有するレイアウトエリアを選択する。他のすべての場合で選択は未解決のままである。（言い換えると、どのレイアウトを用いるかをカラムが明確に区別しないならば、処理は段落を調べるだろう。）図２２は選択カラムを有さない２つのレイアウトエリアの比較を説明する。
【０１０８】
図２２は選択点２２１０、２２２０を説明する。選択点２２１０はレイアウトエリア２２１２、２２１４の近くにあり、選択点２２２０はレイアウトエリア２２２２、２２２４の近くにある。選択点２２１０、２２２０を通るように描かれる水平線はどのレイアウトエリアのどのカラムとも交差しないので、どのレイアウトエリアも選択カラムを有さない。
【０１０９】
選択点２２１０について、レイアウトエリア２２１２において最小のｘ変位を有するカラムはカラム２２１６であり、カラム２２１６において最小のｙ変位を有する段落は段落２２１８である。レイアウトエリア２２１４において最小のｘ変位を有するカラムはカラム２２１７であり、カラム２２１７において最小のｙ変位を有する段落は段落２２１９である。段落２２１９へのｙ変位（ｙ変位２）は段落２２１８へのｙ変位（ｙ変位１）よりも小さいので、段落２２１９を含むレイアウトエリアは選択点２２１０に最も近いプリミティブエリアとして選択されるだろう。
【０１１０】
選択点２２２０について、レイアウトエリア２２２２において最小のｘ変位を有するカラムはカラム２２２６であり、カラム２２２６において最小のｙ変位を有する段落は段落２２２８である。レイアウトエリア２２２４において最小のｘ変位を有するカラムはカラム２２２７であり、カラム２２２７において最小のｙ変位を有する段落は段落２２２９である。選択点２２２０から段落２２２９へのｙ変位は段落２２２８へのｙ変位よりも小さいが、選択点からレイアウトエリア２２２４へのｘ変位が他のレイアウトエリア２２２２へのｘ到達範囲よりも大きいので、レイアウトエリア２２２４は選択されないだろう。一部の実施形態は、この状況において選択点２２２０に最も近いプリミティブエリアを決定するためにこの基準を使用することを差し控える。
【０１１１】
４．ｘ変位の比較
一部の実施形態は選択点からエリアへの最小のｘ変位値を有するプリミティブエリアを選択する。これらの実施形態の一部では、ｘ変位値はエリアのタイプに基づいて決定される。選択カラムを有するレイアウトエリアについて、選択点から選択カラムへのｘ変位がレイアウトエリアのｘ変位として用いられる。選択カラムを有さないレイアウトエリアについて、選択点から当該エリアへのｘ到達範囲がｘ変位値として用いられる。（グラフィックエリアのような）すべての他のエリアについて、選択点からエリアへのｘ変位が当該エリアのｘ変位値として用いられる。
【０１１２】
図２３はｘ変位値の様々な決定に基づくプリミティブエリアの比較を説明する。図２３は選択点２３１０、２３２０、２３３０を説明する。選択点２３１０はレイアウトエリア２３１２、２３１４の近くにある。選択点２３２０はレイアウトエリア２３２２、２３２４の近くにある。選択点２３３０はレイアウトエリア２３３２及びグラフィックエリア２３３４の近くにある。
【０１１３】
選択点２３１０について、レイアウトエリア２３１２は選択カラム２３１６及び選択段落２３１８を有する。従って、レイアウトエリア２３１２のｘ変位値は選択点２３１０から選択段落２３１８へのｘ変位（ｘ変位１）である。他方、レイアウトエリア２３１４は選択カラムを有さず、それ故レイアウトエリア２３１４のｘ変位値はそのｘ到達範囲である。レイアウトエリア２３１４のｘ変位値（そのｘ到達範囲）はレイアウトエリア２３１２のｘ変位値よりも大きいので、レイアウトエリア２３１２が選択点２３１０に最も近いプリミティブエリアであると決定される。
【０１１４】
選択点２３２０について、レイアウトエリア２３２２は選択カラム２３２６及び選択段落２３２８を有する。従って、レイアウトエリア２３２２のｘ変位値は選択点２３２０から選択段落２３２８へのｘ変位（ｘ変位１）である。他方、レイアウトエリア２３２４は選択カラムを有さず、それ故レイアウトエリア２３２４のｘ変位値はそのｘ到達範囲である。レイアウトエリア２３２４のｘ変位値（そのｘ到達範囲）はレイアウトエリア２３２２のｘ変位値よりも小さいので、レイアウトエリア２３２４が選択点２３２０に最も近いプリミティブエリアであると決定される。
【０１１５】
選択点２３３０について、レイアウトエリア２３３２は選択カラム２３３６及び選択段落２３３８を有する。従って、レイアウトエリア２３３２のｘ変位値は選択点２３３０から選択段落２３３８へのｘ変位（ｘ変位１）である。エリア２３３４はグラフィックエリアである。選択点２３３０からグラフィックエリア２３３４へのｘ変位（ｘ変位２）が当該エリアのｘ変位値として用いられる。グラフィックエリア２３３４のｘ変位値はレイアウトエリア２３３２のｘ変位値よりも小さいので、グラフィックエリア２３３４が選択点２３３０に最も近いプリミティブエリアであると決定される。
【０１１６】
５．選択カラムのｘ変位の比較
選択カラムを有する２つのレイアウトエリアを比較する際に、一部の実施形態は選択点から選択段落までの最小のｘ変位を有するエリアを選択する。図２４はどのレイアウトエリアが選択点から最小のｘ変位を有する選択カラムを有するかを決定することによって、選択カラムを有するレイアウトエリアを比較することを説明する。
【０１１７】
図２４は選択点２４１０、２４２０を説明する。選択点２４１０はレイアウトエリア２４１２、２４１４の近くにある。選択点２４２０はレイアウトエリア２４２２、２４２４の近くにある。
【０１１８】
選択点２４１０について、レイアウトエリア２４１２は選択カラム２４１６及び選択段落２４１８を有する。従って、レイアウトエリア２４１２のｘ変位値は選択点２４１０から選択段落２４１８へのｘ変位（ｘ変位１）である。同様に、レイアウトエリア２４１４は選択段落２４１９を有する選択カラム２４１７を有する。従って、レイアウトエリア２４１４のｘ変位値は選択点２４１０から選択段落２４１９へのｘ変位（ｘ変位２）である。レイアウトエリア２４１４のｘ変位値（そのｘ到達範囲）はレイアウトエリア２４１２のｘ変位値よりも小さいので、レイアウトエリア２４１２が選択点２４１０に最も近いプリミティブエリアであると決定される。
【０１１９】
選択点２４２０について、レイアウトエリア２４２２は選択カラム２４２６及び選択段落２４２８を有する。従って、レイアウトエリア２４２２のｘ変位値は選択点２４２０から選択段落２４２８へのｘ変位（ｘ変位１）である。同様に、レイアウトエリア２４２４は選択段落２４２９を有する選択カラム２４２７を有する。従って、レイアウトエリア２４２４のｘ変位値は選択点２４２０から選択段落２４２９へのｘ変位（ｘ変位２）である。レイアウトエリア２４２４のｘ変位値（そのｘ到達範囲）はレイアウトエリア２４２２のｘ変位値よりも大きいので、レイアウトエリア２４２２が選択点２４２０に最も近いプリミティブエリアであると決定される。
【０１２０】
一部の実施形態は基準の優先度リストを用いて候補のプリミティブエリアを比較する。一部の実施形態は最高の優先度基準を用いて比較を開始する。リスト内の１つの基準を用いて２つの候補のプリミティブエリアのどちらを選択するかを解決できないならば、次の基準が適用される。一部の実施形態について、基準の優先度リストは以下の通りである。
【０１２１】
１．  選択点からエリアへの最小のｙ変位を有するエリアを選択する。両エリアが同じｙ変位を生み出すならば、エリアの選択は未解決のままである。この基準の適用の例は図２０を参照して上述された。
【０１２２】
２．  レイアウトエリアとグラフィックエリアとを比較する場合に、選択点がレイアウトエリアの内部領域内にあり、且つこの領域がグラフィックエリアの境界内に完全に含まれるならば、当該レイアウトエリアを選択する。そうでなければ、選択は未解決のままである。この基準の適用の例は図２１を参照して上述された。
【０１２３】
３．  ２つのレイアウトエリアを比較する場合に、どちらも選択カラムを有さないならば、各レイアウトエリアにおいて選択点からカラムへの最小のｘ変位を有するカラムを決定し、選択点から段落への最小のｙ変位を有するこれらの２つのカラムのそれぞれの中の段落を決定する。各エリアのカラムのｘ変位が他のエリアのｘ到達範囲よりも小さいならば、その段落への最小のｙ変位を有するレイアウトエリアを選択する。他のすべての場合において選択は未解決である。この基準の適用の例は図２２を参照して上述された。
【０１２４】
４．  エリアに適するタイプの最小の変位値を有するエリアを選択する。選択カラムを有するレイアウトエリアについて、選択点から選択カラムへのｘ変位を用いる。選択カラムを有さないレイアウトエリアについて、選択点からエリアへのｘ到達範囲を用いる。エリアの他のすべてのタイプについて、選択点からこれらのエリアへのｘ変位を用いる。この基準の適用の例は図２３を参照して上述された。
【０１２５】
５．  選択カラムを有する２つのレイアウトエリアを比較する場合に、選択点から選択段落へ最小のｘ変位を有するエリアを選択する。この基準の適用の例は図２４を参照して上述された。
【０１２６】
６．  最も手前にあるエリアを選択する。一部の実施形態では、各エリアは、どのコンテンツが他のどのコンテンツの上に描かれるかに関して曖昧さが存在しないことを保証するために一意の“Ｚオーダ”が割り当てられる。これらの実施形態の一部はＺオーダによって示される最も手前にあるエリアを選択することによって、エリア間の任意の残りの同順位を解決する。
【０１２７】
開始選択点に「最も近い」プリミティブエリアと終了選択点に“最も近い”プリミティブエリアとを決定した後に、一部の実施形態は両プリミティブエリアを調べて、選択点を改訂する必要があるかを検証する。例えば、始点がエリアＡ１内にあり、終点がエリアＡ２内にあり、且つエリアＡ２が完全にＡ１の境界の内部にあるならば、一部の実施形態は、終点をＡ２の外且つＡ１の中に動かす必要があるかを判定するために更なる分析を実行する。なぜなら、ユーザは終了選択点がエリアＡ２内にあることを意図しないだろうからである。
【０１２８】
Ｂ．選択インデックスの決定
一部の実施形態では、２つの選択点により規定される連続した選択は、フローにおいて開始選択点に最も近い要素のインデックスで始まり、フローにおいて終了選択点に最も近い要素のインデックスで終わる。開始選択点及び終了選択点に最も近いプリミティブエリアが決定されると、一部の実施形態は相対的に最も近いプリミティブエリアに関する開始選択点及び終了選択点に基づいて開始選択インデックス及び終了選択インデックスを決定する。
【０１２９】
グラフィックエリアであるプリミティブエリアについて、一部の実施形態は選択インデックスとして、グラフィックエリアのインデックスを用いる。レイアウトエリアであるプリミティブエリアについて、一部の実施形態はレイアウトエリアの選択カラムに基づいて選択インデックスを決定する。レイアウトエリアが選択カラムを有さないならば、一部の実施形態は選択インデックスを決定するために、選択点からカラムへ最小のｘ変位を有するカラムを用いる。
【０１３０】
このカラム内で、（これが選択カラムであるか最小のｘ変位を有するカラムであるかにかかわらず、）一部の実施形態は選択点から段落へ最小のｙ変位を有する段落を決定する。このｙ変位が非ゼロであり、且つ選択点が段落の上にあるならば、段落の最初のインデックスが選択インデックスとして用いられる。このｙ変位が非ゼロであり且つ選択点が段落の下にあるならば、段落の最後のインデックスが選択インデックスとして用いられる。他方、このｙ変位がゼロであり且つ選択点が段落内にあるならば、一部の実施形態は選択点からテキスト行へ最小のｙ変位を有する段落内のテキスト行を決定することによって選択インデックスを決定する。当該テキスト行内で、選択インデックスを決定するために、選択点から最小のｘ変位を有する文字又はインライングラフィックが用いられる。
【０１３１】
一部の実施形態について、図２５は選択点に最も近いプリミティブエリアに基づいて選択インデックスを決定するための処理２５００を概念的に説明する。一部の実施形態では、処理２５００は開始選択インデックス及び終了選択インデックスを決定するために図１７の動作１７５０及び／又は動作１７６０の最中に実行される。図２５は図２６に説明される例を参照して記載される。図２６は選択点の位置と選択インデックスの決定との間の関係を説明する。説明されるように、図２６はレイアウトエリア２６１０、２６２０を含む。図２６はまた、レイアウトエリア２６１０、２６２０内の選択をそれぞれ実行するための選択点２６１１、２６２１を説明する。
【０１３２】
図２５の処理２５００は選択点に最も近いプリミティブエリアとして、あるプリミティブエリアが選択された場合に始まる。一部の実施形態では、選択点に最も近いプリミティブエリアはセクションＩＩ−ａで上述された基準を用いて決定される。図２６に説明される例では、レイアウトエリア２６１０が選択点に最も近いプリミティブエリアであり、レイアウトエリア２６２０が選択点２６２１に最も近いプリミティブエリアである。
【０１３３】
処理２５００は（２５１０で）最も近いプリミティブエリアとして選択されたプリミティブエリアがレイアウトエリアであるかを判定する。最も近いプリミティブエリアが複数のインデックスに関連する複数の要素を有するレイアウトエリアであるならば、処理は２５２０へ進む。図２６のプリミティブエリア２６１０、２６２０は両方とも複数のインデックスを有する複数の要素を有するレイアウトエリアである。最も近いプリミティブエリアが１つのインデックスに関連する１つの要素だけを有するならば、処理は２５１５へ進み、選択インデックスとして非レイアウトエリアのインデックスを適用し、終了する。
【０１３４】
処理は（２５２０で）選択カラム又は選択カラムを有さないレイアウトエリアについては最小のｘ変位を有するカラムを決定する。カラムの決定に基づいて、処理は（２５３０で）選択カラム内の段落又は最小のｙ変位を有するカラムのうち最小のｘ変位を有するカラム内の段落を決定する。図２６に説明される例では、選択点２６１１はカラム２６１２の段落２６１４の内部にある。よって、段落２６１４が選択点２６１１について最小のｙ変位を有する選択カラムである。選択点２６２１について、段落２６２４が最小のｙ変位を有する段落である。よって、段落２６２４が選択点２６２１についての選択段落である。
【０１３５】
次に、処理は（２５４０で）選択段落のｙ変位がゼロであるかを判定する。選択段落のｙ変位がゼロでないならば、処理は２５５０へ進む。選択段落のｙ変位がゼロならば、処理は２５４５へ進み、最小のｙ変位を有する選択段落内のテキストを決定する。図２６に説明される例では、選択点２６１１は選択段落２６１４の内部にあり、それ故選択段落のｙ変位はゼロである。他方、選択点２６２１はその選択段落２６２４の下にあり、それ故選択段落のｙ変位は非ゼロである。
【０１３６】
処理は次に（２５７０で）最小のｘ変位を有するテキスト行内の文字を識別し、（２５８０で）文字の境界に対する選択点の位置に基づいて選択インデックスを決定する。選択インデックスを決定した後、処理は終了する。図２６に説明される例では、選択点２６１１から最小のｙ変位を有するテキスト行はテキスト行２６１６である。選択点２６１１から最小のｘ変位を有するテキスト行２６１６内の文字は文字２６１７（単語「ｕｐｅｎｄｅｎ」内の文字「ｕ」）である。文字２６１７の境界に対する選択点２６１１の位置に基づいて選択インデックスが生成されるだろう。
【０１３７】
２５５０で、処理は選択点が選択段落の上にあるかを判定する。選択点が選択段落の上にあるならば、処理は（２５５５で）段落の最初のインデックスを選択インデックスとして用いる。選択点が選択段落の下にあるならば、処理は（２５６０で）段落の最後のインデックスを選択インデックスとして用いる。選択インデックスを決定した後に処理は終了する。図２６に説明される例では、選択点２６２１は選択段落２６２４の下にある。従って、処理２５００は選択段落２６２４の最後のインデックスを用い、これは一部の実施形態では文字２６２７（単語「ｒｏｇｅｉｇｎｅｓｉｚｉｎｇ」の文字「ｇ」）の位置又は文字２６２７の後ろの位置に対応する。
【０１３８】
Ｃ．連続した選択の改良
順序リスト内のプリミティブ要素の連続した選択は一部の実施形態で、開始選択インデックスに対応する開始プリミティブ要素で始まり、終了選択インデックスに対応する終了プリミティブ要素で終わるように規定される。開始プリミティブ要素に対する開始選択点の位置（及び終了プリミティブ要素に対する終了選択点の位置）に依存して、一部の実施形態は開始プリミティブ要素又は終了プリミティブ要素を含めるか除くかのいずれかによって連続した選択の開始と終了とをさらに改良する。一部の実施形態では、選択の開始又は終了でプリミティブ要素を含めるか除くかは一般にプリミティブ要素及びその子孫の境界に対して選択点がどこに来るかどうかに依存する。
【０１３９】
一部の実施形態では、開始プリミティブ要素のテキスト行の下にあるか又はテキスト行の垂直範囲内にあるが開始プリミティブ要素の中央仕切りの右にある開始選択点によって、開始プリミティブ要素が連続した選択から除かれることになり、テキスト行の上にあるか又はテキスト行の垂直範囲内にあるが開始プリミティブ要素の中央仕切りの左側にある開始選択点によって、開始プリミティブ要素が連続した選択に含まれることになる。一部の実施形態では終了プリミティブ要素について反対も成り立つ。開始プリミティブ要素のテキスト行の下にあるか又はテキスト行の垂直範囲内にあるが開始プリミティブ要素の中央仕切りの右にある終了選択点によって、終了プリミティブ要素が連続した選択に含まれることになり、テキスト行の上にあるか又はテキスト行の垂直範囲内にあるが開始プリミティブ要素の中央仕切りの左側にある終了選択点によって、終了プリミティブ要素が連続した選択から除かれることになる。
【０１４０】
一部の実施形態について、図２７は連続した選択のどちらかの端部でプリミティブ要素を含めるか除くかを判定する例を説明する。図２７は開始プリミティブ要素２７１０から始まり、終了プリミティブ要素２７６０で終わる連続した選択２７０５を有する文書ページ２７００を説明する。開始プリミティブ要素２７１０はレイアウトエリア２７０１内にあり、終了プリミティブ要素はレイアウトエリア２７０２内にある。プリミティブ要素２７１０はテキスト行２７１５内にある。プリミティブ要素２７６０はテキスト行２７６５内にある。一部の実施形態では、プリミティブ要素はインラインではないスタンドアロンオブジェクトでありうる。これらの例では、テキスト行はプリミティブ要素の境界によって規定される。
【０１４１】
この図は開始プリミティブ要素２７１０の近くのいくつかの例示の位置２７２１−２７２４を説明する。例示の位置２７２１は開始プリミティブ要素２７１０を含むテキスト行２７１５の上にある。例示の位置２７２２はプリミティブ要素２７１０の中央仕切りの左にあり且つテキスト行２７１５の垂直範囲内にある。例示の位置２７２３は中央仕切りの右にあり且つテキスト行２７１５の垂直範囲内にある。例示の位置２７２４はテキスト行２７１５の下にある。
【０１４２】
一部の実施形態では、連続した選択２７０５を規定する開始選択点が例示の位置２７２１、２７２２のどちらかにあるならば、プリミティブ要素２７１０は連続した選択に含まれるだろう。他方、開始選択点が位置２７２３、２７２４のどちらかにあるならば、プリミティブ要素２７１０は連続した選択に含まれないだろう。そして、一部の実施形態はプリミティブ要素２７１０の直後のプリミティブ要素に対応する開始選択インデックスを調整することによって連続した選択を改良する。
【０１４３】
図２７はまた、終了プリミティブ要素２７６０の近くのいくつかの例示の位置２７７１−２７７４を説明する。例示の位置２７７１は終了プリミティブ要素２７６０を含むテキスト行２７６５の上にある。例示の位置２７７２はプリミティブ要素２７６０の中央仕切りの左にあり且つテキスト行２７６５の垂直範囲内にある。例示の位置２７７３は中央仕切りの右にあり且つテキスト行２７６５の垂直範囲内にある。例示の位置２７７４はテキスト行２７６５の下にある。
【０１４４】
一部の実施形態では、連続した選択２７０５を規定する終了選択点が例示の位置２７７３、２７７４のどちらかにあるならば、プリミティブ要素２７６０は連続した選択に含まれるだろう。他方、開始選択点が位置２７７１、２７７２のどちらかにあるならば、プリミティブ要素２７６０は連続した選択に含まれないだろう。そして、一部の実施形態はプリミティブ要素２７６０の直前のプリミティブ要素に対応する終了選択インデックスを調整することによって連続した選択を改良する。
【０１４５】
別の実施形態において、プリミティブ要素を含めるか除くかを一貫して判定するためにプリミティブ要素の中心線以外の線が用いられうる。例えば、一部の実施形態では開始プリミティブ要素が含められるかを判定するために開始プリミティブ要素の左の辺又は右の辺が用いられうる。
【０１４６】
ＩＩＩ．ソフトウェアアーキテクチャ
一部の実施形態では、上述の処理は、コンピュータ又はハンドヘルド装置のような特定の機械で動作するか、コンピュータで読み取り可能な記憶媒体に格納されたソフトウェアとして実施される。図２８は一部の実施形態の文書編集アプリケーション２８００のソフトウェアアーキテクチャを概念的に説明する。一部の実施形態では、文書編集アプリケーションはスタンドアロンアプリケーションであるか、又は別のアプリケーションに統合されているアプリケーションであるが、他の実施形態ではアプリケーションはオペレーティングシステム内に実装されていてもよい。さらに、一部の実施形態では、アプリケーションはサーバベースソリューションの一部として提供される。これらの実施形態の一部では、アプリケーションはシンクライアントを介して提供される。すなわち、アプリケーションがサーバ上で実行されつつ、当該サーバからリモートにある別の機械を介してユーザはアプリケーションと相互作用する。他のこのような実施形態では、アプリケーションはシッククライアントを介して提供される。すなわち、アプリケーションはサーバからクライアント機械へ配信され、クライアント機械で実行される。
【０１４７】
文書編集アプリケーション２８００はユーザインタフェース（ＵＩ）モジュール２８０５、順序リスト生成モジュール２８２０、プリミティブ認識モジュール２８１０及び連続選択解釈モジュール２８３０を含む。文書編集アプリケーションはまた、文書ストレージ２８５５、順序リストストレージ２８６０及び選択インデックスストレージ２８６５を含む。一部の実施形態では、ストレージ２８５５、２８６０、２８６５は１つの物理ストレージ２８９０に格納される。他の実施形態では、当該ストレージは別々の物理ストレージ内にあるか、当該ストレージのうちの２つが１つの物理ストレージ内にあり、第３ストレージが別の物理ストレージ内にある。例えば、文書ストレージ２８５５、順序リストストレージ２８６０及び選択インデックスストレージ２８６５は相異なる物理ストレージに分かれていないこともあるだろう。
【０１４８】
図２８はまた、入力装置ドライバ（群）２８７２、ディスプレイモジュール２８８０及びネットワーク接続インタフェース（群）２８７４を含むオペレーティングシステム２８７０を説明する。一部の実施形態では、説明されるように、文書編集アプリケーションがオペレーティングシステムとは別のアプリケーションである場合でも、入力装置ドライバ２８７２、ディスプレイモジュール２８８０及びネットワーク接続インタフェース２８７４はオペレーティングシステム２８７０の一部である。
【０１４９】
入力装置ドライバ２８７２はキーボード、マウス、タッチパッド、描画タブレット、タッチスクリーンなどからの信号を変換するためのドライバを含んでもよい。ユーザはこれらの入力装置のうちの１つ以上と相互作用し、この１つ以上の入力装置は自身に対応する装置ドライバへ信号を送信する。次いで、装置ドライバは信号をユーザ入力データに変換し、このデータがＵＩインタラクションモジュール２８０５へ提供される。
【０１５０】
一部の実施形態の文書編集アプリケーション２８００は動作及び機能の様々な集合を実行する数多くの方法をユーザに提供するグラフィカルユーザインタフェースを含む。一部の実施形態では、これらの動作及び機能は様々な入力装置（例えば、キーボード、トラックパッド、タッチパッド、マウスなど）を通じてユーザから受信された様々なコマンドに基づいて実行される。例えば、本出願はグラフィカルユーザインタフェース内のオブジェクトを制御（例えば、選択、移動）するためにグラフィカルユーザインタフェース内のカーソルを使用することを説明する。しかしながら、一部の実施形態では、グラフィカルユーザインタフェース内のオブジェクトはまた、タッチコントロールのような他のコントロールを通じて制御又は操作されうる。一部の実施形態では、タッチコントロールは入力装置のディスプレイへのタッチの存在及び位置を検出できる入力装置を通じて実施される。このような機能を有する装置の例は、（例えば、スマートフォン、タブレットコンピュータなどに組み込まれる）タッチスクリーン装置である。タッチコントロールを有する一部の実施形態では、タッチスクリーン装置のディスプレイ上に表示されたグラフィカルユーザインタフェースと相互作用することによって、ユーザはオブジェクトを直接に操作する。例えば、タッチスクリーン装置のディスプレイ上の特定のオブジェクトを単にタッチすることによって、ユーザはグラフィカルユーザインタフェース内の特定のオブジェクトを選択できる。このようなものとして、タッチコントロールが利用される場合に、一部の実施形態ではグラフィカルユーザインタフェースのオブジェクトを選択可能にするためのカーソルが提供されなくてもよい。しかしながら、グラフィカルユーザインタフェース内にカーソルが提供される場合に、一部の実施形態ではカーソルを制御するためにタッチコントロールが用いられうる。
【０１５１】
ディスプレイモジュール２８８０はユーザインタフェースの出力をディスプレイ装置のために変換する。すなわち、ディスプレイモジュール２８８０は何を表示すべきかを記述する信号を（例えばＵＩインタラクションモジュール２８０５から）受信し、これらの信号を画素情報に変換してディスプレイ装置へ送信する。ディスプレイ装置はＬＣＤ、プラズマスクリーン、ＣＲＴモニタ、タッチスクリーンなどであってもよい。
【０１５２】
ネットワーク接続インタフェース２８７４は、文書編集アプリケーション２８００が動作する装置を、１つ以上のネットワークを通じて他の装置（例えば、処理される必要のある文書を格納するネットワーク内の他の場所にあるストレージ）と通信可能にする。ネットワークはＧＳＭやＵＭＴＳのような無線音声・データネットワーク、８０２．１１ネットワーク、イーサネット接続のような有線ネットワークなどを含んでもよい。
【０１５３】
文書編集アプリケーション２８００のＵＩインタラクションモジュール２８０５は入力装置ドライバから受信したユーザ入力データを解釈し、それを様々なモジュールへ渡す。この様々なモジュールはプリミティブ認識モジュール２８１０、順序リスト生成モジュール２８２０及び連続選択解釈モジュール２８３０を含む。ＵＩインタラクションモジュール２８０５はまた、ＵＩの表示を管理し、このディスプレイ情報をディスプレイモジュール２８８０へ出力する。このＵＩ表示情報は、連続選択解釈モジュール２８３０からの情報、順序リスト生成モジュール２８２０からの情報、プリミティブ認識モジュール２８１０からの情報、又は（例えばユーザがアプリケーション２８００の他のモジュールのどれにも影響を与えないＵＩ内のアイテムを動かす場合に）入力データからの直接の情報に基づいてもよい。
【０１５４】
プリミティブ認識モジュール２８１０はユーザインタフェースモジュール２８０５からコマンドを受信し、文書ストレージ２８５５に格納された文書ページを文字、段落、カラム、レイアウトエリア及びグラフィックエリアのようなプリミティブに処理する。一部の実施形態では、プリミティブ認識モジュール２８１０はまた、ページ内の可視の仕切りに従ってプリミティブを区画にグループ分けする木構造のような構造を作成する。
【０１５５】
順序リスト生成モジュール２８２０はユーザインタフェースモジュール２８０５からコマンドを受信し、プリミティブ認識モジュール２８１０によって認識されたプリミティブを用いて順序リストを生成する。一部の実施形態では、順序リスト生成モジュール２８２０は図８〜図１６を参照して上述されたような始点関係順序及び文脈的関係順序を実行するサブモジュールを含む。順序リスト生成モジュール２８２０によって生成された順序リストは順序リストストレージ２８６０に格納される。一部の実施形態では、順序リスト生成モジュール２８２０はまた、リスト内の各プリミティブに順序インデックスを割り当てる。
【０１５６】
連続選択解釈モジュール２８３０はユーザインタフェースモジュール２８０５からコマンドを受信し、開始選択点及び終了選択点を生成する。一部の実施形態では、開始選択点及び終了選択点はユーザインタフェースモジュール２８０５により供給されたユーザ選択座標のペアに基づいて生成される。次いで、連続選択解釈モジュール２８３０は順序リストストレージ２８６０を検索して、順序リスト内で開始選択点及び終了選択点に最も近いプリミティブを識別する。識別されたプリミティブに基づいて、連続選択解釈モジュール２８３０はユーザインタフェースモジュール２８０５のために開始選択インデックス及び終了選択インデックスを生成する。
【０１５７】
機能の多くは１つのモジュール（例えば、順序リスト生成モジュール２８２０又は連続選択解釈モジュール２８３０）によって実行されるように記載されてきたが、当業者は本明細書に記載される機能が複数のモジュールに分割されてもよいことを認識するだろう。同様に、複数の相異なるモジュールによって実行されるものとして記載された機能（例えば、始点順序関係の比較、文脈的順序関係の比較など）は一部の実施形態では単一のモジュールによって実行されてもよい。
【０１５８】
ＩＶ．電子システム
上述の機能及びアプリケーションの多くは、（コンピュータで読み取り可能な記憶媒体とも呼ばれる）コンピュータで読み取り可能なストレージに記録された命令セットとして特定されるソフトウェア処理として実施される。これらの命令が１つ以上の計算部又は処理部（例えば、１つ以上のプロセッサ、プロセッサコア又は他の処理部）によって実行される場合に、これらの命令は処理部（群）に命令で示される動作を実行させる。コンピュータで読み取り可能な記憶媒体の例は、ＣＤ−ＲＯＭ、フラッシュドライブ、ランダムアクセスメモリ（ＲＡＭ）チップ、ハードドライブ、消去可能なプログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）などを含むがこれらに限定されない。コンピュータで読み取り可能な記憶媒体は搬送波を含まず、無線接続又は有線接続を通じて伝わる電子信号を含まない。
【０１５９】
本明細書では、「ソフトウェア」という用語は、プロセッサによる処理のためにメモリに読み出されうる、リードオンリメモリ内に存在するファームウェア又は磁気ストレージに格納されたアプリケーションを含むことを意味する。また、一部の実施形態では、複数のソフトウェア発明は特徴的なソフトウェア発明を残しつつ、より大きなソフトウェアの一部として実施されうる。一部の実施形態では、複数のソフトウェア発明はまた、別個のプログラムとして実装されうる。最後に、本明細書に記載されたソフトウェア発明を一緒になって実施する別々のプログラムの任意の組合せが本発明の範囲内に入る。一部の実施形態では、１つ以上の電子システム上で動作するようにインストールされた場合に、ソフトウェアプログラムはソフトウェアプログラムの動作を実行する１つ以上の個別の機械実装を規定する。
【０１６０】
図２９は本発明の一部の実施形態が実施される電子システム２９００を概念的に説明する。電子システム２９００はコンピュータ（例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータなど）、電話機、ＰＤＡ又は任意の他の種類の電子装置であってもよい。このような電子システムは様々なタイプのコンピュータで読み取り可能な記憶媒体及び様々な他のタイプのコンピュータで読み取り可能な記憶媒体とのインタフェースを含む。電子システム２９００は、バス２９０５、処理部（群）２９１０、グラフィックス処理部（ＧＰＵ）２９１５、システムメモリ２９２０、ネットワーク２９２５、リードオンリメモリ２９３０、固定ストレージ装置２９３５、入力装置２９４０及び出力装置２９４５を含む。
【０１６１】
バス２９０５は電子システム２９００の数多くの内部装置を通信可能に接続するシステムバス、周辺機器バス及びチップセットバスのすべてを集合的に表す。例えば、バス２９０５は処理部（群）２９１０を、リードオンリメモリ２９３０、ＧＰＵ２９１５、システムメモリ２９２０及び固定ストレージ装置２９３５に通信可能に接続する。
【０１６２】
これらの様々なメモリ部から、処理部（群）２９１０は本発明の処理を実行するために実行すべき命令と処理すべきデータとを読み出す。処理部（群）は様々な実施形態において単一のプロセッサであってもよいし、マルチコアプロセッサであってもよい。一部の命令はＧＰＵ２９１５に渡されて実行される。ＧＰＵ２９１５は様々な計算をオフロードでき、処理部（群）２９１０により提供される画像処理を補完できる。一部の実施形態では、このような機能はコアイメージのカーネルシェイディング言語を用いて提供されうる。
【０１６３】
リードオンリメモリ（ＲＯＭ）２９３０は電子システムの処理部（群）２９１０及び他のモジュールが必要とする静的データ及び命令を格納する。他方、固定ストレージ装置２９３５は読み書き可能メモリ装置である。この装置は電子システム２９００がオフになった場合でも命令及びデータを格納する不揮発性メモリ部である。本発明の一部の実施形態は固定ストレージ装置２９３５として（磁気ディスク又は光学ディスク及びその対応するディスクドライブのような）大容量ストレージ装置を用いる。
【０１６４】
他の実施形態は固定ストレージ装置として（フロッピーディスク、フラッシュメモリ装置など及びその対応するディスクドライブのような）取り外し可能ストレージ装置を用いる。固定ストレージ装置２９３５と同様に、システムメモリ２９２０は読み書き可能メモリ装置である。しかしながら、ストレージ装置２９３５とは異なり、システムメモリ２９２０はランダムアクセスメモリのような揮発性読み書き可能メモリである。システムメモリ２９２０は実行時にプロセッサが必要とする命令及びデータの一部を格納する。一部の実施形態では、本発明の処理はシステムメモリ２９２０、固定ストレージ装置２９３５及び／又はリードオンリメモリ２９３０に格納される。例えば、様々なメモリ部は一部の実施形態に従ってマルチメディアクリップを処理するための命令を含む。これらの様々なメモリ部から、処理部（群）２９１０は一部の実施形態の処理を実行するために実行すべき命令及び処理すべきデータを読み出す。
【０１６５】
バス２９０５はまた、入力装置２９４０及び出力装置２９４５に接続する。入力装置２９４０により、ユーザは電子システムと情報を通信し、電子システムへのコマンドを選択することができる。入力装置２９４０は英数字キーボード及び（「カーソル制御装置」とも呼ばれる）ポインティング装置、カメラ（例えば、ウェブカメラ）、マイク又は音声コマンドを受信するための同様の装置などを含む。出力装置２９４５は電子システムにより生成された画像を表示するか、他の方法でデータを出力する。出力装置２９４５はプリンタや、ブラウン管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）のようなディスプレイ装置だけでなく、スピーカ又は同様のオーディオ出力装置を含む。一部の実施形態は入力装置と出力装置との両方として機能するタッチスクリーンのような装置を含む。
【０１６６】
最後に、図２９に示されるように、バス２９０５はまた、ネットワークアダプタ（不図示）を通じてネットワーク２９２５に電子システム２９００を結合する。このように、コンピュータは、（ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）又はイントラネットのような）コンピュータネットワーク又はインターネットのような複数のネットワークを含むネットワークの一部でありうる。電子システム２９００の任意又はすべてのコンポーネントが本発明に関連して用いられてもよい。
【０１６７】
一部の実施形態はマイクロプロセッサ、（コンピュータで読み取り可能な記憶媒体、機械で読み取り可能な媒体又は機械で読み取り可能な記憶媒体と呼ばれることもある）機械で読み取り可能な媒体又はコンピュータで読み取り可能な媒体内にコンピュータプログラム命令を格納するストレージ及びメモリのような電子コンポーネントを含む。このようなコンピュータで読み取り可能な媒体の一部の例は、ＲＡＭ、ＲＯＭ、リードオンリコンパクトディスク（ＣＤ−ＲＯＭ）、レコーダブルコンパクトディスク（ＣＤ−Ｒ）、リライタブルコンパクトディスク（ＣＤ−ＲＷ）、リードオンリデジタル多目的ディスク（例えば、ＤＶＤ−ＲＯＭ、二層ＤＶＤ−ＲＯＭ）、様々なレコーダブル／リライタブルＤＶＤ（例えば、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷなど）、フラッシュメモリ（例えば、ＳＤカード、ミニＳＤカード、マイクロＳＤカードなど）、磁気ハードドライブ及び／又は半導体ハードドライブ、リードオンリブルーレイディスク及びレコーダブルブルーレイディスク、ウルトラデンシティ光学ディスク、任意の他の光学又は磁気メディア、及びフロッピーディスクを含む。コンピュータで読み取り可能な媒体は少なくとも１つの処理部によって実行可能であり、様々な動作を実行するための命令を含むコンピュータプログラムを格納してもよい。コンピュータプログラム又はコンピュータコードの例は、コンパイラによって生成されるような機械コード、及びインタプリタを用いてコンピュータ、電子コンポーネント又はマイクロプロセッサによって実行されるハイレベルコードを含むファイルを含む。
【０１６８】
上記の記載は主にソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサを参照してきたが、一部の実施形態は特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のような１つ以上の集積回路によって実行されてもよい。一部の実施形態では、このような集積回路が回路自体に格納された命令を実行する。さらに、一部の実施形態はプログラマブル論理装置（ＰＬＤ）、ＲＯＭ、ＲＡＭ装置に格納されたソフトウェアを実行する。
【０１６９】
本明細書及び本願の任意の請求項で用いられる場合に、「コンピュータ」、「サーバ」、「プロセッサ」及び「メモリ」という用語はすべて電子装置または他の技術的な装置を参照する。これらの用語は人又は人のグループを除く。本明細書のために、表示又は表示するという用語は電子装置に表示することを意味する。本明細書及び本願の任意の請求項で用いられる場合に、「コンピュータで読み取り可能な媒体」、「コンピュータで読み取り可能なメディア」及び「機械で読み取り可能な媒体」という用語は、コンピュータで読み取り可能な形式で情報を格納する有形で物理的な物体に限定される。これらの用語は無線信号、有線ダウンロード信号及び他の任意の一時的な信号を含まない。
【０１７０】
本発明は数多くの個別の詳細を参照しつつ記載されてきたが、本発明の精神を逸脱せずに本発明が他の個別の形式に具現化されうることを当業者は認識するだろう。さらに、（図９、図１４、図１７、図２５及び図２６を含む）複数の図面は処理を概念的に説明する。これらの処理の個別の動作は、示され記載された正確な順序で実行されなくてもよい。個別の動作は１つの連続した一連の動作で実行されなくてもよいし、様々な個別の動作が様々な実施形態で実行されてもよい。さらに、処理はいくつかの部分処理を用いて実行されてもよいし、より大きなマクロ処理の一部として実行されてもよい。よって、本発明は上述の例示の詳細によって限定されず、添付の特許請求の範囲によって規定されることを当業者は理解するだろう。
【０１７１】
ある実施形態では、１つ以上の処理部が実行するためのコンピュータプログラムを格納する、コンピュータで読み取り可能な記憶媒体であって、前記コンピュータプログラムは、文書のページ内のプリミティブエリアの選択を識別するために、前記ページ内のプリミティブエリアの順序リストを受信するための命令セットと、前記ページ内の位置を特定する選択点を受信するための命令セットと、前記選択点により特定される前記位置に最も近いプリミティブエリアを識別するための命令セットと、前記プリミティブエリアの前記順序リスト内の前記最も近いプリミティブエリアの位置に基づいて選択インデックスを割り当てるための命令セットとを含むことを特徴とする記憶媒体が提供される。
【０１７２】
別の実施形態では、前記選択点は第１選択点であり、前記識別された選択インデックスは第１選択インデックスであり、前記最初の選択点に最も近い前記識別されたプリミティブエリアは第１プリミティブエリアであり、前記コンピュータプログラムは、前記ページ内の第２位置を特定する第２選択点を受信するための命令セットと、前記第２選択点に最も近い第２プリミティブエリアを識別するための命令セットと、前記プリミティブエリアの前記順序リスト内の前記第２プリミティブエリアの前記位置に基づいて第２選択インデックスを割り当てるための命令セットとを含む。
【０１７３】
別の実施形態では、前記コンピュータで読み取り可能な記憶媒体は、前記第１選択インデックスで始まり前記第２選択インデックスで終わるプリミティブエリアの選択を規定するための命令セットをさらに含む。
【０１７４】
別の実施形態では、前記選択点に最も近いプリミティブエリアを識別するための命令セットは、プリミティブエリアの集合から前記選択点への変位値を比較するための命令セットを含む。
【０１７５】
別の実施形態では、前記選択点に最も近いプリミティブエリアを識別するための命令セットは、比較基準の集合に従ってプリミティブエリアの集合を比較するための命令セットを含み、前記選択点に最も近いプリミティブエリアを識別するために優先度が高い比較基準を使用できない場合に優先度が低い比較基準が使用される。
【０１７６】
別の実施形態では、前記選択点に最も近いプリミティブエリアは読み取りフローに基づいて決定される。
【０１７７】
別の実施形態では、前記最も近いプリミティブエリアの位置に基づいて選択インデックスを割り当てるための命令セットは、前記最も近いプリミティブエリア内の要素に関連するインデックスを識別するための命令セットを含む。
【０１７８】
別の実施形態では、前記最も近いプリミティブエリア内の前記要素は前記プリミティブエリア内の文字である。
【０１７９】
別の実施形態では、前記要素は段落であり、前記インデックスは前記段落に関連する最後のインデックスである。
【０１８０】
別の実施形態では、文書コンテンツのプリミティブ要素の配列を受信する工程であって、前記プリミティブ要素は複数のプリミティブエリアに構造化されている、工程と、前記ページ内の第１位置を特定する第１選択点を受信する工程と、前記第１選択点によって特定される位置に最も近い第１プリミティブエリア内の第１プリミティブ要素を識別する工程と、前記ページ内の第２位置を特定する第２選択点を受信する工程と、前記第２選択点によって特定される位置に最も近い第２プリミティブエリア内の第２プリミティブ要素を識別する工程であって、前記第１プリミティブエリアと前記第２プリミティブエリアとは互いに異なるプリミティブエリアである、工程と、前記順序リストで前記第１プリミティブ要素と前記第２プリミティブ要素との間にあるすべてのプリミティブ要素を選択する工程とを有する方法が提供される。
【０１８１】
別の実施形態では、前記第１プリミティブエリアはレイアウトエリアであり、前記第１プリミティブ要素は前記レイアウトエリア内の文字グリフである。
【０１８２】
別の実施形態では、前記第１選択点によって特定される位置に最も近い前記第１プリミティブ要素を識別する工程は、前記第１プリミティブエリアの読み取りフローにおいて前記第１選択点に最も近いプリミティブ要素を含む第１プリミティブエリアを識別する工程を含む。
【０１８３】
別の実施形態では、前記第１プリミティブ要素を識別する工程は、プリミティブエリアの集合から前記第１選択点までの変位値を比較する工程を含む。
【０１８４】
別の実施形態では、前記第１プリミティブ要素を識別する工程は、比較基準の集合に従ってプリミティブエリアの集合を比較する工程を含み、前記選択点に最も近いプリミティブエリアを識別するために優先度が高い比較基準を使用できない場合に優先度が低い比較基準が使用される。
【０１８５】
別の実施形態では、前記方法は前記選択されたプリミティブ要素を出力する工程をさらに含む。
【０１８６】
別の実施形態では、１つ以上の処理部で実行されるコンピュータプログラムを格納する、コンピュータで読み取り可能な記憶媒体であって、前記コンピュータプログラムは、プリミティブエリアの配列を受信するための命令セットであって、前記プリミティブエリアのそれぞれは少なくとも１つのプリミティブ要素を含む、命令セットと、前記ページ内の第１位置を特定する第１選択点を受信するための命令セットと、前記第１選択点によって特定される位置に最も近い第１プリミティブ要素を識別するための命令セットと、前記ページ内の第２位置を特定する第２選択点を受信するための命令セットと、前記第２選択点によって特定される位置に最も近い第２プリミティブ要素を識別するための命令セットであって、前記第１プリミティブエリアと前記第２プリミティブエリアとは互いに異なるプリミティブエリアである、ための命令セットと、前記順序リストで前記第１プリミティブ要素と前記第２プリミティブ要素との間にあるすべてのプリミティブ要素を識別するための命令セットとを有することを特徴とする記憶媒体が提供される。
【０１８７】
別の実施形態では、前記第１プリミティブエリアはレイアウトエリアであり、前記第１プリミティブ要素は前記レイアウトエリア内の文字グリフである。
【０１８８】
別の実施形態では、前記第１選択点によって特定される位置に最も近い前記第１プリミティブ要素を識別するための命令セットは、前記第１プリミティブエリアの読み取りフローにおいて前記第１選択点に最も近いプリミティブ要素を含む第１プリミティブエリアを識別するための命令セットを含む。
【０１８９】
別の実施形態では、前記第１プリミティブ要素を識別するための命令セットは、プリミティブエリアの集合から前記第１選択点までの変位値を比較するための命令セットを含む。
【０１９０】
別の実施形態では、前記第１プリミティブ要素を識別するための命令セットは、比較基準の集合に従ってプリミティブエリアの集合を比較するための命令セットを含み、前記選択点に最も近いプリミティブエリアを識別するために優先度が高い比較基準を使用できない場合に優先度が低い比較基準が使用される。
【０１９１】
別の実施形態では、前記コンピュータで読み取り可能な記憶媒体は前記選択されたプリミティブ要素を出力するための命令セットをさらに含む。
【図１】
0005789525.tif 000002
【図２】
0005789525.tif 000003
【図３】
0005789525.tif 000004
【図４】
0005789525.tif 000005
【図５】
0005789525.tif 000006
【図６】
0005789525.tif 000007
【図７】
0005789525.tif 000008
【図８】
0005789525.tif 000009
【図９】
0005789525.tif 000010
【図１０】
0005789525.tif 000011
【図１１】
0005789525.tif 000012
【図１２】
0005789525.tif 000013
【図１３】
0005789525.tif 000014
【図１４】
0005789525.tif 000015
【図１５】
0005789525.tif 000016
【図１６】
0005789525.tif 000017
【図１７】
0005789525.tif 000018
【図１８】
0005789525.tif 000019
【図１９】
0005789525.tif 000020
【図２０】
0005789525.tif 000021
【図２１】
0005789525.tif 000022
【図２２】
0005789525.tif 000023
【図２３】
0005789525.tif 000024
【図２４】
0005789525.tif 000025
【図２５】
0005789525.tif 000026
【図２６】
0005789525.tif 000027
【図２７】
0005789525.tif 000028
【図２８】
0005789525.tif 000029
【図２９】
0005789525.tif 000030