下記の詳細な説明において、関連する教示の完全な理解を提供するために、多くの特定の詳細が、例として述べられる。しかしながら、本教示がそのような詳細なしに実施され得ることは、当業者に明らかなはずである。他の実例において、周知の方法、手続き、構成要素、および/または回路類は、本教示の態様を不必要に曖昧にすることを回避するために、詳細なしで、比較的高いレベルにおいて説明されている。
方向の特徴、例えば、上、下、上方、下方、最も低い、最も高い、水平、垂直等などへの参照および考察は、認識対象の入力が行われる入力面に対して適用されるようなデカルト座標系に関して行われる。さらに、本説明における「テキスト」という用語の使用は、任意の書き言葉における、あらゆる英数字文字およびその文字列、ならびに書き込まれたテキストにおいて使用されている、ありふれた非英数字文字、例えば、シンボルを包含するものとして理解される。さらに、本説明における「非テキスト」という用語は、自由形式の手書きコンテンツならびにレンダリングされたテキストおよび画像データ、ならびに、非テキスト文脈において使用される、非英数字文字およびその文字列、ならびに英数字文字およびその文字列を包含するものとして理解される。
本明細書において説明される様々な技術は、一般に、携帯用コンピューティングデバイスおよび非携帯用コンピューティングデバイス上の手書きコンテンツを、そのコンテンツのパブリッシュ可能な文書への変換を可能にする様式で、キャプチャし、処理し、管理することに関する。本明細書において説明されるシステムおよび方法は、コンピューティングデバイスに接続された、もしくはコンピューティングデバイスの、タッチ感知面などの入力面を介して、またはコンピューティングデバイスに接続された、デジタルペンもしくはマウスなどの入力デバイスを介して、コンピューティングデバイスへ入力される、ユーザの自然な書き込みまたは描画スタイル入力の認識を利用し得る。いわゆるオンライン認識技法を使用した手書き入力の認識に関して、様々な例が説明されているが、認識のための他の形態の入力、例えば、デジタルインクよりもむしろ画像が認識されるオフライン認識などに対する適用が可能であることが理解される。手描きおよび手書きという用語は、デジタル媒体もしくはデジタル処理で接続された媒体上へ直接ユーザの手を使用して、またはハンドヘルドスタイラスなどの入力ツールを介して、ユーザによってデジタルコンテンツを作成することを定義するために、本明細書においては互換的に使用される。「手」という用語は、入力技法の簡潔な説明を提供するために本明細書において使用されるが、同様の入力のためのユーザの身体の他の部分、例えば、足、口および目などの使用も、この定義に含まれる。
図1は、例示的なコンピューティングデバイス100のブロック図を示す。コンピューティングデバイスは、コンピュータデスクトップ、ラップトップコンピュータ、タブレットコンピュータ、ハイブリッドコンピュータ(2イン1)、eブックリーダ、携帯電話、スマートフォン、ウェアラブルコンピュータ、デジタルウォッチ、インタラクティブホワイトボード、全地球測位システム(GPS)ユニット、エンタープライズデジタルアシスタント(EDA)、携帯情報端末(PDA)、ゲーム機等であってもよい。コンピューティングデバイス100は、少なくとも1つの処理要素、何らかの形態のメモリ、ならびに入力および/または出力(I/O)デバイスの構成要素を含む。構成要素は、入力および出力、例えば、コネクタ、回線、バス、ケーブル、バッファ、電磁リンク、ネットワーク、モデム、トランスデューサ、IRポート、アンテナ、または当業者に知られている他のものを通じて互いに通信する。
コンピューティングデバイス100の例示されている例は、コンピューティングデバイスからのデータ、例えば、画像、テキストおよびビデオなどを出力するための少なくとも1つのディスプレイ102を有する。ディスプレイ102は、LCD、プラズマ、LED、iOLED、CRT、または当業者に知られているようなタッチ感知式のもしくはタッチ感知式でない任意の他の適当な技術を使用してもよい。ディスプレイ102のうちの少なくとも一部は、少なくとも1つの入力面104と同じ場所に設置される。入力面104は、例えば、抵抗、表面弾性波、容量性、赤外線グリッド、赤外線アクリルプロジェクション、光学イメージング、分散信号技術、音響パルス認識、またはユーザ入力を受け取るための、当業者に知られているような任意の他の適当な技術などの技術を採用し得る。入力面104は、その境界を明確に識別する恒久的なまたはビデオ生成された境界線によって境界を示され得る。内蔵ディスプレイの代わりに、または内蔵ディスプレイに加えて、コンピューティングデバイス100は、投影型ディスプレイ能力を有してもよい。
コンピューティングデバイス100は、ローカルインターフェースを介して通信可能に結合される、1つまたは複数の付加的なI/Oデバイス(または周辺装置)を含んでもよい。付加的なI/Oデバイスは、入力デバイス、例えば、キーボード、マウス、スキャナ、マイクロフォン、タッチパッド、バーコードリーダ、レーザリーダ、無線周波数デバイスリーダ、または当業者に知られている任意の他の適当な技術などを含んでもよい。さらに、I/Oデバイスは、出力デバイス、例えば、プリンタ、バーコードプリンタ、または当業者に知られている任意の他の適当な技術などを含んでもよい。さらに、I/Oデバイスは、入力と出力との両方と通信する通信デバイス、例えば、変調器/復調器(別のデバイス、システム、もしくはネットワークにアクセスするためのモデム)、無線周波数(RF)送受信機もしくは他の送受信機、電話インターフェース、ブリッジ、ルータ、または当業者に知られている任意の他の適当な技術などを含んでもよい。ローカルインターフェースは、通信を可能にするための付加的な要素、例えば、コントローラ、バッファ(キャッシュ)、ドライバ、中継器、および受信器を有してもよく、これらは、単純さのために省略されているが、当業者に知られている。さらに、ローカルインターフェースは、その他のコンピュータ構成要素間の適当な通信を可能にするためのアドレス接続、制御接続、および/またはデータ接続を含んでもよい。
コンピューティングデバイス100は、プロセッサ106も含み、プロセッサ106は、ソフトウェア、特に、メモリ108に記憶されたソフトウェアを実行するためのハードウェアデバイスである。プロセッサは、任意のカスタムメイドのまたは市販の汎用プロセッサ、中央処理装置(CPU)、(マイクロチップもしくはチップセットの形態の)半導体ベースのマイクロプロセッサを含む市販のマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブルロジックデバイス、ディスクリートゲートもしくはトランジスタロジック、ディスクリートハードウェア構成要素、状態機械、または当業者に知られている、ソフトウェア命令を実行するために設計された、これらの任意の組み合わせとすることができる。
メモリ108は、揮発性メモリ要素(例えば、ランダムアクセスメモリ(RAM、例えば、DRAM、SRAM、またはSDRAMなど))および不揮発性メモリ要素(例えば、ROM、EPROM、フラッシュPROM、EEPROM、ハードドライブ、磁気テープもしくは光学テープ、メモリレジスタ、CD−ROM、WORM、DVD、低価格ディスク冗長アレイ(RAID:redundant array of inexpensive disks)、別の直接アクセス記憶デバイス(DASD:direct access storage device)、または任意の他の磁気、抵抗もしくは相変化不揮発性メモリ)のうちのいずれか1つ、またはこれらの組み合わせを含むことができる。さらに、メモリ108は、電子記憶媒体、磁気記憶媒体、光学記憶媒体、および/または他のタイプの記憶媒体を組み込んでもよい。メモリ108は、様々な構成要素が互いから離れて位置しているが、プロセッサ106によってアクセスされることもできる分散アーキテクチャを有することができる。さらに、メモリ108は、デバイスから離れていてもよく、例えば、コンピューティングデバイス100によってリモートでアクセス可能な、サーバまたはクラウドベースのシステムなどにあってもよい。メモリ108は、プロセッサ106がメモリ108から情報を読み出すこと、およびメモリ108に情報を書き込むことができるように、プロセッサ106に結合される。代替案において、メモリ108は、プロセッサ106と一体であってもよい。別の例において、プロセッサ106およびメモリ108は、両方とも単一のASICまたは他の集積回路に存在してもよい。
メモリ108内のソフトウェアは、オペレーティングシステム110およびアプリケーション112を、コンピュータ可読プログラムコードがその中に具現化された非一時的なコンピュータ可読媒体の形態で含む。ソフトウェアは、任意で、各々が1つまたは複数の別個のコンピュータプログラムを含み得る手書き認識(HWR:handwriting recognition)システム114をさらに含む。これらの各々は、論理機能を実装するための実行可能な命令の順序付けされたリストを有する。オペレーティングシステム110は、アプリケーション112(およびHWRシステム114)の実行を制御する。オペレーティングシステム110は、任意のプロプライエタリオペレーティングシステム、または市販のもしくは自由に利用可能なオペレーティングシステム、例えば、WEBOS、WINDOWS(登録商標)、MACおよびIPHONE OS(登録商標)、LINUX、ならびにANDROIDであってもよい。他のオペレーティングシステムも利用され得ることが理解される。あるいは、本システムおよび本方法のアプリケーション112は、オペレーティングシステムを使用せずに提供されてもよい。
アプリケーション112は、ユーザ入力(後で詳細に論じられる)のレイアウトの検出、管理および処理に関連する、1つまたは複数の処理要素を含む。ソフトウェアは、手書き認識、異なる機能、または両方に関連する、1つまたは複数の他のアプリケーションも含んでもよい。他のアプリケーションのいくつかの例は、テキストエディタ、電話ダイヤル装置、連絡先ディレクトリ、インスタントメッセージング機能、コンピュータ支援設計(CAD)プログラム、電子メールプログラム、ワードプロセシングプログラム、ウェブブラウザ、およびカメラを含む。アプリケーション112、および他のアプリケーションは、製造時にコンピューティングデバイス100に提供されるプログラムを含み、製造後にコンピューティングデバイス100へアップロードされた、またはダウンロードされたプログラムをさらに含んでもよい。
サポート能力およびコンプライアンス能力を有するHWRシステム114は、ソースプログラム、実行可能なプログラム(オブジェクトコード)、スクリプト、アプリケーション、または実行対象の命令のセットを有する任意の他のエンティティであってもよい。ソースプログラムの場合、プログラムは、オペレーティングシステムに関連して適切に動作するように、コンパイラ、アセンブラ、インタープリタ等を介して変換される必要があり、これはメモリ内に含まれていても、または含まれていなくてもよい。さらに、サポート能力およびコンプライアンス能力を有する手書き認識システムは、(a)データのクラスおよび方法のクラスを有するオブジェクト指向プログラミング言語、(b)ルーチン、サブルーチン、および/もしくは関数を有する手続きプログラミング言語、例えば、C、C++、Pascal、Basic、Fortran、Cobol、Perl、Java、オブジェクティブC、Swift、およびAdaなど、ただし、これらに限定されない、または、(c)機能プログラミング言語、例えば、Hope、Rex、Common Lisp、Scheme、Clojure、Racket、Erlang、OCaml、Haskell、Prolog、およびF#、ただし、これらに限定されない、として書かれ得る。あるいは、HWRシステム114は、デバイス、例えば、サーバまたはクラウドベースのシステムなどから離れているが、コンピューティングデバイス100の前述された通信I/Oデバイスを使用して、通信リンクを通じてコンピューティングデバイス100によってリモートでアクセス可能な手書き認識システムとの通信のための方法またはシステムであってもよい。さらに、アプリケーション112およびHWRシステム114は、一緒に動作しても、または単一のアプリケーションとして組み合わされてもよい。またさらに、アプリケーション112および/またはHWRシステム114は、オペレーティングシステム110内に一体化されてもよい。
入力面104上で、または入力面104を介して、入力されたストロークは、プロセッサ106によってデジタルインクとして処理される。ユーザは、指を用いて、または入力面に対する使用に適したいくつかの器具、例えば、ペンまたはスタイラスなどを用いて、ストロークを入力し得る。ユーザは、入力面104の近くの動きを感知し、もしくは撮像する技術が使用されている場合、入力面104の上でジェスチャを行うことによって、または、コンピューティングデバイス100の周辺デバイス、例えば、マウスもしくはジョイスティックなどを用いて、または投影されたインターフェース、例えば、ストローク信号およびジェスチャ信号を決定するための受動平面の画像処理を用いても、ストロークを入力し得る。ストロークは、少なくともストローク開始ロケーション、ストローク終了ロケーション、およびストローク開始ロケーションとストローク終了ロケーションとを接続するパスによって特徴づけられる。パスに沿った複数のサンプルポイントにおけるタイミング、圧力、角度などのさらなる情報も、ストロークのより深い詳細を提供するためにキャプチャされ得る。当然ながら、異なるユーザが、同じオブジェクト、例えば、文字、形状、シンボルをわずかなバリエーションを有して書くので、HWRシステムは、各オブジェクトが正確なまたは意図されたオブジェクトとして認識されつつ入力され得る多種多様な手法に適応する。
図2は、HWRシステム114の一例の、そのローカルの(すなわち、デバイス100にロードされた)形態、またはリモートの(すなわち、デバイス100によってリモートでアクセス可能な)形態の概略的な図である。HWRシステム114は、前処理116、認識118および出力120などの段階を含む。前処理段階116は、より高い精度を達成するためにデジタルインクを処理し、認識段階118の期間中の処理時間を低減する。この前処理は、サイズ正規化および/または入力を平滑にするための、Bスプライン近似などの方法を適用することによって、ストローク開始ロケーションとストローク終了ロケーションとを接続するパスの正規化を含み得る。次いで、前処理されたストロークは、認識段階118へ渡され、認識段階118は、そのストロークを処理して、そのストロークによって形成されたオブジェクトを認識する。次いで、認識されたオブジェクトは、概して、手書きの要素/文字の活字化されたバージョンとして、ディスプレイ102へ出力される120。
認識段階118は、異なる処理要素またはエキスパートを含んでもよい。図3は、認識段階118の概略的な詳細を示す、図2の例の概略的な図である。3つのエキスパート、すなわち、セグメント化エキスパート122、認識エキスパート124、および言語エキスパート126が例示されており、これらは、ダイナミックプログラミングを通じて協働して、出力120を生成する。
セグメント化エキスパート122は、表現、例えば、単語、数学的方程式、または形状のグループを形成するために、入力ストロークを個々の要素仮説へ、例えば、英数字文字および数学演算子、テキスト文字、個々の形状、またはサブ表現へセグメント化するための様々な手法を定義する。例えば、セグメント化エキスパート122は、元の入力の連続するストロークをグループ化することによって要素仮説を形成して、セグメント化グラフを取得してもよく、セグメント化グラフにおいて、各ノードは、少なくとも1つの要素仮説に対応しており、要素間の隣接性制約は、ノード接続によって取り扱われる。あるいは、セグメント化エキスパート122は、異なる入力タイプ、例えば、テキスト、図面、方程式、および楽譜などについて、別個のエキスパートを採用してもよい。
認識エキスパート124は、分類子128によって抽出された特徴の分類を提供し、セグメント化グラフの各ノードについての確率または認識スコアと共に要素候補のリストを出力する。この認識タスクに取り組むために使用され得る多くのタイプの分類子、例えば、サポートベクトルマシン、隠れマルコフモデル、またはニューラルネットワーク、例えば、多層パーセプトロンネットワーク、ディープネットワーク、畳み込みネットワークもしくは再帰型ニューラルネットワークが存在する。その選択は、タスクについての所望の複雑さ、精度、および速度に依存する。
言語エキスパート126は、言語モデル(例えば、文法または意味論)を使用して、セグメント化グラフ内の異なるパスについての言語的意味を生成する。エキスパート126は、他のエキスパートによって提案された候補を、言語情報130に従ってチェックする。言語情報130は、辞書、正規表現等を含むことができ、言語モデルを実行するために言語エキスパート126によって使用されるあらゆる静的データのための記憶装置である。言語モデルは、所与の言語に関する統計情報に依拠することができる。言語情報130は、認識の結果およびユーザインタラクションに応じた適合の有無に関わらず、オフラインで計算され、言語エキスパート126へ提供される。言語エキスパート126は、最良の認識パスを発見することを目的とする。一例において、言語エキスパート126は、これを、言語モデル、例えば、言語情報130の内容を表す最終状態オートマトン(FSA:final state automaton)などを探索することによって行う。辞書制約に加えて、言語エキスパート126は、セグメント化グラフの所与のパスの解釈の言語的尤度を評価するために、要素の所与のシーケンスが、特定された言語において、どのくらいの頻度で出現するか、またはどのくらいの頻度で特定のユーザによって使用されるかについての統計情報モデリングを有する言語モデルを使用してもよい。
本システムおよび本方法は、デバイス100に対する手書き入力を認識するために、HWRシステム114を利用する。前述されたように、アプリケーション112は、認識されたユーザ入力のレイアウトを取り扱うためのアプリケーションを含む。そのようなアプリケーションは、異なる処理を取り扱うために別個の層を有するアーキテクチャにおいて提供され得る。これらの層のうちの1つまたは複数は、前述された通信チャネルを介してアクセス可能なデバイス100から遠隔にあってもよい。層は、アプリケーションラッパー、プラットフォームラッパーおよび(プラットフォーム固有の)アプリケーションユーザインターフェースを含んでもよい。
本システムおよび本方法によって提供されるアプリケーション112は、ユーザ、例えば、学生、学者および実務専門家などが、講義中、会議中、およびブレーンストーミングセッション中に、ユーザが自身の携帯用または非携帯用コンピューティングデバイス上で共有可能なフォーマットされた文書に転換することができる、手書きノートを取ることを可能にする。このアプリケーションは、ユーザのコンピューティングデバイスを使用して適切に検索され、記憶され得る「クリーンな」ノートを取ることを可能にする。本システムおよび本方法は、自然な書き込みが入力されることをさらに可能にする。なぜならば、書き込みは、(罫)線上で行われ、段落および他のレイアウト要素は、向き(すなわち、縦向きまたは横向き)およびデバイス表示能力に応じて尊重されるからである。キャプチャされたノートのデバイス間での同期、およびノートの自動保存もサポートされる。オンデマンドでの、またはオンザフライでの、HWRシステムを介した手書きのノートの活字化もサポートされる。例えば、その全内容が参照によって本明細書に組み込まれる、本出願人に譲渡された特許文献6において説明されているシステムおよび方法などを用いて、認識された活字化されたテキストとデジタルインクとの両方を検索することも、オンザフライでのインデックス化を含めて、サポートされる。様々なフォーマット、例えば、テキスト、Latex、HTML、画像、pdf等へのエキスポートオプションもサポートされる。これらの態様および他の態様が、ここで説明される。
アプリケーション112は、レイアウト定義および保持を可能にする構造化された内容を提供するように、文書および文書要素の定義および取り扱いのためのフレームワークを利用する。この文書モデルは、異なるタイプの文書要素を取り扱い、これらは、HTML5リファレンスにより最も良く説明されており、例えば、W3C HTML5 DOM − コンテンツの種類:http://www.w3.org/TR/html5/dom.html#kinds−of−contentを参照されたい。アプリケーション112によって利用される文書モデルは、HTML仕様を再現したものではなく、むしろHTML仕様から着想を得たものである。文書モデルの要素のサブセットは、フロー、セクション化、ヘディング、フレージング、埋め込みおよびインタラクティブである。
フローに関して、文書の本体およびアプリケーションにおいて使用されるほとんどの要素は、フローコンテンツとして分類される。コンテンツフローは、基本的には、ちょうどHTML DOMのように機能し、メインテキストビューへと垂直にレンダリングされるノードの構造化されたツリーである。すべての入力は、デフォルトでコンテンツフローに入り、文書の上部から流れ、左から右へ書く言語については左詰めにされ、または右から左へ書く言語については右詰めにされる。セクション化コンテンツは、ヘディングおよびフッターの範囲を定義するコンテンツである。ヘディングコンテンツは、(セクション化コンテンツ要素を使用して明示的にマークアップされているか、またはヘディングコンテンツ自体によって示唆されるかに関わらず)セクションのヘッダーを定義する。フレージングコンテンツは、文書のテキストであり、そのテキストを段落内レベルでマークアップする要素でもある。フレージングコンテンツの連なりが、段落を形成する。埋め込みコンテンツは、別のリソースを文書内へインポートするコンテンツ、または文書内へ挿入される別のボキャブラリからのコンテンツである。インタラクティブコンテンツは、ユーザインタラクションのために特に意図されたコンテンツである。これらの文書要素、および他の要素は、コンテンツに関して文書モデルにおいて利用される。
アプリケーション112の文書モデルおよび特徴の最初の態様は、ユーザによる手書きノートおよび他のコンテンツの入力のための効果的で無限の垂直スクロールインターフェースの提供である。千年前には、コンテンツは、読むため/書くために広げられる巻物に書かれていた。古写本(書物の原型)は、大きな巻物がページへと切断され、それによって、巻物を始めから終わりまで広げる代わりに、コンテンツの任意の部分に対するランダムでより高速なアクセスを提供するというユーザ体験最適化に基づいて、発明された。これは、書かれたコンテンツの記録を完全かつ恒久的に変化させ、書物は、過去千年間にわたって唯一のコンテンツホルダーであった。しかしながら、書き込みが動的な画面インターフェース上で実行される現在のデジタル時代は、異なるパラダイムが採用される可能性を提供する。したがって、ノートテイキングアプリケーションおよび関連付けられたユーザインターフェースは、ページパラダイムを盲目的に模倣する必要はなく、むしろ、単にページめくることまたは(無限の)スクロールを上回る特徴または改良された特徴を提示する解決策が評価されるべきである。
従来の手書きノートテイキングアプリケーションは、実際の世界のページを真似て、分離され、かつ寸法が固定されたページに基づいている。この「カード」アプローチは、ユーザがスクリーン上で手書きを使用してコンテンツを作成することを直観的に受け入れるためには便利であるが、下記のような、すべてが無限の高さを有する他のデジタル文書コンテキストには馴染まない。
自由にスクロール可能であることを重視するウェブサイト
ページ番号が付けられ、自由にスクロール可能であるePub
自由にスクロール可能なページと共にページ番号付けを使用するテキストエディタ。
既存のデジタルノートテイキングアプリケーションのユーザは、テキストの並べ替えおよび制御されないテキスト/オブジェクト位置と共に、編集時にテキストがどのように振る舞うかを理解するのに問題を有するということに本出願人は気づいた。そのようなアプリケーションの使用についての学習曲線を低下させるために、手書きは、ユーザが慣れ親しんだものにより近づけるべきである。つまり、同じモデル、振る舞いおよび無限のスクロール可能なページを有する、テキスト編集ソフトウェア/ウェブサービスにおいて、キーボードを用いて書くことである。いかなるデジタルデバイスユーザも、(読む際または書き込む際の)スクローリングに既に慣れている。スクローリングは、タッチデバイス上での自然で直観的なパターンでもある。手書きノートテイキング環境における迅速な解決策は、下記のように、ページがレイアウトされる手法をほんの少し変化させることであろう。
固定されたページサイズ(コンテンツを作成する場合に、デバイス画面またはビューポートによって定義される)
垂直に積み重ねられたページ
ページ番号を付けられたコンテンツを好むユーザのために、改ページを可能にすること
スクロールを好むユーザのために、自由な垂直のスクロールを可能にすること。
しかしながら、そのような解決策は、これまでに論じられたすべての問題に対処するわけではない。例えば、ユーザは、活字化する場合に、依然としてレイアウトの問題に直面するであろう。したがって、本システムおよび本方法のノートテイキングアプリケーションは、無限の高さの単一ページを特徴とした純粋な垂直のスクロールモデルを利用するので、活字化と100%互換性のある解決策を提供する。このモデルは下記を可能にする。
ユーザが、デジタル文書と同じように、無限のページまたは「スクロールページ」上に書くこと。ただし、
ユーザは、固定されたページサイズによって限定されない。
スクロールページは、例えば、1つのフラグメントが約500以上のセクションとなる状態で、フラグメントへとスライスされ得る。
大きなスクロールページのコンテンツをロードするための時間は約50ミリ秒である。
ユーザは、デバイスインターフェースのタッチ感知面上で、またはタッチ感知面の上で、ジェスチャを使用して、例えば、2本の指を使用するなどして、スクロールすることができる
ユーザがページモード表示を選択すること。ただし、
無限のページは、セクションへと分けられる。
セクションを互いの上に重ねて表示すること、または垂直なページのしっかりとした視覚的なセパレータとして、セクション間にトップマージンおよびボトムマージンを表示することとの間で選択するために、視覚化オプションが提供される
デバイスのサイズ/向きとは無関係に、ノートが正確に表示される、応答型ディスプレイ
ユーザが、ナビゲーションを介して、既存のコンテンツおよびセクションを簡単に発見すること
既存のノートをスクロールページへ完璧に変換すること。
垂直のスクロールをデジタルノートテイキングに対して使用することは、すべてのテキストが、絶対的に配置されたブロックの代わりに、ちょうどHTMLページまたはワードプロセシング文書のように垂直に流れる状態で、コンテンツフローにおいて書き込みが実行されることを意味する。デフォルトで、垂直なコンテンツの順序は、モデル構造を定義し、あらゆるレイアウト変化は、下方のすべてのコンテンツに影響を与え、押し下げ、または引き上げる。したがって、ユーザによるレイアウトに対するこれらの変化は、考慮され、考えに入れられなければならない。しかしながら、ユーザには、依然として、ページのいかなる場所にも、すなわち、垂直にも水平にも書き込み、二次元のオブジェクトを作成し、物体をあちこちへ移動させ、オンザフライでレイアウトを作成するための能力が提供されるべきである。しかしながら、これらの能力は、「パーフェクトな」見た目の応答型の文書が作成されるように、バランスが保たれる必要がある。これは下記を意味する。
すべての入力が、コンテンツフローに入ること
マージンからオフセットして書き込むことは、コンテンツフローにアンカリングされるフローティングブロックを作成すること
文書モデルは、フローティングブロックの応答型レイアウトを取り扱うために、不可視のコンテナノードを作成することができる。
文書モデルは、レイアウト/モデル変化をリアルタイムで反映するために、コンテンツをノード/フラグメントから別のものへ規則的編集し、移動させる。
すべての段落/ブロックが、(並べ替えアクションおよび活字化/美化と共に)コンテンツ入力中に、(垂直および水平の)グリッドへ揃えられる。
本システムおよび本方法のこれらの特徴および他の特徴が、ここで詳細に説明される。図4は、例示的なコンピューティングデバイス100の入力面104の一部上のスクロールページ400の例示的な視覚的レンダリングの概略図を示す。スクロールページ400は、あらゆるコンテンツ入力が実行される編集ビューにおいて示されている。他のビューは、文書構造の編集およびノートブックナビゲーションのために使用され得る。ユーザインターフェース(UI)制御(後で説明される)を提供することに加えて、編集ビューの主な目的は、デバイス100のディスプレイ102から垂直にオーバーフローする全幅ページを提供することである。無限のスクロールページ400は、柔軟な高さのページを具現化する。(特に、より小型のデバイス上での)ユーザ用の書き込み空間を最大化するために、空のスクロールページは、少なくとも編集ビュー全体の高さを占めるように定義される。
編集ビュー(および、必要に応じて、他のビュー)において、上部パディング402、左側マージン404および右側マージン406を含む、いくつかのページ要素が表示される。パディングおよびマージンは、ガイド要素としての線パターン背景410を有する入力領域408を画定する。線パターン410は、密度非依存ピクセル(dp:density independent pixel)である、バーティカルリズム高さユニットの倍数によって分離された、複数の実質的に平行な(水平な)線を有する。特定のデバイス100に関わらず、水平線410間の垂直距離は、線パターンユニット(LPU:line pattern unit)によって定義され、バーティカルリズム高さユニットは、特定のデバイス上でのLPUの段階的な測定基準を提供する。例えば、LPUは、任意のデバイスについて垂直のリズム高さユニットの一定の倍数である約1センチメートルに設定されてもよく、または、ユーザは、自身の書き込みスタイルに従って、バーティカルリズム高さユニットの異なる倍数に線パターンユニットをカスタマイズすることを可能にされてもよい。あるいは、バーティカルリズムは、活字化されたテキストサイズ(例えば、最小のテキストサイズ)に基づいてもよく、LPUは、この活字化されたテキストサイズの倍数として提供される。すべての線410は、目に見える状態とぼやけた状態とのちょうど間である、非常に明るくて薄い同じ色、例えば灰色で表示される。このように、線パターンは、ノートテイキング自体から注意をそらさずに手書き入力をガイドするように、顕著ではあるが、目立たない。線パターン背景410は、手書きのテキストコンテキストにおいて表示され、複数の目的を果たす。
手書き認識が最適化されるように、ユーザに、線パターン背景410上に書かせる
ユーザが規則的なバーティカルリズムでの書き込みを採用するのに役立ち、同じ書き込みサイズ、ならびに、よりよいブロック寸法および位置(後で説明される)をもたらす
期待されるコンテンツに関するヒントをユーザに与える。例えば、図面および方程式などの他のコンテキストのために専用の背景が表示され得る
ユーザが段落(後で説明される)を定義するために線スキップを制御することに役立つ。
上部パディング402は、任意の新しいページまたはセクションに表示され、線パターン背景を含まない。これは、ユーザが適切な垂直線間で、すなわち、インターフェース104の境界線に近づきすぎず、かつ、セクションタイトルおよびタグ付けなどの他の要素のための余地を残して書くことに役立つ。上部パディング402は、LPUの倍数によって定義され、例えば、図4の例において、上部パディングはLPUの2倍である。
左側マージン404および右側マージン406は、垂直線により表示される。図4の例において、これらの線は、色および定義の点で線パターン410と同様であるが、これらの線は、所望の場合には、よりくっきりと表示されてもよい。垂直線マージンは、対応する左側および右側の「ページ」エッジからバーティカルリズムユニットの倍数で配置される。この倍数は、特定のデバイス100に応じて変化し、異なるマージン幅計算を定義する。例示的な倍数が、表1において詳しく示されている。
あるいは、マージンの幅は、バーティカルリズムユニットによるよりも、むしろデバイス100のインターフェース104の幅の割合に基づいて、定義されてもよい。このように、マージンの相対的なサイズは、デバイス100および/またはディスプレイ102の向きと無関係に定義される。
マージン404、406は、手書きのテキストコンテキストにおいて表示され、複数の目的を果たす。
ユーザが、書き言葉の方向のための適切なアライメントで、かつ、インターフェース境界に近づきすぎずに書くことに役立つ
右側マージンおよび/または左側マージン内でのシングルポイントスクロールを確保する(後で説明される)。
コンテンツタグ付けのために左側マージンおよび/または右側マージンにおいて専用のゾーンを提示する
スクロールページ上でのコンテンツ入力のセクションを定義するためにジェスチャをスライスするための左側マージンおよび/または右側マージンにおいて専用のゾーンを提示する。
図4の例において、マージン404、406は、上部パディング402内には表示されておらず、第1の線パターン410の水平線から開始している。しかしながら、所望の場合には、マージンは上部パディング内へ伸びてもよい。さらに、線パターン410は、マージン要素においては、これらの領域に書き込むことを阻むために表示されない。しかしながら、注釈等のためにマージンに書き込むことを可能にすることが望ましい場合がある。あるいは、マージンは、ページ400の水平の範囲とのホバーオーバーもしくは接触インタラクションでのみ表示され、または完全に省略され、それによって、例えば、画面/UIエッジにあまり近づいて書かないようにする、ユーザの自然な手書き上の振る舞いに依拠してもよい。
図5Aから図7Bは、デバイス100のインターフェース104に関する、様々なスクロールされた位置における入力コンテンツを有する、および有しないスクロールページ400の例示的な視覚的レンダリングの概略図を示す。本例において、空のスクロールページのデフォルト高さは、上部パディング402を補償し、かつユーザによってアプリケーション112のスクロール機能を発見可能にするように、インターフェース104の高さよりもわずかに大きい。空のページの高さは、編集ビューがインターフェース104の視認可能な領域132の下方へ伸びるように、編集ビューの高さに上部パディングの高さを加えることによって定義される。つまり、図5Aに示されるように、空のスクロールページは、視認可能な領域132内にパディング402を有し、視認可能な領域の外側に伸長領域412を有する。図5Bにおいては、パディング402が、視認可能な領域132の外部となり、伸長領域が、いまや視認されるスクロールページ400の一部となるように、空のスクロールページは、マルチポイントスクロールジェスチャA(後で説明される)を使用して、上方へスクロール済みである。この空のページ高さは、異なる画面サイズを有する他のデバイス上でスクロールページがレンダリングされる場合には、適合される。
コンテンツ入力が発生するときはいつでも、ページ高さは、それに応じて伸び、用紙サイズ制限を除去することによって、中断されない手法での書き込みを提示するようにスクロール可能なままである。つまり、図6Aに示されるように、入力コンテンツBの高さは、コンテンツ領域414を画定し、さらなる伸長領域416は、同じ寸法を有して、スクロールページ400の底部において画定される。このように、どのようなコンテンツが入力されても、ユーザは、それをビューの外側へ押し上げて、(図6Bに示されるように)新しいセクションを作成する必要なしに、書き込み空間を「クリアする」ことができ、また、コンテンツを全く書き込まなくても、ユーザがスクロールページ400のナビゲート可能な態様を理解するように、ページはスクロール可能である。
任意のコンテンツ入力は、ページ特性をリアルタイムで(または、できるだけ速やかに)更新し、ユーザがコンテンツをスクロールし、ビューの外側へ押し出すことを可能にする。ページ高さの拡大は、コンテンツ入力高さと等しい(最初の線の上部から始まり、最後の線の底部まで=線の数+1)。これは、タブレット上で、例えば以下を与える。
線1つ分のコンテンツ:(1+1)×バーティカルリズムユニット=2×48=96dp
線2つ分のコンテンツ:(2+1)×バーティカルリズムユニット=3×48=144dp
線4つ分のコンテンツ:(4+1)×バーティカルリズムユニット=5×48=240dp
など...
コンテンツ入力は、最上部の位置からのオフセットを有して、ページ400の任意の位置において発生することがあり、またはページ上の任意の位置への入力の後に移動されることもある。つまり、図7Aに示されるように、上部パディング402からの入力コンテンツBのオフセットCの高さは、オフセット領域418を画定し、さらなる伸長領域420は、同じ寸法を有して、スクロールページ400の底部において画定される。このように、どのようなコンテンツが入力されても、(図7Bに示されるように)ユーザはそれをビューの外側へ押し上げて、新しいセクションを作成する必要なしに、書き込み空間を「クリアする」ことができる。したがって、ページ高さの拡大は、コンテンツオフセットと一体化し、タブレット上で、例えば以下を与える。
線1つ分のオフセットを有する線1つ分のコンテンツ:((1+1)+(1))×バーティカルリズムユニット=3×48=144dp
線3つ分のオフセットを有する線2つ分のコンテンツ:((2+1)+(3))×バーティカルリズムユニット=6×48=288dp
線2つ分のオフセットを有する線4つ分のコンテンツ:((4+1)+(2))×バーティカルリズムユニット=7×48=336dp
など...
垂直のスクロールは、ユーザの指と(デバイスがパッシブスタイラスおよびアクティブスタイラスを定義する)スタイラスもしくはペンとを区別するコンピューティングデバイス100の能力、または、スタイラスが手書きのために使用されているとデバイスに対して示し、もしくは通信するスタイラスの能力、またはユーザがそのような標識を提供する能力に依存して、別様に取り扱われ得る。デフォルトで、および区別しないデバイスにおいて、入力領域408内の任意のシングルポイントタッチまたはホバーイベントは、コンテンツ入力と見なされるべきである。したがって、ユーザが新しいコンテンツを入力せずにページ400をスクロールするために、マルチポイントインタラクション、例えば、図8に示される、ほぼ同時にインターフェース104にタッチし、またはホバリングする2本の指を使用したマルチポイント垂直スクロールジェスチャAなどは、入力領域上のいかなる場所でも使用され得る。
しかしながら、マルチポイントインタラクションを強制せずにスクロールを可能にするために、専用の領域がマージンのうちの1つまたは複数において画定されてもよく、例えば、図8において、右側マージン406は、スクロールゾーン422により画定される。このゾーンで始まり、(全体的にまたは部分的に)このゾーン内で発生する後続の移動を有するシングルポイントジェスチャD(図8において、インターフェース104にタッチし、またはインターフェース104の上でホバリングする、1本の指またはスタイラスジェスチャとして示されている)は、コンテンツ入力とは見なされないが、スクロールジェスチャと見なされる。スクロール領域の幅は、マージン幅によって定義されてもよく、またはマージン幅とは無関係であってもよい。例えば、マージンの応答型のサイズ変更(例えば、より大きなデバイスでは、より広くなる)があったとしても、スクロール領域が同じままであるように、スクロールゾーンは、ユーザの指およびスタイラス先端(約48dp)のタッチ目標寸法によって画定されてもよい。
(任意の場所でのマルチポイントであれ、またはマージン領域内でのシングルポイントであれ)スクロールシーケンスが起動されると、ページが移動することを止めるまで、スクロールは、任意の場所でのシングルポイントジェスチャだけを使用して継続され得る。例えば、指とスタイラスとを区別することができるデバイスを使用し、もしくはスタイラスの使用をデバイスに対して示すスタイラスを使用し、またはユーザがこの標識を提供し、そのようにして、コンテンツ入力のためのアクティブスタイラスを定義する場合、マルチポイントインタラクションは必要ではなく、スクロールは、インターフェース面104上の任意の場所での1本の指の垂直スクロールジェスチャにより利用可能である。
スクロールページ400は、書き込み入力中に自動的にスクロールされない。これは、ユーザがページ位置を制御することを可能にする。しかしながら、ユーザが、選択されたコンテンツを視認可能な領域の上部エッジまたは底部エッジの近くにドラッグして、無限のページ上の任意の場所へドロップすることを可能にする場合には、自動的なスクロールが発生する。つまり、任意のタイプのコンテンツ(テキストまたはオブジェクト)を選択する場合に、ユーザは、ページの可視部分の上方または下方を含む、そのページ上の任意の場所へ、そのコンテンツを再配置したいと欲することがある。図9に示される例においては、コンテンツ424が(後で説明される手法で)選択され、次いで、(ドラッグの連続表示と共に)ドラッグされ、またはプッシュされて、選択中および/またはドラッグ/プッシュ中に一時的に定義された、視認可能な領域132の上部エッジまたは底部エッジの近くの自動スクロール領域426へ、選択されたコンテンツを移動させる。コンテンツが、スクロールエリア426内へドラッグされる/プッシュされると、スクロールページ400は、ドラッグ位置に結び付けられたスクロール速度でスクロールされ、すなわち、ページ400のエッジに近ければ近いほど、ページが速くスクロールされる。コンテンツがドロップされない限り、上部自動スクロール領域/底部自動スクロール領域の両方が、例えば、スクロールしすぎた場合に、ユーザが反対方向にスクロールすることを可能にするようにアクティブである。コンテンツがドロップされ、ドラッグ/プッシュシーケンスが終了した場合、上部自動スクロール領域/底部自動スクロール領域は、視認可能なページ全体上でコンテンツ入力が再度有効化されるように、無効化される。
スクロールページは、ユーザがサイズ設定またはアライメントについて心配せずに任意の場所でオブジェクトブロック(テキスト、図面等のブロック)を作成することを可能にする、制約なしのキャンバスのいずれかとして提供され得る。しかしながら、構造化されたコンテンツを含む、専門的にフォーマットされた文書を提供するために、(入力時に、またはユーザインタラクションに沿って)すべてのコンテンツがアライメントされる/画定されるべきアライメントパターンが画定されてもよい。本システムおよび本方法の一例において、アライメントパターンは、デバイスサイズ/向きに応じて定義され、それ自体は表示されないが、コンテンツ要素のアライメントを定義するためにアプリケーション112によって使用される。ここで、例示的なアライメントパターン1000の様々な要素が、図10から図14を参照しつつ説明される。
アライメントパターン1000は、デバイス100のインターフェース104のエッジのあまり近くにコンテンツが入力されることを防止する、左側パディング領域および右側パディング領域1002を有する。パディング領域1002のサイズは、ルート要素フォントサイズ(レム)、例えば、<html>要素のフォントサイズに関連するテキストサイズに基づく。CSSスタイリング(例えば、https://developer.mozilla.org/en/docs/Web/CSS/lengthを参照)と同様に、レムユニットは、ルート要素のデフォルトフォントサイズを表す(例えば、ウェブブラウザの場合、1レム=16ピクセル(px))。レムユニットは、応答型バーティカルリズムユニット(dp)のためにモジュラースケール上に構築されたテキストサイズを有する応答型ユニットと見なされる。レムユニット原理は、ルート要素についてのデフォルトフォントサイズが変化させられる場合、この単一の変化を他のすべての特性が継承し、すべての要素がそれに応じて適合されるということである。しかしながら、ブラウザアプリケーションには、レムユニットをサポートしていないものもあり得るので、そのようなレイアウトは、「em」ユニットを代わりに使用して達成されてもよい。ユニットサイズのこの定義は、他の言葉遣いおよび変数と同じ振る舞いを実装するモバイルデバイスオペレーティングシステム(OS)動的タイプに関連する(例えば、https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/CustomTextProcessing/CustomTextProcessing.html#//apple_ref/doc/uid/TP40009542−CH4−SW65を参照)。
パディング領域1002間の領域は、利用可能な水平の空間を入力領域408として画定する。アライメントパターン1000は、可変数の列1004を画定しており、可変数の列はすべて同じ幅であり、パディング1002(破線により分割されて図示されている)間の利用可能な水平の空間全体を埋めるように柔軟に合わせる。したがって、入力領域408は、図10に示されるように、列1004へと等しく分割される。列は、ブレークポイントを最小のアプリケーション幅、例えば、アプリケーション112が、フルスクリーンで、または縮小された際にはちょうどウィンドウ幅で提供される場合、例えば、デスクトップ/ラップトップ、またはタブレット上の分割スクリーン上などの場合のスクリーン幅の値として単位dpで定義する。
列のサイズ設定は、列の数に依存し、そのため、列の幅は、利用可能な水平な空間全体、すなわち入力領域408の割合によって定義される(例えば、4つの列=25%)。列の数は、有意義なレイアウトが提供され得るように、各列内の最小のコンテンツ表示を提供するように提供される。図11は、異なるデバイスの画面サイズに依存した、異なる列の数のグラフを示す。このグラフに従った、一定のデバイス例は、(フルスクリーンコンテキストにおいて)下記の通りである。
iPhone(登録商標)6(縦向き) =375dp =2列
Nexus6(横向き)= =730dp =6(または8)列
iPad Air(登録商標)(縦向き) =768dp =6(または8)列
Surface(登録商標) Pro3(横向き) =960dp =8列
HP(登録商標) Chromebook 14インチ(35.56cm) =1366dp =8列
Dell(登録商標) Inspiron(登録商標)23インチ(58.42cm) =1920dp =16列
図11に示されるデバイスおよび列の数は、応答型レイアウト表示を提供するために列を使用する概念の例示に過ぎない。任意の所与のデバイスに対して、より多くの列またはより少ない列が使用されるように、実際の値は異なってもよい。例えば、大きな画面のデバイス、例えば、大画面テレビ受像器、電子/インタラクティブホワイトボード、および大画面タッチモニタなどの場合、ユーザが、より大きな文字サイズを使用して手書きする傾向は、図11に例示されているよりも少ない列の数を使用することによって適応されてもよく、小さい画面のデバイス、例えば、スマートフォンなどの場合、ユーザが、正確なスタイラスの使用に起因して、小さい文字サイズを使用して手書きする能力は、図11に例示されているよりも多い数の列を使用することによって適応されてもよい。ウィンドウサイズを変化させる場合、またはデバイスを回転させる場合、アライメントパターンは、コンテンツが新しい列に適合し、アラインし/スナップしなければならない列を付加し、または取り出す(後で説明される)。様々な列の幅のブロックは、図12Aおよび図12Bにおいて詳しく示されている規則を使用して適合される。
アライメントパターン1000は、オブジェクトブロックが互いにあまりに近くに配置されることを防止するように、各列1004の垂直の境界のあたりで左側エッジおよび右側エッジの両方において画定されるガター空間1006(図13に示される)をさらに有する。アライメントパターンの他の要素のように、ガター1006は、レムユニットに関して画定され、オブジェクトブロック1008のレイアウトが実行される実際のガイドを画定する(図14を参照)。あるいは、マージンと同様に、ガター幅は、バーティカルリズムユニットによるよりも、むしろデバイス100のインターフェース104の幅の割合に基づいて定義されてもよい。このように、ガターの相対的なサイズは、デバイス100および/またはディスプレイ102の向きとは無関係に定義される。これは、すべてのオブジェクトブロックが、ガターエッジ上にアラインされ/スナップされ、列のエッジ自体およびUIページマージン404、406は、最左端の列のガターおよび最右端の列のガター上に配置されないことを意味する(図13および図14を参照)。このように、レイアウト間隔はテキストサイズに依存するので、アライメントパターン要素はすべて、テキスト関連のユニットを使用して定義される。所望の場合には、ガターは省略されてもよく、代わりに、絶対的な列の境界が使用される。
前述されたように、使用されるメトリックは、入力領域408の幅と応答型サイズ設定のためのレムユニットとの両方に基づいている。これらの異なるメトリックは、表2に示されるように関連する。
あるいは、応答型サイズ設定のために、すべてのメトリックが、アプリケーションUI幅、例えば、マージン幅およびガター幅、ならびに入力領域408の幅、例えば、列の幅に基づく例においては、異なるメトリックは、例えば、表3に示されるように関連する。表3において、マージン幅およびガター幅についての割合値の各範囲の上限の割合値は、次に最も大きいマージン幅およびガター幅のより低い割合値の対応するdp幅の値によって定義される。例えば、240dpのUIアプリケーション幅の場合、マージン幅についての上限の割合値12.5%は30dpに対応し、これは、480dpのUIアプリケーション幅についてのマージン幅のより低い割合値6.25%を提供するための、対応するdp値である。
前述されたように、スナップツーパターン(snap−to−pattern)の振る舞いは、オブジェクトブロックアライメントのために使用される。垂直のスナップは、線パターン410を2つの手法で参照することを通じて、すなわち、すべてのオブジェクトブロックの高さがLPUの整数倍となることを確実にすること、または各ブロックの少なくとも上部境界が線パターン背景410の次に利用可能な線とアラインされることを確実にすることによって、取り扱われる。前者のケースにおいて、ユーザインタラクションが何であれ(例えば、新規、編集済み、移動済み、サイズ変更済み)、すべてのオブジェクトブロックは常に、LPUで丸められ、垂直のLPUに従って配置される(例えば、上部境界および底部境界は、線パターン背景410とアラインされる)。いずれの手法でも、スナップツーグリッド(snap−to−grid)機構のLPU部分が提供される。水平なスナップの場合、ユーザインタラクションが何であれ(例えば、新規、編集済み、移動済み、サイズ変更済み)、すべてのオブジェクトブロックの左側境界および右側境界は、いずれのケースでも列1004(またはガター1006)とアラインされたままである。これは、スナップツーグリッド機構のレイアウト部分を提供する。したがって、垂直なスナップ動作および水平なスナップ動作は、LPU(垂直)およびレイアウト(水平)グリッドに対して垂直なアライメントおよび水平なアライメントを提供する。
あるいは、流動的なインタラクションを提供し、ユーザがレイアウトを制御していることをユーザに感じさせるために、オブジェクトブロックの任意の移動/サイズ変更は、インタラクション中に、リアルタイムで更新され、現在のタッチまたはホバー位置とアラインされてもよい(すなわち、LPUおよびレイアウトグリッドによりアラインされ、またはスナップされない)。例えば、ブロックのサイズ変更(後で詳しく示される)中に、オブジェクトブロック境界は、たとえそれが列/線の真中にあるかもしれなくても、厳密なタッチまたはホバー位置により更新される。
他の周囲の要素をリアルタイムで更新して、全体的な結果をプレビューすることに加えて、ユーザは、オブジェクトがLPUおよびレイアウトグリッド上にスナップされると、どのようなレイアウトになるかを示す視覚的フィードバックを有するべきである。1つの考え得るフィードバックは、インタラクション中にインタラクションされたブロックの下に、暗くされた/有色のスナップトツーグリッド(snapped−to−grid)オーバーレイを表示することであろう。ユーザが、オブジェクトブロックとインタラクションすることを停止すると、すべてのブロック境界は、迅速なアニメーションと共にLPUおよびレイアウトグリッドに対してスナップされる。書き込む場合、ユーザにとっての自由な書き込み体験を保持するように、デバイスインターフェースに関して指またはスタイラスが存在する場所に、テキストが実質的に出現する。しかしながら、段落境界は、何があろうとLPUおよびレイアウトグリッドとアラインされる(後でより詳細に論じられる)。例えば、段落の左側の境界は、最も近い左側のガター1006とアラインされ、段落の右側の境界は、最も近い右側のガター1006とアラインされる。さらに、ユーザによる適当な間隔の知覚を支援するために、少なくとも現在の入力列のガター内の線パターン背景の表示は、入力中には省略されてもよい。例えば、4つの列のグリッドの第2の列における入力中に、線パターン背景は、第2の列の左側のガターおよび右側のガターにおいて省略され/マスキングされ、第1の列の右側のガターおよび第3の列の左側の列において、さらに省略され/マスキングされ得る。段落内の特徴、例えば、インデント(例えば、左から右へ書かれる言語の場合、テキストは段落の左側の起点から水平にオフセットされる)などは、LPUおよびレイアウトグリッドサイズ設定と関連しない段落の各線について、列とアラインされ、または、例えばメモリ108において特性として記憶され得る。
ここで、オブジェクトブロック作成および管理を含む一定の例示的な動作が、図15から図24を参照しつつ説明される。これらの図面に示される例は、左から右へ書かれる言語コンテキストにおけるものであり、したがって、位置への任意の参照は、異なる方向フォーマットを有する書き言葉に対して適合され得る。図15から図24の各々においては、スクロールページ400の一部が、デバイスインターフェースの視認可能な領域において描かれたものとして概略的な形態で示されている。スクロールページ400は、すべての図面(3つの列が描かれる図22Bおよび図24を除く)において、グリッド1500の水平線1502、および、ページ400を複数の列1004に、例えば6つの列に分割する、グリッド1500の垂直線1504によって定義されるアライメントパターン1000として、線パターン背景410から構成された、LPUおよびレイアウトグリッド1500と共に示される。スクロールページの上部パディングおよびマージン、ならびにアライメントパターンのパディング領域および列ガターは、説明のしやすさのために、図面(図22を除く)において省略される。したがって、図22を除き、説明されたレイアウト要素は、列ガターよりも、むしろグリッド1500の垂直線1504にアラインされて示される。前述されたように、アライメントグリッド自体は、ユーザに対して表示されず、アプリケーション112用のオブジェクトブロックのレイアウトの管理のための不可視のガイドとして働く。しかしながら、線パターン背景410は、書き込むサイズおよび配置に関するガイダンスを提供するために、ユーザに対して表示されてもよい。
本システムおよび本方法によって採用されるレイアウト管理は、オブジェクトブロックが定義される手法を取り扱い、一般に単純なジェスチャの使用を通じてユーザによって操作され得る。これは、限定された自動的な振る舞いが存在し、ユーザがコンテンツを望み通りに配置するためのある程度の柔軟性が提供されるように、ユーザがレイアウトを制御しているとユーザに感じさせる手法で行われる。デジタルノートテイキングアプリケーション112は、主に、ノートの手書きのキャプチャのためのものであるので、主なオブジェクトブロックは、サブ要素を改行およびライン(alinea)(すなわち、2つの改行間の段落のサブセット)とする、テキストの段落またはテキストブロックであると考慮され得る。段落の管理は、ユーザが複数の段落を作成し、段落を分け、段落を統合し、段落内のコンテンツを除去し、段落を移動させ、段落をサイズ変更するための能力を含む。作成されることが可能であり、特にテキストブロックに関して管理されることが必要な他のオブジェクトブロックは、コンテンツ、例えば、画像、図面および方程式などを含む。
レイアウト管理は、所望のレイアウトにおいて異なるオブジェクトブロックを作成し、別個のオブジェクトブロックに対して動作を実行するための能力、例えば、下記のものを提供する。
ブロック/段落の右側または左側へのブロック挿入またはドラッグ/プッシュアンドドロップ(ただし、余白がある場合)
ブロック/段落の下または上へのブロック挿入またはドラッグ/プッシュアンドドロップ(ただし、余白がある場合)
段落の内部への挿入(インライン)
段落間への挿入。
図15において、第1の段落は、マージンにアラインされた段落1506として示されており、これは、グリッド1500の左端または第1の垂直線1504にアラインされ、グリッド1500の4本の水平線1502、または4つのLPUにわたる。この段落は、水平な実線として描かれた手書きのテキストを含んでいる。第2の段落は、フローティングテキストブロック1508として示されており、これは、グリッド1500の第2の垂直線1504にアラインされ、4つのLPUにわたる。フローティングテキストブロック1508のスナップトツーグリッド範囲は、破線の境界1508aによって示されており、破線の境界1508aの内部では、明瞭さのためにグリッドパターンが抑制されている。本例のスクロールページ400のコンテキストにおける、「マージンにアラインされた」および「フローティング」という概念は、ページのマージンにアラインされるブロック、例えば、文書エディタアプリケーションのページの左詰めまたは右詰めのテキストの段落と、マージンに関して(グリッドに対する制約を有して)自由に配置されるブロックとを区別するために提供される。図示されるように、段落1506、1508のテキスト自体は、ユーザによる制御が失われたという感覚をユーザが感じないように、グリッドに対してスナップされない。段落内のテキストの実際の入力位置は、テキストインデントを定義し、例えばメモリ108に記憶することによって提供され、テキストインデントは、コンテンツの開始と段落の左側の最も近い列との間の距離に対応する、段落の各線の特性である。
グリッド1500の第4の垂直線1504にアラインされ、5つのLPUにわたる別のフローティングブロック1510が示されている。フローティングブロック1510は、テキストまたは図面、画像、図、方程式等を含んでもよい。アラインされたブロックとフローティングブロックとの両方は、スクロールページの一部またはセクションにアンカーされ、マージンにアラインされたブロックは、マージンに対してさらにアンカーされ、ページがスクロールされるにつれて、それと共に垂直に移動する。ブロックが移動された(すなわち、どこか他の場所にドロップされることが選択された)場合、このブロックは、このブロックが移動された、スクロールページの新しい部分またはセクションに関連付けられる(後で詳細に説明される)。例示されているブロックの境界は、アライメントパターンに関する入力要素の範囲を決定するために本システムおよび本方法によって使用されるものであり、そのため、典型的には、アプリケーション112によってユーザに対して表示されないことが留意される。しかしながら、編集動作中、例えば、ブロックの移動中等には、ユーザが要素をレイアウトの他の要素に関して適切に配置することを支援するために、境界が表示されてもよい。
図16Aは、マージンにアラインされたブロックおよびフローティングブロックに存在するいくつかの段落を示す。具体的には、第1の段落1600は、4つの列にわたって作成されており、続いて、第1の段落1600に水平に隣接し、2つの列にわたる第2の段落1602、および段落1600と段落1602との両方の垂直下方にあり、6つの列にわたる第3の段落1604が存在する。ブロックおよびアライメントグリッドの使用は、ブロックの相対的なレイアウトを保持しながら、ブロック内のコンテンツが編集されることを可能にする。例えば、図16Bにおいて、ユーザは、アライメントグリッド1500の次の水平線1502上で、第2の段落1602に対してさらなるテキストを追加しているが、スクロールページ400の垂直なフローにおいて、段落1604が段落1602の下方に存在するので、より下方の段落1604は、結果として、段落1602と段落1604との間に2つのLPUの間隔を保持するように、アライメントグリッド1500の次の水平線1502まで下方へ移動される。実際には、相対的なレイアウトが保持されるように、下方のいかなるコンテンツも、同じ量だけ下方へシフトされる。なぜなら、ユーザは、それらのレイアウトを具体的には変化させていないからである。したがって、テキストブロックを拡大させるための十分な空間がない場合、ブロック内で上流に書かれたテキストは、下方のコンテンツを下側へ移動させる。この機構は、下方へ移動されたコンテンツがインターフェース104の視認可能な領域132の外へ移動されるように、図6Aを参照して前述された、入力コンテンツの高さだけスクロールページ400を拡大する機構と同じである。
あるいは、十分な空間がある場合には、テキストブロックは、より下方のブロックの移動なしに拡大されるであろう。例えば、図17Aは、段落1600、1602および1604を示すが、第3の段落1604が、第1の段落1600のみの垂直下方に存在し、4つの列のみにわたる。そのため、図17Bに示されるように、ユーザがアライメントグリッド1500の次の水平線1502上で第2の段落1602に対してさらなるテキストを追加する場合、第2の段落1602を囲むテキストブロックは、より下方の段落1604に隣接して、自由に拡大することができる。
上流にテキストを書き込み、そのテキストのための十分なレイアウト空間がない場合に、下方のコンテンツ全体の下方への移動を引き起こす動作は、下方に存在するコンテンツがどのようなものであっても、すなわち、テキストでも、または非テキストブロックでも適用可能である。例えば、図18Aにおいては、段落1800が作成されており、オブジェクトブロック1802(テキストまたは非テキストのいずれか)が、段落1800の垂直下方に作成され(またはドロップされ)ている。図18Bにおいて、ユーザは、段落1800に対して最後のテキスト線上で、アライメントグリッド1500の次の水平線1502上へと続くさらなるテキストを追加している。しかしながら、ブロック1802は、スクロールページ400の垂直なフローにおいて段落1800の下方に存在するので、ブロック1802は、結果として、オブジェクト1800とオブジェクト1802との間に3つのLPUの間隔を保持するように、アライメントグリッド1500の次の水平線1502まで下方へ移動される。
図16から図18の例において、既存の段落に追加された(または、段落の作成中に追加された)テキストは、線パターン背景410の次の線上へのその段落のテキストの継続であり、この場合、それは次の線上に直接書かれるか、またはテキストの既存の最後の線に追加されて、次の線上へ継続される。いずれのケースにおいても、追加されたテキストは、既存の段落に属するものと見なされる。なぜなら、それは、垂直なフローにおいてすぐ次の線410に対して追加されるからである。追加されたテキストが実際に新しい段落の一部であると決定することは、特に、隣接する線のテキストのオフセット、および(既存の)段落の左側マージンまたはアラインされたエッジとのそれらの関係を参照して、HWRシステム114の認識段階118を使用して行われ得る。しかしながら、そのような認識の結果は、ユーザによって知られていない。つまり、何らかの特定の標識(例えば、段落のシンボルの表示、または既存のおよび/もしくは新しい段落ブロックの自動的なシフトなどであり、これらは、ノートテイキングプロセス上、あまりに煩わしく、したがって、ユーザの気が散ることがある)なしには、別個の段落の誤認識が、レイアウトの何らかの操作が発生する(例えば、異なるデバイス上または異なる向きでのノートの表示など)まで知られることがなく、その時までには、元の入力のコンテキストが忘れられてしまうことがある。
したがって、垂直なフローにおける別個の段落(およびオブジェクトブロック)の入力に対して、ユーザによって簡単に理解され、適用される手法で、単純な制約が課される。この制約とは、水平に重複する、例えば、少なくとも1つの列1004において重複するオブジェクトブロック間に、空線410が、例えば、2つのLPUの間隔が、常に存在するべきであるということである。この規則は、スクロールページ400の垂直なフローにおいてオブジェクトブロック間の相対的なレイアウトをきれいに維持する手法を提供し、これは、直接入力されたコンテンツ、およびドラッグアンドドロップされたコンテンツ、またはプッシュアンドドロップされたブロックに対して適用され得る。
例えば、図18Aおよび図18Bに関して説明された動作においては、垂直なコンテンツが段落1800に対して追加された場合に、段落1800とブロック1802との間の3つのLPU間隔が維持された。あるいは、段落1800に対して追加のコンテンツを追加した後の間隔は、2つ以上のLPUのままであるので、結果として、ブロック1802(および任意の他のより下側のオブジェクトブロック)は移動される必要がない。したがって、新しいコンテンツと既存のコンテンツとの間の間隔が、1つの線よりも大きい場合、垂直なストリームにおいて何も下方へ移動されず、新しいコンテンツが利用可能な空間を満たすことを許容する。これは、図18Cの例において示されており、図18Cにおいては、段落1806が、段落1800の最終線410の2つの線410の分だけ下方に入力され(例えば、ブロック1800の境界1800aの下辺は、テキスト線が2つのLPUを分離するように、ブロック1804の境界1804aの上辺から、LPU1つ分離間されている)、新しい段落1804とブロック1802との間には空線410が残っているので、ブロック1802は移動されない(例えば、ブロック1804の境界1804aの下辺は、ブロック1802がテキストブロックである場合に、テキスト線がLPU2つ分離間されるように、ブロック1802の境界1802aの上辺から、LPU1つ分離間される)。そのため、この規則は、テキストブロックのテキスト線は2つのLPUによって離間されなければならない、とより正確に定義され、垂直に隣接するブロック境界は、LPU1つ分離間され得ることを意味する。
新しいコンテンツが既存のコンテンツに(これらの間に1つ未満の空線を残して)到達する場合は常に、下方のコンテンツ全体が線1つ分下方へ移動されて、空線1つ分の間隔が再導入される。同様に、新しいコンテンツがオブジェクトブロック間の空線に書かれるたびに、下方のコンテンツは、線1つ分下へ移動される。同様に、ブロックが上流で新しい線に追加されるたびに、下方のコンテンツは下へ移動され、ブロックの上方および下方には常に線が存在するべきである。この一例は、図18Dに示されており、図18Dにおいて、オブジェクトブロック1806は、段落1800の下方の線410上にドロップされ、(これらの間にLPU1つ分の間隔が存在するように)、段落1804およびブロック1802はブロック1802とブロック1804との間の相対的なレイアウトを変化させずに、新しいブロック1806と段落1804との間にLPU1つ分の間隔が存在するように、結果として下へ移動される。この例は、図18Eにおいてさらに拡大され、図18Eにおいて、ブロック1802は、段落1804の上方へ移動され、段落1804の結果として生じる下方への移動を伴って、ブロック1806のLPU1つ分の間隔だけ下方にドロップされ、その結果、ブロック1802の境界1802aの下辺とブロック1804の境界1804aの上辺との間に、LPU1つ分の間隔が残る。
前述されたように、ブロックは、スクロールページ400内のそれらの現在の位置から新しい位置へドラッグアンドドロップされること、もしくはプッシュアンドドロップされること、または、おそらくは、他のブロックの結果として生じる移動を伴って、およびユーザのためのガイド機構を用いて、サイズ変更されることができる。例えば、図19Aから図19Cは、段落1900および非テキストブロック1902(例えば、画像を含む)がレイアウトされ、非テキストブロック1902が移動される動作を示す。図19Aに示されるブロック1902の初期位置は、段落1900に水平に隣接する。ブロック1902が、その初期位置から、図19Bに示されるように水平に移動される場合、この移動中に、ブロック1902がドロップされ得る次の利用可能な水平位置を示すキャレット1904が表示され、例えば、図示される例において、ブロック1092は、段落1900の上へ移動されており、したがって、次の利用可能なドロップ位置は、キャレット1904が表示されている左側マージン上にある。この提案された位置にブロック1902をドロップすることは、段落1900がアライメントグリッド1500の次の利用可能な列、例えば、第3の列1004へスナップされる、結果として生じる水平な移動を引き起こすであろう。同様に、ブロック1902が、その初期位置から、図19Cに示されるように垂直に移動される場合、この移動中に、ブロック1902がドロップされ得る次の利用可能な垂直位置を示すキャレット1904が表示され、例えば、図示される例において、ブロックは、段落1900の下方へ移動されており、したがって、次の利用可能なドロップ位置は、段落1900の下方の線410上である。同様の機構は、オブジェクトブロックをサイズ変更する場合に使用され得る。ユーザをこのようにガイドすることによって、他のオブジェクトに対する、またはアライメントグリッド自体に対するオブジェクトのアラインメントが、できる限り提供される。ブロックに加えて、段落内で選択されたテキストも、それ自体がドラッグアンドドロップ(もしくは、他の編集機構、例えば、プッシュ、コピー、カット、ペーストなど)によって別の段落の内部へ挿入されることができ、または、空いている空間へドロップされ、もしくはプッシュされる場合には、新しいテキストブロックが、そのテキストを用いて作成される。
既存のコンテンツを移動させる場合、前述された動作は、レイアウトの対応する結果として生じる振る舞いと共に使用され得る。新しいテキストコンテンツ、例えば、新しい段落などを作成する場合、ユーザは、前述された、空線を間に挟む規則に従って、線パターン背景の次の利用可能な線に単に手書きする必要がある。新しい非テキストコンテンツ、例えば、図面または方程式などを作成する場合に、ユーザが、例えば、次の利用可能な線に非テキストコンテンツを単に入力し始めたとすれば、HWRシステム114は、手書き認識が新しいコンテンツに対して実行されないように、非テキストコンテンツの入力を検出することが必要とされる。あるいは、ユーザは、非テキストコンテンツが入力されるべきであることを示すための機構を提供され得る。従来、これは、メニュー選択を通じて、または特殊なスタイラス、例えば、描画用のペンに対する書き込み用のペンなどの使用を通じて行われてきた。本システムおよび本方法は、この標識を、ユーザに知られている既存のタッチインターフェースアクションを活用することによって単純化する。
つまり、非テキストコンテンツを入力するために、ユーザは、空いている空間を単にダブルタップし、ダブルタップされると、アプリケーションは、画像、図面、図、方程式等をユーザが挿入することができるブロック領域またはキャンバスを自動的に作成する。このように、空いている空間上でのダブルタップは、テキストのみとは異なるコンテキストを有するブロックオブジェクトを作成することをユーザが望んでいるものとして解釈される。次いで、アプリケーション112は、手書きの場合に、実際のコンテンツ入力を決定し、認識するために、他の認識機構、例えば、すべてが本出願人に譲渡されている、特許文献7、2014年12月2日に出願され、「System and Method for Recognizing Geometric Shapes」と題された特許文献8、ならびに、「System for Recognizing Multiple Object Input and Method and Product for Same」と両方とも題された、2015年7月10日に出願された特許文献9、および2015年9月30日に出願された特許文献10において説明されているシステムおよび方法などを使用することができ、これらの出願の全内容が、参照によって本明細書に組み込まれている。
本明細書においてこれまでに説明されたブロック管理のように、非テキスト入力キャンバスの生成は、アライメントグリッド/パターンに従って実行される。つまり、インターフェース104の視認可能な領域132においてページ400が空である場合、生成されたキャンバスは、視認可能な領域132内の利用可能な空間をすべて占有する。あるいは、キャンバスが、オブジェクトブロックの隣に水平に生成されることになっている場合、生成されるキャンバスは、対応するマージン/パディング領域に対して利用可能な幅を占有し、既存のオブジェクトブロックの高さにアラインする。さらに、生成されるべきキャンバスの上方にコンテンツが存在する場合、生成されるキャンバスは、既存のブロックの下方の利用可能な空間を占有し、既存のブロックとキャンバスとの間に空線(例えば、LPU1つ分の間隔)が残され、その結果、それは上方のコンテンツに含まれない。またさらに、生成されるべきキャンバスの上方および下方にコンテンツが存在する場合、生成されるキャンバスは、スクロールページの利用可能な全幅と、既存のブロックに関してキャンバスの上方および下方に空線(例えば、上部および底部にLPU1つ分の間隔)を残して、既存のブロック間の利用可能な高さとを占有し、その結果、それは既存のコンテンツに含まれない。図20および図21は、これらの動作のうちの2つの例を示す。
図20Aにおいて、段落2000は、ブロック2000の境界2000aがアライメントパターン1500の第2の垂直線1502および第8の水平線1504にアラインされるように、2つの列1004および8つの線410にわたる、マージンにアラインされたブロックとして示されている。段落2000の右側に対するダブルタップジェスチャEを受け取ることに応じて、図20Bに示されるように、ブロック2002が、アライメントパターン1500の第2の垂直線1502から最後の垂直線1502まで、段落2000と同じ垂直な範囲を有して(例えば、第8の水平線1504まで)作成される。その結果、ブロック2002内での非テキスト入力が実行され得る。
図21Aにおいて、段落2100は、ブロック2000の境界2100aがアライメントパターン1500の第4の水平線1504にアラインされるように、6つの列1004すべておよび4つの線410にわたる、全ページ幅の(2つのマージンにアラインされた)ブロックとして示されている。段落2100の下方でダブルタップジェスチャEを受け取ることに応じて、図21Bにおいて示されるように、ブロック2102が、アライメントパターン1500の第5の水平線1504からページ400の垂直な範囲まで作成される。その結果、ブロック2102内での非テキスト入力が実行され得る。さらなる例において、生成されるべきキャンバスが、有意義なコンテンツ入力を提供するにはスクロールページ400の入力領域408のエッジに近すぎる場合、スクロールページは自動的にスクロールされ得る。入力領域408の上部範囲および底部範囲に関しては、最小のキャンバス幅および高さ(例えば、例として、2つの列および2つのLPU)を設定することによって、図9に関連して前述されたものと同様の自動スクローリングが達成され得る。なぜなら、最小のキャンバスの一部が生成時に自動スクロール領域に重複するように、キャンバスが生成されることになっている場合、スクロールページは、自動的にスクロールされるからである。そのような最小のキャンバスサイズは、キャンバスがスクロールページのマージン範囲のあまりに近くに、または十分に離間されていないオブジェクト間に作成される場合、水平に(例えば、キャンバスの左側に)隣接するオブジェクト、または水平に(例えば、キャンバスの右側に)隣接するオブジェクトの下方のキャンバスの垂直なオーバーフローを保証する手法も提供する。
続いて、ユーザは、生成されたキャンバスが意図された目的には小さすぎる、または大きすぎると決定することがある。そのため、続いて、作成された非テキストブロックのサイズ変更が、コンテンツ入力の前に、またはコンテンツ入力の後に、実行され得る。すべてのオブジェクトブロックのサイズ変更は、所与の条件の下で、およびレイアウトに対する一定の結果として生じるアクションを伴って可能である。例えば、サイズ変更されたオブジェクトは、アライメントグリッドに対してスナップし、サイズ変更されたコンテンツは、必要な場合には、画像を除いて、ノートにおいて常に完全に目に見える(例えば、トリミングされない)。画像のサイズ変更に関して、スクロールページ400内にインポートされた画像またはスクロールページ400内の非テキストブロックとしての画像は、レイアウトコンテナとしての役割を果たす境界ボックス内に埋め込まれる。その境界ボックス内での画像配置は、ユーザインタラクションなしで、下記のように取り扱われる。
画像が境界ボックス領域全体(オーバーフローしている部分はトリミングされる)を常にカバーするように、画像は拡大/縮小される
画像は、いかなる場合にも、その縦横比を維持する(例えば、引き伸ばしなし)
画像は、その境界ボックス内の中心に配置される。
画像の、および他のオブジェクトブロックのサイズ変更は、内側の画像自体ではなく、選択された画像の周りに表示され、境界ボックスに結び付けられたハンドル(図9を参照)を使用して実行される。ハンドルに対するアクセスは、ブロック境界の対応する表示と共に、ユーザにとって自然で十分によく理解される様式で、例えば、ユーザがサイズ変更/編集対象のコンテンツ上でシングルタップを単に実行することなどによって、本システムおよび本方法によって提供される。当業者によって理解されるように、いったん表示されると、ユーザは、ハンドルにタッチし、またはハンドル上でホバーし、選択されたハンドルをインターフェースを横切ってドラッグ/プッシュして、コーナーハンドルのドラッギング/プッシングが境界ボックスの拡大縮小を引き起こし(2つの辺を移動させ、したがって境界ボックス縦横比を維持する)、サイドハンドルのドラッギング/プッシングが境界ボックスの引き伸ばしを引き起こす(単一の辺を移動させ、したがって境界ボックス縦横比を変化させる)状態で、様々な振る舞いを提供する。境界ボックス縦横比を変化させることは、内側の画像縦横比に影響を及ぼさず、むしろ、画像は自動的に拡大縮小される/中心に配置される。
他のタイプの非テキストブロックおよびテキストブロックは、同じ手法で明示的にサイズ変更され得る。しかしながら、段落がサイズ変更される場合、テキストコンテンツのフォントサイズは変化(すなわち、拡大縮小)させられず、段落の寸法のみが変化させられる(例外については、後の詳細な考察を参照)。レイアウトに関しては、前述された規則に従って、ブロックがより小さくされた場合には、下方のコンテンツは上方へ移動され、ブロックがより大きくされた場合には、下方のコンテンツは下方へ移動される。
前述されたように、ブロック内のコンテンツのユーザ入力に起因して、ブロックの自動的なサイズ変更も発生する。例えば、ユーザがテキストブロックを書き込む(例えば、段落を追加する、または段落を継続する)場合、ユーザが書き込むにつれて、ラインおよびフォントサイズが維持された状態で(および、より下側のコンテンツの任意の結果として生ずる移動を伴って)、ブロックは自動的に伸びる。自動的なサイズ変更は、1つのデバイス上で作成されたノートの表示が、その後、異なるサイズの画面を有し、または、例えば、横向きから縦向きへのデバイス表示の向きにおける変化を有する異なるデバイス上で表示されることに起因して、発生することもある。前述されたように、ノートテイキングオブジェクトブロックのユーザにより作成されたレイアウトは、ブロック内のコンテンツ自体と同様に、そのような遷移中に本システムおよび本方法によって、できる限り尊重される。そのため、自動的なサイズ変更などの動作は、最小限に抑えられ、必要な場合、またはユーザの元の入力が悪影響を受けない場合にのみ、実行される。変換時に、ユーザがコンテンツのサイズ変更または拡大縮小を望む場合、ユーザは、そのような動作を手動で、例えば、上記に説明された手法で実行することができる。
既述されたように、アプリケーション112が利用されるコンピューティングデバイス100は、縦向きから横向きへの、およびこの逆へのデバイスの向きの変化に応じるインターフェース104を有し得る。したがって、デジタルノートテイキングアプリケーションのスクロールページのノートに含まれたコンテンツ要素のレイアウトおよび特性も、レイアウトに対する最小限の好ましくない影響という同じ原理に従いながら、応じなければならない。同じことは、異なる表示サイズを有するデバイス上の特定のスクロールページ、またはノートブックを表示することにも当てはまる。本システムおよび本方法のアライメントグリッド、および特にレイアウトパターンは、そのような遷移に対する応答性を提供する効果的な手法を提供する。ここで、例示的な遷移が、図22Aおよび図22Bを参照しつつ説明される。
図22Aは、レイアウトパターン1000の6つの列1004が有意義に提供され得るデバイスインターフェース104上のスクロールページ400の例を示す。列1004の列ガター1006も示されている。第1のオブジェクトブロック2200は、第1の列1004にわたり、第2のオブジェクトブロック2202は、第2および第3の列1004にわたり、第3のオブジェクトブロック2204は、第4の列1004にわたり、ただし、前述されたように、ブロック2200、2202および2204は、水平に隣接し、各ブロックの垂直な境界は、対応する列ガター1006にアラインされる。
図22Bは、レイアウトパターン1000の3つの列1004のみが有意義に提供され得る、異なるデバイスインターフェース104または異なる向きのデバイスインターフェース104へ変換されたスクロールページ400を示す。したがって、第1のオブジェクトブロック2200および第2のオブジェクトブロック2202は、変換されたスクロールページ400の3つの列1004内に収まる一方で、図22Aのスクロールページ400内の列1004のうちの4つにわたる第3のオブジェクトブロック2204は適合しない。したがって、第3のブロック2204は、線パターン背景の次に利用可能な線410へ(例えば、それと最も近い上方のブロックとの間にLPU1つ分の間隔を残して)垂直に移動され、マージンにアラインされて、ここでは、対応する列ガター1006にアラインされた第1の列1004にわたる。任意の下方のコンテンツも、前述されたように、下方へ移動される。このように、元のレイアウトは、スクロールページ400の異なるビューにおいてレイアウトコンテンツの有意義で十分なサイズの表示を提供しつつ、できる限り維持される。例えば、垂直に移動された、以前はフローティングしていたブロックのマージンアライメントは、そのブロックが以前は左側に隣接していた水平なブロックの直後に当初は来ていたことが明確になるように行われる。
この応答型のレイアウトプロセスによって、本システムおよび本方法は、ノートが最初の向きで最初のデバイスによって作成され/表示され、次いで、同じ/異なる向きでより小さい/より大きいデバイス上で順次表示される状況においてレイアウトを維持することができ、ただし、元の(第1の)フォーマットでの表示は、ノートがそのフォーマットで再び表示される場合に維持される。これを達成するために、アライメントパターンに関するレイアウト内でのオブジェクトブロックの相対的な配置が知られている必要がある。アプリケーション112は、スクロールページビューを変換する場合に、相対的なブロック位置を決定し、スクロールページのセクションまたは分割を作成して、ブロック近接性の保持を管理することによって、これを取り扱う。垂直/水平方向において2つ以上の要素/ブロックの水平な/垂直なオーバーレイが存在する場合、分割が作成される。ユーザの直接的なアクションを通じて、またはデバイスインターフェースの視認可能な領域に合致したスクロールページの変換に起因して、分割の要素が分割内で移動される場合、分割の要素コンテンツは変化させられない。要素が分割から除去される場合、またはコンテンツに対する編集アクションが実行される場合、分割の要素コンテンツが変化させられる。
図23Aから図23Fは、本システムおよび本方法の例示的な分割スキームを例示する。レイアウトを分割するか否かを決定する際に、本システムおよび本方法は、まず、垂直方向において、垂直にずらされた各要素についての水平方向をチェックすることによって、互いに水平に重複する要素が存在するかどうかを決定し、重複が発見された場合は常に、検索の方向が、垂直から水平へ、垂直へ等に変化する。
図23Aは、1つのオブジェクトブロック2300がインターフェース104内に入力された状態のスクロールページ400の例を示す。ブロックは、3つの列1004および2つのLPU410にわたっている。レイアウト分割するか否かを決定する際に、本システムおよび本方法は、まず、複数の垂直な要素の存在を決定し、次いで、垂直方向において、垂直にずらされた各要素についての水平方向をチェックすることによって、水平に重複する要素が存在するかどうかを決定する。重複が発見された場合は常に、検索の方向が、垂直から水平へ、垂直へ等に変化する。したがって、図23の例においては、下記が発生する。
A1.処理は、ブロック2300(垂直方向における第1の要素である)において始まり、下方への垂直方向の(例えば、ブロック2300の4つの列にわたる中での)検索により、垂直に重複するブロックは存在しないと決定される。したがって、分割は作成されない。
A2.処理は、ブロック2300において継続し、左側および右側への水平方向の(例えば、ブロック2300の2つのLPUの広がり内での)検索により、水平に隣接するブロックは存在しないと決定される。したがって、分割は作成されない。
A3.どちらの方向にも、コンテンツのさらなるブロックは存在しないので、分割処理が終了する。
図23Bは、第1のブロック2300の下方に第2のオブジェクトブロック2302が入力された状態のスクロールページ400を示す。第2のブロック2302は、1つの列1004および3つのLPU410にわたる。さらなるブロックが入力されたので、下記が発生する。
B1.ステップA1が繰り返されるが、今度は、ブロック2302がブロック2300と垂直に重複すると決定される。したがって、ブロック2300とブロック2302とを含む分割2304が作成される。
B2.分割2304の作成により、本例と同じ結果を得るステップA2を繰り返すことによって、ブロック2300において任意のサブ分割が作成されるべきかどうかが決定される。
B3.処理は、ブロック2302(垂直方向における次の要素である)において継続し、下方への垂直方向の(例えば、ブロック2302の単一の列の広がり内での)検索により、垂直に重複するブロックは存在しないと決定される。したがって、分割2304が維持される(例えば、別のブロックを含めるために分割を伸ばす必要はない)。
B4.分割2308の確認により、ブロック2302において継続して、サブ分割が処理によって作成されるべきかどうかが決定され、左側および右側への水平方向の(例えば、ブロック2302の3つのLPUの広がり内での)検索により、水平に隣接するブロックは存在しないと決定される。したがって、サブ分割は作成されない。
B5.どちらの方向にも、コンテンツのさらなるブロックは存在しないので、分割処理が終了する。
図23Cは、第3のオブジェクトブロック2306が第2のブロック2302に水平に隣接して入力された状態のスクロールページ400を示す。第3のブロック2306は、3つの列1004および3つのLPU410にわたる。さらなるブロックが入力されたので、下記が発生する。
C1.ステップB1からB3が繰り返され、分割2304が結果として維持される。
C2.ステップB4が繰り返されるが、今度は、ブロック2306が右側に水平に隣接すると決定される。したがって、分割2304は、3つのブロック2300、2302および2306をすべて含むように更新され、ブロック2302とブロック2306とを含むサブ分割2308が作成される。
C3.サブ分割2308の作成により、ブロック2306(サブ分割2308内の水平方向における次の要素である)において継続して処理することによって、サブ分割2308内に任意のさらなる要素が存在するかどうかが決定され、左側および右側への水平方向の(例えば、ブロック2306の3つのLPUの広がり内での)検索により、ブロック2302のみが左側に水平に隣接していると決定され、これは既に知られている。したがって、サブ分割2308が維持される(例えば、別のブロックを含めるために分割を伸ばす必要はない)。
C4.サブ分割2308の作成および確認により、ブロック2306において継続して処理することによって、サブ分割2308内でさらなるサブ分割が作成されるべきかどうかが決定され、サブ分割2308内での下方への垂直方向の(例えば、ブロック2306の3つの列の広がり内での)検索により、サブ分割2308内に垂直に隣接するブロックは存在しないと決定される。したがって、サブ分割は作成されない。
C5.どちらの方向にも、コンテンツのさらなるブロックは存在しないので、分割処理が終了する。
図23Dは、第4のオブジェクトブロック2310が既存のブロックの下方に入力された状態のスクロールページ400を示す。さらなるブロック2310は、3つの列1004および2つのLPU410にわたる。さらなるブロックが入力されたので、下記が発生する。
D1.ステップB1およびB2が繰り返され、分割2304が結果として維持される。
D2.ステップB3が繰り返されるが、今度は、ブロック2310がブロック2302と垂直に重複すると決定される。したがって、分割2304は、ブロック2300、2302、2306および2310を含むように更新される。
D3.ステップC2からC4が繰り返され、更新された分割2304およびサブ分割2308が結果として維持される。
D4.どちらの方向にも、コンテンツのさらなるブロックは存在しないので、分割処理が終了する。
図23Eは、第3のオブジェクトブロック2306が依然として3つの列1004にわたるが、ここでは3つではなく、1つのLPU410にわたるようにサイズ変更された状態のスクロールページ400を示す。レイアウトに対する編集動作が発生したので、分割処理が実行されるが、ブロックの相対的なレイアウトは変化させられていないので、既存の分割はそのまま維持される結果となる。
図23Fは、第5のオブジェクトブロック2312が(サイズ変更された)第3のオブジェクトブロック2306の下方に入力された状態のスクロールページ400を示す。さらなるブロック2312は、1つの列1004および1つのLPU410にわたる。さらなるブロックが入力されたので、下記が発生する。
F1.ステップD1およびD2が繰り返され、分割2304が結果として維持される。
F2.ステップC2およびC3が繰り返され、分割2304およびサブ分割2308が結果として維持される。
F3.ステップC4が繰り返されるが、今度は、ブロック2312がブロック2306と垂直に重複すると決定される。したがって、ブロック2306とブロック2312とを含むさらなるサブ分割2314が作成される。
F4.サブ分割2314の作成により、ブロック2312(サブ分割2314内の垂直方向における次の要素である)において継続して処理することによって、サブ分割2314内にさらなる要素が存在するかどうかが決定され、サブ分割2314内での下方への垂直方向の(例えば、ブロック2312の3つの列の広がり内での)検索により、サブ分割2314内に垂直に隣接するブロックは存在しないと決定される。したがって、サブ分割2314が維持される(例えば、別のブロックを含めるために分割を伸ばす必要はない)。
F5.サブ分割2314の作成および確認により、ブロック2302において継続して処理することによって、サブ分割2314内でさらなるサブ分割が作成されるべきかどうかが決定され、左側および右側への水平方向の(例えば、ブロック2312の単一のLPUの広がり内での)検索により、ブロック2302のみが左側に水平に隣接していると決定され、これは既に知られている。したがって、サブ分割は作成されない。
F6.どちらの方向にも、コンテンツのさらなるブロックは存在しないので、分割処理が終了する。
したがって、図23の例示的なレイアウトは、3つの分割またはセクションへ分割される。第1の分割またはルート分割がすべてのコンテンツブロックを含み、第2の分割が3つのブロックを含み、第3の分割が2つのブロックを含む状態である。図23の例においては、入力がアプリケーション112に対して行われるにつれて、分割は、徐々に作成され、更新され、処理される。したがって、これらの分割は、それらが作成され、更新されるにつれて、例えばアプリケーション112によって、メモリ108に記憶され、その結果、ブロックの順序は、ユーザインタラクションまたは表示/向きの変化を通じた、分割内または分割間の個々のブロックの移動を通じて、維持される(後で特定の例に関連して説明される)。分割処理は、ブロックの既に作成済みのレイアウトにも適用可能である(例えば、既存のノートがアプリケーション112にロードされる場合)。ルート分割および第1のレベルのサブ分割(例えば、サブ分割2304)は、その中に含まれているブロックを囲むものとして図23に示されているが、これらのより高いレベルの分割は基本的にはスクロールページ400の幅をセクションに分割することが理解される。
図24は、図23のスクロールページ400が異なるデバイスインターフェース104および/または異なる向きのデバイスインターフェース104へ変換されたものを示す。変換に応じて、アプリケーション112は、レイアウトパターン1000の3つの列1004を有するスクロールページ400をレンダリング済みである。したがって、ルート分割2304のブロック2300および2310が、変換されたスクロールページ400の3つの列1004内に収まる一方で、図23のスクロールページ400内の列1004のうちの4つにわたるサブ分割2308の結合されたブロック2302、2306および2312は、適合しない。しかしながら、図22Aに描かれた状況とは異なり、ブロック2306および2312はサブ分割2314内にさらに含まれているので、その結果、サブ分割2314は全体として、線パターン背景の次の利用可能な線410へ垂直に移動され、コンテンツブロック2312は、最左端のブロック(すなわち、ブロック2306)と共に、(例えば、サブ分割2314の上側および下側のブロックと、最も近い上方および下方のブロックとの間にLPU1つ分の間隔を残して)移動されて、マージンにアラインされる結果となる。このように、スクロールページ400の異なるビュー内でレイアウトコンテンツの有意義で十分なサイズの表示を提供しつつ、元のレイアウトは、要素の主な垂直なフローと、スクロールページの幅を横切る要素の水平な順序との両方において、できる限り維持される。垂直な順序および水平な順序が維持されるので、元のデバイスの向きまたはサイズが復元される場合、図24の表示は、図23Fの表示(例えば、その元の入力に対するレイアウト)へ適切に変換される。
図23の例においては、分割内に、それらの分割に対して追加されるコンテンツのための十分な水平の空間(例えば、列)が存在していた。他方で、追加されたコンテンツまたはオブジェクトが、1つの分割内のスクロールページ410の利用可能な幅内に収まらない場合、その分割のすべてのオブジェクトは、追加されたオブジェクトが分割内のどこに入力され、またはドロップされたかに依存して、(前述されたように)自動的にサイズ変更され、右側および下方のオブジェクトは、結果として下方へ移動される。デジタルインク段落またはテキストブロックのサイズ変更は、線パターン背景のより多くの線またはより少ない線へのデジタルインクの並べ替えも含む。この並べ替えは、段落の意味およびインテグリティが維持されるように取り扱われる。したがって、デジタルインクの特定の段落(および活字化されたテキスト−後述を参照)は、別の段落へと別様に並べ替えられてもよく、いかなる場合にも、段落の最小幅は、段落内のテキストの最小のワード幅(ハイフネーションの有無に関わらず)によって規定される。
自動的なサイズ変更は、レイアウト内のブロックまたは段落の位置、ならびにスクロールページの幅内でのその垂直な占有の割合が尊重されるように、向きまたはフォーマットの変化も伴って実行されてもよい。例えば、一定の相対的な垂直位置を有し、視認可能な領域幅の一定の割合、例えば75%を占有する段落内の手書きのテキストについて、デバイスの向きまたはサイズを変化させる場合、より多くの単語が段落内に収まることができるようにテキストを並べ替えることによって、同じ相対的な位置および割合が適用され、または段落の高さが変化させられ、またはテキスト文字のサイズがそれに応じて調整される。テキストサイズは、デジタルインクの活字化に特に関連する。
入力されたデジタルインクを活字化されたテキストへ変換する様式は、レイアウトにも同様に影響を及ぼす。これは、紙面または画面上に手書きされた文字が、典型的には、活字化されたテキストよりもはるかに大きく、活字化されたテキストは、一般に、標準OS設定(例えば、16pxのフォントサイズおよび24pxの線高さ)を使用してレンダリングされ、一般に、可変のサイズおよびアライメントを有する(ただし、線パターン背景は、これらの変化の範囲を低減することを支援する)からである。したがって、デジタルインクの段落が活字化された場合、結果として生じる活字化されたテキスト段落は、はるかに小さくなる。活字化の前および後の段落の相対的なサイズの例は、図25に示されており、図25において、6つの線410(例えば、6つのLPU)の広がりを有するデジタルインク2500の単純な複数線の段落は、活字化された場合に、線3つ分の(例えば、もはやLPUを基準としない)活字化されたテキストのみから成る複数の線の段落2502へと縮まる。これは、書き込みが完了した後に、1つずつまたは全部まとめて活字化される垂直にレイアウトされた段落にとっては、それほど問題ではない。なぜなら、段落の相対的なレイアウトは同じままであるからである。しかしながら、水平にレイアウトされた段落および活字化された段落に隣接する非テキストブロックにとっては、周囲のオブジェクトブロックの自動的な移動が実行される場合に、レイアウトにおいて大きな変化が発生することがある。
あるいは、例えば、活字化された段落のブロック(境界)をサイズ変更しないことなどによって、隣接するブロックがそのまま残され得る。しかしながら、ブロック境界は、例えば移動中および編集中にのみ表示されるため、ユーザはブロックの存在に気づいていないので、結果として生じた活字化された段落のサイズは、周囲の要素に関して奇妙に見えることがあり、ユーザにそれらのブロックを活字化された段落の近くへ移動させようと試行させ、これは、活字化された段落を囲む拡大されたブロックのサイズに起因して、許容されないことがある。
コンテンツが正確に入力されるために、手書きが、活字化されたものよりも大きい空間(例えば、より大きい線高さ)を必要とすることは明らかであり、認識処理を支援するために、線パターン背景が一般に必要である。したがって、デジタルインクの線高さが、活字化されたインクの線高さよりも大きいので、本システム方法は、活字化された段落から線パターン背景の表示を除去し、それによって、コンテンツをはるかに鮮明で読みやすくし、共有され得る準備ができた状態にしている。この例は図26に示されており、図26において、線パターン背景410が表示されたデジタルインク段落2600は、活字化された段落を含むテキストブロック2602内の抑制された線パターン背景の表示と共に、活字化された段落2602へ変換される。
手書きから活字への遷移は、コンテンツ入力からユーザの注意をそらすことを防止するように迅速である必要がある。したがって、本システムおよび本方法においては、段落を手動で活字化するための、単純で、自然で、かつ十分に理解されるメカニズムが提供され、変換のアニメーションは、透明度(0%から100%)と拡大縮小(0%から100%)との単純な混合と共に使用される。一例において、ユーザが段落を活字化することを望む場合、ユーザは、単に段落をダブルタップし、結果として生じるアニメーションにおいて、変換の起点は、(活字化されている)最も小さい状態の絶対的な中心にアラインされる。そのような変換アニメーションの例は図27に示されており、図27においては、デジタルインク段落2600から活字化された段落2602への変換が示されている。ユーザが、その他の要素に関する活字化された段落のサイズに不満である場合、ユーザは、例えば、前述されたように、コンテンツのシングルタップを実行して、そのコンテンツを選択することを通じて、段落ブロックをサイズ変更することができる。さらに、変換の反転は、活字化されたコンテンツのダブルタップを再実行することによって提供され得る。あるいは、変換をコミットする前に、ユーザは、例えば、デジタルインク段落の長押し、またはホバーオーバーなどの、他の自然で十分に理解される動作を実行することによって、(図27に示されるように)デジタルインク段落を一時的に置換し、またはオーバーレイする、アニメーションおよび結果として生じる活字化された段落を見ることができてもよい。
段落が活字化されると、ユーザは、活字化されたコンテンツに対して手書きによってコンテンツを変化させることまたは追加することを望む場合がある。本システムおよび本方法は、このことを、良好な品質および共有可能なデジタルノートを生み出すための前述された規則を厳守する様式でサポートする。これは、活字化された段落がより大きなフォーマットで表示されることを必要とすることによって行われる。このより大きなフォーマットにおいて、線パターン背景は、活字化されたテキストが線パターン背景の線上に存在するようにフォントサイズが拡大された状態で、活字化された段落ブロックにおいて表示される。このように、HWRシステム114によってサポートされる任意の手書きのテキストまたは編集ジェスチャ、例えば、取り消し、削除、上書き、挿入等は、LPUに関して行われ、それによって、適切な認識をサポートする。より大きな活字化されたサイズへの一時的変換は、例えば、単純で十分に理解される動作、例えば、シングルポイントジェスチャ、またはピンチアウトなどのマルチポイントジェスチャなどをユーザが実行することによって達成され得る。この状況において、新しい手書きのテキストは、このフォーマットのままであり、例えば、追加されたデジタルインクが同じサイズに活字化されるのと同時に、拡大された活字化されたテキストが通常のサイズ設定に戻る変換をユーザが(例えば、前述された様式で)実行するまで、段落は活字とデジタルインクとの混合である。このように、HWRシステム114がすべての段落コンテンツの再認識を実行することは不要であり、レイアウトは維持される。
活字化に加えて、単純で十分に理解されるジェスチャが、ノート内の新しいコンテンツとインタラクションし、編集し、作成するためにユーザによって実行され得る。例えば、図20および図21を参照して説明されたような非テキストキャンバスを挿入する場合、例えば、挿入されたキャンバス領域のダブルタップをユーザが実行することによって、そのキャンバスのフルスクリーンモードに入ってもよい。さらに、デジタルインクまたは活字化された段落内で、特定のテキスト、例えば、単語、句、文とのインタラクションは、例えば、(前述されたような)選択に対する変化のための結果として生じる選択ハンドルの有無に関わらず、選択対象のテキストの長押しまたはホバーオーバーをユーザが実行することによって行われてもよい。さらに、定義されたオブジェクトブロックの外部の入力領域408の空間において、HWRシステム114によってサポートされる編集ジェスチャ、例えば、取り消し、削除、挿入等などは、(下方の任意のオブジェクトブロックの結果として生じる下方への移動と共に)既存の要素の周りの空間を追加し、または抑制するために、その要素自体の移動またはサイズ変更なしにユーザによって実行され得る。
前記で論じられたように、ガイド要素としての線パターン背景の提供は、ユーザが手書きを入力する際に明確に定義された手法で導くことを支援する。これは、本システムおよび本方法による入力の認識および解釈、ならびに本システムおよび本方法による、デジタルインクの応答型ディスプレイ(美化されていないもの、および美化されたもの)ならびに手書きの「純粋な」インクを表す活字化されたインクの提供を支援する。また、論じられたように、ユーザが編集を通じて自身の入力のコンテンツとさらにインタラクションするための能力も、線パターン背景に関してデジタルインクおよび活字化されたインクを表示することを通じて支援される。
前述されたように、バーティカルリズムは、LPUが活字化されたテキストサイズの倍数として提供される状態で、この活字化されたテキストサイズに基づいてもよい。このように、それら自体のレムベースの原理によって規定される、あらゆる活字化されたコンテンツおよび非テキストブロックは、入力のために表示される線パターン背景と垂直にアラインされたままとなる。さらに、垂直反応型のリズムを提供するために、他の活字設定は、この値に関連して行われ、その結果、この1つの値の(ジェスチャ、メニュー等を通じた)変化は、ノートのコンテンツのレイアウト全体をそれに応じて変化させる。
典型的には、フォント化された文字または活字化された文字(例えば、デジタルオブジェクト)のデジタル表示のためのデフォルトフォントサイズは、読みやすさとデバイス表示特性とに基づいて設定される。図28Aは、「Example」という、例示的なテキスト単語2800についての活字化されたインクの典型的なパラメータを示す。テキスト2800は、テキスト文字、例えば文字「l」のアセンダによって定義された上部範囲(破線2802として例示されている)と、テキスト文字、例えば文字「p」のディセンダによって定義された下部範囲(破線2804として例示されている)とを有する。これらの範囲は、アセンダおよびディセンダなしに、テキスト文字の名目上の高さを定義する、上部の名目上の範囲および下部の名目上の範囲(それぞれ破線2806aおよび2806bとして例示されている)からそれぞれ離間されている。上部範囲線2802は、上部の名目上の範囲線2806aから距離d1だけ離間されている。下部の範囲線2804は、下部の名目上の範囲線2806bから距離d2だけ離間されている。名目上の範囲、すなわち、上部の名目上の範囲線2806aと下部の名目上の範囲線2806bとの間の距離は、距離d3である。したがって、フォントサイズまたはテキスト高さ、すなわちDは、d1+d3+d2として定義される。
前述されたように、インターネットブラウザは、通常は、16dp(例えば、1レム=16px)に設定されたデフォルトフォントサイズを有する。このフォントサイズ内では、テキストは、4dpのアセンダ高さ(d1)、8dpの名目高さ(d3)、および4dpのディセンダ高さ(d2)を有し、バランスの取れたフォント化を提供する。ただし、他のデフォルトフォントサイズ、例えば、18dpおよび15dpなど、または、これらよりも小さい値、もしくは、これらよりも大きい値なども取り得る。バーティカルリズム(dp)/remユニットに基づいたそのようなフォントサイズは、一般に、デジタルデバイス100のオペレーティングシステム110によって提供される。そのため、異なるデバイスは、例えば、使用される画面解像度と任意のソフトスケーリング(デバイス対ピクセル比)とに依存して、ミリメートル単位で異なるレンダリングメトリックを有する。表4は、16dp/1レムのデフォルトフォントサイズにおける、いくつかの例示的なデバイスレンダリングメトリックを示す。
ただし、本システムおよび本方法において、活字化されたテキストサイズは、手書きの文字のための十分かつ知覚可能な空間を提供しつつ、活字化されたインクの知覚可能な表示を提供するように設定される。したがって、活字化されたテキストサイズの上部範囲および下部範囲の上方および下方に十分な空間が提供されて、手書きの知覚可能な入力を可能にする。この付加的な空間は、線パターン背景410のパラメータを定義する。図28Bは、線パターン410の水平線を形成するためのこの付加的な間隔を示しており、テキスト2800の上方の線410が、上部の範囲線2802から距離d4だけ離間され、テキスト2800の下方の線410が、下部の範囲線2804から距離d5だけ離間された状態である。d4およびd5の値は、例えば、紙面に対して使用される典型的な線間隔に基づいて設定されてもよい。
紙面の場合、異なるスタイルの手書きに関して、多くの線間隔標準が世界中で使用されている。例えば、表5は、ラテン語ベースの原稿のためのA4ノート用紙のいくつかの標準を要約したものである。
表4から分かるように、用紙ベースの水平線間隔にはいくらかのバリエーションが存在するが、これらの線間隔標準は、手書きについて許容可能と考えられものに関するガイドを提供する。しかしながら、画面上での活字規則は、印刷とは異なる。例えば、用紙の場合、空間は、(前述されたような)画面上とは異なり、その固有の制約に起因して問題となるが、画面上でのスクロールは、所望の場合にはテキストが狭い間隔にされ得る用紙とは異なり、読みやすくするために「空気を含ませた(aired)」テキストまたは離間されたテキストを必要とする。デフォルトの活字テキストは、そのフォントサイズの1.4倍から1.6倍までの間の線高さにおいて最も良く読み取られる。したがって、本システムおよび本方法の手書き入力のためのLPUは、デフォルトの活字化されたテキストサイズの約1.4から約1.6倍、例えば、約1.4×1レムから約1.6×1レムに設定される。LPU線高さ係数を簡単に乗算され得る整数に設定することは、ぼやけたレンダリングにつながる非整数のサイズ設定を回避する。
表6は、LPUがフォントサイズの1.5倍に設定される場合、例えば、線高さ係数1.5が使用される場合の、表3の「製品」についての値を示す。図28Bの例において、これは、4dpの上部パディング(d4)および4dpの下部パディング(d5)を有する、8dpの線パディングを提供する。なぜなら、1.5×16dp(デフォルトの活字化されたテキストサイズ;1レム)=24dpであるからである。このデフォルト線高さは、1.5レムの高さの倍数のみを使用して、バーティカルリズムユニット、およびあらゆるオブジェクトがアラインされるグリッドパターンを定義する。
表5から分かるように、これは、表4の用紙基準の範囲にある線間隔を提供する。したがって、本システムおよび本方法において、LPUの結果として生じる物理的な高さは、デバイス画面解像度とソフトスケーリング係数とに依存する。なぜなら、活字化関連のメトリックが、線パターンに対して使用されるからである。つまり、手書きは、「実世界の」固定されたメトリック、例えばミリメートルを用いたサイズ設定よりも、むしろ手書き線パターンのための活字化されたフォントサイズを単位として使用すること、または従来行われているように、手書き自体に基づいたサイズ設定を適合させることによって、活字化されたフォントサイズとリンクされ、一体化される。
本システムおよび本方法においては、LPUの値を設定する場合に、前述されたレイアウト特徴、例えば、段落に分けること、およびアライメントグリッドに関するオブジェクトブロック配置などを尊重する際に、ユーザのガイダンスに対してもさらなる考慮が与えられる。特に、手書き入力中に、線パターン背景は、ユーザが入力領域408において知覚可能に手書きをすることができる場所をユーザにガイドするために、一定の領域においてマスキングされてもよい。例えば、ページ400上の任意の活字化されたテキストブロックについて、任意のさらなる手書き入力が、段落間に空白な線を残すなどのレイアウト要件を尊重しつつ行われるように、線パターン410は、それらのブロックの境界ボックス内でマスキングされてもよい。
図29Aは、線パターン410が全くマスキングされていない境界ボックス2902を有する、活字化されたテキストブロック2900を示す。図から分かるように、ユーザは、テキストブロック2900に対応する段落に関して、どの場所にも手書きが入力され得ると考えるかもしれず、これは、その入力があまりにも近くに書かれた場合に、テキストブロック2900の段落に対して望ましくない形で追加されることを引き起こすことがある。図29Bは、境界ボックス2902内でマスキングされている線パターン410を示す。これは、アプリケーション112による活字化された段落の処理についてのある程度の理解をユーザに提供する。「マスキングする」という用語は、現在表示されている線パターン背景がさらなる手書き入力のためのガイド要素として働くように、線パターン背景のレンダリングされた表示が、「マスキングされた」と言われるスクロールページ400の表示ロケーションにおいて、本システムおよび本方法によって行われないことを意味するものと理解される。
これは、出力コンテンツのリアルタイムプレビューをユーザに提示し、線パターンがそのコンテンツの読みやすさに干渉することを防止する。しかしながら、そのようなマスキングを提供する際には、マスキングの範囲が考慮される必要がある。これは、例えば、線パターンがテキストブロックの境界ボックス内でのみマスキングされる場合、図29Bに示されるように、ブロックを囲むマスキングされていない線を残す一方で、ユーザは、可視線上に書き込んでもよいのか、または書き込んではならないのかに関して混乱する可能性があるからである。つまり、図29Bにおいて、テキストブロック2900の真上の線410および真下の線410は、目に見えたままであっても、いかなる書き込みもホストすべきではないということである(なぜなら、それらは段落にあまりにも近いからである)。これを防止するために、オブジェクトブロック境界ボックスの外側の線も、一定の範囲でマスキングされるべきである。このように、ユーザは、線がある場所であればどこにでも、ユーザが書き込んでよいということを知る。本システムおよび本方法において、このマスキングの範囲は、線パターン背景のパラメータに関して構成され、したがって、下記のような、デフォルトの活字化されたテキストサイズとなる。
前述されたように、オブジェクトブロック間の間隔は、コンテンツ自体ではなくブロックの境界ボックスをアライメントパターン1000とアラインすることによって取り扱われる。例えば、活字化されたテキストコンテンツ自体を線パターン410とアラインすることは、図30Aに示されるレンダリングされた表示をもたらし、図30Aにおいて、デフォルトの活字化されたテキストサイズの線1つ分の文を定義する活字化されたテキストブロック3000は、線パターン410上にアラインされている。このレンダリングは好ましくない。境界ボックスをアライメントパターンとアラインすることは、各境界ボックスを定義する内側パディングを提供することによって行われる。
図30Bは、テキストサイズの全範囲(すなわち、図28Aにおいて示されたようなもの)の上方および下方の(垂直な)約0.75レム(例えば、約0.5LPU)の内側パディングと、列1004(およびガター1006)に関してテキストの範囲の左側および右側に約1.5レム(例えば、約1.0LPU)の(水平な)内側パディングとによって定義された境界ボックス3002を有するテキストブロック3000を示す。このように、テキストブロック境界ボックスは、それらの左上角部、例えば座標(0,0)に沿ってアライメントパターンとアラインされ、図30Cに示されるレンダリングをもたらす。つまり、活字化されたテキストは、境界ボックスの上部および底部の約0.75レム以内、およびアライメントパターンに関して境界ボックスの左側および右側の約1.5レム以内にレンダリングされない。このように、隣り合ったテキストブロックの水平な崩壊(decays)などに起因する、垂直アライメントおよび間隔の問題が回避される。境界ボックスのパディング量は、所望の活字化フォーマット、および並べ替えなどのアクションに依存して、これらの値よりも大きい値または小さい値に設定されてもよいことが理解される。
線パターンは、テキストブロック境界ボックスの内部でマスキングされ、それによって、内側パディングを通じていくらかの間隔を一体化するので、この内側マスキングは、外側マスキングの提供によって補完されてもよい。前述されたように、LPUは、手書き入力のための理想的な利用可能な高さを定義する。したがって、活字化されたテキストの任意の表示された線は、上方および下方に少なくともLPU1つ分の空いた空間を有するべきである。したがって、外側マスキングは、ブロックの真上および真下の線410をマスキングし、または曖昧にするために、LPUに基づくことができる。例えば、図31Aは、上述されたような内側パディングまたは内側マスキングと、各辺の周りに約1.5レム(例えば、およそLPU1つ分)の境界ボックス3102からの空間を定義する外側マスキング領域3104とを有する、境界ボックス3102を用いて段落を定義する活字化されたテキストブロック3100を示す。組み合わされた内側マスキング領域3102および外側マスキング領域3104のこの線パターンマスクは、図31Bに示されるブロック3100のレンダリングされた表示をもたらす。
境界ボックスは、アライメントパターン1000のガター1006とアラインされるので、内側マスキングは、列1004のガター間空間に関連するのに対して、外側マスキングは、ガター1006自体の幅に関連する。したがって、ガター幅は、1.5レム(例えば、LPU1つ分)に設定され、それによって、グローバルな視覚的バランスに適合し、活字化された段落に関する十分な空間を提供する規則的な外側マスキングを作成してもよい。つまり、水平に隣接する(または重複する)ブロックは、前述された仕様に沿って、2つのガター1006(例えば、3レムまたはLPU2つ分)の幅によって分離され、垂直に隣接する(または重複する)ブロックは、空行410(例えば、LPU2つ分)によって分離される。当然ながら、LPUの設定値が異なる場合には、外側マスキングの値が同様に異なることが理解される。
オブジェクトブロックは、LPUに従ってサイズ設定され得る一方で、テキストブロック高さは、LPUの整数倍でないことがあり得る、ブロック内のテキストコンテンツによって定義される。つまり、LPUベースの外側マスキングは、奇数行のテキストを有する段落に対してうまく作用する。例えば、段落3100が7行のテキストを有する図31Bに示されるように、テキストの最終行は、次に表示される線410のLPU2つ分以上、上方にある。しかしながら、偶数行のテキストを有する段落は、LPUの非整数倍の高さを有するブロックを定義し、したがって、線パターンの2行のちょうど間で終了する。このケースにおいて、1.5レムの外側マスキングが追加される場合、テキストブロックは、書き込むには現在の段落にあまりに近い、次に利用可能な線410とアラインする。
例えば、図32Aは、2行のテキストを有する段落を定義する活字化されたテキストブロック3200を示す。ブロック3200は、内側マスキング領域3202と外側マスキング領域3204とを有しており、両方とも前述されたように定義されている。この線パターンマスクの効果は、図32Bに示されており、図32Bにおいて、段落3200の真下の線410は、円Fによって示された領域において目に見えたままである。図から分かるように、段落3200内のテキストの最終行は、この線410からLPU1つ未満である。
この状況を防止するために、追加のパディング量が、外側マスキングに対して、したがって、マスク自体に対して追加される。LPU1つ分の外側マスキングに対して追加の1dpを付加することは、偶数行の活字化されたテキスト段落(および、したがって、あらゆる活字化されたテキストブロック)の真下の線も同様にマスキングされることを保証するのに十分であり、次に利用可能な線をLPU1つ分さらに下方に出現させる。これは図32Cおよび図32Dに示されており、図32Cおよび図32Dにおいて、外側マスキング領域3204’は、ブロック3200について、ブロック3200の下側に1.5レム+1dpのパディング量を有して定義されており、それによって、円Gによって示された領域においてブロック3200の真下の線410のマスキングをもたらす。追加の外側パディングについて、より大きな値を取り得ることが理解される。
上述されたマスキングは、デジタルインクもしくは活字化されたインク、またはこれらの組み合わせを含むかどうかに関わらず、任意のテキストブロックに対して適用し得る。しかしながら、手書き入力のためのガイドを最適化するために、手書きのテキストブロックのためのマスキングは、別様に管理されてもよい。これは、活字化された段落の近くでの手書きを阻むことが望ましいことがあり得る活字化されたテキストブロックとは異なり、手書きのテキストブロックまたはデジタルインクテキストブロックの場合には、ユーザは、手書きの段落に対するコンテンツの入力を継続することが可能にされるべきであるからである。したがって、デジタルインクブロック内ならびにデジタルインクテキストブロックの真上および真下の線パターン410は、目に見えるべきであり、つまり、マスキングされないべきである。しかしながら、水平の範囲におけるブロック間隔、例えば、列状のブロックまたは段落の間隔を尊重するために、アライメントパターン1000のガター1006に関する外側マスキングは、活字化されたテキストブロックのためのそれと同様の様式で使用される。
例えば、図33Aは、スクロールページ400の入力領域408に対して入力された手書きの段落入力からレンダリングされた、デジタルインクブロック3300を示す。活字化されたインクブロックのように、デジタルインクブロック3300は、本システムおよび本方法によって、境界ボックス3302を用いて定義されて、アライメントパターン1000とアラインする。特に、例示されているように、境界ボックス3302は、ブロック3300が位置する列1004のガター1006とアラインされる。これらの隣接するガター1006は、ブロック3300の外側マスキング領域3304の水平部分として定義される。外側マスキング領域3304の垂直部分は、例示されている例において、1レムとして定義されているが、活字化されたインクブロックのように、0.75レムの値が使用されてもよく、または、より大きい値もしくはより小さい値が使用されてもよい。
デジタルインクブロック3300の下方および上方のより小さい値の外側マスキングは、段落の真上および真下の線410が曖昧にされず、それによって、それらの線上でさらなる手書き入力が行われ得ることをユーザに示すことを意味する。これは、ユーザに比較的自由な入力を提供する一方で、前述された段落分け要件に関しては、問題を引き起こすことがあり得る。したがって、隣接するガター1006を有する外側マスキングは、この段落分け要件を示すために、少なくとも段落の下方で列間外側マスキングを越えて伸ばされてもよい。例えば、図33Aに示されるように、ガター間外側マスキングは、ブロック3300の下方で1.5レム+1dp(例えば、LPU1つ分+1dp)伸びており、ただし、1dpの追加の外側マスキング量は、段落3300の下方の線410のマスキングを、偶数行の活字化されたインク段落について上記で論じられた様式と同様の様式で保証するためのものである。
この間隔は、段落3300に関する垂直なフローにおいて、さらなる手書き入力のためのガイドをユーザに対して提供するのに十分であり得るが、依然として、ユーザには、ブロック3300のそれ(それら)に隣接する列1004のガター1006においてさらなる手書きを入力する傾向があることがある。なぜなら、線410は、依然としてその領域に表示されるからである。したがって、図33Aにさらに示されるように、デジタルインクブロック3300の外側マスキング領域3304の水平部分は、追加の外側パディング領域3306内へ伸ばされて、隣接する列1004の隣接するガター1006を組み込む。したがって、外側マスキングの水平部分は、1.5レム+1.5レム=3レム(または、LPU2つ分)の値を有する。外側マスキングの水平部分3304および3306は、図33Bに示されるガターマスキングを提供する、パディングされた水平外側マスキング領域3308を形成する。図から分かるように、線パターン410は、段落3300の手書きコンテンツの後ろ、ならびに真上および真下で目に見えているが、隣接するガター内では目に見えず、ユーザに対して、さらなる手書き入力が許容され得る場所の明確な標識を、その入力が既存の段落に対して追加されることなしに提供する。
アライメントパターンに関して、(デジタルインクまたは活字化されたインク)ブロックの線パターンマスキング領域またはゾーンを定義することによって、隣接するコンテンツブロックの表示を知覚可能にレンダリングすることが可能である。つまり、水平な外側マスキングは、アライメントパターン1000のガター1006によって、およびそのガター内で定義されるので、水平に隣接するブロックの外側マスキングは共有される(すなわち、重複する)ことができ、それにより、追加の不要な間隔がそれらの間に提供されず、例えば、デジタルインクブロックは、水平に隣接するデジタルインクブロックから6レム、または水平に隣接する活字化されたインクブロックから4.5レムだけ分離されないが、どちらのケースでも3レムだけ分離される。さらに、垂直な外側マスキングは、アライメントパターン1000の線パターン410によって定義されるので、垂直に隣接するブロックの外側マスキングも共有される(すなわち、重複する)ことができ、それにより、追加の不要な間隔がそれらの間に提供されず、例えば、活字化されたインクブロックは、垂直に隣接する活字化されたインクブロックまたはデジタルインクブロックから3レム+2dpだけ分離されないが、どちらのケースでも3レムだけ分離される。
図33の例に関して、ブロック3300の真下の線410上にさらなる手書きを入力すると、本システムおよび本方法による境界ボックス3302は、そのさらなる入力コンテンツを組み込むように伸ばされ、それにより、外側マスキング領域3304は、垂直なフローにおいて、すぐ次の線410の内側ガターマスキングを含む。
線パターン背景の前述されたマスキングまたは選択的な非表示は、HWRシステム114によって実行される認識、およびアプリケーション112によるコンテンツレイアウトの応答型の取り扱いをより一般的に助けるために、手書きの好ましい入力をガイドするために使用される。手書き線パターンマスキングも、本システムおよび本方法によって使用されて、コンテンツレイアウト構造自体の検出および認識を助ける。本システムおよび本方法の一例において、線パターンマスキングは、特に、箇条書きにされたリストおよび番号を付されたリストにおいて、手書きのリストの入力および検出を助けるために使用される。この例が、ここで、図34から図40に関して説明される。
デジタル活字化において、テキストのリストは、典型的には、階層的な様式で構築される。つまり、リスト項目および階層においてそれらに依存するリスト項目は、通常は、初期マージン(例えば、左から右へ書かれる言語の場合には左側マージンである)からのインデントおよび/または階層内の各項目のレベルを示すために使用されるシンボルを用いて、連続する線上で分離される。
図34は、スクロールページ400の入力領域408に対して入力された手書き入力からレンダリングされた、デジタルインクリスト3400の例を示す。リスト3400は、テキストのヘッダーまたは基礎(第1のレベルの)リスト項目3402を第1の線410上に有し、依存的な(第2のレベルの)リスト項目3404を後続の線410上に有する。第2のレベルの項目3404は、ダッシュであるシンボル3406を含み、その後に「Item 1」という句であるテキスト3408が続く。この手書きのリストは、デジタルの活字化されたリストまたはタイプされたリストの一般的な外観を有しており、ただし、第1の項目3402は、左側マージン(または、少なくとも、リスト3400が位置するブロックの左側に隣接する列境界)と実質的にアラインされ、第2の項目3404は、そのテキスト3408が第1の項目3402に関して右にインデントされ、第1の項目3402と実質的にアラインされるシンボル3406により指定された状態で、後続の線410上に配置される。
ユーザは、リスト構造を使用して、コンテンツ3400を入力しているので、手書きのコンテンツが活字化されたオブジェクトまたはデジタルオブジェクトへ変換される場合には、この構造が尊重されるべきである。したがって、アプリケーション112および/またはHWRシステム114は、リスト構造を検出するように構成される。これは、例えば、入力3400の認識されたコンテンツの相対的な形状を分析することによって、少なくとも部分的に行われ得る。例えば、最も単純な形態において、アプリケーション112、またはHWRシステム114は、第1の項目3402および第2の項目3404の認識されたコンテンツの相対的なロケーションを検出するように構成され、認識されたダッシュ3406が左側マージンまたは隣接する列境界に関して線410の初めにあり、認識されたテキスト3408が続いているので、第2の項目3404がリスト項目であると決定する言語モデルを実装する。
同様に、アプリケーション112、またはHWRシステム114は、第1の項目3402および第2の項目3404のリスト階層を決定してもよい。なぜなら、第2のリスト項目3404には、真上の線410上において、ダッシュなどのシンボルを含まない、第1の項目3402の左揃えにされた認識されたテキストが先行しており、第2のリスト項目3404の相対的に検出されたインデントされたテキストコンテンツ3408が続いているからである。左側マージンまたは列境界に関するテキストコンテンツ3408の検出されたインデントは、隣接する項目との関連なしでも考慮され得る。さらに、第1の項目3402は、そのコンテンツの終わりに、コロンである文法上のマーク3410を含んでおり、これは、本システムおよび本方法によって、リスト階層を決定するためにさらに使用されてもよい。
リスト項目およびリスト階層の決定は、前述されたような、手書き自体の認識のためにHWRシステム114によって使用されたものと同様の確率的なアプローチを使用することによって達成され得る。つまり、入力要素は、その要素の認識されたコンテンツに基づいて確率スコアを割り当てられ、このスコアは、要素の検出された相対的なロケーションに基づいて変更されて、要素と関連する認識されたコンテンツとがリストの一部である尤度を示す。例えば、テキストの行の始まりにあるものとして検出される、リストにおいて典型的に使用される認識された要素またはシンボル、例えば、箇条書き、星、ダッシュ、ハイフン、矢印、チルダ、ハッシュ、または付随するマーク(例えば、括弧、円等)の有無に関わらず、数字および文字などの文字、リストにおいて典型的に使用される認識された要素またはシンボル、例えば、テキストの行の終わりにあるものとして検出されるコロン、セミコロン、コンマ、および隣接する線上のテキストに関してインデントされている認識されたテキストのリスト包含のための確率スコアは、リスト項目包含およびリスト階層検出の尤度を向上させるように割り当てられる。ただし、さらに、他の方法も取り得ることが理解される。さらに、言語モデルは、例えば、HWRシステム114自体の言語モデル、または専用の言語モデルであってもよい。
認識と形状とのそのような組み合わせを使用することは、手書きのリスト項目の秩序だった入力についてリストを検出するのに効果的である。しかしながら、ミスアライメント、悪筆で書き込まれたまたは良好に認識されないリストシンボル等などの、理想的でない入力は、リストおよびそれらの階層の偽陽性の検出および偽陰性の検出につながる。したがって、本システムおよび本方法は、前述されたような線パターンマスキングを使用して、リスト検出を最適化する。図34において見られるように、第2のリスト項目3404のダッシュ3406は、その下側にレンダリングされた線410を有する。したがって、第2のリスト項目3404の下方の線410上へのさらなるリスト項目の入力は、活字化時のリストの適切な検出を保証するために、ユーザがリストの以前の項目に関してそれらの項目のシンボルおよびテキストコンテンツをきれいにまたは適切に書き込み、アラインすることを必要とし、その成功または失敗は、活字化変換が実行されるまで分からない。この適切なアライメントに関するガイドは、認識され、検出されたリストコンテンツに関する一定のロケーションにおいて線パターンをマスキングすることを通じて提供され得る。
例えば、図35は、図34のデジタルインクリスト3400を示すが、図34とは異なり、検出された第2のリスト項目3404の認識されたダッシュ3406の下の線410の部分は、部分的なマスキング領域3500としてマスキングされており、一方で、検出された第2のリスト項目3404の認識されたテキスト部3408の下の線410は、表示されたままである。つまり、線410は、左端の範囲(例えば、左側マージンまたは列境界)から、検出されたリスト項目の認識されたテキストコンテンツの始まりまで表示されない。さらに、部分的なマスキング領域3500は、第2のリスト項目3404の部分的にマスキングされた線410後の下方の後続の線410上で繰り返され、その結果、両方の線410の部分的なマスキングの終了は、破線Hによって示されるようにアラインされる。さらに、次の後続の線410はマスキングされない。このように、部分的な線マスキングは、本システムおよび本方法によって潜在的なリスト入力が検出されたことを示すので、ユーザには、手書き入力中に認識フィードバックが提供され、適切な認識のための、さらなるリスト項目およびそれらの要素の適切な配置のガイドが提供される(下記に詳細に論じられる)。
マスキングされた領域3500は、(例えば、各線410がマスキングされるように)各々が垂直方向において少なくともLPU1つ分にわたる別個の領域またはゾーンとして提供されてもよく、または(例えば、両方の線410がマスキングされるように)垂直方向において少なくともLPU2つ分にわたる単一の(結合された)領域またはゾーンとして提供されてもよい。マスキングされた領域またはゾーン3500の水平な範囲は、先行する検出されたリスト項目および/または左側マージンもしくは列境界に関する、認識されたリストシンボルおよび/または検出されたインデントの後の、テキストコンテンツの始まりとアラインするように提供される。あるいは、または付加的に、マスキングされたゾーン3500は、後続のリストテキストの配置にユーザをガイドするために、リストシンボルが検出されるとすぐに、例えば、LPU2つ分から4つ分など、LPUに基づいて、所定の(かつ、例えば、UIメニュー等を介して設定可能な)値だけ、水平方向へわたるように表示される。この設定された水平な広がりは、後続のリスト項目テキストの入力時に、それとアラインするように調整されてもよい。
線パターン背景の部分的なマスキングは、ユーザによって望まれる場合には、さらなるリスト要素入力のための異なるゾーンを効果的に提供する。つまり、部分的にマスキングされた線410のマスキングされた部分3500は、リストシンボル入力ゾーンを提供し、部分的にマスキングされた線410のマスキングされていない部分は、リストコンテンツ入力ゾーンを提供する。例えば、図36は、第2のリスト項目3404の直後の線410上に付加入力3410を有する、図35に表示されたようなリスト3400を示す。入力3410は、それぞれの線410のマスキングされたゾーンにおいてシンボル3406を含み、それぞれの線410のマスキングされていないゾーン3500において、「Item 2」という句であるテキスト3412を含む。したがって、入力3410は、本システムおよび本方法によって、リストシンボルゾーンにおける認識されたダッシュ3406および/またはコンテンツ入力ゾーンにおける認識されたテキスト3412の検出に少なくとも起因して、依存的な(第2のレベルの)リスト項目として検出される。結果として、部分的にマスキングされた領域3500は、新しいリスト項目3410を含む線410の下の後続の線410まで伸ばされる。
アプリケーション112は、一定のリスト作成上の振る舞いをユーザが厳守することを求めるように構成されてもよい。例えば、新しい(次の)線上の新しいコンテンツに関して、適当なシンボル(例えば、例示されている例のダッシュなど)が入力される場合にのみ、新しい依存的なリスト項目が検出され/認識されてもよい。あるいは、または付加的に、シンボル入力ゾーンにおける先行するシンボルの入力の有無に関わらず、コンテンツ入力ゾーンにおけるコンテンツの継続的な入力が、新しい依存的なリスト項目の検出のために可能にされてもよい。この後者のケースにおいて、本システムおよび本方法は、新しい認識された入力が検出されたコンテンツ入力ゾーンに先行するシンボル入力ゾーンにおいて、デジタルインクでレンダリングされたリストシンボルを表示してもよい。例えば、図35に示される例示的なリスト3400について、リスト項目3410のダッシュ3406は、例えば、リスト項目3404のダッシュ3406のコピーとして、またはデジタルデバイス100のユーザもしくはオペレーティングシステム110のデジタルインクフォントにおいて、レンダリングされてもよい。そのような自動的に表示されるリストシンボルは、強調が低減された状態で、例えば、透明にして、または灰色などでレンダリングされて、前述されたものと同様の様式(例えば、シングルタップ)で、自動的に表示されたシンボルとのジェスチャインタラクションなどを通じて、シンボルが含まれるべきか否かをユーザが示すことを可能にし得る。このように、付加的な認識フィードバックがユーザに対して提供される。
あるいは、または付加的に、最初の依存的な(第2のレベルの)リスト項目が、コンテンツの相対的なインデントだけに基づいて検出される場合、つまり、先行するシンボルが存在しない場合、本システムおよび本方法は、(全体的な)リストシンボルの自動的な表示の有無に関わらず、マスキングされたゾーンおよびマスキングされていないゾーンを表示するように構成されてもよい。そのため、本システムおよび本方法は、同様に配置された、および/または同様の特性を有する連続する線上の要素の手書き入力から、リストおよび新しい階層的なリスト項目を検出する。他方では、ユーザによるリストシンボルの入力または非入力は、付加的なリスト項目についての異なる階層的な意味の特徴である場合があり、したがって、先行するシンボルの有無に関わらず、連続する線上のコンテンツ入力の混合は、本システムおよび本方法によって尊重され得る。
例えば、図37は、リスト項目3410の直後の線410上に付加入力3414を有する、図36に表示されたようなリスト3400を示す。入力3414は、それぞれの線410のマスキングされていないゾーンにおいて、「Still item 2」という句であるテキストのみを含む。このケースにおいて、本システムおよび本方法は、テキスト3414を、新しい個々のリスト項目としてではなく、リスト項目3410の延長であると見なす。したがって、自動的なリストシンボルレンダリングが他の方法で実行される場合、そのようなリストシンボルは、テキスト3414に追加されない。テキスト3414は、第2のレベルのリスト項目3410の一部として検出されるので、図37に示されるように、部分的にマスキングされた領域3500はテキスト3414を含んでいる線410の下の後続の線410まで拡大される。図37の例において、連続する入力は、次の線上の次のエントリとして行われ、認識されかつ検出された入力に応じて、本システムおよび本方法による線パターン背景の表示によって提供されるガイドに基づいて、先行する入力とアラインされる。アライメントのためのそのようなガイドも、(例えば、連続する線410にまたがる文内の)先行する線のコンテンツの続きとして行われる連続する入力のために実行され、それによって、連続する線にわたるリストコンテンツのデジタルインクテキスト「ラッピング」を提供する。
上記の例を継続すると、図38は、テキスト3414の直後の線410上に付加入力3416を有するリスト3400を示す。入力3416は、それぞれの線410のマスキングされたゾーン3500においてシンボル3406を含み、それぞれの線410のマスキングされていないゾーンにおいて、「Item 3」という句であるテキスト3418を含む。したがって、入力3416は、本システムおよび本方法によって、リストシンボルゾーンにおける認識されたダッシュ3406および/またはコンテンツ入力ゾーンにおける認識されたテキスト3418の検出に少なくとも起因して、依存的な(第2のレベルの)リスト項目として検出される。結果として、部分的にマスキングされた領域3500は、新しいリスト項目3416を含む線410の下の後続の線410まで伸ばされる。したがって、検出されたリスト構造および階層は、ユーザの混合された入力に関わらず、本システムおよび本方法によって保存され、適切なリスト入力のためのガイドが、鮮明に維持される。
上記で説明したように、線パターン背景の部分的なマスキングを通じた、リストシンボルまたはインデントゾーンおよびリストコンテンツゾーンの表示は、リスト要素のユーザ入力のための視覚的なガイドを提供する。しかしながら、これはまた、リストの完成のためのガイドを提供し、リストの完成の検出を支援し得る。つまり、例示された例において、リスト項目入力を含む最終行410に連続する部分的にマスキングされた線410に続く線410は、マスキングされていないので、ユーザは、そのマスキングされていない線410上に手書きによって新しい非リスト入力を行うようにガイドされる。このように、本システムおよび本方法は、段落間の空行410要件が観察されるので、この新しい入力を新しい段落として検出する。しかしながら、代替的な例において、リストは、本システムおよび本方法によって、段落とは異なる、または段落の一体の部分であり得る、テキストブロックのクラスとして取り扱われてもよい。つまり、最後のリスト項目の真下の線上の継続的な入力は、新しい段落または新しいリストの始まりとして、またはリストを含む同じ段落の一部として取り扱われてもよい。
これらのケースのいずれにおいても、リスト項目入力の最終行に連続する線上での手書きの入力は、非リストコンテンツまたは新しいリストのリストコンテンツとして検出される。これは、リストシンボルまたはインデントゾーン内の認識されたテキストの入力を、そのような非リストコンテンツまたは新しいリストコンテンツとして取り扱うことによって、達成される。例えば、図39は、リスト項目3416の直後の線410上に付加入力3900を有する、図38に表示されたようなリスト3400を示す。入力3900は、(図38に示されたように)それぞれの線410のマスキングされたゾーン3500において、「List is over」という句であるテキストを含む。このケースにおいて、本システムおよび本方法は、マスキングされたゾーン3500における入力としての認識されたテキスト3900がリストシンボルとして認識されないので、その結果、それは新しい段落3900のテキストであると見なす。テキスト3900は、リスト3400の一部でないものとして検出されるので、図39に示されるように、それぞれの線410上の部分的にマスキングされた領域3500は、テキスト3900全体の下に表示されるように、省略される(つまり、線410は完全にレンダリングされる)。
この例において、リストシンボルゾーンまたはインデントゾーン内での期待されるリストシンボル以外のコンテンツの入力の検出は、本システムおよび本方法によって、(後続の入力が、その検出において第1のレベルのリスト項目という結果にならない限り)非リストコンテンツとして取り扱われる。同様に、コンテンツ入力ゾーンの(少なくとも)始まりにおける期待されたテキスト以外のコンテンツの入力の検出は、本システムおよび本方法によって、新しい階層的なリスト入力として取り扱われてもよい。例えば。図40は、図35に表示されたようなリスト3400を、第2のリスト項目3404の直後の線410上の付加入力3410’と共に示す。入力3410’は、図36の入力3410のシンボル3406およびテキスト3412を含むが、図36とは異なり、シンボル3406とテキスト3412との両方が、(図36に示されるような)それぞれの線410のマスキングされていないゾーンまたはコンテンツ入力ゾーンにおいて入力されている。前述と同様に、認識されたシンボル3406と認識されたテキスト3412とが相対的に同じ場所に設定されていることに起因して、本システムおよび本方法は、入力3410’を依存的なリスト項目として検出する。しかしながら、先行する入力3404に対する入力3410’の相対的なロケーション(例えば、インデント)および/または左側マージンもしくは列境界は、リスト項目3410’を、検出されたリスト3400の階層内の依存的な(第3のレベルの)リスト項目として検出することをもたらす。
この決定に基づいて、検出された第3のリスト項目3410’の認識されたダッシュ3406の下の線410の部分は、部分的なマスキング領域4000としてマスキングされ、一方で、検出された第2のリスト項目3404の認識されたテキスト部分3412の下の線410は、表示されたままとなる。つまり、線410は、左端の範囲(例えば、左側マージンまたは列境界)から、検出されたリスト項目の認識されたテキストコンテンツの始まりまで表示されない。さらに、部分的なマスキング領域4000は、第3のリスト項目3410の部分的にマスキングされた線410後の線410の下方の後続の線410で繰り返され、その結果、両方の線410の部分的なマスキングの終了が、破線Iで示されるようにアラインされる。以降の線410は、第2のリスト項目3404の階層的なリスト構造を保存するために、部分的なマスキング領域3500としてマスキングされる。
本システムおよび本方法は、ユーザ、例えば、学生、学者および実務専門家などが、例えば、講義中、会議中、およびブレーンストーミングセッション中などに、自身のコンピューティングデバイス上で、ワードプロセシングされた文書と同様の、有意義かつ共有可能なフォーマットで手書きのノートを取ることを可能にするアプリケーションを提供する。本システムおよび本方法は、自然な書き込みが入力されることをさらに可能にする。なぜなら、書き込みは、(罫)線上で行われ、認識された書き込みコンテンツの検出されたレイアウトに関する、それらの線の適応的な表示によってガイドされ、段落および他のレイアウト要素は、向き(すなわち、縦向きまたは横向き)およびデバイス表示能力に応答して尊重されるからである。
ノートにおいて作成された、手書きのもしくは活字化されたテキスト、または非テキストコンテンツとのさらなるインタラクション、例えば、そのコンテンツを編集すること、ノートのレイアウトを操作すること、またはノートを文書へ変換すること、もしくは文書にノートを追加することなどは、ノートを別個の文書処理アプリケーションへインポートする必要なしに、アプリケーション自体の内部で直接実行され得る。そのため、手書きのノートの元のレイアウトは、実際に入力された手書き自体、すなわち、デジタルインクと同様に維持される。したがって、アノテーション、装飾物、特別なレイアウト、等は撮影されたノートの容易な理解のために維持される。
前述の内容は、ベストモードおよび/または他の例と見なされるものを説明してきたが、その中で様々な変更が行われてもよいこと、ならびに本明細書において開示されている主題が様々な形態および例において実装されてもよいこと、ならびに、それらが多くの他の適用例、組み合わせ、および環境において適用されてもよく、これらのうちの一部のみが本明細書において説明されてきたことが理解される。当業者は、主題の真の趣旨および範囲から逸脱せずに、開示された態様が変形されまたは修正されてもよいことを認識するであろう。したがって、主題は、本説明における特定の詳細、展示、および例示された例に限定されない。それは、本明細書において開示された有利な概念の真の範囲以内に収まる、ありとあらゆる変更およびバリエーションを保護することが意図される。