(57)【要約】【課題】電子インクとインターフェースをとることを提供する。【解決手段】インクは、アプリケーションによる後の取出しを可能にするデータ構造の中に記憶される。インクはストローク情報を含み、プロパティ情報を含むことが可能である。様々なプログラミングインターフェースを介して、メソッドや、プロパティの設定あるいは取り出しによってインクと対話することができる。インクオブジェクトと併せて他のオブジェクトおよびコレクションも使用することができる。【選択図】図２
2010020795.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングシステムにおいて電子インクの情報を交換する方法であって、
インクオブジェクトを生成するステップと、
複数のストロークを含む前記インクオブジェクト内にキャプチャされたインク情報を記憶するステップと、
第１のレコグナイザで前記複数のストローク内の第１のストロークを認識し、第２のレコグナイザで前記複数のストローク内の第２のストロークを認識するステップと、
前記認識するステップの認識結果を出力するステップと
を含むことを特徴とする方法。
【請求項２】
前記インクオブジェクトにインクメソッドを適用するステップをさらに含み、前記インクメソッドは、前記インクオブジェクトを複製することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記インクオブジェクトにインクメソッドを適用するステップをさらに含み、前記インクメソッドは、
前記インクオブジェクトの選択された領域内の選択されたストロークの存在を判定するための要求を受け取ることと、
前記判定に基づいて、前記インクオブジェクトの選択された領域内の選択されたストロークの前記存在についての情報を出力することと
を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記インクオブジェクトにインクメソッドを適用するステップをさらに含み、前記インクメソッドは、前記インクオブジェクト内の前記ストロークを包含する境界ボックスを識別することを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記インクオブジェクトにインクメソッドを適用するステップをさらに含み、前記インクメソッドは、
インク空間内のポイントを識別する入力を受け取ることと、
前記識別された入力ポイントに最も近接する前記インクオブジェクト内のポイントを決定することと、
前記インクオブジェクト内の前記決定されたポイントを示すデータを出力することと
を含むことを特徴とする請求項１に方法。
【請求項６】
前記インクオブジェクトにインクメソッドを適用するステップをさらに含み、前記インクメソッドは、
前記インクオブジェクトから選択されたストロークを抽出することと、
前記抽出されたストロークを別のインクオブジェクトに入れることと
を含むことを特徴とする請求項１に方法。
【請求項７】
前記インクオブジェクトにインクメソッドを適用するステップをさらに含み、前記インクメソッドは、前記キャプチャされたインク情報がクリップボードからであるかどうかを判定することを含むことを特徴とする請求項１に記載の方法。
【請求項８】
ソフトウェアアプリケーションから前記インクオブジェクトにおける要求を受け取るステップと、
前記要求を処理するステップと、
前記要求が正常に処理されたことの指示を戻すステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記要求は、前記インクオブジェクトの中の長方形にストロークを追加する要求を含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記要求は、前記インクオブジェクトから少なくとも１つのストロークを削除する要求を含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記要求は、前記インクオブジェクトの中のストロークをクリップして、提供された長方形に移す要求を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
ソフトウェアアプリケーションから、前記第１のレコグナイザにおける前記第１のストロークを認識する要求、及び、前記第２のレコグナイザにおける前記第２のストロークを認識する要求のうちの１つを受け取るステップとをさらに含み、
前記認識するステップは、前記要求を受け取るステップに応答することを特徴とする請求項１に記載の方法。
【請求項１３】
前記第１のレコグナイザおよび前記第２のレコグナイザは、レコグナイザオブジェクトおよび認識コンテキストオブジェクトのうちの少なくとも１つを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記複数のストロークの少なくとも一部は、ストロークオブジェクト内に含まれ、
前記ストロークオブジェクトに要求を発行するステップと、
前記要求を処理するステップと、
前記要求の結果を戻すステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１５】
前記要求は、前記ストロークオブジェクト内の１つ以上のストロークを変更する要求であることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記要求は、前記インクオブジェクト内の１つ以上のストロークに関する情報を獲得する要求であることを特徴とする請求項１４に記載の方法。
【請求項１７】
ストロークコンテナを生成するステップと、
ストローク情報を受け取るステップと、
前記ストローク情報からストロークを生成するステップと、
前記ストロークコンテナの中に前記ストロークを記憶するステップと
をさらに含み、
前記インクオブジェクト内にキャプチャされたインク情報を記憶する前記ステップは、前記ストロークコンテナ内の前記記憶されたストロークを前記インクオブジェクトに入力するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１８】
前記複数のストロークの少なくとも一部は、ストロークオブジェクト内に含まれ、
ストロークコレクションの中に前記ストロークオブジェクトを記憶するステップと、
前記ストロークコレクション中の少なくとも１つのストロークオブジェクトに対してオペレーションを行うステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１９】
前記ストロークコレクションからストロークオブジェクトを削除するステップをさらに含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記ストロークコレクション中の少なくとも１つのストロークオブジェクトを変更するステップをさらに含むことを特徴とする請求項１８に記載の方法。
【請求項２１】
少なくとも１つのストロークオブジェクトに関するプログラムを要求するストローク情報を戻すステップをさらに含むことを特徴とする請求項１８に記載の方法。
【請求項２２】
前記第１のレコグナイザおよび前記第２のレコグナイザのうちの１つに、情報の要求を送るステップと、
前記第１のレコグナイザまたは前記第２のレコグナイザから、対応する前記第１のレコグナイザまたは前記第２のレコグナイザのうちの１つに関する情報を受け取るステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項２３】
前記対応する第１のレコグナイザまたは第２のレコグナイザのうちの１つに関する前記情報は、前記対応する第１のレコグナイザまたは第２のレコグナイザの能力を示す情報を含むことを特徴とする請求項２２に記載の方法。
【請求項２４】
前記対応する第１のレコグナイザまたは第２のレコグナイザのうちの１つに関する前記情報は、前記対応する第１のレコグナイザまたは第２のレコグナイザによって認識された言語を示すことを特徴とする請求項２２に記載の方法。
【請求項２５】
前記対応する第１のレコグナイザまたは第２のレコグナイザのうちの１つに関する前記情報は、前記対応する第１のレコグナイザまたは第２のレコグナイザの名前を含むことを特徴とする請求項２２に記載の方法。
【請求項２６】
前記対応する第１のレコグナイザまたは第２のレコグナイザのうちの１つに関する前記情報は、前記対応する第１のレコグナイザまたは第２のレコグナイザによってサポートされたプロパティの指示を含むことを特徴とする請求項２２に記載の方法。
【請求項２７】
前記第１のレコグナイザおよび前記第２のレコグナイザは、レコグナイザコレクションの一部として識別されているレコグナイザオブジェクトに関連することを特徴とする請求項２２に記載の方法。
【請求項２８】
レコグナイザコンテキストオブジェクトに情報の要求を送るステップと、
どのようにインクが認識されるべきかについての情報を示す前記レコグナイザコンテキストオブジェクトから応答を受け取るステップと
さらに含み、
前記認識するステップは、前記受け取るステップに基づくことを特徴とする請求項１に記載の方法。
【請求項２９】
どのようにインクが認識されるべきかを示す前記情報は、前記インクの認識がバックグラウンドオペレーション中に行われるかどうかを示す情報を含むことを特徴とする請求項２８に記載の方法。
【請求項３０】
どのようにインクが認識されるべきかを示す前記情報は、認識結果が代替の結果とともに戻されるべきかどうかを含むことを特徴とする請求項２８に記載の方法。
【請求項３１】
どのようにインクが認識されるべきかを示す前記情報は、前記レコグナイザコンテキストオブジェクト中のすべての情報を含むことを特徴とする請求項２８に記載の方法。
【請求項３２】
前記レコグナイザコンテキストオブジェクトに、インクのバックグラウンド認識を停止するように要求するステップをさらに含むことを特徴とする請求項２８に記載の方法。
【請求項３３】
前記レコグナイザコンテキストオブジェクトからの前記応答は、インクストロークの認識結果を含むことを特徴とする請求項２８に記載の方法。
【請求項３４】
前記認識結果は、代替の認識結果を含むことを特徴とする請求項３３に記載の方法。
【請求項３５】
前記第１のレコグナイザおよび前記第２のレコグナイザのうちの少なくとも１つに関連する認識結果オブジェクトに、情報を送るステップと、
前記送るステップに応答してオペレーションを行うステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３６】
前記認識結果オブジェクトに送信された前記情報は、前記第１のレコグナイザおよび前記第２のレコグナイザのうちの１つによって認識プロセスの結果を変更する要求を含むことを特徴とする請求項３５に記載の方法。
【請求項３７】
前記認識結果オブジェクトに送信された前記情報は、認識結果をストロークに割り当てる要求を含むことを特徴とする請求項３５に記載の方法。
【請求項３８】
インクストロークの前記認識に関連する前記インクストロークを戻すステップをさらに含むことを特徴とする請求項３５に記載の方法。
【請求項３９】
前記オペレーションは、認識結果を戻すことをさらに含むことを特徴とする請求項３５に記載の方法。
【請求項４０】
前記オペレーションは、少なくとも１つの認識結果に関連した少なくとも１つのコンフィデンスレベルを戻すことを含むことを特徴とする請求項３５に記載の方法。
【請求項４１】
前記オペレーションは、少なくとも１つの代替の認識結果を戻すことを含むことを特徴とする請求項３５に記載の方法。
【請求項４２】
前記オペレーションは、少なくとも１つのインクストロークについての認識結果を戻すことを含むことを特徴とする請求項３５に記載の方法。
【請求項４３】
前記第１のストロークおよび前記第２のストロークは、少なくとも１つのレコグナイザに関連し、前記少なくとも１つのレコグナイザは、前記第１のストロークおよび前記第２のストロークに対して異なることを特徴とする請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の態様は、一般に、ソフトウェアアプリケーション間および／またはデータ構造間のインターフェースを対象とする。より詳細には、本発明の態様は、電子インクと情報を交換するためにインターフェースをとる。
【背景技術】
【０００２】
通常のコンピュータシステム、特にＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）などのグラフィカルユーザインターフェース（ＧＵＩ）を使用するコンピュータシステムは、テキストを入力するためのキーボード、並びにユーザインターフェースを駆動するための１つ以上のボタンを備えたマウスなどのポインティングデバイスなどの１つ以上の別個の入力デバイスからユーザ入力を受け入れるために最適化されている。ユビキタス（ubiquitous）キーボード−マウスインターフェースにより、ドキュメント、スプレッドシート、データベースフィールド、描画、写真等の高速の作成および変更が可能になる。ただし、非コンピュータの（すなわち、標準の）ペンと紙と比べると、キーボード−マウスインターフェースによって提供される柔軟性に相当な隔たりが存在する。標準のペンと紙では、ユーザは、ドキュメントを編集し、余白に注を書き込み、絵やその他の形状を描くなどする。一部の場合、ユーザは、キーボード−マウスインターフェースの制約を離れて自由に注を書き込むことができるため、スクリーン上でドキュメントを検討するよりもペンを使用してドキュメントにマークを付けるのを選好する可能性がある。
【０００３】
一部のコンピュータシステムは、ユーザが、スクリーン上で描画するのを可能にする。例えば、Ｍｉｃｒｏｓｏｆｔ  ＲＥＡＤＥＲ（登録商標）アプリケーションは、電子インク（本明細書で「インク」とも呼ぶ）をドキュメントに加えるのを可能にする。システムは、インクを記憶し、要求されたときにそのインクをユーザに提供する。他のアプリケーション（例えば、当技術分野で周知の描画アプリケーションが、Ｐａｌｍ  ３．ｘ（登録商標）オペレーティングシステム、Ｐａｌｍ  ４．ｘ（登録商標）オペレーティングシステム、およびＰｏｃｋｅｔＰＣオペレーティングシステムに関連している）は、描画のキャプチャおよび記憶を可能にする。また、Ｃｏｒｅｌ  Ｄｒａｗ（登録商標）などの様々な描画アプリケーション、およびＰｈｏｔｏｓｈｏｐ（登録商標）などの写真−編集アプリケーションを、Ｗａｃｏｍ（登録商標）タブレット製品などのスタイラスベースの入力製品とともに使用することができる。それらの描画は、描画を構成するのに使用されるインクストロークに関連する他のプロパティを含む。例えば、ラインの幅およびカラーをインクとともに記憶することができる。以上のシステムの１つの目標は、紙に印加された物理的インクの見た目および感じを再現することである。しかし、紙の上の物理的インクは、座標および結合するラインセグメントの電子的集合によってキャプチャされない相当な量の情報を有する可能性がある。この情報の一部には、使用されたペン先の厚さ（物理的インクの幅で見られる）、ペン先の形状、インクが付着させられた速度、圧力、角、および使用されたペン先のタイプ等が含まれる可能性がある。
【０００４】
別の問題が、電子インクで生じている。この問題は、電子インクで書き込みが行われるアプリケーションの一部であると見なされている。これにより、他のアプリケーションまたは他の環境に電子インクの豊かさを提供するのが基本的にできないことになる。テキストは、様々なアプリケーションの間で移動することができる（例えば、クリップボードの使用を介して）が、インクは、インクと対話できるようにする能力を有することができない。例えば、「８」のイメージをドキュメントにペーストして、次に、インクを太字にすることが不可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上述したような問題に鑑みてなされたものであり、その目的とするところは、電子インクとインターフェースをとることを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の態様は、プロパティと対話するために、方法（method）を呼び出し、かつ／または電子インクに関するイベントを受け取り、これによって、従来のデバイスおよびシステムについて特定された問題の１つ以上を解決するためのフレキシブルで効率的なインターフェースを提供する。本発明の一部の態様は、記憶されたインクの内容を改良することに関する。他の態様は、記憶されたインクを変更することに関する。さらなる態様は、インクデータを一緒にレンダリングできるようにするのを調整することに関する。
【０００７】
本発明の以上、およびその他の特徴および態様が、図面の以下の詳細な説明を考慮することで明白となる。
【０００８】
本発明の以上の概要、並びに図面の以下の詳細な説明は、請求する本発明に関して例示として、限定としてではなく含める添付の図面と併せて読むことで、よりよく理解される。
【図面の簡単な説明】
【０００９】
【図１】本発明の様々な態様を実施するのに使用することができる汎用デジタルコンピューティング環境を示す概略図である。
【図２】本発明の様々な態様に従って使用することができるタブレットコンピュータおよびスタイラスを示す平面図である。
【図３】本発明によるポイントおよびプロパティを有するインクの１つ以上のストロークの例を示す図である。
【図４】本発明の実施形態によるインクを記憶するための様々なデータ構造を示し、また関係のある場合、インクに関連するプロパティを示す図である。
【図５】本発明の実施形態によるインクを記憶するための様々なデータ構造を示し、また関係のある場合、インクに関連するプロパティを示す図である。
【図６】本発明の実施形態によるインクを記憶するための様々なデータ構造を示し、また関係のある場合、インクに関連するプロパティを示す図である。
【図７】本発明の実施形態によるインクを記憶するための様々なデータ構造を示し、また関係のある場合、インクに関連するプロパティを示す図である。
【図８】本発明の実施形態によるインク空間の例を示す図である。
【図９】本発明の実施形態によるロードメソッドおよび保存メソッド（load and save methods）の例を示す図である。
【図１０】本発明の実施形態によるストロークコンテナ動作の例を示す図である。
【図１１】本発明の実施形態によるメソッド（methods）を備えたインクオブジェクトの例を示す図である。
【図１２】本発明の実施形態によるプロパティを備えたインクオブジェクトの例を示す図である。
【図１３】本発明の実施形態によるクリップボード動作の例を示す図である。
【図１４】本発明の実施形態によるインクオブジェクトイベントの例を示す図である。
【図１５】本発明の実施形態によるストロークオブジェクトの例を示す図である。
【図１６】本発明の実施形態によるプロパティを備えたストロークオブジェクトの例を示す図である。
【図１７】本発明の実施形態によるストロークオブジェクトコレクションの例を示す図である。
【図１８】本発明の実施形態によるタブレットオブジェクトの例を示す図である。
【図１９】本発明の実施形態によるタブレットコレクションの例を示す図である。
【図２０】本発明の実施形態によるレコグナイザオブジェクトの例を示す図である。
【図２１】本発明の実施形態によるレコグナイザコレクションの例を示す図である。
【図２２】本発明の実施形態によるレコグナイザコンテキストの例を示す図である。
【図２３】本発明の実施形態による描画属性オブジェクトの例を示す図である。
【図２４】本発明の実施形態による認識結果オブジェクトの例を示す図である。
【図２５】本発明の実施形態によるインクオブジェクトの様々なサンプルおよび関連するレコグナイザの例を示す図である。
【発明を実施するための形態】
【００１０】
以下のセクションは、読者を助けるようにサブセクションに分けている。サブセクションには、「インクの特性およびストレージ」、「用語」、「汎用コンピュータおよび関連ハードウェア」、「インクのストロークの例」、「プロパティ、メソッド、テーブル、およびインデックス」、「オブジェクトおよびコレクション」、並びにインクとインターフェースをとることの概要が含まれる。
【００１１】
インクの特性およびストレージ
本発明の態様は、インクをアクセス可能なデータ形態にすることに関する。態様は、インク、およびインクの関連部分のためのアプリケーションプログラミングインターフェースを提供することを含む。本明細書で使用するインクとは、電子インクを指す。インクとは、各ストロークが一続きのポイントから成る一続きのストロークを指す。これらのポイントは、デカルト座標（Ｘ，Ｙ）、極座標（ｒ，Θ）、および当技術分野で周知の他の技術を含め、様々な周知の技術を使用して表現することができる。
【００１２】
インクペンを使用するユーザに知られる通り、物理的インク（インク筒を備えたペンを使用して紙の上に付着させられる種類の）は、ラインセグメントで結合された一連の座標より多くの情報を伝える可能性がある。例えば、物理的インクは、ペンの圧力（インクの厚さで）、ペンの角（線または曲線のセグメントの形状、および別個のポイントの周りにおけるインクの挙動で）、並びにペンの先端の速度（直線である度合い、ラインの幅、線または曲線にわたるラインの幅の変化で）を反映することが可能である。
【００１３】
物理的インクの見た目および感じを提供するため、電子インクを、ポイントを有する１組のストロークとして記憶することができる。あるいは、インクを、より豊かなデータタイプをさらに作成するのに役立つ様々なプロパティ、メソッド、およびイベントとともに記憶するか、またはこれらに関連付けることができる。このメタデータはポイントに代えてではなくポイントに加えて存在する。インクは、一般的なプロパティ、メソッド、またはイベントに関連付けることも、あるいは、各インクデータ構造が、独自のプロパティ、メッセージ、またはイベント（およびその任意の組合せ）を有することも可能である。
【００１４】
インクのプロパティには、例えば、カラー、幅、スタイラスとタブレットの間の圧力、スタイラスとタブレットの間の角、およびにペン形状等が含まれることが可能である。多くのアプリケーションに関して以上のプロパティで十分であるが、本発明の実施形態は、アプリケーションによって生成されたカスタムプロパティ（および他のデータ）の広汎なストレージを可能にする。すべてのストロークおよび値を超過の情報とともに直接に記憶することができる。ただし、代替の実施形態は、可能であるとき、または実行可能であるとき、超過の情報を除外する考慮を反映する。
【００１５】
インク、およびインクの中のストロークを定義するのに使用されるプロパティまたはメソッドは、様々な範囲を有することが可能である。例えば、一部のプロパティは、インクオブジェクトにおけるすべてのインクストロークに当てはまることが可能である（例えば、ペン先の形状）。他のプロパティは、特定のポイントにのみ関連することが可能である（例えば、スタイラスがストロークを開始するポイント）。他のプロパティは、特定のストロークに関連することが可能であり、一方、別のプロパティが、ハードウェアによって報告された情報（例えば、ペンの座標、圧力、角、報告された座標の間の時間間隔等）のパケットに関することが可能である。要するに、プロパティは、様々なレベルの範囲を有する。
【００１６】
インクは、オブジェクトと呼ぶことができる。このインクオブジェクトは、１つ以上のストロークオブジェクトを含め、他のオブジェクトを含むことが可能である。さらに、ストロークオブジェクトは、それ自体を参照して、シリーズ中の各インクオブジェクトの部分を変更するのではなく、ストロークのコレクションを直接に変更する、または操作することができるようにすることができる。
【００１７】
プロパティまたはメソッドを効率的に記憶するため、一部のプロパティまたはメソッドを明示的に指定し、他方、別のプロパティまたはメソッドを黙示的にに指定することができる。インクオブジェクトは、Ｘ座標値およびＹ座標値だけを有することが可能である。別の例では、インクオブジェクトは、インクオブジェクト全体に影響を与えるプロパティを有する可能性があるが、このプロパティは、インクオブジェクトにおいて指定される。第３の例で、一部のストロークが、第１のセットのプロパティを有し、また他のストロークが、第２のセットのプロパティを有することが可能である。これらのプロパティは、インクオブジェクトの始まりに初期に定義することができ、また、個々のストロークが、必要に応じて前に定義されたプロパティを参照することが可能である。プロパティを定義するこの手法を使用すると、プロパティを後に参照することにより、プロパティを記憶する際により高い効率が促進される。これは、プロパティの数が増加し、プロパティを参照するインクストロークの数が増加するのにつれてインクオブジェクトがより大きくなると、より明白となる。
【００１８】
用語
インク−プロパティを備えたシーケンスまたはセットのストローク。シーケンスのストロークは、順序付けされた形態のストロークを含むことが可能である。このシーケンスは、キャプチャされた時刻、またはページのどこにストロークが現れるかにより、順序付けされることが可能である。他の順序も可能である。セットのストロークは、シーケンスのストローク、または順序付けされていないストローク、またはシーケンスのストロークと順序付けされていないストロークの任意の組合せを含むことが可能である。インクは、追加のプロパティ、メソッド、およびトリガイベント等を含むように拡張することができる。インクは、以上のイベントの少なくともいくつかと組み合わせられるとき、インクオブジェクトと呼ぶことができる。
【００１９】
ストリーム−データ構造を含むプロパティを含むことも含まないことも可能であるシーケンスのストローク。
【００２０】
インクオブジェクト−プロパティ、メソッド、および／またはイベントを伴って、または伴わないでストリームを記憶するデータ構造。
【００２１】
ストローク−シーケンスまたはセットのキャプチャされたポイント。例えば、レンダリングされるとき、ポイントのシーケンスをラインと結合することが可能である。あるいは、ストロークをポイント、および次のポイントの方向のベクトルとして表現することができる。要するに、ストロークは、ポイントの基礎にある表現および／または何がポイントを結合するかに関わらず、インクに関連するポイントまたはセグメントのあらゆる表現を包含するものとする。
【００２２】
ポイント−空間内の場所を定義する情報。例えば、ポイントは、キャプチャを行う空間（例えば、デジタイザ上のポイント）、仮想インク空間（キャプチャされたインクが置かれる空間内の座標）、および／または表示空間（表示デバイスのポイントまたはピクセル）との関係で定義することができる。
【００２３】
仮想インク空間またはインク空間領域−すべての現存のインクストロークが関係するフレームワーク。このフレームワークは、２次元または３次元の形状を含むことが可能である。一例では、フレームワークは、単位サイズの正方形を含むことが可能である。別の例では、フレームワークは、定義された領域を含むことが可能である。一部のインクストロークは、フレームワークの外に延びることが可能であるが、フレームワークは、プリンタまたはディスプレイに合わせてサイズを設定することを含め、レンダリングの目的で使用することができる。一態様では、フレームワークは、リンクストロークを空間的に定義するのに合わせることができる基準である。
【００２４】
グローバルインクプロパティ−グローバルインクプロパティは、別の定義がされない限り、インクオブジェクト中のストロークまたはセットのストロークに適用されるプロパティである。例えば、グローバルインクカラーが、ブルーであるのが可能である。すべてのストロークをブルーに設定することにより、キャプチャされたストロークのカラーがブルーとなる。
【００２５】
ローカルインクプロパティ−ローカルインクプロパティは、特定のストローク（またはデータポイント）に適用されるプロパティである。例えば、グローバルインクプロパティは、ブルーであるが、特定のストロークをレッドに設定することができる。一部のローカルインクプロパティは、一部のケースで、グローバルプロパティとして解釈することができる。というのは、それらのローカルインクプロパティが、インクオブジェクトの中で後に遭遇するストロークに影響を与えるからである。プロパティには、グローバルまたはローカルというラベルを付けることも、付けないことも可能であることに留意されたい。一部の例では、生成されたデータ構造が、プロパティの範囲を定義する。
【００２６】
レンダ−スクリーン上であるか印刷されるか、または別のデータ形式に出力されるかに関わらず、どのようにグラフィックス（および／またはインク）が表示されるかを決定するプロセス。
【００２７】
汎用コンピュータ
図１は、本発明の様々な態様を実施するのに使用することができる例としての従来の汎用デジタルコンピューティング環境を示す概略図である。図１で、コンピュータ１００が、処理ユニット１１０、システムメモリ１２０、およびシステムメモリから処理ユニット１１０までを含め、様々なシステム構成要素を結合するシステムバス１３０を含む。システムバス１３０は、様々なバスアーキテクチャの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造の任意のものであることが可能である。システムメモリ１２０は、読出し専用メモリ（ＲＯＭ）１４０およびランダムアクセスメモリ（ＲＡＭ）１５０を含む。
【００２８】
始動中など、コンピュータ１００内部の要素間で情報を転送するのを助ける基本ルーチンを含む基本入力／出力システム１６０（ＢＩＯＳ）が、ＲＯＭ１４０の中に記憶されている。また、コンピュータ１００は、ハードディスク（図示せず）に対して読出しおよび書込みを行うためのハードディスクドライブ１７０、取外し可能な磁気ディスク１９０に対して読出しおよび書込みを行うための磁気ディスクドライブ１８０、並びにＣＤ−ＲＯＭまたはその他の光媒体などの取外し可能な光ディスク１９９に対して読出しおよび書込みを行うための光ディスクドライブ１９１も含む。ハードディスクドライブ１７０、磁気ディスクドライブ１８０、および光ディスクドライブ１９１は、それぞれ、ハードディスクドライブインターフェース１９２、磁気ディスクドライブインターフェース１９３、および光ディスクドライブインターフェース１９４でシステムバス１３０に接続される。以上のドライブおよび関連するコンピュータ可読媒体により、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性ストレージが、パーソナルコンピュータ１００に提供される。磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）などのコンピュータがアクセスすることができるデータを記憶することができる他のタイプのコンピュータ可読媒体も、例としての動作環境で使用できることが、当業者には理解されよう。
【００２９】
オペレーティングシステム１９５、１つ以上のアプリケーションプログラム１９６、他のプログラムモジュール１９７、およびプログラムデータ１９８を含むいくつかのプログラムモジュールをハードディスクドライブ１７０、磁気ディスク１９０、光ディスク１９９、ＲＯＭ１４０、またはＲＡＭ１５０に記憶することができる。ユーザは、キーボード１０１やポインティングデバイス１０２などの入力デバイスを介してコンピュータ１００にコマンドおよび情報を入力することができる。その他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ等が含まれることが可能である。以上の入力デバイスおよび他の入力デバイスは、しばしば、システムバスに結合されたシリアルポートインターフェース１０６を介して処理ユニット１１０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースで接続してもよい。さらに、以上のデバイスを、適切なインターフェース（図示せず）でシステムバス１３０に直接に結合してもよい。また、モニタ１０７または他のタイプの表示デバイスも、ビデオアダプタ１０８などのインターフェースを介してシステムバス１３０に接続される。モニタに加え、パーソナルコンピュータは、通常、スピーカやプリンタなどの他の周辺出力デバイス（図示せず）を含む。好ましい実施形態では、フリーハンドの入力をデジタル式にキャプチャするため、ペンデジタイザ１６５および付随するペンまたはスタイラス１６６が提供される。ペンデジタイザ１６５とシリアルポートインターフェース１０６の間の直接接続を示しているが、実際には，当技術分野で周知の通り、ペンデジタイザ１６５を処理ユニット１１０に直接に、パラレルポートまたは他のインターフェースに、またシステムバス１３０に結合することができる。さらに、デジタイザ１６５をモニタ１０７から離して示しているが、デジタイザ１６５の使用可能な入力エリアは、モニタ１０７の表示エリアと同じ広がりを有することが可能である。さらに、デジタイザ１６５は、モニタ１０７に統合することができ、あるいはモニタ１０７にオーバーレイを行う、または別の仕方で付加を行う別個のデバイスとして存在することが可能である。
【００３０】
コンピュータ１００は、遠隔コンピュータ１０９のような１つ以上の遠隔コンピュータへの論理接続を使用するネットワーク化された環境で動作することができる。遠隔コンピュータ１０９は、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードであることが可能であり、通常、コンピュータ１００に関連して前述した要素の多く、またはすべてを含むが、図１では、メモリ記憶デバイス１１１だけを示している。図１に描いた論理接続は、ローカルエリアネットワーク（ＬＡＮ）１１２およびワイドエリアネットワーク（ＷＡＮ）１１３を含む。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。
【００３１】
ＬＡＮネットワーキング環境で使用されるとき、コンピュータ１００は、ネットワークインターフェースまたはネットワークアダプタ１１４を介してローカルネットワーク１１２に接続される。ＷＡＮネットワーキング環境で使用されるとき、パーソナルコンピュータ１００は、通常、インターネットなどのワイドエリアネットワーク１１３を介して通信を確立するためのモデム１１５または他の手段を含む。内部にあることも、外部にあることも可能なモデム１１５は、シリアルポートインターフェース１０６を介してシステムバス１３０に接続される。ネットワーク化された環境では、パーソナルコンピュータ１００に関連して描いたプログラムモジュール、またはプログラムモジュールの部分が、遠隔のメモリ記憶デバイスの中に記憶されていることが可能である。
【００３２】
図示したネットワーク接続は、例示するものであり、コンピュータ間で通信リンクを確立するための他の技術も使用できることを理解されたい。ＴＣＰ／ＩＰ、イーサネット（登録商標）、ＦＴＰ、ＨＴＴＰなどの様々な周知のプロトコルの任意のものの存在が想定され、システムをクライアント−サーバ構成で動作させて、ユーザが、ＷｅｂベースのサーバからＷｅｂページを取り出すことができるようにすることが可能である。様々な従来のＷｅｂブラウザの任意のものを使用して、Ｗｅｂページ上のデータを表示し、操作することができる。
【００３３】
図２は、本発明の様々な態様に従って使用することができる例としてのタブレットＰＣ２０１を示している。図１のシステムにおける特徴、サブシステム、および機能の任意のもの、またはすべてが、図２のコンピュータに含まれることが可能である。タブレットＰＣ２０１は、複数のウインドウ２０３が表示される広い表示面２０２、例えば、デジタイジングフラットパネルディスプレイ、好ましくは、液晶ディスプレイ（ＬＣＤ）スクリーンを含む。スタイラス２０４を使用して、ユーザは、デジタイジング表示面２０２上で選択、ハイライト、および／または書込みを行うことができる。適切なデジタイジング表示面２０２の例には、Ｍｕｔｏｈ（登録商標）のペンデジタイザまたはＷａｃｏｍ（登録商標）のペンデジタイザなどの電磁ペンデジタイザが含まれる。他のタイプのペンデジタイザ、例えば、光学デジタイザも使用することができる。タブレットＰＣ２０１は、データを操作するため、テキストを入力するため、描画を作成するため、かつ／またはスプレッドシート、ワードプロセッシングプログラムなどの従来のコンピュータアプリケーションタスクを実行するためにスタイラス２０４を使用して行われたジェスチャを解釈する。
【００３４】
スタイラス２０４は、選択機能を強化する１つ以上のボタン、または他の機構を備えていることが可能である。一実施形態では、スタイラス２０４は、一方の終端が、書込み部分を構成し、他方の終端が、「イレーザ（eraser）」端を構成して、ディスプレイ上で動かされたとき、消去されるディスプレイの部分を示す「ペンシル」または「ペン」として実装することが可能である。マウス、トラックボールなどの他のタイプの入力デバイスも使用することが可能である。さらに、ユーザ自身の指が、スタイラス２０４となり、タッチ検知ディスプレイ上または近接検知ディスプレイ上で表示されたイメージの部分を選択する、または示すのに使用されることが可能である。したがって、本明細書で使用する「ユーザ入力デバイス」という用語は、広い定義を有し、スタイラス２０４などの周知の入力デバイスに関する多数の変形形態を包含するものとする。領域２０５は、ユーザが、表示面２０２のどこにスタイラス２０４が接触したかを判別することができるようにするフィードバック領域または接触領域を示している。
【００３５】
様々な実施形態では、システムが、インクをキャプチャし、操作し、記憶するのにアプリケーションが使用することができる１組のＣＯＭ（コンポーネントオブジェクトモデル）サービスとしてインクプラットフォームを提供する。１つのサービスは、アプリケーションが、インクの開示する表現を使用してインクの読取りおよび書込みを行うことを可能にする。また、インクプラットフォームは、エクステンシブルマークアップランゲージ（eXtensible Markup Language）のような言語を含むマークアップ言語も含むことが可能である。さらに、システムは、ＤＣＯＭを別の実施形態として使用することができる。マイクロソフト社（Microsoft Corporation）からのＷｉｎ３２プログラミングモデルおよび．Ｎｅｔプログラミングモデルを含め、さらなる実施形態を使用することもできる。
【００３６】
インクのストロークの例
例としてのインクオブジェクトの視覚上の形態を図３に示している。インクオブジェクトのストロークは、ペンダウン（pen-down）アクションが行われたポイント３０１で開始する。ペンダウンアクションは、スタイラス２０４が、表示面２０２に接触すること、マウスボタンのクリック、トラックボールまたはジョイスティック上のボタンの操作等であることが可能である。ユーザが、入力デバイス（スタイラス２０４などの）を制御し、結果のストロークが、ポイント３０２〜３０６をつなぐ。ポイント３１６で、ペンアップ（pen-up）アクションが行われる。ペンアップアクションは、スタイラス２０４を表示面２０４から上げること、マウスボタンのリリースまたは別の操作を行うこと、あるいはトラックボールまたはジョイスティック等の上のボタン（または他のボタン群）の操作であることが可能である。ペンアップアクションおよびペンダウンアクションは、ペンベースまたはスタイラスベースのデジタル化技術で知られている。
【００３７】
ポイント３０１から３０８まで、ストロークの幅は、第１の値を有する。ポイント３０８で、ストロークの幅は、第２の値に変化する。これは、ユーザが、スタイラス２０４の先端と表示面２０２の間の圧力を増加させたため、スタイラス２０４とタブレットの間の角が変化したため、スタイラス２０４が、回転させられ、スタイラス２０４の先端の異なる断面を投写したなどのためであった可能性がある。次にストロークは、第２のストローク幅でポイント３１６まで続く。代替の実施形態では、ユーザが、第１のライン幅でストロークを開始し、ポイント３０８で異なるライン幅を選択してストロークを完了させている。さらなる実施形態では、２つのストロークが、図３に示したインクオブジェクトを形成することが可能である。例えば、第１のストロークが、ポイント３０１〜３０８を含み、また第２のストロークが、ポイント３０８〜３１６を含むことが可能である。
【００３８】
さらなる実施形態では、図３のインクが、４つまたはそれより多くのストロークで表されることが可能である。この場合、ポイント３０１からポイント３０６までの１つ以上のストロークが、第１のストローク幅を有するブルー（グループ３１７で表される）であり、ポイント３０６からポイント３０８までの１つ以上のストロークが、第１のストローク幅を有するグリーン（グループ３１８）であり、ポイント３０８からポイント３０９までの１つ以上のストロークが、第２のストローク幅を有するグリーン（やはりグループ３１８の一部として）であり、またポイント３０９からポイント３１６までの１つ以上のストロークが、第２のストローク幅を有するレッド（グループ３１９）であることが可能である。
【００３９】
次に、インクオブジェクトを記憶する（あるいは伝送または表示等を行う）ことができる。インクオブジェクトは、様々なライン幅および様々なカラーを有する、または一定のライン幅または一定のカラーを有する単一のストロークとして表現することができる。あるいは、インクオブジェクトは、各ストロークが、独自の１組のプロパティを有する、いくつかのデータポイントを有する様々なストロークとして記憶してもよい。第３に、インクオブジェクトは、ポイント間の短いストロークとして記憶することもできる。要するに、インクオブジェクトは、インクを定義する豊富な追加のプロパティを備えた様々な形態の１つ以上のストロークを表すことができる。さらに、インクストロークは、透明、タイエイリアシング、ラスタオペレーションを含むことができる。
【００４０】
プロパティ、メソッド、テーブル、およびインデックス
インクオブジェクトは、様々な他のアイテムを含むことが可能である。例えば、インクオブジェクトは、３つのインクオブジェクト1~3４０１、４０４、および４０７がそれぞれ、プロパティブロック４０２、４０５、および４０８、並びにストローク４０３、４０６、および４０９とともに示されている図４（ａ）〜（ｃ）に示した様々なプロパティを含むことが可能である。各プロパティブロックが異なり、かつ／または各ストロークが、前のストロークに関係していない場合、インクオブジェクトの表現はそれぞれ、可能な最小限のサイズを有することが可能である。ただし、プロパティブロック４０２、４０５、および４０８は、少なくとも１つの仕方で冗長であり、別個の表現が、冗長な情報を含む可能性がある。これらのプロパティブロックは、同じであることも、異なっていることも可能である。各インクオブジェクトに独自のプロパティブロックを提供することにより、インクオブジェクトは、別個に記憶された一般的なプロパティブロックへの参照を含める必要なく、他の場所または他の記憶媒体に容易に移すことができる。
【００４１】
インクオブジェクトは、インクオブジェクト内に記憶されたプロパティ、またはストローク、またはその他の情報を変更することができる関連付けられたメソッドを有することが可能である。メソッドは、インクオブジェクトに関する情報、インクオブジェクト内のストロークに関する情報、またはインクオブジェクトに関するその他の情報を提供することができる。
【００４２】
図５は、インクストロークの代替の表現を示している。この場合、ストローク（５０２、５０４、および５０６）が組み合わされて１つのインクオブジェクトになっている。この場合、５０１の部分は、インクオブジェクトをインクオブジェクトとして識別する識別子である。インクオブジェクトは、ストローク１  ５０２、ストローク２  ５０４、ないしストロークＮ  ５０７を含み、それぞれプロパティブロック１  ５０３、プロパティブロック２、およびプロパティブロックＮ  ５０８が、これらのストロークに関連付けられている。図５の構造は、インクオブジェクト識別子５０１が繰り返されないことで、図４（ａ）〜（ｃ）の構造に優る利点を提供する。これにより、結果のデータ構造において削除されるインクオブジェクト識別子の長さの節約がもたらされる。
【００４３】
インクオブジェクト識別子５０１は、後続のデータ構造をインクオブジェクトとして識別する。また、インクオブジェクト識別子は、インクオブジェクトを記憶するデータ構造を書き込むのに使用されるソフトウェアのバージョンに関するバージョン情報も含むことが可能である。
【００４４】
図６は、データ構造の別の実施形態を示している。インクオブジェクト識別子６０１を有するインクオブジェクト６００が、プロパティテーブル６０３および５つのストローク（６０７、６０９、６１０、６１２、および６１３）を含む。プロパティテーブル６０３（プロパティ識別子またはタグ６０２を有する）は、プロパティブロック（６０４、６０５、および６０６）を含む。また、インクオブジェクト６００は、２つのインデックス（プロパティブロック２  ６０５に対するインデックス６０８、およびプロパティブロック６０４に対するインデックス６１１）も含む。２つのインデックスはそれぞれ、ストローク１  ６０７とストローク２  ６０９の間、およびストローク３  ６１０とストローク４  ６１２の間に位置する。ストローク１  ６０７は、先行するインデックスを有さない。一例では、ストローク１  ６０７は、デフォルトのプロパティブロック（図示せず）によって指定されるプロパティを有することが可能である。別の例では、ストローク１  ６０７は、第１のプロパティブロック（この場合、プロパティブロック１  ６０４）に対する黙示のインデックスを有することが可能である。第３の例では、ストローク１  ６０７は、ストローク１  ６０７の破線のボックスで示す通り現れない可能性がある（少なくとも１つのインデックスの後に現れるようにデータ構造の中で押し下げられる）。
【００４５】
ストローク３  ６１０およびストローク５  ６１３は、直前のインデックスを有さない。一例では、これは、ストローク３  ６１０およびストローク５  ６１３のプロパティが、デフォルトのプロパティブロック（図示せず）によって指定されることを示すことが可能である。代替の例では、ストローク３  ６１０およびストローク５  ６１３は、最新の先行するインデックスを使用する。ストローク３  ６１０は、インデックス６０８を使用することになる。ストローク５  ６１３は、インデックス６１１を使用することになる。ストローク３  ６１０およびストローク５  ６１３に関するインデックスのレシテーション（recitation）をなくすことは、ストローク３  ６１０およびストローク５  ６１３に関する別個のインデックスによって消費されることになる空間分、インクオブジェクトのサイズを小さくするのに役立つ。
【００４６】
図７は、データ構造の別の例としての実施形態を示している。このデータ構造は、識別子７０１および３つのストローク１〜３  ７０２〜７０４を含む。この場合、ストロークはすべて、デフォルトのプロパティを使用する。デフォルトのプロパティは、メモリの中で、当技術分野で周知の通り、別個に記憶されたデータ構造または他の場所において指定することができる。
【００４７】
様々なオブジェクトに関して様々なメソッドが存在することが可能である。例えば、インクオブジェクトまたは任意の他のオブジェクトとともに使用することができるメソッドが、インクをストレージに保存する、またはインクをストレージからロードする能力を含むことが可能である。図９は、ステップ９０３でストレージ９０２に保存される（この例では、アプリケーション９０１によって）インクを示している。インクは、ロードメソッド９０４によってこのアプリケーションまたは別のアプリケーションにロードすることができる。
【００４８】
インクプロパティは、冗長な情報を最小限に抑える、またはなくすように定義することができる。単純なストリームでは、インクプロパティが存在しないことが可能である。いくつかのグローバルプロパティを使用してもよい。必要に応じて、より多い、またはより少ないグローバルプロパティを定義し、使用することができる。
【００４９】
インクオブジェクトに関して、インクオブジェクト間の共通のプロパティが現れる可能性がある。それらのプロパティは、変形プロパティ、描画属性プロパティ、メトリックプロパティ、およびストローク記述プロパティを含むが、以上には限定されない様々なグループにグループ化することができる。その他のプロパティを定義して使用してもよい。また、特定の以上に明らかにしたプロパティのすべてが（必要とされるものがある場合）必要とされるわけではない。
【００５０】
変形プロパティ
インクオブジェクトは、いくつかの異なる入力源を使用して生成することができる。入力源には、異なるタブレット解像度を有する様々なタブレットが含まれることが可能である。異なるタブレット解像度により、生成されたインクが、異なる解像度または異なるスクリーンサイズを有するタブレットに移されたとき、またはそのタブレット上で表示されたとき、スクリーン上に描かれたインクの誤ったレンダリングが行われることが生じる可能性がある。インクを調整して共通サイズにするため、１組の変形プロパティ（または変形）を記憶して、どのようにインクオブジェクトを共通サイズに調整すべきかを示すことができる。
【００５１】
ストロークは、ストロークを入力したデバイスの生成物である。インクストロークの品質およびサイズは、デジタイザ１６５の解像度およびサイズに応じて様々である可能性がある。インクストロークの生成中の様々なズームレベルのため、デジタイザからの元のポイントに基づいてすべてのストロークをレンダリングすることにより、ユーザが意図したものが正確に反映されない可能性がある。したがって、インクオブジェクト、ストロークオブジェクト、あるいはインクオブジェクトまたはストロークオブジェクトの任意のコレクションのプロパティのどれかが、インクオブジェクトの中のストローク、ストロークオブジェクトの中のストローク、またはストロークのコレクションの中のストロークのインク空間への変形を含むことが可能である。
【００５２】
図８は、インク空間領域８０４の中に関連するインクストローク（「ink」という語を形成する）を有するインクオブジェクト８０１を示している。インク空間領域で関連するインクストローク（「more ink」という語を形成する）を有する別のインクオブジェクト８０２が示されている。最後に、インクオブジェクト８０３が、インクオブジェクト８０１および８０２の中の他の２組のストロークとは異なる位置から開始するインクストローク（「even more ink」という語を形成する）を示している。インクオブジェクトの中に記憶されたインクポイントは、インク空間領域８０４の中のストロークに対応するポイントを表すこと、またはインク空間領域へのマッピングを伴う異なる座標系を表すことが可能である。インク空間は、ストロークが座標空間の中に存在する２次元宇宙と呼ぶことができる。簡明にするため、インク空間は、インク空間長方形と呼ぶが、任意の形状をとることが可能である。
【００５３】
前述した通り、インクは、様々な仕方でキャプチャすることができる。インクは、大きくする、または小さくする、回転させる、並進させる、ゆがめる、トリミングするなどすることができる。
【００５４】
描画属性プロパティ
描画属性テーブルは、ストリーム中のプロパティのすべての描画属性セットをリストすることが可能である。各描画属性ブロックは、インクをレンダリングしている最中に使用される情報を定義する。これらのブロックは、１つ以上のストロークに適用されることが可能であり、また描画属性テーブルに入れて、各ストロークで繰り返されないようにすることができる。
【００５５】
メトリックプロパティ
メトリックテーブルは、ストリームの中のメトリックブロックをリストする。これらのブロックは、１つ以上のストロークに適用されることが可能であり、またそのテーブルに入れて、各ストロークで繰り返されないようにすることができる。
【００５６】
メトリックブロックは、ストローク記述子プロパティ（以下に定義する）によって指定される論理値と何らかの実際の物理特性の間の関係を促進する。最も一般的な値には、最小値、最大値、精度、および／または単位が含まれる。例えば、圧力が、ポンド単位か、パスカル単位か、またはキログラム単位か、あるいは１０という値の角が、度数かラジアンか黙示的にに知られていない可能性がある。さらなる情報がないと、アプリケーションは、それらの値が、インクオブジェクトシステムによって定義された標準の正規化された形態であるものと想定する可能性がある。この想定には、誤りが生じやすい可能性がある。したがって、メトリックブロックが、ストロークの値と、その値が、インクを生成するのに使用された物理デバイスにどのように関係するかの間の関係を提供する。
【００５７】
通常、インクストリーム中のすべてのストロークが、同一のメトリックブロックを使用する。インクストリームは、いくつかのストローク記述子を有するが、それでも、１つのメトリックブロックを有するだけであることが可能である。ただし、本システムにより、異なるストロークが、メトリックテーブルの中の異なるメトリックブロックを参照することができるようになることも可能である。
【００５８】
メトリックブロックは、必ずしも、ストローク記述子の中で使用されるすべてのパケットプロパティタグを定義する必要はない。というのは、アプリケーションが、すべてのプロパティに関連するメトリックについて配慮しない可能性があり、またはデバイスが、すべてのプロパティに関するメトリックを提供しない可能性があるからである。メトリックブロックをストローク記述子との関連で容易に読み取ることができるようにするため、メトリックブロックの中のエンティティは、ストローク記述子の中で見られるのと同じ順序になっていなければならない。メトリックブロックは、Ｘ値およびＹ値（例えば、ＴＡＧ＿ＸおよびＴＡＧ＿Ｙで特定される）に関するデータを含むことが可能であるため、ストローク記述子とは異なる。これは、Ｘ値およびＹ値が、記憶される必要のあるメトリックを有する可能性があるためである。
【００５９】
ストローク記述子プロパティ
ストロークは、各アレイ要素が、あるポイントのプロパティに対応するデータのアレイを含むことが可能である。アプリケーションは、圧力などのその他のプロパティを記憶しようと試みることが可能である。アプリケーションは、単にカスタムストロークプロパティ（後述する）を生成して圧力を記憶することができる。一部のアプリケーションは、このデータ、およびカスタムプロパティのタグおよびサイズをどのように解釈すべきか知らない可能性がある。その場合、ストローク記述子ブロックを使用して、データタイプ、およびストロークにおけるデータタイプの順序を定義することによってこの問題を解決することができる。次に、システムは、インデックスを使用してストロークを特定のストローク記述子ブロックに関連付けることができる。
【００６０】
通常、インクストリーム中のすべてのストロークは、同一のストローク記述子ブロックを使用する。ただし、１つのブロックだけを含むストローク記述子テーブルは、稀である。ただし、システムは、複数のブロックをテーブルに入れることにより、異なるストロークが、異なるセットのデータを含むのを可能にする。
【００６１】
オブジェクトおよびコレクション
図３〜７を参照すると、インクオブジェクトが、ストロークを含むことが可能である。インクオブジェクトは、プロパティを含め、その他の情報も含むことが可能である。ストロークコンテナは、ストロークも含むことが可能である。ストロークコンテナは、別個に記憶可能なオブジェクトであるか、またはインスタンス化されたインクオブジェクトに基づいてだけ存在することが可能である。ストロークコンテナに関する２つのメソッドを図１０に示している。まず、ストロークコンテナ生成メソッド１００２によってストロークコンテナ１００１を生成することができる。また、ストローク生成メソッド（Create Stroke Method）１００３が、入力１００４（例えば、デジタイザ１６５、またはデータファイル、またはその他の入力）からの情報を含む。ストロークコンテナ１００１は、自らが含む１つ以上のストロークを保持すること、またはストロークを１つ以上のインクオブジェクトに後に入力することが可能である。
【００６２】
図１１は、インクオブジェクトと併せてだけ使用することができる様々なメソッドに関する。これらのメソッドは、例示の目的でだけ使用する。他のメソッドを以上のメソッドと併せて使用する、あるいは、以上のメソッドの代わりに使用することもできる。様々なメソッドを、インクオブジェクト１１０１の中の情報を変更するメソッド１１０２〜１１０５、および１１０９、インクオブジェクト１１０１からストロークを獲得するメソッド１１１１および１１１３、並びにストローク自体以外の情報をインクオブジェクト１１０１から獲得するメソッド１１０６〜１１０８、および１１１５にグループ化することができる。いくつかの以上のメソッド（および本明細書で説明するメソッド）を組み合わせるのも可能であることを理解されたい。
【００６３】
ストロークは、ストローク識別子が、インクオブジェクトに渡されることが可能なメソッド１１０２を使用してインクオブジェクトに追加することができる。また、メソッド１１０２は、ストロークが追加されるべき長方形を含むことが可能であり、あるいはストロークのポイントが、インク空間長方形の中の位置を表して、ストロークがどこでインク空間長方形に関係するかを調整することが可能である。この場合も、インク空間を長方形と呼ぶが、インク空間は、任意の他の形状であることが可能である。
【００６４】
メソッド１１０３〜１１０５を介してインクオブジェクトからストロークを削除することができる。ストロークは、ストロークを指定することにより（メソッド１１０３）、ストロークに出会う、またはストロークを含む長方形（その他の形状）を指定することにより１１０４、またはインクオブジェクト１１０１中のすべてのストロークを削除するのを指定することにより、削除することができる。一部の動作、例えば、１つ以上のストロークを削除する動作の際、ストロークの連続するリストを提供するようにストロークに番号を付けなおすことができる。
【００６５】
インクオブジェクト１１０１の中のストロークをクリップして長方形１１０９に移すことができる。この場合、長方形に含まれないあらゆるストローク、ストローク群、またはストロークの部分が除去される。これにより、ストロークと長方形の交差において、クリップされたストロークに関する新しいポイントの生成がもたらされる可能性がある。
【００６６】
ストロークは、インクオブジェクト１１０１を複製すること（Clone）１１１３（新しいインクオブジェクト１１１４がもたらされる）、またはストローク自体を抽出し１１１１、そのストロークをインクオブジェクトに入れること１１１２により、様々なメソッドを介してインクオブジェクト１１０１から獲得することができる。
【００６７】
インクオブジェクト１１０１から情報を獲得することもできる。提供されたポイントに対するインクオブジェクトの最も近接したポイントをメソッド１１０６で獲得することができる。戻される情報には、そのポイントまでの距離、最も近接したポイントを含むストロークの識別、最も近接したポイントのストローク上の位置、およびその他の関係のある情報が含まれることが可能である。すべてのストロークを囲む境界ボックスをメソッド１１０７で獲得することができる。インクオブジェクトが、クリップボード１１１５に情報をペーストすることができるかどうか、インクオブジェクトにクエリを行うことができる。最後に、インクオブジェクト１１０１の中のストロークを検査して１１０８、指定された領域が、１つ以上のストロークに接触する、または１つ以上のストロークを含むかを判定することができる。この領域は、円形（例えば、中心点および半径を有する円）、長方形（端点を有する）、または複雑な多角形で１つ以上のストロークを囲むことによって決められた複雑な形状であることが可能である。以上の領域は、例示の目的で説明している。任意の形状または形状の組合せを使用できることを理解されたい。
【００６８】
図１２は、インクオブジェクトに関連付けることができるいくつかのプロパティを示している。このプロパティは、インクオブジェクトに関するストローク１２０２を含む。あるアプリケーションに合わせたカスタムストロークを１２０４で設定することもできる。あるアプリケーションに特有のストロークに関するプロパティも、１２０３でインクオブジェクト中の１つ以上のストロークに適用することができる。最後に、ストロークが最後に（例えば、ストレージ９０２に）保存されて以来、ストロークが変更されたか否かを示すフラグをストローク（この場合、ダーティ（Dirty））１２０５に関して設定することができる。
【００６９】
少なくとも２つのタイプのインクオブジェクトを定義することができる。ｔＩｎｋオブジェクト（「ｔ」は、「テキスト」を意味する）を、文字または語を形成するものと予期されるインクを表すＯＬＥオブジェクトとして実現することができる。ｔＩｎｋオブジェクトにより、テキストレコグナイザによるなどして、手書きのインクをテキストに変換することができるようになる。ｔＩｎｋオブジェクトは、インクに関連し、テキストのコンテキストを有するインクオブジェクトと呼ぶことができる。テキストインクのカラーおよび／またはフォントサイズ、並びにテキストインクに下線を引くか、太字にするか、イタリック体にするか、および／またはそれに類することをプログラム式に設定することができ、またｔＩｎｋオブジェクトの周りのテキストの属性に基づかせることができる。言い換えれば、ｔＩｎｋオブジェクトの意図される挿入ポイントにおける周囲のプロパティをそのｔＩｎｋオブジェクトに適用することができる。一実施形態では、ｔＩｎｋオブジェクトは、テキストレコグナイザにサブミットするための単一の語だけを含み、したがって、文は、複数のｔＩｎｋオブジェクトを含むことが可能である。他方、ｓＩｎｋオブジェクト（「ｓ」は、「スケッチ」を意味する）も、語を形成するものと予期されないインクを表すオブジェクトとして定義することができる。ｓＩｎｋオブジェクトも、ＯＬＥオブジェクトであることが可能である。したがって、ｓＩｎｋオブジェクトは、描画のコンテキストまたは任意の他の非テキストのコンテキストであると解釈することができる。また、ｓＩｎｋオブジェクトは、複数の語を表すのに役立つ可能性がある。インク対応アプリケーション（および／またはユーザ）が、あるインクオブジェクトにｔＩｎｋオブジェクトとしてマークを付け、また他のインクオブジェクトにｓＩｎｋオブジェクトとしてマークを付けることが可能である。説明に関して、この２つのタイプのインクは、本明細書では、「tInk」および「sInk」と記載する。ただし、使用することができる様々なタイプのインクオブジェクトを表すのに他の名称も使用できることを理解されたい。さらに、代替のタイプのオブジェクトを使用して電子インクを任意の所望の形式で記憶することができる。
【００７０】
オブジェクト（本明細書で「ＩｎｋＣｏｌｌｅｃｔｏｒ」オブジェクトと呼ぶ）を定義し、使用して、インク入力デバイスからインクをキャプチャし、かつ／またはインクをアプリケーションに送ることができる。ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトは、インクを１つ以上のインクストロークとして収集し、インクを１つ以上の関連するインクオブジェクトの中に記憶することにより、ある意味で、１つ以上の異なり、かつ／または別個のインクオブジェクトの中にインクを「流し込む」蛇口として作用する。ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトは、自らを周知のアプリケーションウインドウに接続することができる。次に、ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトは、任意の、またはすべての利用可能なタブレットデバイス（スタイラス２０４および／またはマウスを含むことが可能な）を使用することによってそのウインドウ上でリアルタイムのインキングを提供することができる。インクは、１つ以上のインクストロークとして収集し、１つ以上の関連するインクオブジェクトの中に記憶することができる。ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトを使用するため、開発者は、ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトを生成し、どのウインドウでドローされるインクを収集するかの割当てを行い、このオブジェクトをイネーブルにする。ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトは、イネーブルにされた後、インクストロークおよび／またはジェスチャが収集される様々なインク収集モードでインクを収集するように設定されることが可能である。ジェスチャは、レンダリングされたインクとしてではなく、何らかのアクションまたは機能を行う要求またはコマンドとして解釈されるスタイラス２０４の動きまたは他のアクションである。例えば、インクを選択する目的で特定のジェスチャを行うことができ、一方、別のジェスチャが、インクをイタリック体にする目的であることが可能である。デジタイザ入力上、またはデジタイザ入力に近接したスタイラスのすべての動きに関して、ＩｎｋＣｏｌｌｅｃｔｏｒオブジェクトは、ストロークおよび／またはジェスチャを収集する。
【００７１】
図１３は、クリップボードに関してストロークが有することが可能な様々な動作を示している。ストロークは、クリップボードにコピーする、またはクリップボードからペーストすることができる。ストロークは、長方形（１３０２）内部の空間の中に含まれる、またはその空間が接触するストロークによって指定される、または１３０３で個々に指定されることが可能である。クリップボードからペーストされるインクストロークのペースト動作を１３０４で示している。
【００７２】
様々なイベントをインクオブジェクトに関連付けることもできる。図１４は、インクオブジェクト１４０１との関係で生じる様々なイベントを示している。ストロークが、インクオブジェクト１４０１に追加されたとき、追加されたストロークの識別を含むイベント１４０２が始動される。インクオブジェクトからストロークが削除されたとき、インクオブジェクト１４０１から削除されたストロークの識別を含むイベント１４０３が始動される。
【００７３】
図１５は、ストロークオブジェクトを示している。ストロークオブジェクト１５００は、インクオブジェクトの一部として存在する、またはインクオブジェクトとは別個に存在することが可能である。様々なメソッドをストロークオブジェクトに関連付けることができる。メソッドには、ストローク、またはストロークのポイントを変更するメソッド１５０１〜１５０８、並びにストロークオブジェクト１５００中の１つ以上のストロークに関する情報を獲得するメソッド１５０９〜１５１５および１５１７〜１５２１が含まれることが可能である。様々なメソッドには、ストロークを２つ以上のストローク（１５０１）に分割すること、水平ファクタおよび／または垂直ファクタでストロークをせん断すること（１５０２）、提供された量、距離、またはベクトルだけストロークを動かす、または並進させること（１５０３）、指定の量だけストロークを回転させること（１５０４）、入力ファクタでストロークをスケーリングする（例えば、水平方向および垂直方向で）こと（１５０５）、ストロークをスケーリングして提供された長方形に合うようにすること（１５０６）、ストロークオブジェクトの中の１つ以上のストロークの１つ以上のプロパティに合わせてパケット値を設定すること（１５０７）、およびストロークの１つ以上のポイントを新しい位置に設定すること（１５０８）が含まれる。
【００７４】
情報を獲得する、ストロークオブジェクトから情報をエクスポートする、または導出するストロークオブジェクトに関連することが可能なメソッドには、ストロークオブジェクトの中の１つ以上のストローク上の、提供されたポイントに最も近接したポイントを獲得すること（１５０９）、提供されたインデックス（例えば、ストローク上の比またはパーセンテージ）に基づいてストローク上の１つ以上のポイントを獲得する、または入手すること（１５１０および１５１１）、ストロークオブジェクト１５００の１つ以上のストロークと提供された形状（例えば、長方形）の交差を獲得する、または入手すること（１５１２）が含まれる。その他のメソッドには、ストロークオブジェクトの中の１つ以上のストロークに関する境界ボックスを入手すること（１５１３）、ストロークオブジェクトの中の１つ以上のストロークと提供されたストロークの１つ以上の交差を見出すこと（１５１４）、実際の１つ以上のストロークをレンダリングするのに使用されるレンダリングポイントを獲得すること（１５２１）、指定のポイントに関するパケットデータを獲得すること（１５２０）、パケット情報に関するプロパティメトリックを獲得すること（１５１９）、ストロークオブジェクトの中のすべてのポイントに関するパケットプロパティ値を獲得すること（１５１８）、およびストロークオブジェクトの内容と提供された形状（円形、長方形、複雑な多角形等）の間のヒット試験を行うこと（１５１７）が含まれることが可能である。最後に、ストロークオブジェクト中の１つ以上のストロークをクリップして（１５１５）、提供された長方形１５１６に移すことができる。
【００７５】
様々なプロパティもストロークオブジェクトに関連付けることができる。このプロパティには、ストロークのカスプ（cusp）の近似が含まれることが可能である。カスプは、書込みの方向が不連続な仕方で変化するストローク上のポイントである。例えば、ストロークが、大文字「Ｌ」を表す場合、プロパティは、３つのカスプを戻し、２つのカスプが、そのストローク上の最初の制御ポイントおよび最後の制御ポイントに対応し、また第３のカスプが、「Ｌ」のコーナを表す。
【００７６】
また、図１６のストロークオブジェクトにおけるプロパティには、レンダリングされたストロークの表現に関連するポイント（１６０３）、ストロークが、インクオブジェクトから削除されているかどうかの状態（１６０４）、ストロークオブジェクトの描画属性（１６０５）、ストロークオブジェクトのあらゆる拡張された特性（１６０６）、ストロークオブジェクトの識別（１６０７）、親インクオブジェクトの識別（１６０８）（ストロークオブジェクトが、親インクオブジェクトを有する場合）、ストロークオブジェクトの中の１つ以上のストロークにおけるポイントの数のパケットカウント（１６０９）、あらゆるＧＵＩＤ（ストロークオブジェクトのプロパティに関連するグローバル固有識別子）のパケット記述（１６１０）、パケットサイズ（１６１１）、ストロークオブジェクト中の１つ以上のストロークの実際のカスプ（１６１２）、および１つ以上のストロークが自ら有するあらゆる交差（１６１３）が含まれることが可能である。以上のプロパティは、限定するものではないことを理解されたい。その他のプロパティも使用することができる。
【００７７】
ストロークオブジェクトは、ストロークコレクションの一部を形成することが可能である。図１７は、１つ以上のストロークオブジェクト（１７０２〜１７０４）を有するストロークコレクション１７０１に関連付けることができる様々なメソッド、プロパティ、およびイベントを示している。このストロークコレクションは、単一のインクオブジェクトからのストロークに関する。ストロークコレクション１７０１を使用することにより、インクオブジェクト中のすべてのストロークを同時にアドレス指定する単純化されたやり方が提供される。
【００７８】
ストロークをストロークコレクション１７０１に追加する（１７０５）、またはストロークコレクション１７０１から除去する（１７０６）ことができる。この場合、ストロークコレクション１７０１に追加する、またはストロークコレクション１７０１から除去されるストロークオブジェクトの識別を指定することができる。
【００７９】
さらに、各インクオブジェクトに関して複数のストロークコレクションが存在する可能性がある。ストロークコレクションは、必要に応じて生成する、または除去することができる（１７０８）。各インクオブジェクトが、様々なストロークコレクションを有する可能性があるので、各ストロークコレクションが、独自の認識結果を有することが可能である。例えば、第１の文（第１のストロークコレクションとして記憶されている）に英語レコグナイザが関連付けられていて、英語の語の認識結果がもたらされ、一方、第２の文（第２のストロークコレクションとして記憶されている）にフランス語レコグナイザが関連付けられていて、フランス語の語の認識結果がもたらされることが可能である。あるいは、ストロークコレクションに複数のレコグナイザが関連付けられ、各言語に関して複数の認識結果がもたらされるようにすることが可能である。複数のレコグナイザが関連付けられる場合、顧客がどちらの言語でも書込みを行い得ることが、開発者によって認識される可能性がある。開発者は、レコグナイザをストロークコレクションに関連付けて、どちらの言語であれ、顧客の使用する方のサポートを提供することを望む。図１７を参照すると、この１つ以上の認識結果が、ストロークコレクションから除去される可能性がある（例えば、新しい認識結果が生成される場合、または現在の認識結果が誤っている場合）。ストロークコレクションに関してそのテキストを抽出し、または特定のテキストに関して認識結果を探索し（１７１５）、関連するストロークまたはストローク識別子を戻すことが可能である。
【００８０】
ストロークコレクション１７０１は、事前定義された量だけ回転させること（１７１１）、Ｘ座標およびＹ座標またはベクトルでスケーリングすること（１７１２）、提供される長方形またはその他の形状に合うようにスケーリングすること（１７１３）が可能であり、またコレクションの中のストロークを指定の量だけせん断することができる（１７１４）。
【００８１】
スケーリング、回転、並進、および歪曲の様々な操作を一般的な変形メソッドと組み合わせることができる（１７１６）。
【００８２】
メソッド１７１７〜１７２４を使用してストロークコレクションから情報を獲得することができる。これらのメソッドには、ストロークオブジェクトを獲得すること（１７１７）、ストロークオブジェクトまたはストロークコレクションの中で何らかの変更されたデータがある場合、それを獲得すること（１７１８）、および追加されたストロークオブジェクトを提供すること（１７１９）または削除されたストロークオブジェクトを提供すること（１７２０）が含まれる可能性がある。さらに、コレクションによって参照されるストロークオブジェクトを別のコレクションにコピーすることができ（１７２０）、１つ以上のストロークオブジェクト、またはストロークコレクションをグラフィックスオブジェクト上に描くことができ（１７２２）、ストロークコレクションに関する境界ボックスまたは他の囲む形状を獲得することができ（１７２４）、また特定のストロークオブジェクトを獲得することができる（１７２３）。
【００８３】
様々なプロパティをストロークコレクション１７０１に関連付けることができる。プロパティには、コレクション中のストロークオブジェクトのカウント（１７２５）、ストロークコレクションを含むインクオブジェクト（１７２６）、ストロークコレクションが固定サイズのものであるかどうかの指示（１７２７）、ストロークコレクションが読出し専用であるかどうかの指示（１７２８）、認識結果が存在するかどうかの指示（１７２９）、また最後に認識結果の内容（１７３０）が含まれる可能性がある。
【００８４】
ストロークは、様々なソースからもたらされることが可能である。ソースの１つには、図２のタブレットが含まれる。図２のようなタブレットを提供している、または将来、提供する様々なベンダで、それぞれのタブレットのプロパティが様々である可能性が高い。図１８のタブレットオブジェクト１８０１が提供されて、タブレットへの入力情報をインクオブジェクトおよび関連するオブジェクトの残りの部分と調和させる。
【００８５】
タブレットオブジェクト１８０１には、プロパティが関連付けられていることが可能である。メソッドには、タブレットのプロパティメトリックを獲得する能力（１８０２）、および様々なパケットプロパティ（例えば、スタイラス１６６の傾斜角）が、タブレットによってサポートされているかどうかを獲得する能力（１８０３）が含まれることが可能である。タブレットのハードウェア能力（１８０４）、タブレットによってサポートされる最大物理入力長方形（１８０５）、タブレットの名前（１８０６）、タブレットのプラグアンドプレイ（plug and play）ＩＤ（１８０７）を含め、様々なプロパティをタブレットオブジェクトの中で指定することができる。タブレットのプラグアンドプレイＩＤ１８０７により、タブレットを、システムとのタブレットの対話を制御する適切なドライバに自動的に関連付けることができるようになる。
【００８６】
タブレットオブジェクトは、タブレットハードウェア能力（１８０８）およびタブレットプロパティメトリック（１８０９）を含む様々なレシテーションを含むことが可能である。
【００８７】
タブレットオブジェクトは、１つ以上のタブレットコレクションに一緒にグループ化することができる。図１９のタブレットコレクション１９０１は、タブレットコレクション１９０１が、１つ以上のタブレットオブジェクト１９０２〜１９０４を含む例を提供している。１つ以上のタブレットオブジェクトを新しいタブレットコレクションにコピーすること（１９０５）、１つ以上のタブレットオブジェクトを獲得すること（１９０６）、特定のプロパティが、コレクション中のすべてのタブレットによってサポートされているかどうかを判定すること（１９０７）、およびタブレットコレクション中の特定のアイテムを獲得すること（１９０８）を含め、様々なメソッドをタブレットコレクションに関連付けることができる。
【００８８】
コレクション中のタブレットオブジェクトの数を示すカウントプロパティ１９０９、コレクション１９０１中のデフォルトのタブレットを定義するデフォルトタブレットプロパティ、コレクションへのアクセスが同期されていることを示す同期プロパティ、およびアクセスを同期することができるオブジェクトを提供する同期ルートプロパティを含め、様々なプロパティを各タブレットコレクション１９０１に関連付けることができる。
【００８９】
ストロークをインクオブジェクト、ストロークオブジェクト、または様々なコレクションに追加することができる。インクオブジェクト、１つ以上のストロークオブジェクト、またはストロークコレクションをレコグナイザオブジェクトに関連付けることができる。レコグナイザオブジェクトは、ストロークを処理し、そのストロークをテキストまたはジェスチャに翻訳する能力を表す。レコグナイザオブジェクトは、手書き文字認識を行うのに使用される。サンプルのレコグナイザオブジェクトを図２０に示している。
【００９０】
レコグナイザは、プロパティで指定することができるいくつかの能力を有することが可能である。例えば、一部のレコグナイザは、筆記体だけを認識することができ、一方、他のレコグナイザは、筆記体およびブロック体を認識することができる。筆記体をサポートしないレコグナイザは、筆記体を認識するのに使用された場合、ユーザが筆記体で書いたとき、不正確な結果を戻す可能性が高い。
【００９１】
レコグナイザは、様々なオプションを有することが可能である。レコグナイザは、例えば、ストロークが描かれるラインに関するメトリックを判別することができる。ストロークのライン数を戻すことができるが、レコグナイザの組み込まれた機能のため、どのようにそのラインメトリックが判別されるかを指定する必要はない。
【００９２】
レコグナイザは、例えば、レコグナイザの能力を含め、様々なレシテーションを有することが可能である。また、レコグナイザは、メソッドを有することも可能である。メソッドには、新しいレコグナイザコンテキスト（図２２）を生成すること（２００２）、およびレコグナイザの名前を指定し、かつ／または取り出すこと（２００３）が含まれる。
【００９３】
レコグナイザオブジェクトには、いくつかのプロパティが関連付けられていることが可能である。プロパティには、レコグナイザの能力２００４（例えば、レコグナイザが、文字自動完成（ＣＡＣ）をサポートするかどうか、または自由入力、ライン付き入力、またはボックス内の入力をサポートするかどうか）、レコグナイザによってサポートされる言語または下位言語のリスト（２００５）、レコグナイザの名前（２００６）、レコグナイザの好ましいパケット記述（グローバルに固有の識別子（ＧＵＩＤ）のリストを含むことが可能である）（２００７）、レコグナイザによってサポートされるプロパティのリスト（２００８）、およびレコグナイザのベンダ（２００９）が含まれることが可能である。
【００９４】
レコグナイザオブジェクト２００１は、例えば、図２１で示す通り、レコグナイザコレクション２１０１中の他のレコグナイザと組み合わせることができる。図２１は、１つ以上のレコグナイザオブジェクト２１０２〜２１０４を有するレコグナイザコレクション２１０１を示している。様々なメソッドおよびプロパティをレコグナイザコレクションに関連付けることができる。例えば、レコグナイザコレクションに名前を付けることができ（２１０５）、そのコレクションを別のコレクションにコピーすることができ（２１０６）、デフォルトのレコグナイザを指定し、取り出すことができ（２１０７）、すべてのレコグナイザを取り出すことができ（２１０８）、また特定のレコグナイザを取り出すことができる（２１０９）。コレクション中のすべてのレコグナイザのカウント（２１１０）、および同期情報（コレクションが同期されているかどうか２１１１、およびコレクションを同期するのに使用することができるオブジェクト２１１２）を含め、様々なプロパティをレコグナイザコレクションに関連付けることができる。
【００９５】
図２２に示したレコグナイザコンテキストオブジェクトは、インク認識を行う能力、認識結果を取り出す能力、および代替の結果を取り出す能力を表す。レコグナイザコンテキストオブジェクト２２０１により、システムにインストールされた様々なレコグナイザが、インク認識を行うことによって入力を適切に処理することができるようになる。バックグラウンド（background）認識またはフォアグラウンド（foreground）認識を含め、少なくとも２つのタイプの認識を行うことができる。バックグラウンド認識は、システムのバックグラウンド処理において行われ、他のシステムイベント（ユーザによって、または別の仕方で生成された）のために停止されることが可能である。これに対して、フォアグラウンド認識は、一般に、ユーザによって開始され、認識が完了するまで停止しない。
【００９６】
認識コンテキストオブジェクトは、認識をサポートする。認識コンテキストオブジェクトは、認識される必要があり、入力インクおよび所望の認識出力に対する制約または他のパラメータを定義するインクストロークを受け取ることができる。例えば、設定することができる制約には、認識中に使用されるべき言語、辞書、および文法が含まれる。フォームの各データ入力フィールドに関してレコグナイザコンテキストを設定することができる。異なるデータ入力フィールドが、次のように、あるセットの情報に特有であることが可能である。すなわち、番号、プラス符合、ダッシュ、およびパラメータを有する電話番号フィールド、番号およびダッシュだけを有するジップコードフィールド、頭文字だけを有する州の省略語等である。
【００９７】
レシテーションは、認識フィールドのコンテキスト２２０９、様々な認識モード２２１０、および任意の文字自動完了２２１１のセットであることが可能である。様々な認識イベントも行われることが可能である。認識イベント２２０７は、認識結果がレコグナイザから受け取られたときに行われる可能性がある。この結果は、首位の認識結果２２０７だけであるか、または代替の結果２２０８であることが可能である。
【００９８】
様々なメソッドを認識コンテキストに関連付けることができる。様々なメソッドには、バックグラウンド認識（２２０５）が含まれる（レコグナイザが、関連するストロークを非同期で認識し、認識が完了したとき、認識イベントを始動するように命令される）。これには、代替の結果も戻されることを要求することが含まれることが可能である。別のメソッドには、元のコピーが作成される複製（clone）メソッド（２２０６）が含まれることが可能である。別のメソッドには、コンテキストにもはやインクが追加されないのを指定すること（インク入力終了２２０４）、およびあるストリングが、例えば、システム辞書、ユーザ辞書、ワードリスト等によってサポートされるかどうかを判定すること（２２０３）が含まれる。認識メソッド２２０７は、レコグナイザに認識されるべきストロークのリストを提供し、結果を戻す。最後に、バックグラウンド認識をメソッド２２０２において停止することができる。
【００９９】
文字または語が認識されるかどうかを示す文字自動完成モードの指示（２２１２）、ストロークのコンテキストの識別（例えば、ジップコードフィールド、アドレスフィールド、名前フィールド、ファイル名フィールド等（また、類事実も））（２２１３）、認識のために使用することができるガイド２２１４（ユーザが、書き込むものとされるボックス）、認識結果を助けるガイドとして使用することができるプレフィックステキスト（２２１５）およびサフィックステキスト（２２１９）、レコグナイザが、すべてのインクを単一の語として扱うかどうか、またはレコグナイザが、コンテキストに関して指定されたコンテキスト識別２２１３に基づいて結果を強制するかどうかなど、レコグナイザコンテキストから戻されるべきケースを戻す、または設定する認識フラグ２２１６、レコグナイザコンテキスト２２０１に関連するストローク２２１８、および認識を向上させるのに使用することができる語を含むワードリスト２２２０を含め、様々なプロパティを指定することができる。ガイド２２１４に関しては、ユーザが、ガイドエリアの中に書き込むのを強制することによってどこで認識を行うか知ることにより、認識を向上させることができる。
【０１００】
認識プロセスを助けるレコグナイザガイド、図２３に示した描画属性オブジェクト（例えば、様々な描画属性をプロパティ、メソッド、およびレシテーションとともに記憶する）、および図２４に示したレコグナイザ結果オブジェクトを含め、様々な他の構成要素を含めることができる。
【０１０１】
図２５は、ストロークとレコグナイザの間の様々な関連を伴うインクオブジェクトを示している。図２５（ａ）で、各セットのストロークが、１つのレコグナイザとの関連を有する。図２５（ｂ）で、各セットのストロークが、１つ以上のレコグナイザとの関連を有する。
【０１０２】
インクの記憶の概要
インクをインクオブジェクトの中に記憶し、インクオブジェクトが、ストロークに関連するデータおよび／またはその他のプロパティを調整することが可能である。圧縮を使用して、インクを記憶することができる効率を高めることができる。
【０１０３】
本発明を頭記の特許請求の範囲を使用して定義してきたが、本発明は、本明細書で説明する要素およびステップを任意の組合せ、または下位の組合せで含むとされることで、頭記の特許請求の範囲は、例示的なものである。したがって、説明、特許請求の範囲、および図面を含め、本明細書からの１つ以上の要素を様々な組合せ、または下位の組合せで組み込んだ、本発明を定義するための任意の数の代替の組合せが存在する。関係のある技術分野の技術者には、本明細書に照らして、本発明の態様の代替の組合せを、単独で、または本明細書で定義する１つ以上の要素またはステップとの組合せで、本発明の変更形態または代替形態として、または本発明の一部として利用できることが明白であろう。本明細書に含まれる本発明の記載した説明が、すべてのそのような変更形態および代替形態を含むものとされることが可能である。例えば、様々な実施形態において、データのある順序を示した。しかし、データのあらゆる並べ替えが、本発明によって包含される。また、サイズ（例えば、バイト単位またはビット単位）などのある単位のプロパティが使用される場合、任意の他の単位も想定される。
【符号の説明】
【０１０４】
１０１  キーボード
１０２  マウス
１０６  シリアルポートインターフェース
１０７  モニタ
１０８  ビデオアダプタ
１０９  遠隔コンピュータ
１１０  処理ユニット
１１１  メモリ
１１２  ローカルエリアネットワーク
１１３  ワイドエリアネットワーク
１１４  ネットワークインターフェース
１１５  モデム
１２０  システムメモリ
１３０  システムバス
１６５  デジタイザ
１９２  ハードディスクインターフェース
１９３  磁気ディスクドライブインターフェース
１９４  光ドライブインターフェース
１９５  オペレーティングシステム
１９６  アプリケーションプログラム
１９７  他のプログラムモジュール
１９８  プログラムデータ
１９９  光ディスク
２０１  タブレットＰＣ
２０２  表示面
２０３  ウインドウ
２０４  スタイラス
【図１】
2010020795.tif 000003
【図２】
2010020795.tif 000004
【図３】
2010020795.tif 000005
【図４】
2010020795.tif 000006
【図５】
2010020795.tif 000007
【図６】
2010020795.tif 000008
【図７】
2010020795.tif 000009
【図８】
2010020795.tif 000010
【図９】
2010020795.tif 000011
【図１０】
2010020795.tif 000012
【図１１】
2010020795.tif 000013
【図１２】
2010020795.tif 000014
【図１３】
2010020795.tif 000015
【図１４】
2010020795.tif 000016
【図１５】
2010020795.tif 000017
【図１６】
2010020795.tif 000018
【図１７】
2010020795.tif 000019
【図１８】
2010020795.tif 000020
【図１９】
2010020795.tif 000021
【図２０】
2010020795.tif 000022
【図２１】
2010020795.tif 000023
【図２２】
2010020795.tif 000024
【図２３】
2010020795.tif 000025
【図２４】
2010020795.tif 000026
【図２５】
2010020795.tif 000027