(57)【要約】  実施形態によれば、電子機器は、手書きによって入力される第１ストロークを画面上に表示する。前記電子機器は、前記第１ストロークに対応する１以上の手書き文字列を候補として前記画面上に表示する。前記１以上の手書き文字列の内の第１手書き文字列が選択された場合、少なくともサイズが調整された第１手書き文字列が前記第１ストロークの代わりに前記画面上に表示される。前記サイズの調整は、前記第１ストロークが入力される前に手書きによって入力されている第２手書き文字列のサイズに基づいて実行される。
2015083290.tif 000002
【特許請求の範囲】
【請求項１】
手書きによって入力される第１ストロークを画面上に表示する表示処理手段と、
手書き文書情報から取得される、前記第１ストロークに対応する１以上の手書き文字列を、入力可能な手書き文字列の候補として前記画面上に表示するための処理を実行する処理手段とを具備し、
前記表示処理手段は、前記１以上の手書き文字列の内の第１手書き文字列が選択された場合、少なくともサイズが調整された第１手書き文字列を前記第１ストロークの代わりに前記画面上に表示するように構成され、
前記第１手書き文字列のサイズの調整は、前記第１ストロークが入力される前に手書きによって入力されている第２手書き文字列のサイズに基づいて実行される、電子機器。
【請求項２】
前記第１手書き文字列の文字間隔は、前記第２手書き文字列の文字間隔に基づいて調整されている請求項１記載の電子機器。
【請求項３】
前記第２手書き文字列は前記第１ストロークの直前の手書き文字列である請求項１記載の電子機器。
【請求項４】
前記第１手書き文字列が表示される前記画面上の領域の開始位置は、前記画面上の前記第１ストロークの位置に応じて決定される請求項１記載の電子機器。
【請求項５】
前記サイズが調整された前記第１手書き文字列の高さは、前記第２手書き文字列の高さに応じて調整されている請求項１記載の電子機器。
【請求項６】
手書きによって入力される第１ストロークを画面上に表示することと、
手書き文書情報から取得される、前記第１ストロークに対応する１以上の手書き文字列を、入力可能な手書き文字列の候補として前記画面上に表示するための処理を実行することと、
前記１以上の手書き文字列の内の第１手書き文字列が選択された場合、少なくともサイズが調整された第１手書き文字列を前記第１ストロークの代わりに前記画面上に表示することとを具備し、
前記第１手書き文字列のサイズの調整は、前記第１ストロークが入力される前に手書きによって入力されている第２手書き文字列のサイズに基づいて実行される、方法。
【請求項７】
前記第１手書き文字列の文字間隔は、前記第２手書き文字列の文字間隔に基づいて調整されている請求項６記載の方法。
【請求項８】
前記第２手書き文字列は前記第１ストロークの直前の手書き文字列である請求項６記載の方法。
【請求項９】
前記第１手書き文字列が表示される前記画面上の領域の開始位置は、前記画面上の前記第１ストロークの位置に応じて決定される請求項６記載の方法。
【請求項１０】
前記サイズが調整された前記第１手書き文字列の高さは、前記第２手書き文字列の高さに応じて調整されている請求項６記載の方法。
【請求項１１】
コンピュータによって実行されるプログラムであって、前記プログラムは、
手書きによって入力される第１ストロークを画面上に表示することと、
手書き文書情報から取得される、前記第１ストロークに対応する１以上の手書き文字列を、入力可能な手書き文字列の候補として前記画面上に表示するための処理を実行することと、
前記１以上の手書き文字列の内の第１手書き文字列が選択された場合、少なくともサイズが調整された第１手書き文字列を前記第１ストロークの代わりに前記画面上に表示すること
の機能を実行するように前記コンピュータを制御し、
前記第１手書き文字列のサイズの調整は、前記第１ストロークが入力される前に手書きによって入力されている第２手書き文字列のサイズに基づいて実行される、プログラム。
【請求項１２】
前記第１手書き文字列の文字間隔は、前記第２手書き文字列の文字間隔に基づいて調整されている請求項１１記載のプログラム。
【請求項１３】
前記第２手書き文字列は前記第１ストロークの直前の手書き文字列である請求項１１記載のプログラム。
【請求項１４】
前記第１手書き文字列が表示される前記画面上の領域の開始位置は、前記画面上の前記第１ストロークの位置に応じて決定される請求項１１記載のプログラム。
【請求項１５】
前記サイズが調整された前記第１手書き文字列の高さは、前記第２手書き文字列の高さに応じて調整されている請求項１１記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、手書き文書情報を処理する技術に関する。
【背景技術】
【０００２】
近年、タブレット、ＰＤＡ、スマートフォンといった種々の電子機器が開発されている。この種の電子機器の多くは、ユーザによる入力操作を容易にするために、タッチスクリーンディスプレイを備えている。【０００３】
また最近では、手書き文字列を扱うことが可能な電子機器も開発されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２５５６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、従来では、スムーズに手書き文字列を入力するための技術については考慮されていないのが現状である。【０００６】
本発明の一形態の目的は、スムーズに手書き文字列を入力することができる電子機器および方法を提供することである。
【課題を解決するための手段】
【０００７】
実施形態によれば、電子機器は、表示処理手段と、処理手段とを具備する。前記表示処理手段は、手書きによって入力される第１ストロークを画面上に表示する。前記処理手段は、手書き文書情報から取得される、前記第１ストロークに対応する１以上の手書き文字列を、入力可能な手書き文字列の候補として前記画面上に表示するための処理を実行する。前記表示処理手段は、前記１以上の手書き文字列の内の第１手書き文字列が選択された場合、少なくともサイズが調整された第１手書き文字列を前記第１ストロークの代わりに前記画面上に表示する。前記第１手書き文字列のサイズの調整は、前記第１ストロークが入力される前に手書きによって入力されている第２手書き文字列のサイズに基づいて実行される。
【図面の簡単な説明】
【０００８】
【図１】図１は実施形態に係る電子機器の外観を示す例示的な斜視図である。
【図２】図２は図１の電子機器と外部装置との連携動作を示す例示的な図である。
【図３】図３は図１の電子機器のタッチスクリーンディスプレイ上に手書きされる手書き文書の例を示す図である。
【図４】図４は図１の電子機器によって生成される、図３の手書き文書に対応する時系列情報を説明するための例示的な図である。
【図５】図５は図１の電子機器のシステム構成を示す例示的なブロック図である。
【図６】図６は図１の電子機器によって実行される手書きノートアプリケーションプログラムの機能構成を示す例示的なブロック図である。
【図７】図７は図１の電子機器によって表示される候補ストロークの例を説明するための例示的な図である。
【図８】図８は図７の状態においてさらにストロークが入力された場合に図１の電子機器によって新たに表示される候補ストロークの例を説明するための例示的な図である。
【図９】図９は図１の電子機器によって実行される手書きストローク補完動作を説明するための例示的な図である。
【図１０】図１０は図１の電子機器によって実行される、選択された候補ストローク（手書き文字列）のサイズ、文字間隔を調整する動作を説明するための例示的な図である。
【図１１】図１１は入力されたストロークに先行するストローク列（手書き文字列）の平均文字間隔を算出する動作を説明するための例示的な図である。
【図１２】図１２は図１の電子機器によって実行される、選択された候補ストローク（手書き文字列）のサイズ、開始位置を調整する動作を説明するための例示的な図である。
【図１３】図１３は図１の電子機器によって実行される、選択された候補ストローク（手書き文字列）の文字間隔を調整する動作を説明するための例示的な図である。
【図１４】図１４は文字間隔が調整された手書き文字列を示す例示的な図である。
【図１５】図１５は図１の電子機器によって実行される筆跡補完処理の手順を説明するための例示的なフローチャートである。
【発明を実施するための形態】
【０００９】
以下、実施の形態について図面を参照して説明する。  
図１は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えば、ペン（スタイラス）または指によって手書き入力可能なペン・ベースの携帯型電子機器である。この電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン、ＰＤＡ等として実現され得る。以下では、この電子機器がタブレットコンピュータ１０として実現されている場合を想定する。タブレットコンピュータ１０は、タブレットまたはスレートコンピュータとも称される携帯型電子機器である。タブレットコンピュータ１０は、図１に示すように、本体１１とタッチスクリーンディスプレイ１７とを備える。本体１１は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ１７は、本体１１の上面に重ね合わさるように取り付けられている。
【００１０】
タッチスクリーンディスプレイ１７には、フラットパネルディスプレイと、センサとが組み込まれている。センサは、フラットパネルディスプレイの画面上のペンまたは指の接触位置を検出するように構成されている。フラットパネルディスプレイは、例えば、液晶表示装置（ＬＣＤ）であってもよい。センサとしては、例えば、静電容量方式のタッチパネル、電磁誘導方式のデジタイザなどを使用することができる。以下では、デジタイザとタッチパネルの２種類のセンサの双方がタッチスクリーンディスプレイ１７に組み込まれている場合を想定する。
【００１１】
デジタイザは、例えば、フラットパネルディスプレイの画面の下側に配置される。タッチパネルは、例えば、フラットパネルディスプレイの画面上に配置される。このタッチスクリーンディスプレイ１７は、指を使用した画面に対するタッチ操作のみならず、ペン１００を使用した画面に対するタッチ操作も検出することができる。ペン１００は例えばデジタイザペン（電磁誘導ペン）であってもよい。ユーザは、外部オブジェクト（ペン１００又は指）を使用してタッチスクリーンディスプレイ１７上で手書き入力操作を行うことができる。手書き入力操作中においては、画面上の外部オブジェクト（ペン１００又は指）の動きの軌跡、つまり手書きによって入力されるストロークの軌跡がリアルタイムに描画され、これによって各ストロークの軌跡が画面上に表示される。外部オブジェクトが画面に接触されている間の外部オブジェクトの動きの軌跡が１ストロークに相当する。手書きされた文字または図形などに対応する多数のストロークの集合、つまり多数の軌跡（筆跡）の集合が手書き文書を構成する。
【００１２】
本実施形態では、この手書き文書は、イメージデータではなく、各ストロークの軌跡の座標列とストローク間の順序関係とを示す時系列情報として記憶媒体に保存される。この時系列情報の詳細は図４を参照して後述するが、この時系列情報は、複数のストロークが手書きされた順を示し、且つ複数のストロークにそれぞれ対応する複数のストロークデータを含む。換言すれば、この時系列情報は、複数のストロークにそれぞれ対応する時系列のストロークデータの集合を意味する。各ストロークデータは、ある一つのストロークに対応し、このストロークの軌跡上の点それぞれに対応する座標データ系列（時系列座標）を含む。これらストロークデータの並びの順序は、ストロークそれぞれが手書きされた順序つまり筆順に相当する。
【００１３】
タブレットコンピュータ１０は、記憶媒体から既存の任意の時系列情報（手書き文書情報）を読み出し、この時系列情報に対応する手書き文書、つまりこの時系列情報によって示される複数のストロークそれぞれに対応する軌跡を画面上に表示することができる。さらに、タブレットコンピュータ１０は編集機能を有している。この編集機能は、「消しゴム」ツール、「範囲指定」ツール、および他の各種ツール等を用いたユーザによる編集操作に応じて、表示中の手書き文書内の任意のストロークまたは任意の手書き文字等を削除または移動することができる。さらに、この編集機能は、幾つかの手書き操作の履歴を取り消す機能も含んでいる。
【００１４】
さらに、タブレットコンピュータ１０は、筆跡補完（ストローク推薦）機能も有している。この筆跡補完機能は、多くの文字列を手書きによって容易に入力できるようにするために、ユーザの手書き入力操作を補助するための機能である。
【００１５】
図２は、タブレットコンピュータ１０と外部装置との連携動作の例を示している。タブレットコンピュータ１０は、パーソナルコンピュータ１やクラウドと連携することができる。すなわち、タブレットコンピュータ１０は、無線ＬＡＮなどの無線通信デバイスを備えており、パーソナルコンピュータ１との無線通信を実行することができる。さらに、タブレットコンピュータ１０は、インターネット上のサーバ２との通信を実行することもできる。サーバ２はオンラインストレージサービス、他の各種クラウドコンピューティングサービスを実行するサーバであってもよい。
【００１６】
パーソナルコンピュータ１はハードディスクドライブ（ＨＤＤ）のようなストレージデバイスを備えている。タブレットコンピュータ１０は、時系列情報（手書き文書）をネットワーク越しにパーソナルコンピュータ１に送信して、パーソナルコンピュータ１のＨＤＤに記録することができる（アップロード）。
【００１７】
これにより、タブレットコンピュータ１０内のストレージの容量が少ない場合でも、タブレットコンピュータ１０が多数の時系列情報（手書き文書）あるいは大容量の時系列情報（手書き文書）を扱うことが可能となる。
【００１８】
さらに、タブレットコンピュータ１０は、パーソナルコンピュータ１のＨＤＤに記録されている任意の１以上の手書き文書を読み出すことすができる（ダウンロード）。タブレットコンピュータ１０は、この読み出した手書き文書によって示されるストロークそれぞれの軌跡をタブレットコンピュータ１０のタッチスクリーンディスプレイ１７の画面に表示することができる。この場合、複数の手書き文書それぞれのページを縮小することによって得られるサムネイルの一覧をタッチスクリーンディスプレイ１７の画面上に表示してもよいし、これらサムネイルから選ばれた１ページをタッチスクリーンディスプレイ１７の画面上に通常サイズで表示してもよい。
【００１９】
さらに、タブレットコンピュータ１０が通信する先はパーソナルコンピュータ１ではなく、上述したように、ストレージサービスなどを提供するクラウド上のサーバ２であってよい。タブレットコンピュータ１０は、手書き文書をネットワーク越しにサーバ２に送信して、サーバ２のストレージデバイス２Ａに記録することができる（アップロード）。さらに、タブレットコンピュータ１０は、サーバ２のストレージデバイス２Ａに記録されている任意の手書き文書を読み出すことができる（ダウンロード）。タブレットコンピュータ１０は、この読み出した手書き文書によって示されるストロークそれぞれの軌跡をタブレットコンピュータ１０のタッチスクリーンディスプレイ１７の画面に表示することができる。
【００２０】
このように、本実施形態では、手書き文書が格納される記憶媒体は、タブレットコンピュータ１０内のストレージデバイス、パーソナルコンピュータ１内のストレージデバイス、サーバ２のストレージデバイスのいずれであってもよい。
【００２１】
次に、図３および図４を参照して、ユーザによって手書きされたストローク（文字、マーク、図形（線図）、表など）と手書き文書との関係について説明する。図３は、ペン１００などを使用してタッチスクリーンディスプレイ１７上に手書きされる手書き文字列の例を示している。
【００２２】
手書き文書では、一旦手書きされた文字や図形などの上に、さらに別の文字や図形などが手書きされるというケースが多い。図３においては、「ＡＢＣ」の手書き文字列が「Ａ」、「Ｂ」、「Ｃ」の順番で手書きされ、この後に、手書きの矢印が、手書き文字「Ａ」のすぐ近くに手書きされた場合が想定されている。
【００２３】
手書き文字「Ａ」は、ペン１００などを使用して手書きされる２つのストローク（「∧」形状の軌跡、「−」形状の軌跡）によって、つまり２つの軌跡によって表現される。最初に手書きされる「∧」形状のペン１００の軌跡は例えば等時間間隔でリアルタイムにサンプリングされ、これによって「∧」形状のストロークの時系列座標ＳＤ１１、ＳＤ１２、…ＳＤ１ｎが得られる。同様に、次に手書きされる「−」形状のペン１００の軌跡も等時間間隔でリアルタイムにサンプリングされ、これによって「−」形状のストロークの時系列座標ＳＤ２１、ＳＤ２２、…ＳＤ２ｎが得られる。
【００２４】
手書き文字「Ｂ」は、ペン１００などを使用して手書きされた２つのストローク、つまり２つの軌跡によって表現される。手書き文字「Ｃ」は、ペン１００などを使用して手書きされた１つのストローク、つまり１つの軌跡によって表現される。手書きの「矢印」は、ペン１００などを使用して手書きされた手書きされた２つのストローク、つまり２つの軌跡によって表現される。
【００２５】
図４は、図３の手書き文字列に対応する時系列情報２００を示している。時系列情報２００は、複数のストロークデータＳＤ１、ＳＤ２、…、ＳＤ７を含む。時系列情報２００内においては、これらストロークデータＳＤ１、ＳＤ２、…、ＳＤ７は、筆跡順に、つまり複数のストロークが手書きされた順に時系列に並べられている。
【００２６】
時系列情報２００において、先頭の２つのストロークデータＳＤ１、ＳＤ２は、手書き文字「Ａ」の２つのストロークをそれぞれ示している。３番目と４番目のストロークデータＳＤ３、ＳＤ４は、手書き文字「Ｂ」を構成する２つのストロークをそれぞれ示している。５番目のストロークデータＳＤ５は、手書き文字「Ｃ」を構成する１つのストロークを示している。６番目と７番目のストロークデータＳＤ６、ＳＤ７は、手書き「矢印」を構成する２つのストロークをそれぞれ示している。
【００２７】
各ストロークデータは、一つのストロークに対応する座標データ系列（時系列座標）、つまり一つのストロークの軌跡上の複数の点それぞれに対応する複数の座標を含む。各ストロークデータにおいては、複数の座標はストロークが書かれた順に時系列に並べられている。例えば、手書き文字「Ａ」に関しては、ストロークデータＳＤ１は、手書き文字「Ａ」の「∧」形状のストロークの軌跡上の点それぞれに対応する座標データ系列（時系列座標）、つまりｎ個の座標データＳＤ１１、ＳＤ１２、…ＳＤ１ｎを含む。ストロークデータＳＤ２は、手書き文字「Ａ」の「−」形状のストロークの軌跡上の点それぞれに対応する座標データ系列、つまりｎ個の座標データＳＤ２１、ＳＤ２２、…ＳＤ２ｎを含む。なお、座標データの数はストロークデータ毎に異なっていてもよい。すなわち、ペン１００の軌跡は等時間間隔でリアルタイムにサンプリングされるので、ストロークの長さが長いほど、あるいはストロークの手書き速度が遅いほど、座標データの数は増加する。
【００２８】
各座標データは、対応する軌跡内のある１点に対応するＸ座標およびＹ座標を示す。例えば、座標データＳＤ１１は、「∧」形状のストロークの始点のＸ座標（Ｘ１１）およびＹ座標（Ｙ１１）を示す。ＳＤ１ｎは、「∧」形状のストロークの終点のＸ座標（Ｘ１ｎ）およびＹ座標（Ｙ１ｎ）を示す。
【００２９】
さらに、各座標データは、その座標に対応する点が手書きされた時点に対応するタイムスタンプ情報Ｔを含んでいてもよい。手書きされた時点は、絶対時間（例えば、年月日時分秒）またはある時点を基準とした相対時間のいずれであってもよい。例えば、各ストロークデータに、ストロークが書き始められた絶対時間（例えば、年月日時分秒）をタイムスタンプ情報として付加し、さらに、ストロークデータ内の各座標データに、絶対時間との差分を示す相対時間をタイムスタンプ情報Ｔとして付加してもよい。
【００３０】
このように、各座標データにタイムスタンプ情報Ｔが追加された時系列情報を使用することにより、ストローク間の時間的関係をより精度よく表すことができる。
【００３１】
さらに、各座標データには、筆圧を示す情報（Ｚ）を追加してもよい。
【００３２】
図４で説明したような構造を有する時系列情報２００は、個々のストロークの筆跡だけでなく、ストローク間の時間的関係も表すことができる。したがって、この時系列情報２００を使用することにより、図３に示すようにたとえ手書き「矢印」の先端部が手書き文字「Ａ」上に重ねてまたは手書き文字「Ａ」に近接して書かれたとしても、手書き文字「Ａ」と手書き「矢印」の先端部とを異なる文字または図形として扱うことが可能となる。なお、タイムスタンプ情報Ｔはオプション情報として使用してもよく、各々がタイムスタンプ情報Ｔを有さない複数のストロークデータを上述の時系列情報として使用しても良い。
【００３３】
さらに、本実施形態では、上述したように、手書き文書は、イメージまたは文字認識結果ではなく、時系列のストロークデータの集合として記憶されるので、手書き文字の言語に依存せずに手書き文字を扱うことができる。よって、本実施形態の時系列情報２００の構造は、使用言語の異なる世界中の様々な国で共通に使用できる。
【００３４】
図５は、タブレットコンピュータ１０のシステム構成を示す。  
タブレットコンピュータ１０は、図５に示されるように、ＣＰＵ１０１、システムコントローラ１０２、主メモリ１０３、グラフィクスコントローラ１０４、ＢＩＯＳ−ＲＯＭ１０５、不揮発性メモリ１０６、無線通信デバイス１０７、エンベデッドコントローラ（ＥＣ）１０８等を備える。
【００３５】
ＣＰＵ１０１は、タブレットコンピュータ１０内の各種モジュールの動作を制御するプロセッサである。ＣＰＵ１０１は、ストレージデバイスである不揮発性メモリ１０６から主メモリ１０３にロードされる各種コンピュータプログラムを実行する。これらプログラムには、オペレーティングシステム（ＯＳ）２０１、および各種アプリケーションプログラムが含まれている。アプリケーションプログラムには、手書きノートアプリケーションプログラム２０２が含まれている。この手書きノートアプリケーションプログラム２０２は、上述の手書き文書を作成および表示する機能、手書き文書を編集する機能、および筆跡補完機能等を有している。
【００３６】
また、ＣＰＵ１０１は、ＢＩＯＳ−ＲＯＭ１０５に格納された基本入出力システム（ＢＩＯＳ）も実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００３７】
システムコントローラ１０２は、ＣＰＵ１０１のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ１０２には、主メモリ１０３をアクセス制御するメモリコントローラも内蔵されている。また、システムコントローラ１０２は、ＰＣＩ  ＥＸＰＲＥＳＳ規格のシリアルバスなどを介してグラフィクスコントローラ１０４との通信を実行する機能も有している。
【００３８】
グラフィクスコントローラ１０４は、タブレットコンピュータ１０のディスプレイモニタとして使用されるＬＣＤ１７Ａを制御する表示コントローラである。このグラフィクスコントローラ１０４によって生成される表示信号はＬＣＤ１７Ａに送られる。ＬＣＤ１７Ａは、表示信号に基づいて画面イメージを表示する。このＬＣＤ１７Ａ上にはタッチパネル１７Ｂおよびデジタイザ１７Ｃが配置されている。タッチパネル１７Ｂは、ＬＣＤ１７Ａの画面上で入力を行うための静電容量式のポインティングデバイスである。指が接触される画面上の接触位置および接触位置の動き等はタッチパネル１７Ｂによって検出される。デジタイザ１７ＣはＬＣＤ１７Ａの画面上で入力を行うための電磁誘導式のポインティングデバイスである。ペン１００が接触される画面上の接触位置および接触位置の動き等はデジタイザ１７Ｃによって検出される。
【００３９】
無線通信デバイス１０７は、無線ＬＡＮまたは３Ｇ移動通信などの無線通信を実行するように構成されたデバイスである。ＥＣ１０８は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。ＥＣ１０８は、ユーザによるパワーボタンの操作に応じてタブレットコンピュータ１０を電源オンまたは電源オフする機能を有している。
【００４０】
次に、図６を参照して、手書きノートアプリケーションプログラム２０２の機能構成について説明する。
【００４１】
手書きノートアプリケーションプログラム２０２は、ペン軌跡表示処理部３０１、時系列情報生成部３０２、編集処理部３０３、ページ保存処理部３０４、ページ取得処理部３０５、手書き文書表示処理部３０６、および筆跡補完処理部３０８等を備える。
【００４２】
手書きノートアプリケーションプログラム２０２は、タッチスクリーンディスプレイ１７を用いて入力されるストロークデータを使用することによって、手書き文書（手書きデータ）の作成、表示、編集等を行う。タッチスクリーンディスプレイ１７は、「タッチ」、「移動（スライド）」、「リリース」等のイベントの発生を検出するように構成されている。「タッチ」は、画面上に外部オブジェクトが接触したことを示すイベントである。「移動（スライド）」は、画面上に外部オブジェクトが接触されている間に接触位置が移動されたことを示すイベントである。「リリース」は、画面から外部オブジェクトが離されたことを示すイベントである。
【００４３】
ペン軌跡表示処理部３０１および時系列情報生成部３０２は、タッチスクリーンディスプレイ１７によって発生される「タッチ」または「移動（スライド）」のイベントを受信し、これによって手書き入力操作を検出する。「タッチ」イベントには、接触位置の座標が含まれている。「移動（スライド）」イベントにも、移動先の接触位置の座標が含まれている。したがって、ペン軌跡表示処理部３０１および時系列情報生成部３０２は、タッチスクリーンディスプレイ１７から、接触位置の動きの軌跡に対応する座標列を受信することができる。
【００４４】
ペン軌跡表示処理部３０１は、手書きによって入力されるストロークをタッチスクリーンディスプレイ１７の画面上に表示するように構成された表示処理部として機能する。ペン軌跡表示処理部３０１は、タッチスクリーンディスプレイ１７から座標列を受信する。そして、この座標列に基づいて、ペン軌跡表示処理部３０１は、ペン１００等を使用した手書き入力操作によって入力される複数のストロークをタッチスクリーンディスプレイ１７内のＬＣＤ１７Ａの画面上に表示する。
【００４５】
時系列情報生成部３０２は、タッチスクリーンディスプレイ１７から出力される上述の座標列を受信する。この座標列に基づいて、時系列情報生成部３０２は、上述の複数のストロークに対応する複数のストロークデータ（時系列情報）を生成する。これらストロークデータ、つまり各ストロークの各点に対応する座標および各ストロークのタイムスタンプ情報は作業メモリ４０１に一時保存してもよい。
【００４６】
ページ保存処理部３０４は、複数のストロークに対応する複数のストロークデータを含む手書き文書情報を記憶媒体４０２内の手書きノートデータベース４０２Ａに保存する。記憶媒体４０２は、上述したように、タブレットコンピュータ１０内のストレージデバイス、パーソナルコンピュータ１内のストレージデバイス、サーバ２のストレージデバイスのいずれであってもよい。
【００４７】
ページ取得処理部３０５は、記憶媒体４０２から任意の手書き文書情報を読み出す。読み出された手書き文書情報は手書き文書表示処理部３０６に送られる。手書き文書表示処理部３０６は、手書き文書情報を解析し、この解析結果に基づいて、手書き文書情報内の複数のストロークデータによって示される複数のストロークの軌跡を画面上に手書きページとして表示する。
【００４８】
編集処理部３０３は現在表示中の手書き文書（手書きページ）を編集するための処理を実行する。すなわち、編集処理部３０３は、タッチスクリーンディスプレイ１７上でユーザによって行われる編集操作に応じて、表示されている複数のストローク内の１以上のストロークを削除または移動等するための編集処理を実行する。さらに、編集処理部３０３は、編集処理の結果を表示中の手書き文書に反映するためにこの手書き文書を更新する。
【００４９】
ユーザは、「消しゴム」ツール等を使用して、表示されている複数のストローク内の任意のストロークを削除することができる。また、ユーザは、画面上の任意の部分を丸または四角によって囲むための「範囲指定」ツールを使用して、表示されている手書きページ内の任意の部分を範囲指定することができる。
【００５０】
筆跡補完処理部３０８は、上述の筆跡補完機能を実行するように構成された処理部である。筆跡補完処理においては、筆跡補完処理部３０８は、手書きによって入力されるストロークに対応する１以上のストローク列（手書き文字列）を、過去に入力されたストロークの集合（手書き文書情報）から取得する。そして、筆跡補完処理部３０８は、取得された１以上のストローク列を、入力可能なストロークの候補（候補ストローク）として画面上に表示するための処理を実行する。
【００５１】
換言すれば、筆跡補完処理部３０８は、入力されるストロークと手書き文書情報とに基づいて、ユーザが手書きしようとしているストローク列（手書き文字列）を予測する。そして、筆跡補完処理部３０８は、予測によって得られる幾つかのストローク列（手書き文字列）を候補ストローク（候補手書き文字列）としてユーザに提示する。
【００５２】
例えば、ストローク（手書き文字列）「ａ」が手書きによって入力された場合には、手書きの語「ａｄｄ」または「ａｃｃｅｓｓ」のような候補がユーザに提示されてもよい。もしユーザによって手書きの語「ａｃｃｅｓｓ」が選択されたならば、この手書きの語「ａｃｃｅｓｓ」が、入力された手書き文字列となる。よって、ユーザは、手書きの語「ａｃｃｅｓｓ」のストローク列を容易に入力することが出来る。
【００５３】
手書き文書情報に格納される手書き文字列の言語はどのような言語であってもよい。利用可能な言語の例は、英語、日本語、中国語、および他の様々な言語を含む。英語の文字列に関しては、ストローク列（手書き文字列）は、ブロック体の文字列に対応するストローク列であってもよいし、筆記体の文字列に対応するストローク列であってもよい。筆記体で手書きされた単語は１つのストロークから構成される場合がある。したがって、筆跡補完処理において手書き文書情報から取得されるストローク列は、必ずしも複数のストロークを含んでいる必要は無く、一つのストロークであってもよい。
【００５４】
入力されたストロークに対応するストローク列の例には、入力されたストロークに類似するストロークを含む複数のストロークや、入力されたストロークに類似するストローク部分を含む１つのストロークがある。例えば、先頭のストローク（または先頭のストローク部分）が、入力されたストロークに類似しているストローク列が手書き文書情報から取得される。
【００５５】
入力されたストロークに対応するストローク列を手書き文書情報から容易に取得できるようにするために、筆跡補完処理部３０８は、手書きノートデータベース４０２Ａに格納されているストロークの集合（手書き文書情報）に基づいて、候補ストロークデータベース４０２Ｂを作成しても良い。
【００５６】
この候補ストロークデータベース４０２Ｂにおいては、例えば、単語のような意味のある文字列単位で、ストローク列（ストロークデータ群）と、このストロークデータ群に対応する文字認識結果（文字列）とが格納されていても良い。
【００５７】
この場合、筆跡補完処理部３０８は、まず、ユーザによって入力されたストロークを文字認識してもよい。そして、筆跡補完処理部３０８は、候補ストロークデータベース４０２Ｂを参照し、この入力されたストロークの文字認識結果（文字列）に前方一致する文字列を見つけ出す。筆跡補完処理部３０８は、見つけ出した文字列に対応するストローク列（ストロークデータ群）を、入力されたストロークに対応するストローク列として候補ストロークデータベース４０２Ｂから取得する。
【００５８】
あるいは、候補ストロークデータベース４０２Ｂにおいては、例えば、単語のような意味のある文字列単位で、ストローク列（ストロークデータ群）と、このストロークデータ群に対応する各ストロークの特徴量とが格納されていても良い。あるストロークの特徴量としては、このストロークの手書き特徴を表すことができる任意の特徴を使用することができる。例えば、特徴量としては、ストロークの形状、ストロークの筆画方向、ストロークの傾斜、等を表す特徴量データを使用しても良い。この場合、筆跡補完処理部３０８は、入力されたストロークの特徴量に類似する特徴量を有するストローク列を候補ストロークデータベース４０２Ｂから取得してもよい。
【００５９】
あるいは、候補ストロークデータベース４０２Ｂにおいては、例えば、単語のような意味のある文字列単位で、ストローク列（ストロークデータ群）と、このストロークデータ群に対応する文字認識結果（文字列）と、このストロークデータ群に対応する各ストロークの特徴量とが格納されていても良い。
【００６０】
筆跡補完処理部３０８は、入力されたストロークと、候補ストロークデータベース４０２Ｂとに基づいて、ユーザが入力しようとしているストローク列を予測する。この予測の処理では、筆跡補完処理部３０８は、入力されたストロークに対応する幾つかのストローク列（手書き文字列等）を候補ストロークデータベース４０２Ｂから取得する。そして、筆跡補完処理部３０８は、これらストローク列を、入力が予測される手書き文字列の候補（候補ストローク）として画面上に表示するための処理を実行する。
【００６１】
図７は、入力されるストロークに対応する候補ストロークの例を示す。  
ここでは、編集画面６００上で行われる手書き入力操作によって、手書き文字「ａ」に対応するストローク６１１が入力された場合が想定されている。編集画面６００は、手書き文書（手書きページ）を作成および編集するための画面である。
【００６２】
ストローク６１１が手書きによって入力された場合、筆跡補完処理部３０８は、この入力されたストローク６１１（ここでは手書き文字「ａ」）に対応する幾つかのストローク列（候補ストローク）を候補ストロークデータベース４０２Ｂから取得する。そして、筆跡補完処理部３０８は、これらストローク列それぞれを編集画面６００上の候補ストロークリスト５０１上に表示する。
【００６３】
入力されたストローク６１１は「未確定ストローク（または仮ストローク）」として扱われる。「未確定ストローク」は手書きページにまだ反映されていないストロークを意味する。「未確定ストローク」は筆跡補完対象のストロークであり、このストロークに基づき予測される候補ストロークがユーザに提示される。入力されたストローク６１１が「未確定ストローク（仮ストローク）」であることがユーザに分かるように、ストローク６１１は、現在選択されているペン色とは異なる色、例えば赤色、で表示されるようにしても良い。図７では、赤色のストロークは破線で図示されている。
【００６４】
図７においては、候補ストロークリスト５０１上に、４つのストローク列が候補ストロークとして提示された場合が想定されている。ここでは、４つのストローク列は、手書き文字列「ａｂｉｌｉｔｙ」、手書き文字列「ａｃｃｅｓｓ」、手書き文字列「ａｄａｐｔｏｒ」、手書き文字列「ａｄｄ」を含む。
【００６５】
このように、先頭の手書き文字が「ａ」で始まる幾つかのストローク列（手書き文字列）がユーザに提示される。これらストローク列は、過去にユーザによって手書き入力されたストローク列（手書き文字列）である。
【００６６】
さらに、筆跡補完処理部３０８は、候補ストロークリスト５０１の近くに、「キャンセル」ボタン５０２を表示しても良い。「キャンセル」ボタン５０２は、入力されたストローク（仮ストローク）を「確定ストローク」にするための確定ボタンとして機能する。「確定ストローク」は、手書きページに反映されたストロークを意味する。「確定ストローク」になったストロークは、筆跡補完の対象から除外される。
【００６７】
図８は、入力されるストロークに対応する候補ストロークの別の例を示す。
【００６８】
ここでは、編集画面６００上の手書き入力操作によって、手書き文字「ａ」に対応するストローク６１１が入力された後に、手書き文字「ｐ」に対応するストローク６１２、６１３がさらに入力された場合が想定されている。この場合、候補ストロークリスト５０１の内容が更新される。
【００６９】
すなわち、筆跡補完処理部３０８は、入力されたストローク６１１、６１２、６１３（手書き文字列「ａｐ」）に対応する幾つかのストローク列（候補ストローク）を候補ストロークデータベース４０２Ｂから取得する。そして、筆跡補完処理部３０８は、これらストローク列それぞれを編集画面６００上の候補ストロークリスト５０１上に表示する。
【００７０】
図８では、候補ストロークリスト５０１上に、４つの手書きストローク列、つまり手書き文字列「ａｐｐｌｉｃａｔｉｏｎ」、手書き文字列「ａｐｅｒｔｕｒｅ」、手書き文字列「ａｐｅｘ」、手書き文字列「ａｐｏｌｏｇｙ」が、候補ストロークとして提示された場合が想定されている。
【００７１】
このように、「ａｐ」で始まる幾つかの手書き文字列がユーザに提示される。
【００７２】
ユーザによって候補ストロークリスト５０１上のある候補ストロークが選択された場合、筆跡補完処理部３０８は、選択された候補ストロークに対応するストローク列を編集画面６００上に表示する。換言すれば、筆跡補完処理部３０８は、入力された手書きストロークを、選択された候補ストロークに対応するストローク列で補完する。これにより、ユーザは目的の単語の一部を手書きによって入力するだけで、目的の単語を容易に入力することができる。
【００７３】
また、漢字のように複数のストロークから構成される文字に関しては、ユーザは、これら複数のストロークの一部を手書きによって入力するだけで、この文字を入力することができる。
【００７４】
また筆記体の文字列に関しては、ユーザは、この文字列を構成する一つのストロークの先頭の一部分を手書きによって入力するだけで、この筆記体の文字列を入力することができる。
【００７５】
図９は、入力された手書きストロークを補完する動作を示している。
【００７６】
ここでは、候補ストロークリスト５０１上の手書き文字列「ａｐｐｌｉｃａｔｉｏｎ」が選択された場合が想定されている。手書き文字列「ａｐｐｌｉｃａｔｉｏｎ」がペン１００または指によってタップされと、筆跡補完処理部３０８は、表示処理部（ペン軌跡表示処理部３０１または手書き文書表示処理部３０６）と協同して、選択された手書き文字列「ａｐｐｌｉｃａｔｉｏｎ」を編集画面６００上に表示するための処理を実行する。この場合、入力されたストローク（図８のストローク６１１、６１２、６１３）は選択された手書き文字列「ａｐｐｌｉｃａｔｉｏｎ」で補完される。換言すれば、表示処理部は、入力されたストローク（図８のストローク６１１、６１２、６１３）の代わりに、選択された手書き文字列「ａｐｐｌｉｃａｔｉｏｎ」を編集画面６００上に表示する。
【００７７】
そして、選択された手書き文字列「ａｐｐｌｉｃａｔｉｏｎ」は確定ストロークとなり、編集中の手書きページに反映される。つまり、候補ストロークデータベース４０２Ｂから取得された「ａｐｐｌｉｃａｔｉｏｎ」のストロークデータ群が手書きページに加えられる。なお、もし手書き文字列「ａｐｐｌｉｃａｔｉｏｎ」が筆記体で記述されたストローク列である場合には、手書き文字列「ａｐｐｌｉｃａｔｉｏｎ」に対応する１個のストロークデータが手書きページに加えられる。
【００７８】
このように、筆跡補完処理においては、手書きによって入力されたストローク（仮ストローク）に対応する幾つかの手書き文字列が候補ストロークとしてユーザに提示される。そして、選択された候補ストローク（手書き文字列）が仮ストロークに代えて編集画面６００上に表示される。
【００７９】
しかし、各候補ストロークは過去に手書きによって入力されたストローク列（手書き文字列）であるので、各候補ストローク（手書き文字列）のサイズや文字間隔は、ユーザが書こうとしている文字列のサイズや文字間隔と異なる場合がある。したがって、選択された候補ストロークを編集画面６００上に単純に表示したならば、ユーザにとって違和感のあるサイズまたは文字間隔を有する候補ストローク（手書き文字列）が入力されてしまう可能性がある。
【００８０】
選択された候補ストローク（手書き文字列）のサイズを仮ストロークのサイズに応じて変更（リサイズ）するという方法を採用することも考えられる。しかし、仮ストロークは選択された候補ストローク（手書き文字列）によって置き換えられる。このため、筆跡補完処理が実行された場合には、選択された候補ストロークによって後続される手書き文字列は、仮ストロークではなく、この仮ストロークよりも前に既に入力されている手書き文字列となる。さらに、仮ストロークのサイズは、この仮ストロークよりも前に既に入力されている手書き文字列のサイズ、例えば、仮ストロークの直前の手書き文字列のサイズと一致するとは限らない。したがって、選択された候補ストローク（手書き文字列）のサイズを仮ストロークのサイズに応じて変更するという方法では、選択された候補ストロークを適正なサイズにすることは難しい。
【００８１】
そこで、本実施形態では、筆跡補完処理部３０８は、選択された候補ストローク（手書き文字列）のサイズを、仮ストロークのサイズではなく、仮ストロークが入力される前に手書きによって入力された手書き文字列のサイズ、例えば、仮ストロークの直前の手書き文字列のサイズ、に基づいて調整するように構成されている。すなわち、筆跡補完処理部３０８は、上述の表示処理部と協同して、選択された候補ストローク（手書き文字列）を、仮ストロークの代わりに、第１のサイズで編集画面６００上に表示するための処理を実行する。この第１のサイズは、仮ストロークのサイズではなく、仮ストロークが入力される前に手書きによって入力された手書き文字列のサイズに応じて定められる。
【００８２】
仮ストロークの直前の手書き文字列は、仮ストロークが入力された行（ライン）と同じ行に既に入力されている手書き文字列であってもよい。また、もし仮ストロークが行の先頭に位置する場合には、仮ストロークが入力された行の１つ前の行に既に入力されている手書き文字列を仮ストロークの直前の手書き文字列として使用しても良い。
【００８３】
さらに、筆跡補完処理部３０８は、選択された候補ストローク（手書き文字列）の文字間隔を、仮ストロークが入力される前に手書きによって入力された手書き文字列の文字間隔、例えば、仮ストロークの直前の手書き文字列の文字間隔、に応じて調整してもよい。
【００８４】
このように、本実施形態では、選択された候補ストローク（手書き文字列）のサイズ、文字間隔が、仮ストロークが入力される前に手書きによって入力された手書き文字列に基づいて調整される。そして、サイズ、文字間隔が調整された候補ストロークが表示処理部によって仮ストロークの代わりに編集画面６００上に表示される。したがって、選択された候補ストロークのオリジナルのサイズ及び文字間隔に依存せずに、ある程度期待通りのサイズ、文字間隔で、選択された候補ストロークを入力することが可能となる。
【００８５】
図１０は、選択された候補ストローク（手書き文字列）のサイズ、文字間隔を調整する動作を示している。  
ここでは、手書き文字「ａ」に対応するストローク６２１が手書きによって入力された場合が想定されている。この場合、筆跡補完処理部３０８は、ストローク６２１に対応する幾つかの候補ストローク（手書き文字列）を候補ストロークデータベース４０２Ｂから取得する。そして、筆跡補完処理部３０８は、これら候補ストロークを編集画面６００上の候補ストロークリスト５０１上に表示するための処理を実行する。
【００８６】
図１０においては、候補ストロークリスト５０１上に、３つの手書きストローク列、つまり手書き文字列「ａｐｐｌｉｃａｔｉｏｎ」、手書き文字列「ａｐｐｒｏｖｅ」、手書き文字列「ａｐｐｓ」が、候補ストロークとして提示された場合が想定されている。
【００８７】
もし手書き文字列「ａｐｐｓ」がユーザによって選択されたならば、筆跡補完処理部３０８は、手書き文字列「ａｐｐｓ」のサイズを調整する。手書き文字列「ａｐｐｓ」のサイズは、ストローク６２１よりも前に手書きによって入力されている手書き文字列（ここでは、手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」６２２）のサイズに基づいて調整される。手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」６２２）は筆跡補完の対象から除外される確定ストローク列である。手書き文字列「ａｐｐｓ」のサイズを調整する処理は、手書き文字列「ａｐｐｓ」の高さを手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」６２２の高さに応じて調整する処理を含む。筆跡補完処理部３０８は、手書き文字列「ａｐｐｓ」の高さが手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」６２２の高さにほぼ一致するように手書き文字列「ａｐｐｓ」をスケーリングしてもよい。
【００８８】
さらに、筆跡補完処理部３０８は、手書き文字列「ａｐｐｓ」の文字間隔を、手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」６２２の文字間隔に基づいて調整してもよい。この場合、手書き文字列「ａｐｐｓ」の文字間隔は手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」６２２の平均文字間隔とほぼ一致するように変更されてもよい。
【００８９】
そして、筆跡補完処理部３０８は、サイズや文字間隔が調整された手書き文字列「ａｐｐｓ」６２３を入力された手書き文字列とする。すなわち、筆跡補完処理部３０８は、サイズや文字間隔が調整された手書き文字列「ａｐｐｓ」６２３を、ストローク６２１の代わりに編集画面６００上に表示する。この場合、筆跡補完処理部３０８は、編集画面６００上のストローク６２１の位置に応じて、編集画面６００上の手書き文字列「ａｐｐｓ」の開始位置を調整しても良い。編集画面６００上の手書き文字列「ａｐｐｓ」の開始位置は、手書き文字列「ａｐｐｓ」が表示されるべき編集画面６００上の領域の開始位置を示す。
【００９０】
手書き文字列「ａｐｐｓ」６２３は手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」６２２に後続されるが、手書き文字列「ａｐｐｓ」６２３のサイズや文字間隔は手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」のサイズや文字間隔とマッチしている。したがって、手書き文字列「ａｐｐｓ」６２３とその直前の文字列との間のサイズや文字間隔の相違による違和感が生じることなく、選択された手書き文字列「ａｐｐｓ」６２３をスムーズに入力することができる。
【００９１】
なお、ストローク６２１が行の先頭の手書き文字である場合には、１つ上の行の手書き文字列のサイズや文字間隔に基づいて、手書き文字列「ａｐｐｓ」６２３のサイズや文字間隔を調整しても良い。
【００９２】
図１１は、手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」６２２の平均文字間隔（文字間隔の平均値）を算出する動作を示している。  
手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」６２２の平均文字間隔Ｗは、以下の式を使用して算出することが出来る。
【００９３】
Ｗ＝（最終文字の中心座標Ｘ−先頭文字の中心座標Ｘ）÷（総文字数−１）
ここで、最終文字の中心座標Ｘは、最終文字に外接する矩形の中心のＸ座標を示す。先頭文字の中心座標Ｘは、先頭文字に外接する矩形の中心のＸ座標を示す。
【００９４】
図１２は、選択された候補ストロークに対するサイズと開始位置の調整動作を示している。選択された候補ストローク（ここでは、手書き文字列「ａｐｐｓ」６２３）のサイズ、開始位置は以下のように調整される。
【００９５】
筆跡補完処理部３０８は、まず、手書き文字列「ａｐｐｓ」６２３の高さＨ２が手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」６２２の高さＨ１に一致するように手書き文字列「ａｐｐｓ」６２３を拡大または縮小して、手書き文字列「ａｐｐｓ」６２３のサイズを調整する。この場合、筆跡補完処理部３０８は、手書き文字列「ａｐｐｓ」６２３がアセンダおよびディセンダの双方を有する文字列であることを想定して手書き文字列「ａｐｐｓ」６２３を囲む矩形を定義してもよい。筆跡補完処理部３０８は、手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」６２２に関しても同様の矩形を定義してもよい。そして、筆跡補完処理部３０８は、手書き文字列「ａｐｐｓ」６２３に対応する矩形の高さＨ２が手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」６２２に対応する矩形の高さＨ１に一致するように手書き文字列「ａｐｐｓ」６２３を拡大または縮小する。手書き文字列「ａｐｐｓ」６２３の拡大または縮小は、手書き文字列「ａｐｐｓ」６２３のアスペクト比を維持した状態で実行されてもよい。
【００９６】
編集画面上の手書き文字列「ａｐｐｓ」６２３の表示位置は、手書き文字列「ａｐｐｓ」６２３の開始位置が仮ストローク６２１の位置に一致し且つ手書き文字列「ａｐｐｓ」６２３に対応する矩形の下辺の位置が手書き文字列「Ｎｅｗ−ｈａｎｄｗｒｉｔｉｎｇ」６２２に対応する矩形の下辺の位置に位置するように、決定される。
【００９７】
図１３は、選択された候補ストロークの文字間隔を調整する動作を示している。候補ストローク（ここでは、手書き文字列「ａｐｐｓ」６２３）の調整後文字間隔は、上述の平均文字間隔Ｗを使用して決定される。例えば、「ａ」と「ｐ」との間の調整後文字間隔ｗ１’は、以下の式を使用して算出することが出来る。
【００９８】
ｗ１’＝（Ｗ×ｗ１×３）÷（ｗ１＋ｗ２＋ｗ３）
ここで、ｗ１は「ａ」と「ｐ」との間の調整前文字間隔、ｗ２は「ｐ」と「ｐ」との間の調整前文字間隔、ｗ３は「ｐ」と「ｓ」との間の調整前文字間隔である。
【００９９】
「ｐ」と「ｐ」との間の調整後文字間隔ｗ２’および「ｐ」と「ｓ」との間の調整後文字間隔ｗ３’も、ｗ１’と同様に求めることが出来る。手書き文字列「ａｐｐｓ」６２３は、図１４に示すように、調整後文字間隔で表示される。
【０１００】
図１５のフローチャートは、上述の筆跡補完処理の手順を示す。  
ユーザの手書き入力操作によってストロークが入力されると、ペン軌跡表示処理部３０１は、この入力されたストローク（仮ストローク）を画面上に表示する（ステップＳ１１）。筆跡補完処理部３０８は、この入力されたストロークに対応するストロークデータを時系列情報生成部３０２から受信する。そして、筆跡補完処理部３０８は、候補ストロークの調整を行うためのベースとなる行構造（手書き文字列）の情報が既に取得されているか否かを判定する（ステップＳ１２）。
【０１０１】
行構造（手書き文字列）に関する情報がまだ取得されていないならば（ステップＳ１２のＮＯ）、筆跡補完処理部３０８は、ステップＳ１３に進む。そして、ステップＳ１３において、筆跡補完処理部３０８は、候補ストロークの調整を行うためのベースとなる行構造（手書き文字列）を特定するための処理と、この行構造（手書き文字列）の文字間隔を得る処理とを実行する。この場合、筆跡補完処理部３０８は、まず、行構造化サブルーチンを使用して編集画面６００上の手書き文書（ページ）全体の行構造を解析し、仮ストロークが入力されている行を特定する。そして、仮ストロークが入力されている行内の手書き文字列、つまり仮ストロークが入力される前に入力されている手書き文字列に関する情報を、ベースとなる行構造として取得する。仮ストロークが行の先頭に位置する場合には、仮ストロークが入力されている行の１つ上の行の手書き文字列を、ベースとなる行構造として特定しても良い。この後、筆跡補完処理部３０８は、文字認識サブルーチンを使用して、特定された行構造（手書き文字列）に対する文字認識処理を実行し、これによってこの特定された手書き文字列の文字認識結果、およびこの特定された手書き文字列の各手書き文字の外接矩形情報を取得する。さらに、筆跡補完処理部３０８は、各手書き文字の外接矩形情報などを使用することによって、この特定された手書き文字列の平均文字間隔Ｗを得る。
【０１０２】
そして、筆跡補完処理部３０８は、この入力された仮ストロークに対応する手書き文字列（候補ストローク）を候補ストロークデータベース４０２Ｂから取得する（ステップＳ１４）。このステップＳ１４の処理は、入力された仮ストロークと候補ストロークデータベース４０２Ｂとに基づいて、ユーザが入力しようとしている手書きストローク列（手書き文字列）を予測する処理に相当する。そして、筆跡補完処理部３０８は、上述の表示処理部と協同して、候補ストロークの一覧、つまり上述の候補ストロークリスト５０１を画面上に表示する。候補ストロークリスト５０１には、幾つかの手書き文字列が表示される。さらに新たな仮ストロークが入力された場合は（ステップＳ１５のＹＥＳ）、筆跡補完処理部３０８は、最初に入力された仮ストロークと新たな仮ストロークとの組に対応する手書き文字列（候補ストローク）を候補ストロークデータベース４０２Ｂから取得する。
【０１０３】
筆跡補完処理部３０８は、ユーザによってある手書き文字列（候補ストローク）が選択されたか否かを判定する（ステップＳ１６）。ユーザによってどの手書き文字列（候補ストローク）も選択されずに「キャンセル」ボタン５０２がユーザによってタップされたならば（ステップＳ１６のＮＯ）、筆跡補完処理部３０８は、入力された仮ストロークを「確定ストローク列」にする（ステップＳ１７）。ステップＳ１７では、筆跡補完処理部３０８は、候補ストロークリスト５０１を画面から消す。
【０１０４】
ある手書き文字列（候補ストローク）が選択されたならば（ステップＳ１６のＹＥＳ）、筆跡補完処理部３０８は、上述の特定された行構造の高さと仮ストロークの表示位置に基づき、選択された手書き文字列のサイズ（高さ）と選択された手書き文字列の開始位置とを調整する（ステップＳ１８）。さらに、筆跡補完処理部３０８は、平均文字間隔Ｗを使用して、選択された手書き文字列の文字間隔を調整する（ステップＳ１９）。そして、筆跡補完処理部３０８は、上述の表示処理部と協同して、サイズおよび文字間隔が調整された、選択された手書き文字列を、仮ストロークの代わりに編集画面上に表示する（ステップＳ２０）。ステップＳ２０では、入力された仮ストロークが、選択された手書き文字列のストローク列に置換される。さらに、選択された手書き文字列のストローク列は確定ストロークとなり、現在作成または編集されている手書きページに反映される。
【０１０５】
以上説明したように、本実施形態においては、あるストローク（第１ストローク）が手書きによって入力された場合、第１ストロークに対応する１以上の手書き文字列が、入力可能な手書き文字列の候補（候補ストローク）として画面上に表示される。そして、１以上の手書き文字列の内の第１手書き文字列が選択された場合、少なくともサイズが調整された第１手書き文字列が第１ストロークの代わりに画面上に表示される。
【０１０６】
ここで、第１手書き文字列のサイズの調整は、第１ストロークではなく、第１ストロークが入力される前に手書きによって入力されている第２手書き文字列のサイズに基づいて実行される。したがって、選択された手書き文字列と既に入力されている手書き文字列との間のサイズの相違による違和感が生じることなく、選択された手書き文字列をスムーズに入力することができる。
【０１０７】
また、サイズと文字間隔とが調整された第１手書き文字列が第１ストロークの代わりに画面上に表示されてもよい。
【０１０８】
なお、本実施形態の各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【０１０９】
このコンピュータプログラムがインストールされたコンピュータ内のＣＰＵは上述の筆跡補完処理を実行するように構成されたプロセッサとして機能し得る。このコンピュータ内のＧＰＵはストロークそれぞれを画面上に表示するように構成された表示プロセッサとして機能し得る。
【０１１０】
また、本実施形態では、タブレットコンピュータを使用する場合を例示して説明したが、本実施形態の手書き文書処理機能は、通常のデスクトップパーソナルコンピュータに適用することもできる。この場合、手書き入力のための入力デバイスであるタブレット等をデスクトップパーソナルコンピュータに接続すれば良い。
【０１１１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【図１】
2015083290.tif 000003
【図２】
2015083290.tif 000004
【図３】
2015083290.tif 000005
【図４】
2015083290.tif 000006
【図５】
2015083290.tif 000007
【図６】
2015083290.tif 000008
【図７】
2015083290.tif 000009
【図８】
2015083290.tif 000010
【図９】
2015083290.tif 000011
【図１０】
2015083290.tif 000012
【図１１】
2015083290.tif 000013
【図１２】
2015083290.tif 000014
【図１３】
2015083290.tif 000015
【図１４】
2015083290.tif 000016
【図１５】
2015083290.tif 000017
【国際調査報告】
2015083290.tif 000018
2015083290.tif 000019
2015083290.tif 000020