(57)【要約】  実施形態によれば、電子機器は、ディスプレイと、ディスプレイ上で入力されたストロークを前記ディスプレイ上で表示するための表示制御手段と、入力された複数のストロークに対応する文字の種類を判定し、その文字の種類に応じて、入力された複数のストロークに対応する文字の表示サイズを調整し、サイズ調整後の文字の表示位置を書体の基準ラインに応じて定める処理手段とを具備する。
2016031016.tif 000002
【特許請求の範囲】
【請求項１】
ディスプレイと、
前記ディスプレイ上で入力されたストロークを前記ディスプレイ上で表示するための表示制御手段と、
入力された複数のストロークに対応する文字の種類を判定し、その文字の種類に応じて、前記入力された複数のストロークに対応する文字の表示サイズを調整し、サイズ調整後の文字の表示位置を書体の基準ラインに応じて定める処理手段と、
を具備する電子機器。
【請求項２】
入力された複数のストロークに対応する文字の種類がアルファベットである場合、前記文字の種類は、大文字、小文字の区別と、アセンダ、ディセンダの有無の少なくとも1つを用いて判定され、前記基準ラインは、アセンダライン、キャップライン、ミーンライン、ベースライン、ディセンダラインの少なくとも1つを具備する請求項１記載の電子機器。
【請求項３】
前記処理手段は、文字の種類が大文字である場合、高さがキャップハイトとなるように、文字の種類がアセンダ付き小文字の場合、高さがｘハイト＋アセンダとなるように、文字の種類がディセンダ付き小文字の場合、高さがｘハイト＋ディセンダとなるように文字の高さを調整する請求項２記載の電子機器。
【請求項４】
前記処理手段は、最初に入力された文字の種類に応じて前記基準ラインの位置を決め、２番目以降に入力された文字の高さを文字の種類に応じた基準ライン間の高さに合わせて調整し、サイズ調整後の文字の表示位置を前記ベースラインあるいはディセンダラインに応じて定める請求項２記載の電子機器。
【請求項５】
前記処理手段は、
入力された複数の第１ストロークを記憶するメモリと、
入力された第２ストロークに類似する第１ストロークを前記メモリから読み出し、既に表示されているストロークに続けて表示するストローク補完手段と、
前記ストローク補完手段により表示される前記第１ストロークに対応する文字または文字列を、既に表示されている文字あるいは文字列と同じサイズとなるようにサイズ調整し、サイズ調整後の第１ストロークに対応する文字または文字列の表示位置を前記ベースラインあるいはディセンダラインに応じて定めるストローク調整手段を具備する請求項２記載の電子機器。
【請求項６】
ディスプレイ上で入力されたストロークを前記ディスプレイ上で表示する方法であって、
入力された複数のストロークに対応する文字の種類を判定することと、
その文字の種類に応じて、前記入力された複数のストロークに対応する文字の表示サイズを調整することと、
サイズ調整後の文字の表示位置を書体の基準ラインに応じて定めることと、
を具備する方法。
【請求項７】
入力された複数のストロークに対応する文字の種類がアルファベットである場合、前記文字の種類は、大文字、小文字の区別と、アセンダ、ディセンダの有無の少なくとも1つを用いて判定され、前記基準ラインは、アセンダライン、キャップライン、ミーンライン、ベースライン、ディセンダラインの少なくとも1つを具備する請求項６記載の方法。
【請求項８】
前記調整することは、文字の種類が大文字の場合、高さがキャップハイトとなるように、文字の種類がアセンダ付き小文字の場合、高さがｘハイト＋アセンダとなるように、文字の種類がディセンダ付き小文字の場合、高さがｘハイト＋ディセンダとなるように文字の高さを調整する請求項７記載の方法。
【請求項９】
前記調整することは、最初に入力された文字の種類に応じて前記基準ラインの位置を決め、２番目以降に入力された文字の高さを文字の種類に応じた基準ライン間の高さに合わせて調整することを具備し、
前記定めることは、サイズ調整後の文字の表示位置を前記ベースラインあるいはディセンダラインに応じて定める請求項７記載の方法。
【請求項１０】
前記調整することは、
入力された複数の第１ストロークをメモリに記憶することと、
入力された第２ストロークに類似する第１ストロークを前記メモリから読み出し、既に表示されているストロークに続けて表示することと、
表示される前記第１ストロークに対応する文字または文字列を、既に表示されている文字あるいは文字列と同じサイズとなるようにサイズ調整することと、
を具備し、
前記定めることは、サイズ調整後の第１ストロークに対応する文字または文字列の表示位置を前記ベースラインあるいはディセンダラインに応じて定めることを具備する請求項７記載の方法。
【請求項１１】
コンピュータにより実行されるプログラムであって、前記プログラムは、ディスプレイ上で入力されたストロークを前記ディスプレイ上で表示するプログラムであって、前記プログラムは前記コンピュータに、
入力された複数のストロークに対応する文字の種類を判定することと、
その文字の種類に応じて、前記入力された複数のストロークに対応する文字の表示サイズを調整することと、
サイズ調整後の文字の表示位置を書体の基準ラインに応じて定めることと、
を実行させるためプログラム。
【請求項１２】
入力された複数のストロークに対応する文字の種類がアルファベットである場合、前記文字の種類は、大文字、小文字の区別と、アセンダ、ディセンダの有無の少なくとも1つを用いて判定され、
前記基準ラインは、アセンダライン、キャップライン、ミーンライン、ベースライン、ディセンダラインの少なくとも1つを具備する請求項１１記載のプログラム。
【請求項１３】
前記調整することは、文字の種類が大文字の場合、高さがキャップハイトとなるように、文字の種類がアセンダ付き小文字の場合、高さがｘハイト＋アセンダとなるように、文字の種類がディセンダ付き小文字の場合、高さがｘハイト＋ディセンダとなるように文字の高さを調整する請求項１２記載のプログラム。
【請求項１４】
前記調整することは、最初に入力された文字の種類に応じて前記基準ラインの位置を決め、２番目以降に入力された文字の高さを文字の種類に応じた基準ライン間の高さに合わせて調整することを具備し、
前記定めることは、サイズ調整後の文字の表示位置を前記ベースラインあるいはディセンダラインに応じて定める請求項１２記載のプログラム。
【請求項１５】
前記調整することは、
入力された複数の第１ストロークをメモリに記憶することと、
入力された第２ストロークに類似する第１ストロークを前記メモリから読み出し、既に表示されているストロークに続けて表示することと、
表示される前記第１ストロークに対応する文字または文字列を、既に表示されている文字あるいは文字列と同じサイズとなるようにサイズ調整することと、
を具備し、
前記定めることは、サイズ調整後の第１ストロークに対応する文字または文字列の表示位置を前記ベースラインあるいはディセンダラインに応じて定めることを具備する請求項１２記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は文字を手書き入力する技術に関する。
【背景技術】
【０００２】
近年、タブレット、ＰＤＡ、スマートフォンといった種々の電子機器が開発されている。従来の電子機器では、文字やコマンドの入力はキーボード、マウス等により文字やコマンドを表すコードを入力することにより行なわれている。近年の電子機器では、この入力を容易にするために、タッチスクリーンディスプレイを備える。画面上で手書き、あるいは画面にタッチすることにより、文字、図形、コマンド等を入力することができるようになっている。【０００３】
手書き入力の際には、画面に罫線が表示され、それに合わせて文字が手書きされる。手書き文字は、文字認識されてテキストとして表示してもよいが、そのまま図形として表示することも多い。文字書体、特にアルファベットは、幾つかの水平線に沿ってデザインされており、文字の種類に応じて縦方向の表示位置と、縦方向のサイズ（高さ）が異なる。例えば、“ｙ”等のようにディセンダを含む小文字の上端と“ｘ”等のようにアセンダ、ディセンダを含まない小文字の上端は同じであるが、ディセンダを含む小文字の下端はアセンダ、ディセンダを含まない小文字の下端より下である。しかし、各文字の表示位置とサイズに注意を払わないで手書きした文字をそのまま表示すると、文字の表示位置や高さが不揃いで見映えが悪いことがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2006-277224号公報
【特許文献２】特開2013-182512号公報
【特許文献３】特開2005-25566号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の電子機器は、手書き入力した文字の表示に際し、文字の位置や高さが不揃いで見映えが悪い場合がある。【０００６】
本発明の目的は手書き文字の位置や高さを揃えて表示する電子機器、方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００７】
実施形態によれば、電子機器は、ディスプレイと、ディスプレイ上で入力されたストロークを前記ディスプレイ上で表示するための表示制御手段と、入力された複数のストロークに対応する文字の種類を判定し、その文字の種類に応じて、入力された複数のストロークに対応する文字の表示サイズを調整し、サイズ調整後の文字の表示位置を書体の基準ラインに応じて定める処理手段とを具備する。
【図面の簡単な説明】
【０００８】
【図１】図１は実施形態に係る電子機器の外観を示す例示的な斜視図である。
【図２】図２は電子機器と他の装置との連携動作を示す例示的なブロック図である。
【図３】図３はタッチスクリーンディスプレイに手書きされる手書き文書の一例を示す図である。
【図４】図４はストロークデータの集合である時系列情報の一例を示す図である。
【図５】図５は電子機器のシステム構成を示す例示的なブロック図である。
【図６】図６は電子機器によって実行される手書きノートアプリケーションプログラムの機能構成を示す例示的なブロック図である。
【図７】図７は欧文書体のデザインを定義する各種のラインを示す例示的な図である。
【図８】図８は実施形態の手書き入力処理を示す例示的なフローチャートである。
【図９】図９は図８のフローチャートの文字種類の判別を示す例示的なフローチャートである。
【図１０Ａ】図１０Ａは入力予測機能を利用する手書き入力処理の際のタッチスクリーンディスプレイの画面遷移を例示的に示す図である。
【図１０Ｂ】図１０Ｂは図１０Ａの手書き文字の認識、種類判別処理を例示的に示す図である。
【図１１Ａ】図１１Ａは入力予測機能を利用する手書き入力処理の際のタッチスクリーンディスプレイの画面遷移を例示的に示す図である。
【図１１Ｂ】図１１Ｂは図１１Ａの手書き文字の認識、種類判別処理を例示的に示す図である。
【図１２Ａ】図１２Ａは入力予測機能を利用する手書き入力処理の際のタッチスクリーンディスプレイの画面遷移を例示的に示す図である。
【図１２Ｂ】図１２Ｂは図１２Ａの手書き文字の認識、種類判別処理を例示的に示す図である。
【図１３Ａ】図１３Ａは入力予測機能を利用する手書き入力処理の際のタッチスクリーンディスプレイの画面遷移を例示的に示す図である。
【図１３Ｂ】図１３Ｂは図１３Ａの手書き文字の認識、種類判別処理を例示的に示す図である。
【図１４】図１４は実施形態の表示サイズ／位置調整の概要を例示的に示す図である。
【図１５】図１５は位置調整をしない表示サイズ調整の概要を例示的に示す図である。
【図１６】図１６は第２実施形態の電子機器によって実行される手書きノートアプリケーションプログラムの機能構成を示す例示的なブロック図である。
【図１７】図１７は第２実施形態の手書き入力処理を示す例示的なフローチャートである。
【図１８】図１８は第２実施形態の表示サイズ／位置調整の概要を例示的に示す図である。
【発明を実施するための形態】
【０００９】
以下、実施形態について図面を参照して説明する。
【００１０】
図１は、実施形態に係る電子機器の外観の一例を示す斜視図である。電子機器は、例えば、ペンまたは指によって手書き入力可能なペン・ベースの携帯型電子機器である。電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン、ＰＤＡ等として実現され得る。ここでは、この電子機器がタブレットコンピュータ１０として実現されている場合を説明する。タブレットコンピュータ１０は、タブレットまたはストレートコンピュータとも称される携帯型電子機器である。本体１１は、薄い箱形の筐体を有している。
【００１１】
本体１１の上面にタッチスクリーンディスプレイ１７が重ね合わされるように取り付けられている。タッチスクリーンディスプレイ１７は、フラットパネルディスプレイと、フラットパネルディスプレイの画面上のペンまたは指の接触位置を検出するように構成されたセンサとを含む。フラットパネルディスプレイは、例えば、液晶表示装置（ＬＣＤ）であってもよい。センサとしては、例えば、静電容量方式のタッチパネル、電磁誘導方式のデジタイザなどを使用することができる。以下では、デジタイザとタッチパネルの２種類のセンサの双方がタッチスクリーンディスプレイ１７に組み込まれている場合を説明する。このため、タッチスクリーンディスプレイ１７は、指を使用した画面に対するタッチ操作のみならず、ペン１００を使用した画面に対するタッチ操作も検出することもできる。
【００１２】
ペン１００は例えばデジタイザペン（電磁誘導ペン）であってもよい。ユーザは、ペン１００を使用してタッチスクリーンディスプレイ１７上で手書き入力操作を行うことができる（ペン入力モード）。ペン入力モードにおいては、画面上のペン１００の動きの軌跡、つまり手書き入力操作によって手書きされるストロークが求められ、これに基づいて手書き入力された複数の文字が画面上に表示される。ペン１００が画面に接触されている期間のペン１００の動きの軌跡が１つのストロークに相当する。複数のストロークが文字、記号等を構成する。手書きされた文字、手書きされた図形、手書きされた表、などに対応する多数のストロークの集合が手書き文書を構成する。
【００１３】
実施形態では、手書き文書は、イメージデータではなく、各ストロークを構成する座標列と、ストローク間の順序関係（手書きされた順番）とを示す時系列情報（手書き文書データ）として記憶媒体に保存される。時系列情報は、複数のストロークにそれぞれ対応する時系列のストロークデータの集合を意味する。各ストロークデータは、ある一つのストロークに対応し、このストローク上の点それぞれに対応する座標データ系列（時系列座標）を含む。これらストロークデータの並びの順序は、ストロークそれぞれが手書きされた順序に相当する。
【００１４】
タブレットコンピュータ１０は、記憶媒体から既存の任意の時系列情報を読み出し、この時系列情報に対応する手書き文書、つまりこの時系列情報によって示される複数のストロークを画面上に表示することができる。時系列情報によって示される複数のストロークも、手書きによって入力される複数のストロークである。
【００１５】
さらに、本実施形態のタブレットコンピュータ１０は、ペン１００を使用せずに、指で手書き入力操作を行うためのタッチ入力モードも有している。タッチ入力モードが有効な場合、ユーザは、指を使用してタッチスクリーンディスプレイ１７上で手書き入力操作を行うことができる。タッチ入力モードにおいては、画面上の指の動きの軌跡、つまり手書き入力操作によって手書きされるストロークが求められ、これによって手書きにより入力された複数のストロークが画面上に表示される。
【００１６】
タブレットコンピュータ１０は編集機能を有している。この編集機能は、消しゴムツール、範囲選択ツール、および他の各種ツール等を用いたユーザによる編集操作に応じて、範囲選択ツールによって選択される表示中の手書き文書内の任意の手書き部分（手書き文字、手書きマーク、手書き図形、手書き表、等）を削除または移動することができる。また、範囲選択ツールによって選択される手書き文書内の任意の手書き部分を、手書き文書を検索するための検索キーとして指定することもできる。また、範囲選択ツールによって選択される手書き文書内の任意の手書き部分に対して、手書き文字認識／手書き図形認識／手書き表認識のような認識処理を実行することもできる。
【００１７】
本実施形態では、手書き文書は、１つまたは複数のページとして管理されうる。この場合、時系列情報（手書き文書データ）を１つの画面に収まる面積単位で区切ることによって、１つの画面に収まる時系列情報のまとまりを１つのページとして記録してもよい。あるいは、ページのサイズを可変できるようにしてもよい。この場合、ページのサイズは１つの画面のサイズよりも大きい面積に広げることができるので、画面のサイズよりも大きな面積の手書き文書を一つのページとして扱うことができる。１つのページ全体をディスプレイに同時に表示できない場合、そのページを縮小してするようにしてもよいし、縦横スクロールによってページ内の表示対象部分を移動するようにしてもよい。
【００１８】
図２は、タブレットコンピュータ１０と外部装置との連携動作の一例を示している。タブレットコンピュータ１０は、無線ＬＡＮなどの無線通信デバイスを備えており、パーソナルコンピュータ１との無線通信を実行することができる。タブレットコンピュータ１０は、無線通信デバイスを使用してインターネット３上のサーバ２との通信を実行することもできる。サーバ２はオンラインストレージサービス、他の各種クラウドコンピューティングサービスを実行するサーバであってもよい。
【００１９】
パーソナルコンピュータ１はハードディスクドライブ（ＨＤＤ）のようなストレージデバイスを備えている。タブレットコンピュータ１０は、時系列情報（手書き文書データ）をパーソナルコンピュータ１に送信して、パーソナルコンピュータ１のＨＤＤに記録することができる（アップロード）。タブレットコンピュータ１０とパーソナルコンピュータ１との間のセキュアな通信を確保するために、通信開始時には、パーソナルコンピュータ１がタブレットコンピュータ１０を認証するようにしてもよい。この場合、タブレットコンピュータ１０の画面上にユーザに対してＩＤまたはパスワードの入力を促すダイアログを表示してもよいし、タブレットコンピュータ１０のＩＤなどを自動的にタブレットコンピュータ１０からパーソナルコンピュータ１に送信してもよい。
【００２０】
これにより、タブレットコンピュータ１０内のストレージの容量が少ない場合でも、タブレットコンピュータ１０が多数の時系列情報あるいは大容量の時系列情報を扱うことが可能となる。
【００２１】
さらに、タブレットコンピュータ１０は、パーソナルコンピュータ１のＨＤＤに記録されている任意の１以上の時系列情報を読み出し（ダウンロード）、その読み出した時系列情報によって示されるストロークをタブレットコンピュータ１０のディスプレイ１７の画面に表示することができる。この場合、複数の時系列情報それぞれのページを縮小することによって得られるサムネイルの一覧をディスプレイ１７の画面上に表示してもよいし、これらサムネイルから選ばれた１ページをディスプレイ１７の画面上に通常サイズで表示してもよい。
【００２２】
さらに、タブレットコンピュータ１０が通信する先はパーソナルコンピュータ１ではなく、上述したように、ストレージサービスなどを提供するクラウド上のサーバ２であってよい。タブレットコンピュータ１０は、時系列情報（手書き文書データ）をインターネットを介してサーバ２に送信して、サーバ２のストレージデバイス２Ａに記録することができる（アップロード）。さらに、タブレットコンピュータ１０は、サーバ２のストレージデバイス２Ａに記録されている任意の時系列情報を読み出して（ダウンロード）、その時系列情報によって示されるストロークをタブレットコンピュータ１０のディスプレイ１７の画面に表示することができる。
【００２３】
このように、本実施形態では、時系列情報が保存される記憶媒体は、タブレットコンピュータ１０内のストレージデバイス、パーソナルコンピュータ１内のストレージデバイス、サーバ２のストレージデバイスのいずれであってもよい。
【００２４】
次に、図３及び図４を参照して、ユーザによって手書きされたストローク（手書きの文字、マーク、図形、表など）と時系列情報との関係について説明する。図３は、ペン１００などを使用してタッチスクリーンディスプレイ１７上に手書きされる文書の例を示している。
【００２５】
一般的に、文書では、一旦手書きされた文字や図形などの上に、さらに別の文字や図形などが手書きされるというケースが多い。図３においては、文字”ａ”、“Ｂ”、“Ｃ”がこの順番で手書きされ、この後に、矢印が、手書き文字”ａ”のすぐ近くに手書きされた場合が想定されている。
【００２６】
手書き文字”ａ”は、ペン１００などを使用して手書きされる２つのストローク（“∧”形状の軌跡、“−”形状の軌跡）、つまり２つの軌跡によって表現される。最初に手書きされる“∧”形状のペン１００の軌跡は例えば等時間間隔でリアルタイムにサンプリングされ、これによって“∧”形状のストロークの時系列座標ＳＤ１１、ＳＤ１２、…ＳＤ１ｎが得られる。同様に、次に手書きされる“−”形状のペン１００の軌跡もサンプリングされ、これによって“−”形状のストロークの時系列座標ＳＤ２１、ＳＤ２２、…ＳＤ２ｎが得られる。
【００２７】
手書き文字“Ｂ”は、ペン１００などを使用して手書きされた２つのストローク、つまり２つの軌跡によって表現される。手書き文字“Ｃ”は、ペン１００などを使用して手書きされた１つのストローク、つまり１つの軌跡によって表現される。手書きの矢印は、ペン１００などを使用して手書きされた２つのストローク、つまり２つの軌跡によって表現される。
【００２８】
図４は、図３の文書に対応する時系列情報２００を示している。時系列情報２００は、複数のストロークデータＳＤ１、ＳＤ２、…、ＳＤ７を含む。時系列情報２００内においては、これらストロークデータＳＤ１、ＳＤ２、…、ＳＤ７は、筆跡順に、つまり複数のストロークが手書きされた順に時系列に並べられている。
【００２９】
時系列情報２００において、先頭の２つのストロークデータＳＤ１、ＳＤ２は、手書き文字”ａ”の２つのストロークをそれぞれ示している。３番目と４番目のストロークデータＳＤ３、ＳＤ４は、手書き文字“Ｂ”を構成する２つのストロークをそれぞれ示している。５番目のストロークデータＳＤ５は、手書き文字“Ｃ”を構成する１つのストロークを示している。６番目と７番目のストロークデータＳＤ６、ＳＤ７は、手書き矢印を構成する２つのストロークをそれぞれ示している。
【００３０】
各ストロークデータは、一つのストロークに対応する座標データ系列（時系列座標）、つまり一つのストローク上の複数の点それぞれに対応する複数の座標を含む。各ストロークデータにおいて、複数の座標は、ストロークが書かれた順に時系列に並べられている。例えば、手書き文字”ａ”に関しては、ストロークデータＳＤ１は、手書き文字”ａ”の“∧”形状のストローク上の点それぞれに対応する座標データ系列（時系列座標）、つまりｎ個の座標データＳＤ１１、ＳＤ１２、…ＳＤ１ｎを含む。ストロークデータＳＤ２は、手書き文字”ａ”の“−”形状のストローク上の点それぞれに対応する座標データ系列、つまりｎ個の座標データＳＤ２１、ＳＤ２２、…ＳＤ２ｎを含む。なお、座標データの数はストロークデータ毎に異なっていてもよい。
【００３１】
各座標データは、ストロークのある１点に対応するＸ座標及びＹ座標を示す。例えば、座標データＳＤ１１は、“∧”形状のストロークの始点のＸ座標“Ｘ１１”及びＹ座標“Ｙ１１”を示す。ＳＤ１ｎは、“∧”形状のストロークの終点のＸ座標“Ｘ１ｎ”及びＹ座標“Ｙ１ｎ”を示す。
【００３２】
また、各座標データは、その座標に対応する点が手書きされた時点に対応するタイムスタンプ情報Ｔを含んでいてもよい。手書きされた時点は、絶対時間（例えば、年月日時分秒）と、ある時点を基準とした相対時間のいずれであってもよい。例えば、各ストロークデータに、ストロークが書き始められた絶対時間（例えば、年月日時分秒）をタイムスタンプ情報として付加し、さらに、ストロークデータ内の各座標データに、絶対時間との差分を示す相対時間をタイムスタンプ情報Ｔとして付加してもよい。各座標データにタイムスタンプ情報Ｔが追加された時系列情報を使用することにより、ストローク間の時間的関係をより精度よく表すことができる。
【００３３】
さらに、各座標データは、その座標に対応する点が手書きされた時点の、外部オブジェクト（例えば、ペン１００）が画面に接触されたことによる圧力Ｐを含んでいてもよい。
【００３４】
本実施形態では、上述したように、手書きされるストロークは、イメージや文字認識結果ではなく、時系列のストロークデータの集合から構成される時系列情報２００として記憶されるので、言語に依存せずに手書きの文字や図形を扱うことができる。よって、本実施形態の時系列情報２００の構造は、使用言語が異なる世界中の様々な国で共通に使用できる。
【００３５】
図５は、タブレットコンピュータ１０のシステム構成を示す図である。  
タブレットコンピュータ１０は、ＣＰＵ１０１、システムコントローラ１０２、主メモリ１０３、グラフィクスコントローラ１０４、ＢＩＯＳ−ＲＯＭ１０５、不揮発性メモリ１０６、無線通信デバイス１０７、エンベデッドコントローラ（ＥＣ）１０８等を備える。
【００３６】
ＣＰＵ１０１は、タブレットコンピュータ１０内の各種コンポーネントの動作を制御するプロセッサである。ＣＰＵ１０１は、ストレージデバイスである不揮発性メモリ１０６から主メモリ１０３にロードされる各種ソフトウェアを実行する。これらソフトウェアには、オペレーティングシステム（ＯＳ）２０１、及び各種アプリケーションプログラムが含まれている。アプリケーションプログラムには、手書きノートアプリケーションプログラム２０２が含まれている。この手書きノートアプリケーションプログラム２０２は、上述した手書きされたストロークから時系列情報を生成する機能に加えて、表示する手書き文字のサイズ／位置（水平方向の行における垂直方向の高さ）を調整するサイズ／位置調整機能、手書き入力された１以上のストロークに基づいて、入力が予測される文字列の候補を示唆（表示）する入力予測機能も有する。手書きノートアプリケーションプログラム２０２は、この入力予測機能によって、例えば、入力途中で候補を選択することにより、入力途中の文字列を補完することができる。
【００３７】
ＣＰＵ１０１は、ＢＩＯＳ−ＲＯＭ１０５に格納された基本入出力システム（ＢＩＯＳ）も実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００３８】
システムコントローラ１０２は、ＣＰＵ１０１のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ１０２には、主メモリ１０３をアクセス制御するメモリコントローラも内蔵されている。システムコントローラ１０２は、ＰＣＩ  ＥＸＰＲＥＳＳ規格のシリアルバスなどを介してグラフィクスコントローラ１０４との通信を実行する機能も有している。
【００３９】
グラフィクスコントローラ１０４は、タブレットコンピュータ１０のディスプレイモニタとして使用されるＬＣＤ１７Ａを制御する表示コントローラである。グラフィクスコントローラ１０４によって生成される表示信号はＬＣＤ１７Ａに送られる。ＬＣＤ１７Ａは、表示信号に基づいて画面イメージを表示する。ＬＣＤ１７Ａ上にはタッチパネル１７Ｂ及びデジタイザ１７Ｃが配置されている。タッチパネル１７Ｂは、ＬＣＤ１７Ａの画面上で入力を行うための静電容量式のポインティングデバイスである。指が接触される画面上の接触位置及び接触位置の動き等はタッチパネル１７Ｂによって検出される。デジタイザ１７ＣはＬＣＤ１７Ａの画面上で入力を行うための電磁誘導式のポインティングデバイスである。ペン１００が接触される画面上の接触位置、接触位置の動き、接触圧力等はデジタイザ１７Ｃによって検出される。
【００４０】
無線通信デバイス１０７は、無線ＬＡＮ又は３Ｇ移動通信などの無線通信を実行するように構成されたデバイスである。ＥＣ１０８は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。ＥＣ１０８は、ユーザによるパワーボタンの操作に応じて本タブレットコンピュータ１０を電源オン又は電源オフする機能を有している。
【００４１】
次に、図６を参照して、手書きノートアプリケーションプログラム２０２の機能構成について説明する。手書きノートアプリケーションプログラム２０２は、手書き文書データを扱うことが可能なＷＹＳＩＷＹＧアプリケーションである。この手書きノートアプリケーションプログラム２０２は、例えば、ペン軌跡表示処理部３０１、時系列情報生成部３０２、編集処理部３０３、ページ保存処理部３０４、ページ取得処理部３０５、手書き文書表示処理部３０６、および入力予測処理部３０８等を備える。
【００４２】
手書きノートアプリケーションプログラム２０２は、タッチスクリーンディスプレイ１７を用いて入力されるストロークデータを使用することによって、手書き文書（手書きデータ）の作成、表示、編集等を行う。タッチスクリーンディスプレイ１７は、タッチ、移動（スライド）、リリース等のイベントの発生を検出するように構成されている。タッチは、画面上に外部オブジェクトが接触したことを示すイベントである。移動（スライド）は、画面上に外部オブジェクトが接触されている間に接触位置が移動されたことを示すイベントである。リリースは、画面から外部オブジェクトが離されたことを示すイベントである。
【００４３】
ペン軌跡表示処理部３０１および時系列情報生成部３０２は、タッチスクリーンディスプレイ１７によって発生されるタッチまたは移動（スライド）のイベントを受信し、これによって手書き入力操作を検出する。タッチイベントには、接触位置の座標が含まれている。移動（スライド）イベントにも、移動先の接触位置の座標が含まれている。したがって、ペン軌跡表示処理部３０１および時系列情報生成部３０２は、タッチスクリーンディスプレイ１７から、接触位置の動きの軌跡、すなわちストロークに対応する座標列を受信することができる。
【００４４】
ペン軌跡表示処理部３０１は、手書きによって入力されるストロークをタッチスクリーンディスプレイ１７の画面上に表示するように構成された表示処理部として機能する。ペン軌跡表示処理部３０１は、タッチスクリーンディスプレイ１７から座標列を受信する。この座標列に基づいて、ペン軌跡表示処理部３０１は、ペン１００等を使用した手書き入力操作によって入力される複数のストロークをタッチスクリーンディスプレイ１７内のＬＣＤ１７Ａの画面上に表示する。
【００４５】
時系列情報生成部３０２は、タッチスクリーンディスプレイ１７から出力される上述の座標列を受信する。この座標列に基づいて、時系列情報生成部３０２は、上述の複数のストロークに対応する複数のストロークデータ（時系列情報）を生成する。これらストロークデータ、つまり各ストロークの各点に対応する座標は作業メモリ４０１に一時保存してもよい。
【００４６】
ページ保存処理部３０４は、複数のストロークに対応する複数のストロークデータを含む手書き文書情報を記憶媒体４０２内の手書きノートデータベース４０２Ａに保存する。記憶媒体４０２は、上述したように、タブレットコンピュータ１０内のストレージデバイス、パーソナルコンピュータ１内のストレージデバイス、サーバ２のストレージデバイスのいずれであってもよい。
【００４７】
ページ取得処理部３０５は、記憶媒体４０２から任意の手書き文書情報を読み出す。読み出された手書き文書情報は手書き文書表示処理部３０６に送られる。手書き文書表示処理部３０６は、手書き文書情報を解析し、この解析結果に基づいて、手書き文書情報内の複数のストロークデータによって示される複数のストロークの軌跡を画面上に手書きページとして表示する。
【００４８】
編集処理部３０３は現在表示中の手書き文書（手書きページ）を編集するための処理を実行する。すなわち、編集処理部３０３は、タッチスクリーンディスプレイ１７上でユーザによって行われる編集操作に応じて、表示されている複数のストローク内の１以上のストロークを削除または移動等するための編集処理を実行する。さらに、編集処理部３０３は、編集処理の結果を表示中の手書き文書に反映するためにこの手書き文書を更新する。
【００４９】
ユーザは、消しゴムツール等を使用して、表示されている複数のストローク内の任意のストロークを削除することができる。また、ユーザは、画面上の任意の部分を丸または四角によって囲むための範囲指定ツールを使用して、表示されている手書きページ内の任意の部分を範囲指定することができる。
【００５０】
入力予測処理部３０８は、過去に入力され手書きノートデータベース４０２Ａに保存されている時系列情報２００（手書き文書情報）から、手書きによって入力される１以上のストロークに対応するストローク群を取得する。入力予測処理部３０８は、取得されたストローク群を、手書き入力を補完するストローク候補として画面上に表示することによって、この取得されたストローク群をユーザに推薦する。換言すれば、入力予測処理部３０８は、入力される１以上のストロークと記憶されている手書き文書情報とに基づいて、ユーザが手書きしようとしているストローク群（例えば、手書き文字列、手書き図形、等）を予測する。この予測は、文字の手書き入力時のみならず、検索キーワードを手書き入力する際に実施しても良い。
【００５１】
入力予測処理部３０８は、予測によって得られるストローク群を画面上に推薦ストローク候補として表示するための処理を実行する。取得する候補の数と、画面に一度に表示する候補の数は一致しても良いし、取得する候補の数が一度に表示できる候補の数より多くても良い。あるいは、取得するストローク群に対して、手書きによって入力される１以上のストロークに対応する程度を示す順位を付与して、画面に一度に表示できる数の上位のストローク群を候補と見なし、それ以下の順位のストローク群は取得されても候補と見なさなくてもよい。
【００５２】
単数の候補を取得し、単数の候補を表示する場合、取得されたストロークデータに対応するストロークが、入力されたストロークに続けて表示される。例えば、ストローク“ａ”が手書きによって入力された場合には、ストローク“ａ”から始まる過去に入力されたストローク群、例えば手書きの語“ａｃｃｅｓｓ”が、ストローク候補として表示される。もしユーザによってストローク候補“ａｃｃｅｓｓ”を入力ストロークとして採用する操作、例えば、ストローク候補“ａｃｃｅｓｓ”に後続する位置に新たなストロークを手書きによって入力する操作など、が行われた場合には、ストローク候補“ａｃｃｅｓｓ”が入力ストロークとして採用されて、手書き途中のストロークが入力ストロークにより補完される。これにより、ユーザは必ずしも全画数手書きする必要がなく、多くのストロークを手書きによって容易に入力できる。
【００５３】
ユーザが入力したいストロークがストローク候補“ａｃｃｅｓｓ”ではない場合、ストローク候補の表示を無視して、入力したいストロークを書き続ければよい。すなわち、ストローク候補“ａｃｃｅｓｓ”の２番目の文字“ｃ”の上に、２番目のストローク、例えば“ｐ”を書く。これにより、ストローク“ａ”、“ｐ”で始まるストローク群が取得され、表示される。
【００５４】
推薦されるストローク候補は、手書きの語に限らず、手書きのフレーズであってもよい。例えば、ストローク“Ｊ”が手書きによって入力された場合には、過去に入力された手書き文字列“Ｊａｎｕａｒｙ  １３，２０１４”のフレーズが、ストローク候補として表示されてもよい。
【００５５】
このため、候補取得部３０８Ａは、手書きノートデータベース４０２Ａに保存される手書き文書情報の形態素解析をバックグラウンド処理で行い、手書き文書を構成するストローク集合に対して文字認識処理を実行して、手書き文書を構成する全てのストロークを形態素、単語、文節等に分類している。候補はこの分類の単位から選ばれる。
【００５６】
複数の候補を取得し、取得した複数の候補を同時に表示する場合、画面上に同時に表示できるストローク候補の数は限りがあるので、３〜５程度のストローク候補を取得し、一覧を表示することが多い。例えば、ストローク“ａ”が手書きによって入力された場合、手書きの語“ａｐｐｌｅ”、“ａｒｅａ”、“ａｕｇｕｓｔ”等が候補として提示され、次いでストローク“ｐ”が手書きによって入力された場合、手書きの語“ａｐｐｌｅ”、“ａｐｒｉｌ”、“ａｐｐｌｉｃａｔｉｏｎ”等が候補として提示される。候補の中にユーザが入力する予定のストロークが含まれている場合、その候補を、タップ等により、選ぶと、手書き入力済みストロークが、選択された候補により置き換えられて表示され、手書き入力が完了する。あるいは、置き換えではなく、手書き入力済みストロークはそのまま残し、それ以降の部分が付け足されても良い。両者を合わせて手書き入力ストロークの補完と称する。これにより、ユーザは必ずしも全画数手書きする必要がなく、多くのストロークを手書きによって容易に入力できる。なお、表示可能な行数より少ない数のストローク候補しか求められなかった場合、一覧表示に空白行ができる。
【００５７】
手書きによって入力された１以上のストロークを含むストロークデータ群を手書きノートデータベース４０２Ａから容易に取得できるようにするために、入力予測処理部３０８は、手書きノートデータベース４０２Ａに格納されているストロークの集合（手書き文書情報）に基づいて、ストローク候補データベース４０２Ｂを作成しても良い。ストローク候補データベース４０２Ｂは、複数種の文字列にそれぞれ対応する複数のエントリを備えていてもよい。各エントリは、エントリの文字列に対応するストロークデータ群を格納していてもよい。
【００５８】
入力予測処理部３０８は、まず、ユーザによって入力された１以上のストロークを文字認識してもよい。そして、入力予測処理部３０８は、ストローク候補データベース４０２Ｂを参照し、入力された１以上のストロークの文字認識結果（文字列）に前方一致する文字列を見つけ出す。入力予測処理部３０８は、見つけ出した文字列に対応するストロークデータ群を、入力された１以上のストロークに対応するストロークデータ群としてストローク候補データベース４０２Ｂから取得する。あるいは、ストローク候補データベース４０２Ｂの各エントリは、エントリの文字列に対応するストロークデータ群と、ストロークデータ群内の各ストロークの特徴量とを格納していてもよい。あるストロークの特徴量としては、ストロークの手書き特徴を表すことができる任意の特徴を使用することができる。例えば、特徴量としては、ストロークの形状、ストロークの筆画方向、ストロークの傾斜、等を表す特徴量データを使用しても良い。この場合、入力予測処理部３０８は、入力された１以上のストロークの特徴量に類似する特徴量を有するストロークデータ群をストローク候補データベース４０２Ｂから取得してもよい。
【００５９】
入力予測処理部３０８は、候補取得部３０８Ａ、サイズ／位置調整部３０８Ｂ、候補提示部３０８Ｃを備える。候補取得部３０８Ａは、ストローク候補データベース４０２Ｂを参照して、入力された１以上のストロークに対応するストロークデータ群（ストローク候補）を取得する。候補提示部３０８Ｃは、取得されたストロークデータ群をストローク候補として画面上に表示して、ユーザに推薦する。表示されている１以上のストローク候補の一つがユーザによって選択された場合、選択されたストローク候補が入力ストロークとして採用され、手書き途中のストロークがストローク候補により補完される。サイズ／位置調整部３０８Ｂは、手書き入力途中のストロークを補完するストローク候補を表示する際、ストローク候補の表示サイズ／位置を調整する。
【００６０】
図７は、アルファベットの書体を説明する。アルファベットの書体は、高さを揃える基準としてのアッセンダライン、キャップライン、ミーンライン（あるいはｘハイトライン）、ベースライン、ディセンダラインにより定義される。ベースラインは全ての大文字と、アッセンダが無い小文字の下端を揃えるための仮想の線である。アッセンダラインは、“ｆ”、“ｈ”、“ｌ”等のアッセンダが有る小文字の上端を揃えるための仮想の線である。キャップラインは、全ての大文字の上端を揃えるための仮想の線である。ミーンラインは“ｘ”、“ｃ”等のアッセンダが無い小文字の上端を揃えるための仮想の線である。ディセンダラインは、“ｇ”、“ｊ”、“ｐ”、“ｑ”、“ｙ”等のディセンダが有る小文字の下端を揃えるための仮想の線である。各ラインの間隔（相対的な比率）は決まっているので、いずれか１つのラインが決まれば、他のラインは罫線の間隔と、相対的な比率から求められる。
【００６１】
手書きの際は、一定間隔の水平な罫線あるいは一定間隔の格子が画面に引かれ、上下の罫線間に文字が手書きされる。アッセンダラインは上側の罫線より多少下側に、ディセンダラインは下側の罫線より多少上側に定義される。
【００６２】
アッセンダ、ディセンダが無い小文字の高さはｘハイトである。大文字の高さはキャップハイトである。ディセンダがある大文字の高さはキャップハイト＋ディセンダである。アッセンダが有る小文字の高さはｘハイト＋アッセンダである。デッセンダが有る小文字の高さはｘハイト＋デッセンダである。図７は英語のアルファベットを示すが、英語以外のアルファベットでは、アッセンダ、ディセンダがともに有る小文字もあり、その高さはｘハイト＋アッセンダ＋デッセンダである。非アルファベットの高さは罫線の間隔である。
【００６３】
図８は手書き入力処理を示すフローチャートである。ペン１００あるいは指で手書き入力操作が行われると、ペン軌跡表示処理部３０１は、軌跡に対応するストロークデータを生成し、ストロークを表示する（ブロック８０２、８０４）。時系列情報生成部３０２は、手書き入力操作による軌跡に対応する座標列に基づいて時系列情報（時系列順に並べられたストロークデータ）を生成し、その時系列情報を作業メモリ４０１に一時保存する（ブロック８０６）。
【００６４】
候補取得部３０８Ａは、時系列情報生成部３０２から、１ストロークに対応するストロークデータを受け取ると、１ストロークの入力が完了したことを検出し、ストロークデータを用いて特徴量を算出する（ブロック８０８）。候補提示部３０８Ｃは、算出された特徴量（第１特徴量）と、ストローク候補データベース４０２Ｂ内の各ストローク候補に対応する特徴量（第２特徴量）とを用いて、ストローク候補を決定し、表示する（ブロック８１０）。具体的には、入力ストロークが入力途中の文字列（文字）を構成するストロークである場合、候補提示部３０８Ｃは、算出された特徴量を含む、入力途中の文字列の文字を構成する１以上の手書きストロークに対応する特徴量（第１特徴量）と、ストローク候補データベース４０２Ｂ内の各ストローク候補に対応する特徴量（第２特徴量）とを用いて、各ストローク候補の入力ストロークに対する類似度を算出する。また、入力ストロークが文字列を構成する先頭のストロークである場合、候補提示部３０８Ｃは、算出された特徴量（第１特徴量）と、ストローク候補データベース４０２Ｂ内のストローク候補に対応する特徴量（第２特徴量）とを用いて、各ストローク候補の入力ストロークに対する類似度を算出する。候補提示部３０８Ｃは類似度の高い所定数のストローク候補を類似度の高い順に表示する。
【００６５】
ブロック８１４で、入力予測処理部３０８は、表示されたストローク候補の内の１つが選択されたか否かを判定する。表示されたストローク候補がいずれも選択されない場合、ブロック８０２に戻り、入力される手書き文字列（ストローク）に応じたストローク候補を表示するための上述の処理が続けられる。
【００６６】
表示されたストローク候補の内の１つが選択された場合、ブロック８１６で、サイズ／位置調整部３０８Ｂは選択されたストローク候補を文字認識する。サイズ／位置調整部３０８Ｂは、ブロック８１８で、認識結果の文字列から１文字を取得し、ブロック８２０で文字種類または属性を判別する。
【００６７】
文字種類の判別の詳細を図９に示す。ブロック８５２で、文字種類がアルファベットであるか否かが判定される。否の場合（日本語文字等の場合）、ブロック８５４で、非アルファベットフラグがオンとされる。日本語文字等は、図７のような複数の高さ基準が無く、全ての文字が同じサイズ／高さであるので、一つの端部、例えば下端をある基準線に合わせるだけで、全ての文字の位置を揃えることができる。
【００６８】
文字種類がアルファベットである場合、ブロック８５６で、文字種類が大文字であるか否かが判別される。図７に示す“Ｉ”のような大文字の場合、ブロック８５７で、文字種類がディセンダを有する大文字であるか否かが判別される。ディセンダを有しない大文字の場合、ブロック８５８で、キャップハイトフラグがオンとされ、文字種類判別処理は終了する。キャップハイトフラグがオンの文字の高さはキャップハイトである。ディセンダを有する大文字の場合、ブロック８５９で、キャップハイト＆ディセンダフラグがオンとされ、文字種類判別処理は終了する。キャップハイト＆ディセンダフラグがオンの文字の高さはキャップハイト＋ディセンダである。
【００６９】
文字種類が大文字ではない場合、ブロック８６０で、文字種類がアセンダとディセンダとを有する小文字であるか否かが判別される。アセンダとディセンダとを有する小文字の場合、ブロック８６２で、アセンダ＆ディセンダフラグがオンとされ、文字種類判別処理は終了する。アセンダ＆ディセンダフラグがオンの文字の高さはｘハイト＋アセンダ＋デッセンダである。
【００７０】
文字種類がアセンダとディセンダとを有する小文字ではない場合、ブロック８６４で、文字種類がアセンダを有する小文字であるか否かが判別される。図７に示す“ｄ”のようなアセンダを有する小文字の場合、ブロック８６６で、アセンダフラグがオンとされ、文字種類判別処理は終了する。アセンダフラグがオンの文字の高さはｘハイト＋アセンダである。
【００７１】
文字種類がアセンダを有する小文字ではない場合、ブロック８６８で、文字種類がディセンダを有する小文字であるか否かが判別される。図７に示す“ｙ”のようなディセンダを有する小文字の場合、ブロック８７０で、ディセンダフラグがオンとされ、文字種類判別処理は終了する。ディセンダフラグがオンの小文字の高さはｘハイト＋デッセンダである。
【００７２】
文字種類がアセンダもディセンダも有しない小文字の場合（例えば、図７に示す“ｘ”）、ブロック８７２で、ｘハイトフラグがオンとされ、文字種類判別処理は終了する。ｘハイトフラグがオンの文字の高さはｘハイト＋アセンダ＋デッセンダである。
【００７３】
図８のブロックＢ８２０の文字種類判別が終了すると、サイズ／位置調整部３０８Ｂは、ブロック８２２で、その文字が認識結果の文字列の最初のアルファベットであるか否か判定する。最初のアルファベットの場合、ブロック８２４で、サイズ／位置調整部３０８Ｂは、文字種類に応じて図７の各種ラインの罫線間の位置（高さ）を決定する。
【００７４】
例えば、キャップハイトフラグがオンである大文字の場合、定義されているキャップラインとベースラインとから残りのラインの位置が求められる。キャップハイト＆ディセンダフラグがオンである大文字の場合、定義されているキャップラインとベースラインとディセンダラインとから残りのラインの位置が求められる。アセンダ＆ディセンダフラグがオンである小文字の場合、定義されているアセンダライン、ベースライン、ディセンダラインとから残りのラインの位置が求められる。アセンダフラグがオンである小文字の場合、定義されているアセンダラインとベースラインとから残りのラインの位置が求められる。ディセンダフラグがオンである小文字の場合、定義されているディセンダラインとミーンラインとから残りのラインの位置が求められる。ｘハイトフラグがオンである小文字の場合、定義されているミーンラインとベースラインとから残りのラインの位置が求められる。すなわち、最初のアルファベットの手書き位置に応じて、罫線間の各種ラインの位置が決まる。
【００７５】
最初のアルファベットでない場合、サイズ／位置調整部３０８Ｂは、ブロック８３０で、その文字が認識結果の文字列の最後の文字であるか否か判定する。最後の文字でない場合、ブロック８１８に戻り、次の１文字の種類判別処理（ブロック８２０）が行なわれる。最後の文字まで種類判別処理が行われると、先ず表示サイズを調整するために、サイズ／位置調整部３０８Ｂは、ブロック８３２で、ストローク候補（文字認識前）のサイズ（外接矩形）を求める。
【００７６】
前述したように、手書き途中でストローク候補が表示され、いずれかのストローク候補が選択されると、手書き途中のストロークがストローク候補により補完される。ただし、ストローク候補も過去にユーザが手書きした文字列であるので、過去に入力した時のサイズと、現在手書き途中のストロークのサイズが異なることもある。そのため、手書き途中のストロークがストローク候補により補完された場合、文字列のサイズが揃うように、ストローク候補の形状は変えないが、表示サイズを拡大／縮小する。拡大／縮小は縦横同じ倍率で行っても良いし、縦方向のみ拡大／縮小しても良い。
【００７７】
サイズ／位置調整部３０８Ｂは、ブロック８３４で、ストローク候補を構成する文字の種類に応じてストローク候補の表示サイズの拡大／縮小率を決定する。具体的には、ストローク候補を構成する文字に与えられたフラグが参照され、最も高い高さの文字の高さに基づいてストローク候補全体の拡大／縮小倍率が決定される。
【００７８】
例えば、ストローク候補中に非アルファベットフラグがオンである文字がある場合、外接矩形の高さが罫線間隔となるように倍率が決定される。
【００７９】
ストローク候補中に非アルファベットフラグがオンである文字は無いが、アセンダ＆ディセンダフラグがオンである大文字がある場合、外接矩形の高さがｘハイト＋アセンダ＋ディセンダとなるように倍率が決定される。
【００８０】
ストローク候補中に非アルファベットフラグがオンである文字とアセンダ＆ディセンダフラグがオンである大文字は無いが、キャップハイト＆ディセンダフラグがオンである大文字がある場合、外接矩形の高さがキャップハイト＋ディセンダとなるように倍率が決定される。
【００８１】
ストローク候補中に非アルファベットフラグがオンである文字とアセンダ＆ディセンダフラグがオンである大文字とキャップハイト＆ディセンダフラグがオンである大文字は無いが、アセンダフラグあるいはディセンダフラグがオンである小文字がある場合、外接矩形の高さがｘハイト＋アセンダあるいはディセンダとなるように倍率が決定される。
【００８２】
ストローク候補中に非アルファベットフラグがオンである文字とアセンダ＆ディセンダフラグがオンである大文字とキャップハイト＆ディセンダフラグがオンである大文字とアセンダフラグあるいはディセンダフラグがオンである小文字は無いが、ｘハイトフラグがオンである小文字がある場合、外接矩形の高さがｘハイトとなるように倍率が決定される。
【００８３】
以上により、選択されたストローク候補の表示サイズが図７に示す各種の文字種類に応じた高さに一致するように拡大／縮小される。これにより、例えば小文字と大文字が同じサイズに拡大／縮小されることはなく、サイズを変更しても見映えが悪くなることがない。さらに、ユーザが手書きの際に慎重にならなくても、バランスの悪いサイズで文字をラフに入力したとしても、文字種類に応じた適切なサイズに変更されるので、綺麗に見える手書き文字が表示される。なお、縦横同じ倍率でサイズを変更すれば、ユーザの手書き形状を保ったままサイズを均一にすることができ、ユーザの筆跡形状が変わることが無い。
【００８４】
次に、サイズ／位置調整部３０８Ｂは、ブロック８３６で、拡大／縮小したストローク候補（外接矩形）の表示位置をストローク候補を構成する文字の種類に応じて決定する。具体的には、ストローク候補を構成する文字のフラグに応じてストローク候補の表示位置の下端がベースライン、あるいはディセンダラインとされる。サイズが調整済みであるので、下端を揃えれば、上端も揃うことになる。例えば、ストローク候補中に非アルファベットフラグがオンである文字がある場合、拡大／縮小外接矩形の底辺が下側の罫線に位置するように表示位置が決定される。ストローク候補中に非アルファベットフラグがオンである文字は無いが、ディセンダフラグあるいはアセンダ＆ディセンダフラグがオンの文字がある場合、拡大／縮小外接矩形の底辺がディセンダラインに位置するように表示位置が決定される。ストローク候補中に非アルファベットフラグがオンである文字、ディセンダフラグあるいはアセンダ＆ディセンダフラグがオンの文字が無い場合、拡大／縮小外接矩形の底辺がベースラインに位置するように表示位置が決定される。
【００８５】
入力予測処理部３０８は、ブロック８３８で、手書き途中のストロークをストローク候補により補完する。補完は、手書き途中のストロークをストローク候補で置き換える場合と、手書き入力済みストロークはそのまま残し、それ以降の部分が付け足される場合を含むが、ここでは、前者の置き換えを行なう。ストローク候補はブロック８３４でサイズが調整され、ブロック８３６で位置も調整されているので、ストローク候補の文字サイズに関わらず、手書き文字の高さがバランスよく揃えられる。
【００８６】
以下、“Ｉ  ｗｅａｒ  ｍｙ  ｓｈｉｒｔ”を手書きする状況を例に取り、実施形態の動作を説明する。図１０Ａに示すように、手書き入力の際は、画面に一定間隔で水平な罫線が表示される。先ず、最初の文字“Ｉ”を構成する３つのストロークを手書きする。ペン１００等の動きの軌跡は、サンプリングされて、ストロークデータが得られる。ストロークデータを画面に表示することにより、手書きストローク“Ｉ”が表示される。
【００８７】
１あるいは複数のストロークが入力されると、ストローク候補データベース４０２Ｂの中から類似しているストローク候補がいくつか検索され、画面の例えば左下に“Ｉ”、“Ｉ'ｍ”、“Ｉｃｅ”、“ＩＴＣ”が表示される。この中でストローク候補“Ｉ”が選択されると、手書きストロークが選択されたストローク候補により補完される。ストローク候補の表示の際に次のようにサイズ、位置が調整される。
【００８８】
図１０Ｂに示すように、ストローク候補“Ｉ”は文字認識処理され、最初のアルファベットである“大文字のＩ”として認識される。文字“Ｉ”は大文字なので、高さがキャプハイトであり、高さの基準ラインはキャップラインとベースラインである。他のライン、アセンダライン、ミーンライン、ディセンダラインの位置は、キャップラインとベースラインから求められる。これにより、アルファベットの書体を定義する各種ラインの位置が決定される。ストローク“Ｉ”は外接矩形がキャップハイトと一致するように拡大／縮小され、かつ、拡大／縮小後の外接矩形の底辺がベースラインに位置するように表示位置が決定される（図１０Ａ参照）。
【００８９】
次に、図１１Ａに示すように文字列“ｗｅ”を構成するストロークが入力されると、画面の例えば左下にストローク候補“ｗｅａｒ”、“ｗｅａｋ”、“ｗｅｒｅ”、“ｗｅａｐｏｎ”が表示される。この中でストローク候補“ｗｅｒｅ”が選択されると、手書きストローク“ｗｅ”が選択されたストローク候補“ｗｅａｒ”により補完される。ストローク候補の表示の際に次のようにサイズ、位置が調整される。
【００９０】
選択ストローク候補は文字認識処理され、図１１Ｂに示すように、“（普通の小文字からなる）ｗｅａｒ”として認識される。“ｗｅａｒ”の各文字は全て小文字なので、高さがｘハイトである。そのため、ストローク候補“ｗｅａｒ”は外接矩形がｘハイトと一致するように拡大／縮小され、かつ、拡大／縮小後の外接矩形の底辺がベースラインに位置するように表示位置が決定される（図１２Ａ参照）。この結果、ストローク“Ｉ”、“ｗｅａｒ”の下端はベースラインに一致する。
【００９１】
次に、図１２Ａに示すように文字“ｍ”を構成するストロークが入力されると、画面の例えば左下にストローク候補“ｍｙ”、“ｍｅ”、“ｍｉｎｅ”、“ｍｏｎｅｙ”が表示される。この中でストローク候補“ｍｙ”が選択されると、手書きストローク“ｍ”が選択されたストローク候補“ｍｙ”により補完される。候補の表示の際に次のようにサイズ、位置が調整される。
【００９２】
選択ストローク候補は文字認識処理され、図１２Ｂに示すように、“（普通の小文字とディセンダ付き小文字からなる）ｍｙ”として認識される。ストローク候補“ｍｙ”の中の最も高い高さの文字は“ディセンダ付き小文字ｙ”であるので、ストローク候補“ｍｙ”は外接矩形がｘハイト＋ディセンダと一致するように拡大／縮小され、かつ、拡大／縮小後の外接矩形の底辺がディセンダラインに位置するように表示位置が決定される（図１３Ａ参照）。すなわち、ストローク“Ｉ”、“ｗｅａｒ”、“ｍ”の下端はベースラインに一致し、ストローク“ｙ” の下端はディセンダラインに一致する。ストローク“Ｉ”、“ｗｅａｒ”、“ｍｙ”の上端はミーンラインに一致する。
【００９３】
次に、図１３Ａに示すように文字列“ｓｈ”を構成するストロークが入力されると、画面の例えば左下にストローク候補“ｓｈｏｅｓ”、“ｓｈｉｒｔ”、“ｓｈｒｉｎｅ”、“ｓｃｈｏｏ”が表示される。この中でストローク候補“ｓｈｉｒｔ”が選択されると、選択ストローク候補は文字認識処理され、図１３Ｂに示すように、“（普通の小文字とアセンダ付き小文字からなる）ｓｈｉｒｔ”として認識される。ストローク候補“ｓｈｉｒｔ”の中の最も高い高さの文字は“アセンダ付き小文字ｈ”であるので、ストローク候補“ｓｈｉｒｔ”は外接矩形がｘハイト＋アセンダと一致するように拡大／縮小され、かつ、拡大／縮小後の外接矩形の底辺がベースラインに位置するように表示位置が決定される。すなわち、ストローク “Ｉ”、“ｗｅａｒ”、“ｍ”、“ｓｈｉｒｔ”の下端はベースラインに一致し、ストローク“ｙ” の下端はディセンダラインに一致する。
【００９４】
図１４は図１０Ａから図１３Ａに示す入力途中のストロークがストローク候補により補完される様子を示す。このように、大文字、小文字、ディセンダ／アセンダ付き小文字毎に規定のラインに沿って、規定の高さで表示されるので、手書き文字の見映えが良い。比較のために、単純にストローク候補の外接矩形を罫線間に収まるように拡大／縮小した場合を図１５に示す。図１５では、”ｗｅａｒ”等のｘハイトの小文字のみで構成される単語が行全体に拡大され、ディセンダ／アセンダ付き小文字を含む単語との表示上のバランスが悪くなる可能性がある。
【００９５】
以上説明したように、本実施形態によれば、手書き途中のストロークが候補ストロークにより補完され表示される際に、候補ストロークに対応する文字の種類、属性に応じてサイズ、表示位置が調整されるので、候補ストロークの手書き時のサイズ、位置に関わらず、全ての文字をバランスよく表示することができる。そのため、入力途中のストロークが過去に入力したストローク候補により補完される際、入力途中のストロークに対応する文字のベースラインあるいはディセンダラインに沿った位置で、かつ、該文字のサイズと同じサイズとなるようにストローク候補の表示サイズ／位置を調整することができ、その結果、見映えのよい手書き文字を効率よく入力することができる。例えば、候補ストロークの文字認識結果から、候補ストロークがディセンダ、アセンダ、キャップハイト、ｘハイトといった文字種のどれを持つか判定し、候補ストロークの高さ基準を取得しておき、補完表示時に、候補ストロークの外接矩形を算出し、外接矩形サイズ、高さ基準を基に候補ストロークを行内の高さを文字種類に合わせて揃えて表示することにより、ユーザの見た目の品位を損なうことなく、バランスよく行方向に位置合わせすることが可能である。
【００９６】
図１６は第２実施形態の手書きノートアプリケーションプログラム２０２の機能構成を示す。第１実施形態は、途中まで入力したストロークがストローク候補により補完される際の表示サイズ／位置調整に関するが、第２実施形態は、ストローク候補を用いて入力ストロークを補完するのではなく、文字を手書き入力する際にリアルタイムに文字毎の表示サイズ／位置を調整する例に関する。
【００９７】
この手書きノートアプリケーションプログラム２０２は、例えば、ペン軌跡表示処理部３０１、時系列情報生成部３０２、編集処理部３０３、ページ保存処理部３０４、ページ取得処理部３０５、手書き文書表示処理部３０６等を備え、第１実施形態で設けられていた入力予測処理部３０８は設けられていない。ペン軌跡表示処理部３０１は、文字サイズ／位置調整部３０１Ａを含み、ペン軌跡を表示する際に文字サイズ／位置を調整する。
【００９８】
図１７は手書き入力処理を示すフローチャートである。ペン１００あるいは指で手書き入力操作が行われると、ペン軌跡表示処理部３０１は、軌跡に対応するストロークデータを生成する（ブロック９０２）。時系列情報生成部３０２は、手書き入力操作による軌跡に対応する座標列に基づいて時系列情報（時系列順に並べられたストロークデータ）を生成し、その時系列情報を作業メモリ４０１に一時保存する（ブロック９０４）。
【００９９】
ペン軌跡表示処理部３０１は、１文字が入力されたことを検出すると（ブロック９０６のイエス）、ブロック９１０で、入力されたストロークを文字認識する。文字サイズ／位置調整部３０１Ａは、ブロック９１２で文字種類を判別する。文字種類の判別は図９と同じである。
【０１００】
文字種類判別が終了すると、ペン軌跡表示処理部３０１（文字サイズ／位置調整部３０１Ａ）は、ブロック９１４で、入力ストロークに対応する文字のサイズ（外接矩形）を求め、ブロック９１６で、文字の種類に応じて文字の表示サイズの拡大／縮小率を決定する。具体的には、ブロック９１２の文字種類の判別処理において文字に与えられたフラグが参照され、文字の拡大／縮小倍率が決定される。
【０１０１】
例えば、非アルファベットフラグがオンである場合、外接矩形の高さが罫線間隔となるように倍率が決定される。アセンダ＆ディセンダフラグがオンである場合、外接矩形の高さがｘハイト＋アセンダ＋ディセンダとなるように倍率が決定される。キャップハイト＆ディセンダフラグがオンである場合、外接矩形の高さがキャップハイト＋ディセンダとなるように倍率が決定される。アセンダフラグあるいはディセンダフラグがオンである場合、外接矩形の高さがｘハイト＋アセンダあるいはディセンダとなるように倍率が決定される。ｘハイトフラグがオンである場合、外接矩形の高さがｘハイトとなるように倍率が決定される。これにより、入力された手書きストロークに対応する文字の表示サイズが図７に示す各種の文字種類に応じた高さに一致するように拡大／縮小される。
【０１０２】
これにより、例えば小文字と大文字が同じサイズに拡大／縮小されることはなく、手書きストロークのサイズを変更しても見映えが悪くなることがない。さらに、ユーザが手書きの際に慎重にならなくても、ラフにバランスの悪いサイズで文字を入力したとしても、文字種類に応じた適切なサイズに変更されるので、綺麗に見える手書き文字が表示される。
【０１０３】
ペン軌跡表示処理部３０１（文字サイズ／位置調整部３０１Ａ）は、ブロック９２０で、その文字が最初のアルファベットであるか否か判定する。最初のアルファベットの場合、ペン軌跡表示処理部３０１（文字サイズ／位置調整部３０１Ａ）は、ブロック９２２で、拡大／縮小文字を表示し、ブロック９２４で、文字種類に応じて図７の各種ラインの罫線間の位置（高さ）を決定する。
【０１０４】
例えば、キャップハイトフラグがオンの場合、定義されているキャップラインとベースラインとから残りのラインの位置が求められる。キャップハイト＆ディセンダフラグがオンの場合、定義されているキャップラインとベースラインとディセンダラインとから残りのラインの位置が求められる。アセンダ＆ディセンダフラグがオンの場合、定義されているアセンダライン、ベースライン、ディセンダラインとから残りのラインの位置が求められる。アセンダフラグがオンの場合、定義されているアセンダラインとベースラインとから残りのラインの位置が求められる。ディセンダフラグがオンの場合、定義されているディセンダラインとミーンラインとから残りのラインの位置が求められる。ｘハイトフラグがオンの場合、定義されているミーンラインとベースラインとから残りのラインの位置が求められる。すなわち、最初のアルファベットの手書き位置に応じて、罫線間の各種ラインの位置が決まる。
【０１０５】
最初のアルファベットでない場合、ペン軌跡表示処理部３０１（文字サイズ／位置調整部３０１Ａ）は、ブロック９３０で、拡大／縮小した文字（外接矩形）の表示位置を文字の種類に応じて決定する。具体的には、文字のフラグに応じて表示位置の下端がベースライン、あるいはディセンダラインとされる。サイズが調整済みであるので、下端を揃えれば、上端も揃うことになる。例えば、非アルファベットフラグがオンの場合、拡大／縮小外接矩形の底辺が下側の罫線に位置するように表示位置が決定される。ディセンダフラグあるいはアセンダ＆ディセンダフラグがオンの場合、拡大／縮小外接矩形の底辺がディセンダラインに位置するように表示位置が決定される。それ以外の場合、拡大／縮小外接矩形の底辺がベースラインに位置するように表示位置が決定される。
【０１０６】
ペン軌跡表示処理部３０１（文字サイズ／位置調整部３０１Ａ）は、ブロック９３２で、手書きストロークからなる文字に換えてサイズ／高さ調整後の文字を表示する。このため、手書きストロークの文字サイズ、高さ位置に関わらず、手書き文字がバランス良く表示される。ブロック９３４で手書きが終了か否か判定され、終了でなければ、ブロック９０２に戻り、ストロークの手書きが続けられる。
【０１０７】
図１８は各文字のサイズ、位置を気にせずに手書きしても、文字認識の結果に基づいてから文字の種類、属性を判断して、文字の表示サイズ／位置を適切に調整する動作の一例を示す。図１８では、手書き時の位置、サイズが不揃いでも、“ｙ”以外の文字は下端がベースラインに位置合わせされ、“ｙ”のみ下端がディセンダラインに位置合わせされ、高さ方向の位置が揃った手書き文字列が得られる。
【０１０８】
以上説明したように、本実施形態によれば、入力された手書きストロークに対応する文字の種類、属性に応じてサイズ、表示位置をリアルタイムに調整するので、手書き時のサイズ、位置に関わらず、全ての文字をバランスよく表示することができる。
【０１０９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１１０】
例えば、図８、図９、図１７のフローチャートで説明した実施形態の処理手順は全てソフトウェアによって実行することができる。このため、この処理手順を実行するプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのプログラムを通常のコンピュータにインストールして実行するだけで、実施形態と同様の効果を容易に実現することができる。
【０１１１】
図７に示す各ラインの間隔（比率）は既定の固定間隔であると説明したが、上側の罫線とアセンダラインとの間隔（上マージン）が変更された場合、各ラインの間隔（比率）を変更してもよい。
【０１１２】
第１実施形態は手書き入力ストロークを補完するストローク候補を複数表示して、選択されたストローク候補で入力ストロークを補完する態様を説明したが、単数のストローク候補を取得して補完する態様でも、同様に適用できる。すなわち、取得された単一のストローク候補を入力されたストロークにより補完する場合も、図８と同様（ただし、ストロークの選択に関する処理は省略）に処理できる。
【０１１３】
第１実施形態では、ストローク候補を構成する文字列全体を一体としてサイズ／位置調整したが、第２実施形態のように、１文字毎にサイズ／位置調整してもよい。
【０１１４】
図９は、ストローク候補を構成する各文字の種類を判別するが、サイズ調整は最も大きいサイズの文字に基づいて行なうので、ブロック８６２でアセンダ＆ディセンダフラグがオンされると、残りの文字の種類判別は省略して、フローを終了しても良い。
【符号の説明】
【０１１５】
１０…タブレットコンピュータ、１７…タッチスクリーンディスプレイ、１７Ａ…ＬＣＤ、１００…ペン、２０２…手書きノートアプリケーションプログラム、３０１…軌跡表示処理部、３０２…時系列情報生成部、３０８…入力予測処理部、３０８Ａ…候補取得部、３０８Ｂ…サイズ／位置調整部、３０８Ｃ…候補提示部、４０２Ｂ…ストローク候補データベース。
【図１】
2016031016.tif 000003
【図２】
2016031016.tif 000004
【図３】
2016031016.tif 000005
【図４】
2016031016.tif 000006
【図５】
2016031016.tif 000007
【図６】
2016031016.tif 000008
【図７】
2016031016.tif 000009
【図８】
2016031016.tif 000010
【図９】
2016031016.tif 000011
【図１０Ａ】
2016031016.tif 000012
【図１０Ｂ】
2016031016.tif 000013
【図１１Ａ】
2016031016.tif 000014
【図１１Ｂ】
2016031016.tif 000015
【図１２Ａ】
2016031016.tif 000016
【図１２Ｂ】
2016031016.tif 000017
【図１３Ａ】
2016031016.tif 000018
【図１３Ｂ】
2016031016.tif 000019
【図１４】
2016031016.tif 000020
【図１５】
2016031016.tif 000021
【図１６】
2016031016.tif 000022
【図１７】
2016031016.tif 000023
【図１８】
2016031016.tif 000024
【国際調査報告】
2016031016.tif 000025
2016031016.tif 000026
2016031016.tif 000027
2016031016.tif 000028