(57)【特許請求の範囲】
【請求項１】
ディスプレイ装置上のイメージをレンダリングするためのコンピュータで実施される方法であって、
コンピュータ装置を用いて、一組のピクセル化されたテキスト文字としてイメージルックアップテーブル内に格納されたテキスト文字列をそれに沿ってレンダリングするイメージ内のラインを判定すること、
前記コンピュータ装置を用いて、前記ラインに関連する複数のラインセグメント及び各ラインセグメントに関連する範囲を判定すること、
前記コンピュータ装置を用いて、前記複数のラインセグメントのそれぞれに関するテキストボックスであり、それぞれが関連するラインセグメントに沿った直立位置にテキストを描くように配向されているテキストボックスを形成すること、
前記コンピュータ装置を用いて、前記テキスト文字列のテキスト文字をレンダリングする前記テキストボックスのうちの１つを選択すること、
前記コンピュータ装置を用いて、一組のピクセル化されたテキスト文字として前記イメージルックアップテーブル内に格納された前記テキスト文字列から前記テキスト文字のうちの１つを選択すること、
前記コンピュータ装置を用いて、前記テキスト文字のうちの１つの中央が前記イメージ上の前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内となるかどうかを判定すること、及び
前記コンピュータ装置を用いて、前記テキスト文字のうちの１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内となる場合に、前記テキストボックスのうちの１つを用いて前記ディスプレイ装置上の前記テキスト文字のうちの１つをレンダリングし、前記テキスト文字のうちの１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内とならない場合に、前記テキストボックスのうちの１つを用いて前記ディスプレイ装置上の前記テキスト文字のうちの１つをレンダリングしないこと、
を含む、方法。
【請求項２】
前記テキスト文字のうちの１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内とならない場合に、前記ディスプレイ装置上の前記テキスト文字のうちの１つをレンダリングするのに用いられる前記テキストボックスのうちの１つとして前記複数のテキストボックスのうちの異なる１つを選択することをさらに含む、請求項１に記載のコンピュータで実施される方法。
【請求項３】
前記イメージルックアップテーブル内に格納された前記テキスト文字列から前記テキスト文字のうちの各１つを順に選択することをさらに含み、且つ、前記テキスト文字のうちの選択された各１つに関して、
前記コンピュータ装置を用いて、前記テキスト文字のうちの前記選択された１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内となるかどうかを判定するステップと、
前記コンピュータ装置を用いて、前記テキスト文字のうちの前記選択された１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内となる場合に、前記テキストボックスのうちの１つを用いて前記ディスプレイ装置上の前記テキスト文字のうちの前記選択された１つをレンダリングするステップと、
前記テキスト文字のうちの前記選択された１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内とならない場合に、前記ディスプレイ装置上の前記テキスト文字のうちの前記選択された１つをレンダリングするのに用いられる前記テキストボックスのうちの１つとして前記複数のテキストボックスのうちの異なる１つを選択するステップと、
を行う、請求項１に記載のコンピュータで実施される方法。
【請求項４】
前記テキスト文字のうちの１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内となるかどうかを判定するステップが、前記テキスト文字のうちの１つに関する一組のエンコーディングデータを読み出すことを含み、前記エンコーディングデータが、少なくとも１つの方向の前記テキスト文字のうちの１つの中央を指定する、請求項１に記載のコンピュータで実施される方法。
【請求項５】
前記テキスト文字のうちの１つに関する一組のエンコーディングデータを読み出すことが、前記テキスト文字のうちの１つの幅を指定するエンコーディングデータを読み出すことを含む、請求項３に記載のコンピュータで実施される方法。
【請求項６】
前記複数のラインセグメントのそれぞれに関するテキストボックスを形成することが、前記ラインセグメントのうちの関連する１つの長さに沿って配向される前記テキストボックスのそれぞれを形成することを含む、請求項１に記載のコンピュータで実施される方法。
【請求項７】
前記複数のラインセグメントのそれぞれに関するテキストボックスを形成することが、前記ラインセグメントのうちの関連する１つの長さに沿って配向され、且つ前記関連するラインセグメントの長さの方向に前記関連するラインセグメントの範囲よりも大きい長さを有する前記テキストボックスのそれぞれを形成することを含む、請求項１に記載のコンピュータで実施される方法。
【請求項８】
前記複数のラインセグメントのそれぞれに関するテキストボックスを形成することが、前記テキストボックスのそれぞれを、前記ラインセグメントの始まりの前に各テキストボックスの始まりが前記関連するラインセグメントの長さの方向に所定の距離だけ延びるように、且つ前記テキストボックスの終わりが前記ラインセグメントの方向に前記ラインセグメントの終わりを越えて所定の距離だけ延びるように形成することを含む、請求項７に記載のコンピュータで実施される方法。
【請求項９】
前記所定の距離が、前記テキストボックスにおいて形成されるときの前記イメージルックアップテーブルに格納された前記テキスト文字列の前記テキスト文字のうちの１つの幅の半分である、請求項８に記載のコンピュータで実施される方法。
【請求項１０】
前記複数のラインセグメントのそれぞれに関するテキストボックスを形成することが、前記テキストボックスのそれぞれを、前記テキストボックスの高さが関連するラインセグメントの方向に直交して所定の距離だけ延びるように形成することを含む、請求項７に記載のコンピュータで実施される方法。
【請求項１１】
前記テキストボックスの高さが、前記テキストボックスにおいて形成されるときの前記イメージルックアップテーブルに格納された前記テキスト文字列の前記テキスト文字のうちの１つの高さである、請求項１０に記載のコンピュータで実施される方法。
【請求項１２】
前記テキスト文字のうちの１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内となるかどうかを判定するために、及び前記テキスト文字のうちの１つが前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内となる場合に前記テキストボックスのうちの１つを用いて前記ディスプレイ装置上の前記テキスト文字のうちの１つをレンダリングするために、コンピュータ装置内のフラグメントシェーダを用いることをさらに含む、請求項１に記載のコンピュータで実施される方法。
【請求項１３】
イメージレンダリングエンジンであって、
通信ネットワークインターフェースと、
プロセッサと、
前記プロセッサに結合されるメモリと、
前記プロセッサに結合されるディスプレイ装置と、
前記通信ネットワークインターフェースを介して１つ又は複数のイメージオブジェクトを定義するデータを含む一組のベクトルデータを受信し、且つ前記メモリから１つ又は複数のテキスト文字列ルックアップテーブルを取得するように前記プロセッサ上で実行する、前記メモリに格納される第１のルーチンであり、前記テキスト文字列ルックアップテーブルのうちの１つが、少なくとも１つのテキスト文字列のテキスト文字を、一組のピクセル化されたテキスト文字及び前記テキスト文字列に関連する複数のテキスト文字のそれぞれの中央位置を定義するエンコーディングデータとして格納する、第１のルーチンと、
それに沿って前記テキスト文字列がレンダリングされることになるラインに関連する複数のラインセグメント及び各ラインセグメントに関連する範囲を判定するように前記プロセッサ上で実行する、前記メモリに格納される第２のルーチンと、
前記複数のラインセグメントのそれぞれに関するテキストボックスであり、それぞれが関連するラインセグメントに沿った直立位置にテキストを描くように配向されているテキストボックスを判定するように前記プロセッサ上で実行する、前記メモリに格納される第３のルーチンと、
前記メモリに格納される第４のルーチンであり、
前記テキスト文字列のテキスト文字をレンダリングする前記テキストボックスのうちの１つを選択し、
前記テキスト文字列の前記テキスト文字のうちの次の１つの、１つ又は複数のピクセルを選択し、
前記テキスト文字のうちの次の１つの中央が前記イメージ上の前記テキストボックスのうちの前記選択された１つにおいてレンダリングされるときに前記テキストボックスのうちの前記選択された１つに関連する前記ラインセグメントの前記範囲内となるかどうかを判定し、
前記テキスト文字のうちの１つの中央が前記テキストボックスのうちの前記選択された１つにおいてレンダリングされるときに前記テキストボックスのうちの前記選択された１つに関連する前記ラインセグメントの前記範囲内となる場合に前記テキストボックスのうちの１つを用いて前記ディスプレイ装置上の前記テキスト文字のうちの１つのピクセルをレンダリングし、前記テキスト文字のうちの１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内とならない場合に前記テキストボックスのうちの１つを用いて前記ディスプレイ装置上の前記テキスト文字のうちの１つのピクセルをレンダリングしない、
ようにプロセッサ上で実行する、第４のルーチンと、
を備えるイメージレンダリングエンジン。
【請求項１４】
前記第３のルーチンが頂点シェーダを含む、請求項１３に記載のイメージレンダリングエンジン。
【請求項１５】
前記第４のルーチンがフラグメントシェーダを用いるアプリケーションを含む、請求項１３に記載のイメージレンダリングエンジン。
【請求項１６】
前記第４のルーチンが、前記イメージルックアップテーブル内に格納された前記テキスト文字列の前記テキスト文字のうちの各１つに関するピクセルを順に選択し、前記テキスト文字のうちの選択された各１つに関して、
前記テキスト文字のうちの前記選択された１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内となるかどうかを判定し、
前記テキスト文字のうちの前記選択された１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内となる場合に、前記テキストボックスのうちの１つを用いて前記ディスプレイ装置上の前記テキスト文字のうちの前記選択された１つをレンダリングし、
前記テキスト文字のうちの前記選択された１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内とならない場合に、前記ディスプレイ装置上の前記テキスト文字のうちの前記選択された１つをレンダリングするのに用いられる前記テキストボックスのうちの１つとして前記複数のテキストボックスのうちの異なる１つを選択する、
請求項１３に記載のイメージレンダリングエンジン。
【請求項１７】
前記第４のルーチンが、前記テキスト文字のうちの１つに関する一組のエンコーディングデータであり、少なくとも１つの方向の前記テキスト文字のうちの１つの中央を指定するエンコーディングデータを読み出し、前記テキスト文字のうちの１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内となるかどうかを判定するのに前記テキスト文字のうちの１つの中央の場所を用いることによって、前記テキスト文字のうちの１つの中央が前記テキストボックスのうちの１つにおいてレンダリングされるときに前記テキストボックスのうちの１つに関連する前記ラインセグメントの前記範囲内となるかどうかを判定する、請求項１３に記載のイメージレンダリングシステム。
【請求項１８】
前記第３のルーチンが、前記ラインセグメントのうちの関連する１つの長さに沿って配向されるテキストボックスを形成することによって、前記複数のラインセグメントのそれぞれに関するテキストボックスを形成する、請求項１３に記載のイメージレンダリングシステム。
【請求項１９】
前記第４のルーチンが、前記テキストボックスのそれぞれが前記関連するラインセグメントの長さの方向に前記関連するラインセグメントの範囲よりも大きい長さを有するように、前記ラインセグメントのうちの関連する１つの長さに沿って配向される前記テキストボックスのそれぞれを形成する、請求項１８に記載のイメージレンダリングシステム。
【請求項２０】
テキストをディスプレイ装置上のレンダリングされているイメージ内のラインに沿ってレンダリングする方法であって、
テキスト文字列に関連する様々なテキスト文字及び前記テキスト文字列に関連する様々なテキスト文字のそれぞれの中央位置を定義するエンコーディングデータを含むテキスト文字列ルックアップテーブルを、コンピュータメモリに格納すること、
それに沿ってテキスト文字列がレンダリングされることになるイメージの中のラインに関連する複数のラインセグメント及び各ラインセグメントに関連する範囲を判定すること、
前記複数のラインセグメントのそれぞれに関するテキストボックスであり、それぞれが前記イメージの中の関連するラインセグメントに沿った直立位置にテキストを描くように配向されているテキストボックスを形成すること、及び
前記テキスト文字列の中の各テキスト文字に関して、
前記テキスト文字列の前記テキスト文字をレンダリングする前記テキストボックスのうちの１つを選択すること、
前記テキスト文字列ルックアップテーブルから前記エンコーディングデータを読み出し、前記テキスト文字の中央位置が前記テキストボックスのうちの前記選択された１つにおいてレンダリングされるときに前記テキストボックスのうちの前記選択された１つに関連する前記ラインセグメントの前記範囲内となるかどうかを判定すること、
前記テキスト文字の中央位置が前記テキストボックスのうちの前記選択された１つにおいてレンダリングされるときに前記テキストボックスのうちの前記選択された１つに関連する前記ラインセグメントの前記範囲内となる場合に、前記テキストボックスのうちの前記選択された１つを用いて前記ディスプレイ装置上の前記イメージの中の前記テキスト文字をレンダリングすること、若しくは、前記テキスト文字の中央位置が前記テキストボックスのうちの前記選択された１つにおいてレンダリングされるときに前記テキストボックスのうちの前記選択された１つに関連する前記ラインセグメントの前記範囲内とならない場合に、前記テキストボックスのうちの前記選択された１つとして前記複数のテキストボックスのうちの異なる１つを選択すること、
を含む、方法。
【請求項２１】
前記テキスト文字のうちの１つに関する前記テキスト文字列ルックアップテーブルから前記エンコーディングデータを読み出すことが、前記テキスト文字列の長さに沿った方向の前記テキスト文字のうちの１つの中央位置を指定するエンコーディングデータを読み出すことを含む、請求項２０に記載のラインに沿ってテキストをレンダリングする方法。
【請求項２２】
前記テキスト文字のうちの１つに関する前記テキスト文字列ルックアップテーブルから前記エンコーディングデータを読み出すことが、前記テキスト文字列の長さに沿った前記テキスト文字のうちの１つの幅を指定するエンコーディングデータを読み出すことを含む、請求項２１に記載のラインに沿ってテキストをレンダリングする方法。
【請求項２３】
前記複数のラインセグメントのそれぞれに関するテキストボックスを形成することが、前記複数のラインセグメントのうちの関連する１つの長さに沿って配向される各テキストボックスを形成することを含む、請求項２０に記載のラインに沿ってテキストをレンダリングする方法。
【請求項２４】
前記複数のラインセグメントのそれぞれに関するテキストボックスを形成することが、前記ラインセグメントのうちの関連する１つの長さに沿って配向され、且つ前記関連するラインセグメントの長さの方向に前記関連するラインセグメントの範囲よりも大きい長さを有する各テキストボックスを形成することを含む、請求項２０に記載のラインに沿ってテキストをレンダリングする方法。
【請求項２５】
前記複数のラインセグメントのそれぞれに関するテキストボックスを形成することが、各テキストボックスを、前記ラインセグメントの始まりの前に前記各テキストボックスの始まりが前記関連するラインセグメントの長さの方向に所定の距離だけ延びるように、且つ前記各テキストボックスの終わりが前記ラインセグメントの方向に前記関連するラインセグメントの終わりを越えて所定の距離だけ延びるように形成することを含む、請求項２４に記載のラインに沿ってテキストをレンダリングする方法。
【請求項２６】
前記所定の距離が、前記テキストボックスにおいて形成されるときの前記テキスト文字列に関連する前記様々なテキスト文字のうちの１つの幅の半分である、請求項２５に記載のラインに沿ってテキストをレンダリングする方法。
【請求項２７】
前記複数のラインセグメントのそれぞれに関するテキストボックスを形成することが、各テキストボックスを、前記テキストボックスの高さが関連するラインセグメントの方向に直交して所定の距離だけ延びるように形成することを含む、請求項２５に記載のラインに沿ってテキストをレンダリングする方法。
【請求項２８】
前記テキストボックスの高さが、前記テキストボックスにおいて形成されるときの前記テキスト文字列に関連する前記様々なテキスト文字のうちの１つの高さである、請求項２７に記載のラインに沿ってテキストをレンダリングする方法。
【請求項２９】
前記テキスト文字列ルックアップテーブルをコンピュータメモリに格納することが、前記テキスト文字列に関連する前記様々なテキスト文字のそれぞれの中央位置を定義するエンコーディングデータを前記テキスト文字列のピクセルの各列に関するピクセル値として格納することを含む、請求項２０に記載のラインに沿ってテキストをレンダリングする方法。
【請求項３０】
前記テキスト文字列ルックアップテーブルをコンピュータメモリに格納することが、前記テキスト文字列に関連する前記様々なテキスト文字のそれぞれの中央位置を定義するエンコーディングデータを前記テキスト文字列のピクセルの各列に関するピクセル値として格納することを含み、テキスト文字の中央位置を定義するのに特定のピクセル値が用いられ、テキスト文字の各ピクセル列での前記テキスト文字の中央位置との距離を示すのに前記特定のピクセル値から増分又は減分されるピクセル値が用いられる、請求項２０に記載のラインに沿ってテキストをレンダリングする方法。
【請求項３１】
前記テキスト文字列ルックアップテーブルをコンピュータメモリに格納することが、前記テキスト文字列ルックアップテーブルにグリフのフィールド内の一組のグリフを格納すること、及び前記テキスト文字列内の各テキスト文字に関するさらなるエンコーディングデータを格納することを含み、前記さらなるエンコーディングデータが、前記テキスト文字列内の位置で前記テキスト文字として用いる前記グリフのうちの１つを参照する、請求項２０に記載のラインに沿ってテキストをレンダリングする方法。
【請求項３２】
前記エンコーディングデータ及び前記さらなるエンコーディングデータを、前記テキスト文字列ルックアップテーブルの中の場所によって互いに関連付けられるものとして格納することを含む、請求項３１に記載のラインに沿ってテキストをレンダリングする方法。
【請求項３３】
マップイメージレンダリングシステムであって、
マップ関連のベクトルイメージデータを格納するデータベースであり、前記ベクトルイメージデータが、１つ又は複数のイメージオブジェクトを定義するデータと、１つ又は複数のテキスト文字列ルックアップテーブルを含み、前記テキスト文字列ルックアップテーブルのうちの１つが、レンダリングされるべき少なくとも１つのテキスト文字列に関連するテキスト文字を、一組のピクセル化されたテキスト文字及び前記テキスト文字列に関連する複数のテキスト文字のそれぞれの中央位置を定義するエンコーディングデータとして格納する、データベースと、
前記マップ関連のベクトルイメージデータを用いるために、及び前記マップ関連のベクトルイメージデータを用いてマップイメージをレンダリングするために前記データベースに通信可能に結合されるマップイメージレンダリング装置と、
を備え、前記マップイメージレンダリング装置が、
プロセッサと、
前記プロセッサに結合されるメモリと、
前記プロセッサに結合されるディスプレイ装置と、
前記メモリ上に格納される１つ又は複数のアプリケーションと、
を含み、前記アプリケーションが、前記プロセッサ上で実行されるときに、
それに沿ってテキスト文字列がレンダリングされることになるラインに関連する複数のラインセグメント及び各ラインセグメントに関連する範囲を判定し、
前記複数のラインセグメントのそれぞれに関するテキストボックスであり、それぞれがイメージの中の関連するラインセグメントに沿った直立位置にテキストを描くように配向されており、且つ前記関連するラインセグメントの範囲によって定義される一組の範囲値を有する、テキストボックスを形成し、
前記テキスト文字列の中の各テキスト文字に関して、
（１）前記テキスト文字列ルックアップテーブルからエンコーディングデータを読み出し、
（２）前記テキスト文字が前記イメージ上でレンダリングされるときに前記テキスト文字の中央位置が入ることになる範囲値を有する前記テキストボックスを判定し、
（３）前記テキストボックスのうちの判定された１つを用いて前記ディスプレイ装置上のイメージの一部として前記テキスト文字をレンダリングする、
マップイメージレンダリングシステム。
【請求項３４】
前記エンコーディングデータがさらに、前記テキスト文字列に関連する前記テキスト文字のそれぞれの幅を定義する、請求項３３に記載のマップイメージレンダリングシステム。
【請求項３５】
前記１つ又は複数のアプリケーションが、前記ラインセグメントのうちの関連する１つの長さに沿って配向され、且つ前記関連するラインセグメントの長さの方向に前記関連するラインセグメントの範囲よりも大きい長さを有する前記テキストボックスのそれぞれを形成することによって前記複数のラインセグメントのそれぞれに関するテキストボックスを形成する１つ又は複数のイメージシェーダを含む、請求項３３に記載のマップイメージレンダリングシステム。
【請求項３６】
前記１つ又は複数のイメージシェーダが、前記複数のラインセグメントのそれぞれに関するテキストボックスを、前記ラインセグメントの始まりの前に前記各テキストボックスの始まりが前記関連するラインセグメントの長さの方向に所定の距離だけ延びるように、且つ前記テキストボックスの終わりが前記ラインセグメントの方向に前記ラインセグメントの終わりを越えて所定の距離だけ延びるように形成する、請求項３５に記載のマップイメージレンダリングシステム。
【請求項３７】
前記テキスト文字列ルックアップテーブルのうちの１つが、前記テキスト文字列に関連する前記テキスト文字のそれぞれの中央位置を定義する前記エンコーディングデータを前記テキスト文字列のピクセルの各列に関するピクセル値として格納し、テキスト文字の中央位置を定義するのに特定のピクセル値が用いられ、テキスト文字の各ピクセル列での前記テキスト文字の中央位置との距離を示すために前記特定のピクセル値から他のピクセル値が増分又は減分される、請求項３３に記載のマップイメージレンダリングシステム。
【請求項３８】
前記テキスト文字列ルックアップテーブルのうちの１つが、前記テキスト文字列ルックアップテーブルにグリフのフィールド内の一組のグリフをさらに格納し、前記テキスト文字列に関連する各テキスト文字に関するさらなるエンコーディングデータを格納し、前記さらなるエンコーディングデータが、前記テキスト文字列内の位置で前記テキスト文字として用いる前記グリフのうちの１つを参照する、請求項３３に記載のマップイメージレンダリングシステム。
【請求項３９】
前記１つ又は複数のイメージシェーダが、
前記テキスト文字列の前記テキスト文字をレンダリングする前記テキストボックスのうちの１つを選択し、
前記テキスト文字の中央位置が前記テキストボックスのうちの前記選択された１つにおいてレンダリングされるときに前記テキストボックスのうちの前記選択された１つに関連する前記ラインセグメントの前記範囲内となるかどうかを判定し、
前記テキスト文字の中央位置が前記テキストボックスのうちの前記選択された１つにおいてレンダリングされるときに前記テキストボックスのうちの前記選択された１つに関連する前記ラインセグメントの前記範囲内となる場合に、前記テキストボックスのうちの前記選択された１つを用いて前記ディスプレイ装置上の前記イメージの中の前記テキスト文字をレンダリングし、若しくは、前記テキスト文字の中央位置が前記テキストボックスのうちの前記選択された１つにおいてレンダリングされるときに前記テキストボックスのうちの前記選択された１つに関連する前記ラインセグメントの前記範囲内とならない場合に、前記テキストボックスのうちの前記選択された１つとして前記複数のテキストボックスのうちの異なる１つを選択すること、
によって、前記テキスト文字が前記イメージ上でレンダリングされるときに前記テキスト文字の中央位置が入ることになる範囲値を有する前記テキストボックスを判定する、請求項３３に記載のマップイメージレンダリングシステム。
【請求項４０】
ディスプレイ装置上のテキストイメージをレンダリングするためのコンピュータで実施される方法であって、
コンピュータ装置を用いて、イメージにおいてレンダリングされるべきイメージルックアップテーブル内の一組のピクセル化されたテキスト文字として格納されるテキスト文字列を判定すること、
前記コンピュータ装置を用いて、前記イメージ内の特定の位置でのレンダリングのために解析するのに前記イメージルックアップテーブル内に格納される場合の前記テキスト文字列のテキスト文字に関連する１つ又は複数の位置でピクセルを判定すること、
前記コンピュータ装置を用いて、前記イメージルックアップテーブル内の前記テキスト文字の中央位置を判定するために前記テキスト文字列の前記テキスト文字に関連するエンコーディングデータを前記イメージルックアップテーブルから読み出すこと、
前記コンピュータ装置を用いて、前記イメージルックアップテーブル内の前記テキスト文字の中央位置の場所に基づいて前記イメージ内の特定の位置での前記テキスト文字列の前記テキスト文字内の前記１つ又は複数の位置に位置する前記ピクセルをレンダリングすること、
を含む、方法。
【請求項４１】
前記イメージルックアップテーブル内の前記テキスト文字の中央位置の場所に基づいて前記イメージ内の特定の位置での前記テキスト文字列の前記テキスト文字内の前記１つ又は複数の位置に位置する前記ピクセルをレンダリングすることが、前記テキスト文字の中央位置が前記イメージ上の前記テキストボックスにおいてレンダリングされるときに前記テキストボックスの範囲内となるかどうかを判定し、前記テキスト文字の中央が前記イメージ上の前記テキストボックスにおいてレンダリングされるときに前記テキストボックスの前記範囲内となるときに前記イメージ内の特定の位置での前記テキスト文字列の前記テキスト文字内の前記１つ又は複数の位置に位置する前記ピクセルをレンダリングすることを含む、請求項４０に記載のコンピュータで実施される方法。
【請求項４２】
前記テキスト文字の中央が前記イメージ上の前記テキストボックスにおいてレンダリングされるときに前記テキストボックスの前記範囲外となるときに、前記イメージ内の特定の位置での前記テキスト文字列の前記テキスト文字内の前記１つ又は複数の位置に位置する前記ピクセルをレンダリングしないことをさらに含む、請求項４０に記載のコンピュータで実施される方法。
【請求項４３】
前記テキスト文字に関連するエンコーディングデータを読み出すことが、前記テキスト文字の幅を指定するエンコーディングデータを読み出すことを含む、請求項４０に記載のコンピュータで実施される方法。
【請求項４４】
前記テキスト文字に関連するエンコーディングデータを読み出すことが、前記テキスト文字のピクセルの特定の列に関して格納されたエンコーディングデータを読み出すことを含み、前記エンコーディングデータが、前記テキスト文字のピクセルの特定の列から前記テキスト文字の中央でのピクセルの列までの距離を指定する、請求項４０に記載のコンピュータで実施される方法。
【請求項４５】
前記テキスト文字に関連するエンコーディングデータを読み出すことが、前記イメージルックアップテーブルに格納された前記テキスト文字列の前記テキスト文字のピクセルに隣接する位置での前記イメージルックアップテーブルに格納されたエンコーディングデータを読み出すことを含む、請求項４０に記載のコンピュータで実施される方法。
【請求項４６】
前記テキスト文字列の前記テキスト文字が、前記イメージルックアップテーブルにピクセルのフィールドとして格納され、前記ピクセルのフィールドが、前記テキスト文字列の前記テキスト文字に関するピクセルの複数の行及びピクセルの複数の列を有し、前記エンコーディングデータが、前記ピクセルのフィールドに隣接するエンコーディングデータの行として格納され、前記イメージルックアップテーブル内のテキスト文字の中央位置を判定するために前記テキスト文字列の前記テキスト文字に関連する前記エンコーディングデータを読み出すことが、前記テキスト文字のピクセルの特定の列と同じ列にあるエンコーディングデータの行における位置から前記テキスト文字のピクセルの特定の列に関するエンコーディングデータを読み出すことを含む、請求項４０に記載のコンピュータで実施される方法。
【請求項４７】
前記イメージルックアップテーブルが二次元テクスチャマップである、請求項４０に記載のコンピュータで実施される方法。
【請求項４８】
イメージレンダリングエンジンであって、
プロセッサと、
前記プロセッサに結合されるメモリと、
前記プロセッサに結合されるディスプレイ装置と、
一組のピクセル化されたテキスト文字として格納される少なくとも１つのテキスト文字列のテキスト文字を含み、且つ、前記テキスト文字列に関連する複数のテキスト文字のそれぞれの中央位置を定義するエンコーディングデータを含む、前記メモリに格納されるテキスト文字列ルックアップテーブルと、
前記テキスト文字列ルックアップテーブルから前記テキスト文字列内の前記テキスト文字のうちの１つに関連する１つ又は複数のピクセルを読み出し、且つ前記テキスト文字列ルックアップテーブルから前記テキスト文字のうちの１つに関連する前記エンコーディングデータを読み出すように前記プロセッサ上で実行する、前記メモリに格納される第１のルーチンと、
前記テキスト文字のうちの１つに関連する前記エンコーディングデータを用いて前記テキスト文字列ルックアップテーブル内に格納される場合の前記テキスト文字のうちの１つの中央を判定するように前記プロセッサ上で実行する、前記メモリに格納される第２のルーチンと、
を備えるイメージレンダリングエンジン。
【請求項４９】
前記テキスト文字列ルックアップテーブル内の前記テキスト文字のうちの１つの中央位置の場所を定義するエンコーディングデータに基づく前記ディスプレイ装置上のイメージ内の特定の位置での前記テキスト文字列の前記テキスト文字のうちの１つの中の１つ又は複数の位置にあるピクセルをレンダリングするように前記プロセッサ上で実行する、前記メモリに格納される第３のルーチンをさらに含む、請求項４８に記載のイメージレンダリングエンジン。
【請求項５０】
前記第３のルーチンが、前記テキスト文字のうちの１つの中央位置が前記イメージ上の前記テキストボックスにおいてレンダリングされるときに前記テキストボックスの範囲内となるかどうかを判定すること、及び前記テキスト文字のうちの１つの中央が前記イメージ上の前記テキストボックスにおいてレンダリングされるときに前記テキストボックスの前記範囲内となるときに前記イメージ内の特定の位置での前記テキスト文字列の前記テキスト文字のうちの１つの中の前記１つ又は複数の位置に位置する前記ピクセルをレンダリングすることによって、前記テキスト文字列ルックアップテーブル内の前記テキスト文字のうちの１つの中央位置の場所に基づく前記イメージ内の特定の位置での前記テキスト文字列の前記テキスト文字のうちの１つの中の前記１つ又は複数の位置に位置する前記ピクセルをレンダリングする、請求項４９に記載のイメージレンダリングエンジン。
【請求項５１】
前記各テキスト文字に関連する前記エンコーディングデータが、前記テキスト文字の幅を指定するエンコーディングデータを含む、請求項４８に記載のイメージレンダリングエンジン。
【請求項５２】
前記各テキスト文字に関連する前記エンコーディングデータが、前記エンコーディングデータのピクセル列から関連するテキスト文字の中央ピクセル列までの距離を指定する前記各テキスト文字の一組の各ピクセル列でのエンコーディングデータを含む、請求項４８に記載のイメージレンダリングエンジン。
【請求項５３】
前記テキスト文字ルックアップテーブルにおける各テキスト文字に関連する前記エンコーディングデータが、それに前記エンコーディングデータが関連付けられる前記テキスト文字のピクセルに隣接する前記テキスト文字列ルックアップテーブルの中の位置に格納されるエンコーディングデータを含む、請求項４８に記載のイメージレンダリングエンジン。
【請求項５４】
前記テキスト文字ルックアップテーブルにおける各テキスト文字に関連する前記エンコーディングデータが、前記テキスト文字のピクセルの特定の列と同じ前記テキスト文字列ルックアップテーブルの列に格納された前記テキスト文字のピクセルの特定の列に関するエンコーディングデータを含む、請求項５３に記載のイメージレンダリングエンジン。
【請求項５５】
前記テキスト文字が、前記テキスト文字列ルックアップテーブルにピクセルのフィールドとして格納され、前記ピクセルのフィールドが、前記テキスト文字列の前記テキスト文字に関するピクセルの複数の行及びピクセルの複数の列を有し、前記エンコーディングデータが、前記テキスト文字のピクセルの特定の列に関する前記エンコーディングデータが前記ピクセルの特定の列と同じピクセルの列に格納されるように、前記ピクセルのフィールドに隣接するエンコーディングデータの行として格納される、請求項４８に記載のイメージレンダリングエンジン。
【請求項５６】
前記テキスト文字列ルックアップテーブルが、テキスト文字列としてレンダリングされるべき複数のテキスト文字を含み、各テキスト文字が、前記テキスト文字列ルックアップテーブルに、各テキスト文字に関するピクセルの複数の行及び複数の列を有するピクセルのフィールドとして格納され、エンコーディングデータが、前記特定のテキスト文字に関するピクセルのフィールドに隣接して前記特定のテキスト文字に関する前記テキスト文字列ルックアップテーブルに格納される、請求項４８に記載のイメージレンダリングエンジン。
【請求項５７】
前記各テキスト文字に関する前記エンコーディングデータが、前記各テキスト文字に関するピクセルのフィールドよりも上の行に格納される、請求項５６に記載のイメージレンダリングエンジン。
【請求項５８】
前記テキスト文字列の中の前記テキスト文字が、ピクセルのフィールドの単一のラインとして格納され、各テキスト文字に関するピクセルのフィールドが、前記テキスト文字列ルックアップテーブルにおける少なくとも１つの共通の行を共有するが、ピクセルのいかなる重なり合った列も有さない、請求項５６に記載のイメージレンダリングエンジン。
【請求項５９】
前記テキスト文字列の中の前記テキスト文字が、ピクセルのフィールドの２つ以上のラインとして格納され、同じラインにおける各テキスト文字に関するピクセルのフィールドが、前記イメージルックアップテーブルにおける少なくとも１つの共通のピクセル行を共有するが、いかなる重なり合ったピクセル列も有さず、ピクセルのフィールドの異なるラインにおけるテキスト文字が、前記テキスト文字列ルックアップテーブルのいかなるピクセル行も共有しない、請求項５６に記載のイメージレンダリングエンジン。
【請求項６０】
前記ピクセルのフィールドのラインのうちの第１のラインにおける少なくとも１つのテキスト文字に関するピクセルのフィールドが、前記ピクセルのフィールドのラインのうちの第２のラインにおける異なるテキスト文字に関するピクセル列と重なり合ったピクセル列を含む、請求項５９に記載のイメージレンダリングエンジン。
【請求項６１】
前記少なくとも１つのテキスト文字と前記異なるテキスト文字が、前記テキスト文字列の中の隣接するテキスト文字である、請求項６０に記載のイメージレンダリングエンジン。
【請求項６２】
テキスト文字列ルックアップテーブルを作成する方法であって、
各テキスト文字に関する複数のピクセルがメモリに格納されるように、テキスト文字列の一組のテキスト文字を一組のピクセル化されたテキスト文字として、テキスト文字列ルックアップテーブルを定義するメモリ位置でコンピュータメモリに格納すること、
前記テキスト文字列の前記テキスト文字の組のそれぞれの中央位置を定義する各テキスト文字に関するエンコーディングデータを、前記テキスト文字列ルックアップテーブルを定義するメモリ位置で前記コンピュータメモリに格納すること、
を含み、前記テキスト文字の組のそれぞれに関する前記エンコーディングデータが、それに前記エンコーディングデータが関連付けられる前記テキスト文字のピクセルと共に前記テキスト文字列ルックアップテーブルを定義するメモリ内の場所に調整されている、方法。
【請求項６３】
前記各テキスト文字に関するエンコーディングデータを格納することが、各テキスト文字の幅を指定するエンコーディングデータを格納することを含む、請求項６２に記載の方法。
【請求項６４】
前記各テキスト文字に関するエンコーディングデータを格納することが、各テキスト文字の一組の異なる各ピクセル位置での前記テキスト文字の中央との距離を指定するエンコーディングデータを格納することを含む、請求項６２に記載の方法。
【請求項６５】
前記各テキスト文字に関するエンコーディングデータを格納することが、前記エンコーディングデータのピクセル列から前記テキスト文字の中央ピクセル列までの距離を指定する各テキスト文字の一組の各ピクセル列でのエンコーディングデータを格納することを含む、請求項６２に記載の方法。
【請求項６６】
前記各テキスト文字に関するエンコーディングデータを格納することが、前記テキスト文字列ルックアップテーブルを定義するメモリの中の位置に格納されるエンコーディングデータを、それに前記エンコーディングデータが関連付けられる前記テキスト文字のピクセルに隣接して格納することを含む、請求項６２に記載の方法。
【請求項６７】
前記各テキスト文字に関するエンコーディングデータを前記テキスト文字列ルックアップテーブルを定義するメモリに格納することが、前記テキスト文字のピクセルの特定の列に関するエンコーディングデータを、前記テキスト文字のピクセルの特定の列と同じ前記テキスト文字列ルックアップテーブルを定義するメモリの列に格納することを含む、請求項６６に記載の方法。
【請求項６８】
前記テキスト文字列のテキスト文字の組を一組のピクセル化されたテキスト文字として前記テキスト文字列ルックアップテーブルを定義するメモリに格納することが、前記テキスト文字を、前記テキスト文字列ルックアップテーブルを定義するメモリにピクセルのフィールドとして格納することを含み、前記ピクセルのフィールドが、前記テキスト文字列の前記テキスト文字に関するピクセルの複数の行及びピクセルの複数の列を有し、前記エンコーディングデータを格納することが、テキスト文字のピクセルの特定の列に関する前記エンコーディングデータが前記ピクセルの特定の列と同じピクセルの列に格納されるように、前記エンコーディングデータを前記ピクセルのフィールドに隣接するエンコーディングデータの行として格納することを含む、請求項６２に記載の方法。
【請求項６９】
前記テキスト文字列が、前記テキスト文字列としてレンダリングされるべき複数のテキスト文字を含み、各テキスト文字が、前記テキスト文字列ルックアップテーブルを定義するメモリに、各テキスト文字に関するピクセルの複数の行及び複数の列を有するピクセルのフィールドとして格納され、エンコーディングデータが、前記特定のテキスト文字に関するピクセルのフィールドに隣接して前記特定のテキスト文字に関する前記テキスト文字列ルックアップテーブルに格納される、請求項６２に記載の方法。
【請求項７０】
前記各テキスト文字に関する前記エンコーディングデータが、前記各テキスト文字に関するピクセルのフィールドよりも上の行に格納される、請求項６９に記載の方法。
【請求項７１】
前記テキスト文字列の中の前記テキスト文字が、ピクセルのフィールドの単一のラインに格納され、各テキスト文字に関するピクセルのフィールドが、前記テキスト文字列ルックアップテーブルを定義するメモリにおける少なくとも１つの共通の行を共有するが、ピクセルのいかなる重なり合った列も有さない、請求項６９に記載の方法。
【請求項７２】
前記テキスト文字列の中の前記テキスト文字が、ピクセルのフィールドの２つ以上のラインに格納され、同じラインにおける各テキスト文字に関するピクセルのフィールドが、前記イメージルックアップテーブルにおける少なくとも１つの共通のピクセル行を共有するが、いかなる重なり合ったピクセル列も有さず、ピクセルのフィールドの異なるラインにおけるテキスト文字が、前記テキスト文字列ルックアップテーブルのいかなるピクセル行も共有しない、請求項６９に記載の方法。
【請求項７３】
ピクセルのフィールドのラインのうちの１つにおける少なくとも１つのテキスト文字に関するピクセルのフィールドが、前記ピクセルのフィールドの別のラインにおける異なるテキスト文字に関するピクセル列と重なり合ったピクセル列を含む、請求項７２に記載の方法。
【請求項７４】
前記少なくとも１つのテキスト文字と前記異なるテキスト文字が、前記テキスト文字列の中の隣接するテキスト文字である、請求項７３に記載の方法。
【請求項７５】
ディスプレイ装置上のテキストイメージをレンダリングするためのコンピュータで実施される方法であって、
コンピュータ装置を用いて、イメージにおいてレンダリングされるべきテキスト文字列に関連する１つ又は複数のテキスト文字に関する一組のエンコードされたデータを有するイメージルックアップテーブルにアクセスすること、
コンピュータ装置を用いて、前記テキスト文字列に関連する前記テキスト文字のうちの１つに関する第１の及び第２のエンコーディングデータであり、前記テキスト文字のうちの１つに関する第１のエンコーディングデータが、前記テキスト文字列の中の前記テキスト文字の位置に関する情報を定義し、前記テキスト文字のうちの１つに関する第２のエンコーディングデータが、前記テキスト文字のうちの１つに関するレンダリングされるべき前記イメージを定義する一組のピクセル値を格納する前記イメージルックアップテーブルにおけるピクセルのフィールドへの参照を定義する、第１の及び第２のエンコーディングデータを判定するために、前記イメージルックアップテーブルからエンコードされたデータの組を読み出すこと、
前記コンピュータ装置を用いて、前記テキスト文字のうちの１つに関するピクセルの参照されたフィールドから、前記イメージ内の特定の位置でのレンダリングのために解析するのに前記イメージルックアップテーブル内に格納される場合の前記テキスト文字のうちの１つに関するピクセル値を判定すること、
前記コンピュータ装置を用いて、前記テキスト文字のうちの１つに関する前記第１のエンコーディングデータに基づいて前記テキスト文字のうちの１つに関する前記第２のエンコーディングデータによって定義される前記ピクセルのフィールドに格納された前記テキスト文字のうちの１つの中央位置を判定すること、
前記コンピュータ装置を用いて、前記テキスト文字のうちの１つの中央位置の場所に基づいて前記イメージ内の特定の位置で前記テキスト文字のうちの１つのピクセルをレンダリングすること、
を含む、方法。
【請求項７６】
前記テキスト文字のうちの１つの中央位置の場所に基づいて前記イメージ内の特定の位置で前記テキスト文字のうちの１つのピクセルをレンダリングすることが、前記テキスト文字のうちの１つの中央位置が前記イメージ上の前記テキストボックスにおいてレンダリングされるときに前記テキストボックスの範囲内となるかどうかを判定すること、及び前記テキスト文字のうちの１つの中央が前記イメージ上の前記テキストボックスにおいてレンダリングされるときに前記テキストボックスの前記範囲内となるときに前記イメージ内の特定の位置で前記テキスト文字のうちの１つのピクセルをレンダリングすることを含む、請求項７５に記載のコンピュータで実施される方法。
【請求項７７】
前記テキスト文字のうちの１つの中央が前記イメージ上の前記テキストボックスにおいてレンダリングされるときに前記テキストボックスの前記範囲外となるときに、前記イメージ内の特定の位置で前記テキスト文字のうちの１つのピクセルをレンダリングしないことをさらに含む、請求項７５に記載のコンピュータで実施される方法。
【請求項７８】
前記エンコーディングデータの組を読み出すことが、前記テキスト文字の幅を指定する前記第１のエンコーディングデータを読み出すことを含む、請求項７５に記載のコンピュータで実施される方法。
【請求項７９】
前記エンコーディングデータの組を読み出すことが、前記テキスト文字のうちの１つのピクセルの特定の列に関して格納された前記第１のエンコーディングデータを読み出すことを含み、前記第１のエンコーディングデータが、前記テキスト文字のうちの１つのピクセルの特定の列から前記テキスト文字のうちの１つの中央でのピクセルの列までの距離を指定する、請求項７５に記載のコンピュータで実施される方法。
【請求項８０】
前記エンコーディングデータの組を読み出すことが、前記第２のエンコーディングデータに隣接する位置で前記イメージルックアップテーブルに格納された前記第１のエンコーディングデータを読み出すことを含む、請求項７５に記載のコンピュータで実施される方法。
【請求項８１】
前記エンコーディングデータの組を読み出すことが、前記イメージルックアップテーブルの複数の列のそれぞれに関して、列の場所から前記テキスト文字のうちの１つの中央の列の場所までの距離を定義する第１のエンコーディングデータ情報を有する前記イメージルックアップテーブルの行に格納された前記第１のエンコーディングデータを読み出すことを含む、請求項７５に記載のコンピュータで実施される方法。
【請求項８２】
前記エンコーディングデータの組を読み出すことが、前記第１のエンコーディングデータの行に関連する前記イメージルックアップテーブルの行から前記第２のエンコーディングデータを読み出すことを含み、前記第２のエンコーディングデータが、前記第１のエンコーディングデータの列のうちの１つに対して固定の場所を有する、請求項８１に記載のコンピュータで実施される方法。
【請求項８３】
前記エンコーディングデータの組を読み出すことが、前記第１のエンコーディングデータの行に関連する前記イメージルックアップテーブルの行から前記第２のエンコーディングデータを読み出すことを含み、前記第２のエンコーディングデータが、前記第１のエンコーディングデータが前記テキスト文字の中央列を示す前記イメージルックアップテーブルの列で始まる、請求項８１に記載のコンピュータで実施される方法。
【請求項８４】
前記テキスト文字のうちの１つに関する前記第１のエンコーディングデータが、前記イメージルックアップテーブルの複数の列にわたるエンコーディングデータの第１の行に格納され、前記テキスト文字のうちの１つに関する前記第２のエンコーディングデータが、前記第１のエンコーディングデータによって用いられる前記イメージルックアップテーブルの複数の列のサブセットを定義する前記テキストイメージルックアップテーブルの複数の列にわたるエンコーディングデータの第２の行に格納され、前記テキスト文字のうちの１つの中央位置を判定するために前記テキスト文字のうちの１つに関連する第１のエンコーディングデータを読み出すことが、前記テキスト文字のうちの１つの前記第２のエンコーディングデータによって定義されるピクセルのフィールドに位置する前記テキスト文字のうちの１つのピクセルの特定の列に関する第１のエンコーディングデータを読み出すことを含む、請求項７５に記載のコンピュータで実施される方法。
【請求項８５】
前記イメージルックアップテーブルが二次元テクスチャマップである、請求項７５に記載のコンピュータで実施される方法。
【請求項８６】
イメージレンダリングエンジンであって、
プロセッサと、
前記プロセッサに結合されるメモリと、
前記プロセッサに結合されるディスプレイ装置と、
一組のグリフ及びエンコーディングデータの１つ又は複数のセクションを含む、前記メモリに格納されるテキスト文字列ルックアップテーブルであり、各グリフが、テキスト文字に関連する表示できるイメージを定義するピクセルのフィールドとして格納され、前記エンコーディングデータの各セクションが、イメージにおいてレンダリングされるべきテキスト文字列を定義し、前記エンコーディングデータの各セクションが、文字エンコーディングデータの１つ又は複数の組を含み、前記文字エンコーディングデータの各組が、前記テキスト文字列の中の特定のテキスト文字の位置に関する情報を定義する第１のエンコーディングデータと、前記テキスト文字列の中の特定のテキスト文字の識別情報を定義するために前記グリフのうちの１つへの参照を定義する第２のエンコーディングデータとを含む、テキスト文字列ルックアップテーブルと、
イメージにおいてレンダリングされるべきテキスト文字列内のテキスト文字に関連するグリフと共に格納される１つ又は複数のピクセルの位置を判定するためにテキスト文字に関する文字エンコーディングデータの特定の組の前記第１の及び第２のエンコーディングデータを読み出すように前記プロセッサ上で実行する、前記メモリに格納されるルーチンと、
を備える、イメージレンダリングエンジン。
【請求項８７】
前記ルーチンが、前記文字エンコーディングデータの特定の組に関連する前記第１のエンコーディングデータを用いて前記第２のエンコーディングデータによって参照される前記グリフのテキスト文字の中央を判定する、請求項８６に記載のイメージレンダリングエンジン。
【請求項８８】
前記第２のエンコーディングデータによって参照される前記テキスト文字の中央位置の場所を定義する前記第１のエンコーディングデータに基づいて前記ディスプレイ装置上の前記イメージ内の特定の位置で前記グリフのうちの１つのピクセルのフィールド内の１つ又は複数の位置にあるピクセルをレンダリングするように前記プロセッサ上で実行する、前記メモリに格納されるさらなるルーチンを含む、請求項８６に記載のイメージレンダリングエンジン。
【請求項８９】
前記さらなるルーチンが、前記テキスト文字の中央位置が前記イメージ上の前記テキストボックスにおいてレンダリングされるときに前記テキストボックスの範囲内となるかどうかを判定すること、及び前記テキスト文字の中央が前記イメージ上の前記テキストボックスにおいてレンダリングされるときに前記テキストボックスの前記範囲内となるときに前記イメージ内の特定の位置で前記グリフのうちの１つのピクセルのフィールド内の１つ又は複数の位置に位置する前記ピクセルをレンダリングすることによって、第１のエンコーディングデータに基づいて前記イメージ内の特定の位置で前記グリフのうちの１つのピクセルのフィールド内の１つ又は複数の位置に位置する前記ピクセルをレンダリングする、請求項８８に記載のイメージレンダリングエンジン。
【請求項９０】
前記第１のエンコーディングデータが、グリフによって定義されるテキスト文字の幅を指定するエンコーディングデータを含む、請求項８６に記載のイメージレンダリングエンジン。
【請求項９１】
特定のテキスト文字に関する前記第１のエンコーディングデータが、前記第１のエンコーディングデータのピクセル列から前記特定のテキスト文字に関する前記第２のエンコーディングデータによって参照される前記グリフによって定義される特定のテキスト文字の中央ピクセル列までの距離を指定する特定のテキスト文字に関する一組の各ピクセル列での第１のエンコーディングデータを含む、請求項８６に記載のイメージレンダリングエンジン。
【請求項９２】
前記テキスト文字列の中の各テキスト文字の前記第１のエンコーディングデータが、前記各テキスト文字の前記第２のエンコーディングデータに隣接する前記テキスト文字列ルックアップテーブルの中の位置に格納される、請求項８６に記載のイメージレンダリングエンジン。
【請求項９３】
前記エンコーディングデータの組のセクションのうちの１つの前記テキスト文字のうちの１つの前記第２のエンコーディングデータが、前記エンコーディングデータの組のセクションのうちの１つの異なる前記テキスト文字のうちの１つの前記第２のエンコーディングデータと同じグリフを指す、請求項８６に記載のイメージレンダリングエンジン。
【請求項９４】
前記エンコーディングデータの組のセクションのうちの１つの前記テキスト文字のうちの１つの前記第２のエンコーディングデータが、前記エンコーディングデータの組のセクションの次の１つの前記テキスト文字のうちの１つの前記第２のエンコーディングデータと同じグリフを指す、請求項８６に記載のイメージレンダリングエンジン。
【請求項９５】
前記エンコーディングデータのセクションの組のそれぞれが、前記テキスト文字列ルックアップテーブルの複数の列のそれぞれに関して、列の場所から前記第２のエンコーディングデータによって参照される前記テキスト文字のピクセル列の中央の列の場所までの前記距離を定義する前記テキスト文字列ルックアップテーブルの行に格納された前記第１のエンコーディングデータを含む、請求項８６に記載のイメージレンダリングエンジン。
【請求項９６】
前記エンコーディングデータの組のセクションのそれぞれが、前記第１のエンコーディングデータの列のうちの１つに対して前記テキスト文字列ルックアップテーブルにおける固定の場所に格納される前記第２のエンコーディングデータを含む、請求項９５に記載のイメージレンダリングエンジン。
【請求項９７】
前記第２のエンコーディングデータが、前記テキスト文字の中央位置となる前記第１のエンコーディングデータによって示される列で前記テキスト文字列ルックアップテーブルの列の場所で始まる格納される、請求項９６に記載のイメージレンダリングエンジン。
【請求項９８】
前記テキスト文字のうちの１つに関する前記第１のエンコーディングデータが、前記テキスト文字列ルックアップテーブルの複数の列にわたるエンコーディングデータの第１の行に格納され、前記テキスト文字のうちの１つに関する前記第２のエンコーディングデータが、前記第１のエンコーディングデータによって用いられる前記文字列ルックアップテーブルの複数の列のサブセットを定義する前記テキスト文字列ルックアップテーブルの複数の列にわたるエンコーディングデータの第２の行に格納され、前記テキスト文字のうちの１つに関する前記第１のエンコーディングデータが、前記テキスト文字のうちの１つの前記第２のエンコーディングデータによって定義される前記グリフのピクセルのフィールドに位置する前記テキスト文字のうちの１つの中央位置を定義する、請求項８６に記載のイメージレンダリングエンジン。
【請求項９９】
前記各テキスト文字に関する第１のエンコーディングデータが、前記各テキスト文字に関する第２のエンコーディングデータよりも上の前記テキスト文字列ルックアップテーブルの行に格納される、請求項８６に記載のイメージレンダリングエンジン。
【請求項１００】
前記エンコーディングデータのセクションのうちの１つに関する文字エンコーディングデータの組が、文字エンコーディングデータの組の単一のラインとして格納され、前記エンコーディングデータのセクションのうちの１つの中の前記各テキスト文字に関する第１のエンコーディングデータが、前記テキスト文字列ルックアップテーブルにおける少なくとも１つの共通の行を共有するが、前記テキスト文字列ルックアップテーブルにおけるいかなる重なり合った列も有さない、請求項８６に記載のイメージレンダリングエンジン。
【請求項１０１】
前記エンコーディングデータのセクションのうちの１つに関する文字エンコーディングデータの組が、文字エンコーディングデータの組の２つ以上のラインとして格納され、前記文字エンコーディングデータの組の同じラインにおける前記各テキスト文字に関する第１のエンコーディングデータが、前記テキスト文字列ルックアップテーブルにおける少なくとも１つの共通の行を共有するが、前記テキスト文字列ルックアップテーブルにおけるいかなる重なり合った列も有さず、前記文字エンコーディングデータの組の異なるラインにおける各テキスト文字に関する第１のエンコーディングデータが、前記テキスト文字列ルックアップテーブルのいかなる行も共有しない、請求項８６に記載のイメージレンダリングエンジン。
【請求項１０２】
前記文字エンコーディングデータの組のラインのうちの第１のラインにおける少なくとも１つのテキスト文字に関する第１のエンコーディングデータが、前記文字エンコーディングデータの組のラインのうちの第２のラインにおける異なるテキスト文字の第１のエンコーディングデータの列と重なり合った列を含む、請求項１０１に記載のイメージレンダリングエンジン。
【請求項１０３】
前記少なくとも１つのテキスト文字と前記異なるテキスト文字が、前記エンコーディングデータのセクションによって定義される前記テキスト文字列の中の隣接するテキスト文字である、請求項１０１に記載のイメージレンダリングエンジン。
【請求項１０４】
テキスト文字列ルックアップテーブルを作成する方法であって、
一組のグリフを、前記テキスト文字列ルックアップテーブルを定義するメモリ位置でコンピュータメモリに格納することであり、複数のピクセルが各グリフに関するメモリに格納されるように、各グリフがテキスト文字に関連する表示できるイメージを定義するピクセルのフィールドとして格納され、
エンコーディングデータの１つ又は複数のセクションを、前記テキスト文字列ルックアップテーブルを定義するメモリ位置で前記コンピュータメモリに格納すること、
を含み、前記エンコーディングデータの各セクションが、イメージにおいてレンダリングされるべきテキスト文字列を定義し、前記エンコーディングデータの各セクションが文字エンコーディングデータの１つ又は複数の組を含み、文字エンコーディングデータの各組が前記テキスト文字列のテキスト文字を定義し、且つ前記テキスト文字列の中のテキスト文字の位置に関する情報を定義する第１のエンコーディングデータと、前記テキスト文字列の中のテキスト文字の識別情報を定義するために前記グリフのうちの１つへの参照を定義する第２のエンコーディングデータとを含む、
方法。
【請求項１０５】
前記各テキスト文字に関する第１のエンコーディングデータを格納することが、前記テキスト文字列のテキスト文字の中央位置を定義する第１のエンコーディングデータを格納することを含み、前記文字エンコーディングデータの組のそれぞれに関する前記第１のエンコーディングデータが、前記文字エンコーディングデータの同じ組の第２のエンコーディングデータと共に前記テキスト文字列ルックアップテーブルを定義するメモリ内の場所に調整されている、請求項１０４に記載の方法。
【請求項１０６】
前記各テキスト文字に関する第１のエンコーディングデータを格納することが、各テキスト文字の一組の異なる各ピクセル位置での前記テキスト文字の中央との距離を指定する第１のエンコーディングデータを格納することを含む、請求項１０４に記載の方法。
【請求項１０７】
前記各テキスト文字に関する第１のエンコーディングデータを格納することが、前記エンコーディングデータのピクセル列から前記特定のテキスト文字に関する前記第２のエンコーディングデータによって参照される前記グリフによって定義される特定のテキスト文字の中央ピクセル列までの距離を指定する特定のテキスト文字に関する一組の各ピクセル列でのエンコーディングデータを格納することを含む、請求項１０４に記載の方法。
【請求項１０８】
前記各テキスト文字に関する第１のエンコーディングデータを格納することが、前記各テキスト文字の第２のエンコーディングデータに隣接する前記テキスト文字列ルックアップテーブルの中の位置に前記テキスト文字列の中の各テキスト文字の第１のエンコーディングデータを格納することを含む、請求項１０４に記載の方法。
【請求項１０９】
前記エンコーディングデータの組のセクションのうちの１つの前記テキスト文字のうちの１つの第２のエンコーディングデータを格納することが、前記エンコーディングデータの組のセクションのうちの１つの異なる前記テキスト文字のうちの１つの前記第２のエンコーディングデータと同じグリフを指す、請求項１０４に記載の方法。
【請求項１１０】
前記エンコーディングデータの組のセクションのうちの１つの前記テキスト文字のうちの１つの第２のエンコーディングデータを格納することが、前記エンコーディングデータの組のセクションの次の１つの前記テキスト文字のうちの１つの前記第２のエンコーディングデータと同じグリフを指す、請求項１０４に記載の方法。
【請求項１１１】
前記エンコーディングデータのセクションの組のそれぞれを格納することが、前記テキスト文字列ルックアップテーブルの複数の列のそれぞれに関して、前記列の場所から前記第２のエンコーディングデータによって参照される前記テキスト文字のピクセル列の中央の列の場所までの前記距離を定義する前記第１のエンコーディングデータを、前記テキスト文字列ルックアップテーブルの行に格納することを含む、請求項１０４に記載の方法。
【請求項１１２】
前記エンコーディングデータの組のセクションのそれぞれを格納することが、前記第２のエンコーディングデータを、前記第１のエンコーディングデータの列のうちの１つに対して前記テキスト文字列ルックアップテーブルにおける固定の場所に格納することを含む、請求項１１１に記載の方法。
【請求項１１３】
前記テキスト文字のうちの１つに関する前記第１のエンコーディングデータを格納することが、前記第１のエンコーディングデータを前記テキスト文字列ルックアップテーブルの複数の列にわたるエンコーディングデータの第１の行に格納することを含み、前記テキスト文字のうちの１つに関する前記第２のエンコーディングデータを格納することが、前記第２のエンコーディングデータを、前記第１のエンコーディングデータによって用いられる前記文字列ルックアップテーブルの複数の列のサブセットを定義する前記テキスト文字列ルックアップテーブルの複数の列にわたるエンコーディングデータの第２の行に格納することを含む、請求項１０４に記載の方法。
【請求項１１４】
前記エンコーディングデータのセクションのうちの１つに関する文字エンコーディングデータの組を文字エンコーディングデータの組の単一のラインとして格納することをさらに含み、前記エンコーディングデータのセクションのうちの１つの中の前記各テキスト文字に関する第１のエンコーディングデータが、前記テキスト文字列ルックアップテーブルにおける少なくとも１つの共通の行を共有するが、前記テキスト文字列ルックアップテーブルにおけるいかなる重なり合った列も有さない、請求項１０４に記載の方法。
【請求項１１５】
前記エンコーディングデータのセクションのうちの１つに関する文字エンコーディングデータの組を文字エンコーディングデータの組の２つ以上のラインとして格納することをさらに含み、前記文字エンコーディングデータの組の同じラインにおける前記各テキスト文字に関する第１のエンコーディングデータが、前記テキスト文字列ルックアップテーブルにおける少なくとも１つの共通の行を共有するが、前記テキスト文字列ルックアップテーブルにおけるいかなる重なり合った列も有さず、前記文字エンコーディングデータの組の異なるラインにおける各テキスト文字に関する第１のエンコーディングデータが、前記テキスト文字列ルックアップテーブルのいかなる行も共有しない、請求項１０４に記載の方法。
【請求項１１６】
文字エンコーディングデータの組のラインのうちの第１のラインにおける少なくとも１つのテキスト文字に関する第１のエンコーディングデータを、前記文字エンコーディングデータの組のラインのうちの第２のラインにおける異なるテキスト文字に関する列と重なり合った列に格納することを含む、請求項１０４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、電子地図表示システムのようなイメージレンダリングシステムに関し、より詳細には、マルチセグメント化されたラインのようなラインに従ってテキストイメージをレンダリングするイメージレンダリングエンジンに関する。
【背景技術】
【０００２】
デジタルマップは、移動電話、カーナビゲーションシステム、ハンドヘルドＧＰＳユニット、コンピュータ、及び多くのウェブサイトを含む多様なデバイスで見出され及びこれらによって表示される場合がある。デジタルマップは、エンドユーザの見地から見る及び使用するのが容易であるが、デジタルマップの作成は難しい作業であり、時間のかかるプロセスである可能性がある。特に、すべてのデジタルマップは、マップの一部として表示されるべき数百万の道及び交差点並びに他の特徴に対応する一組の生データをマップデータベースに格納することで始まる。マップデータベースに格納され及びデジタルマップイメージを生成するのに用いられる生マップデータは種々のソースから導出され、各ソースは典型的に異なる量及びタイプの情報を提供する。このマップデータは、したがって、マップ表示又はマップレンダリングアプリケーション及びハードウェアによってアクセスされる前に、マップデータベースにコンパイルされ及び格納されなければならない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
もちろん、マップデータベースに格納されたマップデータに基づいてマップイメージをデジタル方式でレンダリングする（デジタルマップイメージと呼ばれる）異なる様態が存在する。マップイメージをレンダリングする１つの方法は、マップイメージを多数のピクセルデータ点で構成されているラスタ又はピクセル化されたイメージの組としてマップデータベース内に格納することであり、各ピクセルデータ点は、イメージの中の特定のピクセルが電子ディスプレイ装置上にどのように表示されることになるかを定義する特性を含む。このタイプのマップデータは、作成し及び格納するのが比較的容易であるが、このデータを用いるマップレンダリング技術は、典型的に、広範なデジタルマップイメージのための大量の記憶スペースを必要とし、非常に多くの有用な様態でディスプレイ装置上に表示される場合のデジタルマップイメージを操作することは難しい。
【０００４】
イメージをレンダリングする別のより融通性のある方法は、伝統的にベクトルイメージデータと呼ばれるものを使用する。ベクトルイメージデータは、典型的に、ゲーミングシステム、特に三次元ゲーミングシステムに関連するもののような高解像度及び高速イメージングシステムで用いられる。一般的に言えば、ベクトルイメージデータ（又はベクトルデータ）は、イメージディスプレイ装置を介してイメージの一部として表示されるべき特異的なイメージオブジェクト又は要素（プリミティブとも呼ばれる）を定義するデータを含む。マップイメージとの関連において、こうしたイメージ要素又はプリミティブは、例えば、個々の道路又は道路セグメント、テキストラベル、エリア、テキストボックス、建造物、ポイント・オブ・インタレスト・マーカ、地形特徴、サイクリングロード、マップ又は道ラベルなどであってもよい。各イメージ要素は、一般に、一組の１つ又は複数の三角形（異なるサイズ、形状、色、フィルパターンなどの）として構成され又は描かれ、各三角形は、ラインによって相互接続される３つの頂点を含む。したがって、あらゆる特定のイメージ要素に関して、イメージデータベースは一組の頂点データ点を格納し、各頂点データ点は、イメージ要素を構成する三角形のうちの１つの特定の頂点を定義する。一般的に言えば、各頂点データ点は、頂点の二次元又は三次元位置（例えばＸ，Ｙ、又はＸ，Ｙ，Ｚ座標系の）に関係するデータと、色特性、フィル特性、頂点から生じるラインのライン幅特性などのような頂点の特性を定義する種々の頂点属性とを含む。
【０００５】
イメージレンダリングプロセス中に、レンダリングされるべきイメージの種々のイメージ要素に関して定義される頂点が、１つ又は複数のイメージシェーダに提供され及びイメージシェーダにおいて処理され、イメージシェーダは、ディスプレイ画面上に二次元イメージをもたらすために、グラフィックスカード又はラスタライザのようなグラフィックス処理ユニット（ＧＰＵ）と共同して動作する。一般的に言えば、イメージシェーダは、高い融通性をもった状態でグラフィックスハードウェアへのレンダリングエフェクトを計算するのに主に用いられるソフトウェア命令セットである。イメージシェーダは、当該技術分野では周知であり、種々のタイプのイメージシェーダを、特別なシェーディング機能を定義するために例えばＯｐｅｎＧＬ及びＤｉｒｅｃｔ３Ｄによって提供される種々のアプリケーションプログラミングインターフェース（ＡＰＩ）で利用可能である。基本的に、イメージシェーダは、頂点又はピクセルのいずれかの特色を記述する又は判定する高レベルプログラミング言語の簡単なプログラムである。頂点シェーダは、例えば、頂点の特色（例えば、位置、テクスチャ座標、色など）を定義し、一方、ピクセル又はフラグメントシェーダは、ピクセルの特色（色、ｚ深度、及びα値）を定義する。頂点シェーダは、頂点シェーダに入力される各頂点に対して頂点シェーダが１つの（更新された）頂点出力を生じるように、イメージ要素又はプリミティブにおける各頂点に対して呼び出される。頂点シェーダによる各頂点出力は、次いで、最終的にはディスプレイ画面に送られることになるメモリのブロック上への一連のピクセルとしてレンダリングされる。別の例として、フラグメントシェーダは、イメージをピクセル化するために、すなわち、作成されているイメージのピクセル色値を判定するために頂点シェーダによる頂点出力を用いる。フラグメントシェーダは、イメージオブジェクトの異なる頂点の頂点属性値間を補間することで頂点シェーダによって生成された頂点の頂点属性値に基づいてピクセルを埋めてもよい又はレンダリングしてもよい。他の場合には、フラグメントシェーダは、イメージオブジェクトの頂点によって定義される特定の領域を埋める又はピクセル化するために、ピクセル色マップの形態の予め定義されたテクスチャを使用してもよい。この場合、テクスチャは、レンダリングされるべき種々のイメージに関するピクセル値を定義し、一般に、画面上にテキスト又はイメージをレンダリングするのに用いられる。
【０００６】
イメージシェーダ技術のより詳細な例として、Ｄｉｒｅｃｔ３Ｄ及びＯｐｅｎＧＬグラフィックライブラリは、頂点シェーダ、ジオメトリシェーダ、及びピクセルシェーダ又はフラグメントシェーダを含む３つの基本的なタイプのシェーダを使用する。頂点シェーダは、グラフィックスプロセッサに与えられる各頂点に対して１回走る。上記のように、頂点シェーダの目的は、仮想スペースにおける頂点の位置を、該頂点がディスプレイ画面上に現れる二次元座標（並びにグラフィックスプロセッサのｚバッファに関する深度値）に変換することである。頂点シェーダは、頂点の頂点属性を設定することで位置、色、及びテクスチャ座標のような特性を操作することができるが、新しい頂点を作成することはできない。頂点シェーダの出力は、存在する場合にはジオメトリシェーダ又はラスタライザのいずれかである処理パイプラインの次のステージに提供される。ジオメトリシェーダは、頂点のメッシュの頂点を追加及び除去することができ、且つ、中央処理装置（ＣＰＵ）上で処理するには費用がかかりすぎる可能性がある、手続きによりイメージジオメトリを生成すること又は既存のイメージにボリュームの詳細を追加することに用いることができる。ジオメトリシェーダが用いられている場合、出力はラスタライザに送られる。フラグメントシェーダとしても知られているピクセルシェーダは、イメージにおける個々のピクセルの色特性及び光特性を計算する。このステージへの入力はラスタライザから入来し、フラグメントシェーダは、グラフィックスパイプラインを通じて送られているポリゴンのピクセル値を埋めるように動作し、特定のイメージオブジェクト内のピクセル値を定義するのにテクスチャを使用することができる。フラグメントシェーダは、典型的に、シーン照明及び調色のような関連したエフェクトのために用いられる。フラグメントシェーダの呼び出しと画面上のピクセルの間に１対１の関係性は存在せず、これは、フラグメントシェーダが、イメージオブジェクトが閉塞されている場合であっても、対応する空間内にあるすべてのイメージ要素又はオブジェクトに対してそれらが呼び出されるので、１ピクセルにつきしばしば多数回呼び出されるためである。しかしながら、閉塞しているオブジェクトが最初に描かれる場合、他のオブジェクトの閉塞したピクセルは、一般に、フラグメントシェーダにおいて処理されないであろう。
【０００７】
ベクトルグラフィックスの使用は、イメージデータが、中央マップデータベースから通信ネットワーク（インターネット、無線通信ネットワークなどのような）を介して表示のための１つ又は複数のモバイル又はリモートデバイスに送られる、モバイルマップシステムにおいて特に有利である可能性がある。特に、ベクトルデータは、受信側デバイスに送られると、ピクセル化されたラスタイメージデータよりも容易にスケール変更する及び操作すること（例えば、回転させることなど）ができる。しかしながら、ベクトルデータの処理は、典型的に、はるかにより時間がかかり、データを受信するイメージレンダリングシステム上のプロセッサへの負荷が高い。さらに、マップに表示されるべきより高レベルの詳細又は情報を提供するベクトルイメージデータの使用は、この情報を格納するマップデータベースからマップレンダリングシステムに、より大量のベクトルデータ又は頂点が送られる必要性を生じさせ、いくつかの場合には、これは結果的に、より高い帯域幅の要件又はダウンロード時間を招くことがある。
【０００８】
さらに、ラスタライズされたマップイメージとベクトルデータにより生成されたイメージとの両方の場合に、例えばマップの道、道路、及び他の特徴にラベルを付けるのに用いられるテキストは、一般に所定のイメージとして格納される。こうしたイメージは、テキストの位置が変わるように操作するのが難しい。ピクセル化されたマップイメージでは、例えば、テキストは、他のマップ特徴に対して固定の位置にあり、したがって、テキストの向き又は位置を他のイメージオブジェクトに対して変化させることは、不可能でないとしても困難である。ベクトルデータを用いるときには、テキストは、典型的に、他のマップ特徴に結び付けられない固定のイメージ又は文字列として格納され、したがってマップ内の異なる場所に置くことができる。しかしながら、テキストイメージの文字がマルチセグメント化されたラインのようなライン、すなわち互いからいくつかの角度をなして延びる複数のラインセグメントを有するライン又は湾曲したラインに従うようにするのにテキスト内の個々の文字の互いに対する位置が変わるようにテキストイメージを操作することは依然として難しい。
【課題を解決するための手段】
【０００９】
ディスプレイ装置上のイメージをレンダリングするためのコンピュータで実施される方法は、コンピュータ装置を用いて、テキスト文字列（一組のピクセル化されたテキスト文字としてイメージルックアップテーブル内に格納されてもよい）をそれに沿ってレンダリングするイメージ内のラインを判定すること、ラインに関連する複数のラインセグメント及び各ラインセグメントに関連する範囲を判定すること、複数のラインセグメントのそれぞれに関するテキストボックスであり、それぞれが関連するラインセグメントに沿った直立位置にテキストを描くように配向されているテキストボックスを形成することを含む。方法は、テキスト文字列のテキスト文字をレンダリングするテキストボックスのうちの１つを選択し、テキスト文字列からテキスト文字のうちの１つを選択し、テキスト文字のうちの１つの中央がイメージ上のテキストボックスのうちの１つにおいてレンダリングされるときにテキストボックスのうちの１つに関連するラインセグメントの範囲内となるかどうかを判定する。方法はその後、テキスト文字のうちの１つの中央がテキストボックスのうちの１つにおいてレンダリングされるときにテキストボックスのうちの１つに関連するラインセグメントの範囲内となる場合に、テキストボックスのうちの１つを用いてディスプレイ装置上のテキスト文字のうちの１つをレンダリングする。若しくは、方法は、例えば、テキスト文字のうちの１つの中央がテキストボックスのうちの１つにおいてレンダリングされるときにテキストボックスのうちの１つに関連するラインセグメントの範囲内とならない場合に、ディスプレイ装置上のテキスト文字のうちの１つをレンダリングするのに用いられるテキストボックスのうちの１つとして複数のテキストボックスのうちの異なる１つを選択する。
【００１０】
一実施形態では、方法は、イメージルックアップテーブル内に格納されたテキスト文字列からテキスト文字のうちの各１つを順に選択することをさらに含み、且つ、テキスト文字のうちの選択された各１つに関して、テキスト文字のうちの選択された１つの中央がテキストボックスのうちの１つにおいてレンダリングされるときにテキストボックスのうちの１つに関連するラインセグメントの範囲内となるかどうかを判定するステップと、テキスト文字のうちの選択された１つの中央がテキストボックスのうちの１つにおいてレンダリングされるときにテキストボックスのうちの１つに関連するラインセグメントの範囲内となる場合に、テキストボックスのうちの１つを用いてディスプレイ装置上のテキスト文字のうちの選択された１つをレンダリングするステップと、範囲外となる場合に、ディスプレイ装置上のテキスト文字のうちの選択された１つをレンダリングするのに用いられるテキストボックスのうちの１つとして複数のテキストボックスのうちの異なる１つを選択するステップとを行う。さらに、テキスト文字のうちの１つの中央がテキストボックスのうちの１つにおいてレンダリングされるときにテキストボックスのうちの１つに関連するラインセグメントの範囲内となるかどうかを判定するときに、方法は、テキスト文字のうちの１つに関する一組のエンコーディングデータを読み出してもよく、エンコーディングデータは、少なくとも１つの方向のテキスト文字のうちの１つの中央を指定し、及び／又はテキスト文字のうちの１つの幅を指定する。
【００１１】
テキストボックスを形成するときに、方法は、テキストボックスが関連するラインセグメントの長さの方向に関連するラインセグメントの範囲よりも大きい長さを有するように、ラインセグメントのうちの関連する１つの長さに沿って配向されるテキストボックスのそれぞれを形成してもよい。１つの事例では、方法は、テキストボックスのそれぞれを、ラインセグメントの始まりの前に各テキストボックスの始まりが関連するラインセグメントの長さの方向に所定の距離だけ延びるように、且つテキストボックスの終わりがラインセグメントの方向にラインセグメントの終わりを越えて所定の距離だけ延びるように形成してもよい。所定の距離は、例えば、テキストボックスにおいて形成されるときのイメージルックアップテーブルに格納されたテキスト文字列のテキスト文字のうちの１つの幅の半分であってもよい。方法はまた、複数のラインセグメントのそれぞれに関するテキストボックスを、テキストボックスの高さが関連するラインセグメントの方向に直交して所定の距離だけ延びるように形成してもよい。この場合、テキストボックスの高さは、テキストボックスにおいて形成されるときのイメージルックアップテーブルに格納されたテキスト文字列のテキスト文字のうちの１つの高さであってもよい。
【００１２】
所望であれば、方法は、テキスト文字のうちの１つの中央がテキストボックスのうちの１つにおいてレンダリングされるときにテキストボックスのうちの１つに関連するラインセグメントの範囲内となるかどうかを判定するために、及びテキスト文字のうちの１つがテキストボックスのうちの１つにおいてレンダリングされるときにテキストボックスのうちの１つに関連するラインセグメントの範囲内となる場合にテキストボックスのうちの１つを用いてディスプレイ装置上のテキスト文字のうちの１つをレンダリングするためにフラグメントシェーダを用いてもよい。さらに、方法は、複数のラインセグメントに関するテキストボックスを形成するために頂点シェーダを用いてもよい。
【００１３】
別の実施形態によれば、イメージレンダリングエンジンは、通信ネットワークインターフェースと、プロセッサと、プロセッサに結合されるメモリと、プロセッサに結合されるディスプレイ装置と、メモリに格納され及びプロセッサ上で実行する多数のルーチンとを含む。第１のルーチンは、通信ネットワークインターフェースを介して、１つ又は複数のイメージオブジェクトを定義するデータを含む一組のベクトルデータと１つ又は複数のテキスト文字列ルックアップテーブルを受信し、テキスト文字列ルックアップテーブルのうちの１つは、少なくとも１つのテキスト文字列のテキスト文字を一組のピクセル化されたテキスト文字として格納し、且つテキスト文字列に関連する複数のテキスト文字のそれぞれの中央位置を定義するエンコーディングデータを格納する。第２のルーチンは、それに沿ってテキスト文字列がレンダリングされることになるラインに関連する複数のラインセグメント及び各ラインセグメントに関連する範囲を判定する。第３のルーチンは、複数のラインセグメントのそれぞれに関するテキストボックスであり、それぞれが関連するラインセグメントに沿った直立位置にテキストを描くように配向されているテキストボックスを判定する。第４のルーチンは、テキスト文字列のテキスト文字をレンダリングするテキストボックスのうちの１つを選択し、テキスト文字列のテキスト文字のうちの次の１つを選択し、テキスト文字のうちの選択された１つの中央がイメージ上のテキストボックスのうちの選択された１つにおいてレンダリングされるときにテキストボックスのうちの選択された１つに関連するラインセグメントの範囲内となるかどうかを判定し、テキスト文字のうちの選択された１つの中央がテキストボックスのうちの選択された１つにおいてレンダリングされるときにテキストボックスのうちの選択された１つに関連するラインセグメントの範囲内となる場合に、テキストボックスのうちの１つを用いてディスプレイ装置上のテキスト文字のうちの１つをレンダリングする。若しくは、第４のルーチンは、ディスプレイ装置上のテキスト文字のうちの選択された１つをレンダリングするのに用いられるテキストボックスのうちの選択された１つとして複数のテキストボックスのうちの異なる１つを選択する。
【００１４】
別の実施形態によれば、ディスプレイ装置上のレンダリングされているイメージ内のラインに沿ってテキストをレンダリングする方法は、コンピュータメモリにテキスト文字列ルックアップテーブルを格納することを含み、テキスト文字列ルックアップテーブルは、テキスト文字列に関連する様々なテキスト文字と、テキスト文字列に関連する様々なテキスト文字のそれぞれの中央位置を定義するエンコーディングデータとを含む。方法はまた、それに沿ってテキスト文字列がレンダリングされることになるイメージの中のラインに関連する複数のラインセグメント及び各ラインセグメントに関連する範囲を判定する。方法は、次いで、複数のラインセグメントのそれぞれに関するテキストボックスであり、それぞれがイメージの中の関連するラインセグメントに沿った直立位置にテキストを描くように配向されているテキストボックスを形成する。テキスト文字列の中の各テキスト文字に関して、方法は、テキスト文字列のテキスト文字をレンダリングするテキストボックスのうちの１つを選択し、テキスト文字列ルックアップテーブルからエンコーディングデータを読み出し、テキスト文字の中央位置がテキストボックスのうちの選択された１つにおいてレンダリングされるときにテキストボックスのうちの選択された１つに関連するラインセグメントの範囲内となるかどうかを判定する。方法は、次いで、テキスト文字の中央位置がテキストボックスのうちの選択された１つにおいてレンダリングされるときにテキストボックスのうちの選択された１つに関連するラインセグメントの範囲内となる場合に、テキストボックスのうちの選択された１つを用いてディスプレイ装置上のイメージの中のテキスト文字をレンダリングする。若しくは、方法は、テキスト文字の中央位置がテキストボックスのうちの選択された１つにおいてレンダリングされるときにテキストボックスのうちの選択された１つに関連するラインセグメントの範囲内とならない場合に、テキストボックスのうちの選択された１つとして複数のテキストボックスのうちの異なる１つを選択する。
【００１５】
さらなる実施形態では、マップイメージレンダリングシステムは、マップデータベース及びマップイメージレンダリングシステムを含む。マップデータベースは、マップ関連のベクトルイメージデータを格納し、ベクトルイメージデータは、１つ又は複数のイメージオブジェクトを定義するデータと、１つ又は複数のテキスト文字列ルックアップテーブルとを含み、テキスト文字列ルックアップテーブルのうちの１つは、一組のピクセル化されたテキスト文字としてレンダリングされるべき少なくとも１つのテキスト文字列に関連するテキスト文字を格納し、且つテキスト文字列に関連する複数のテキスト文字のそれぞれの中央位置を定義するエンコーディングデータを格納する。マップイメージレンダリング装置は、マップ関連のベクトルイメージデータを受信し及びマップ関連のベクトルイメージデータを用いてマップイメージをレンダリングするために、マップデータベースに通信可能に結合される。マップイメージレンダリング装置は、通信ネットワークインターフェースと、プロセッサと、プロセッサに結合されるメモリと、プロセッサに結合されるディスプレイ装置と、メモリ上に格納され及びプロセッサ上で実行する多数のルーチンとを含む。特に、通信ルーチンは、通信ネットワークインターフェースを介して、ディスプレイ装置上でレンダリングされるべきイメージに関するベクトルイメージデータを受信する。さらに、１つ又は複数のイメージシェーダルーチンが、それに沿ってテキスト文字列がレンダリングされることになるラインに関連する複数のラインセグメント及び各ラインセグメントに関連する範囲を判定し、複数のラインセグメントのそれぞれに関するテキストボックスであり、それぞれがイメージの中の関連するラインセグメントに沿った直立位置にテキストを描くように配向されており、且つ関連するラインセグメントの範囲によって定義される一組の範囲値を有するテキストボックスを形成する。テキスト文字列の中の各テキスト文字に関して、１つ又は複数のイメージシェーダルーチンは、テキスト文字列ルックアップテーブルからエンコーディングデータを読み出し、テキスト文字がイメージ上でレンダリングされるときにテキスト文字の中央位置が入ることになる範囲値を有するテキストボックスを判定し、テキストボックスのうちの判定された１つを用いてディスプレイ装置上のイメージの一部としてテキスト文字をレンダリングする。
【図面の簡単な説明】
【００１６】
【図１】サーバに格納されたマップデータベースと１つ又は複数のマップイメージレンダリング装置との間の通信を実装するマップイメージングシステムの高レベルブロック図である。
【図２】マップベクトルデータを用いてマップイメージをレンダリングするのに用いられるイメージレンダリングエンジンの高レベルブロック図である。
【図３】テキスト文字列及びイメージ内のマルチセグメント化されたラインに従ってテキスト文字列がレンダリングされることを可能にするエンコーディングストライプを有するエンコードされたテクスチャを描いた図である。
【図３Ａ】エンコーディングストライプをより詳細に例証する図３のエンコードされたテクスチャの一部を描いた図である。
【図４】マップイメージにおける道路の中央に従うマルチセグメント化されたラインを描いた図である。
【図５】図４のマルチセグメント化されたラインに従って図３のテクスチャから得られるテキスト文字をレンダリングするために作成された第１のラインセグメントに関連する第１のテキストボックスをグラフィカルに描いた図である。
【図６】図４のマルチセグメント化されたラインに従って図３のテクスチャから得られるテキスト文字をレンダリングするために作成された第２のラインセグメントに関連する第２のテキストボックスをグラフィカルに描いた図である。
【図７Ａ】図５及び図６のテキストボックス及び図３のエンコードされたテクスチャを用いてマップイメージ内のマルチセグメント化されたラインに従って一組のテキスト文字をレンダリングする例となる方法、ルーチン、又はプロセスの流れ図である。
【図７Ｂ】図５及び図６のテキストボックス及び図３のエンコードされたテクスチャを用いてマップイメージ内のマルチセグメント化されたラインに従って一組のテキスト文字をレンダリングする例となる方法、ルーチン、又はプロセスの流れ図である。
【図８】多数のテキスト文字列のそれぞれに関する第２のエンコーディングラインの組が配置された第２のテクスチャを例証する図であり、第２のエンコーディングラインのそれぞれは第２のテクスチャに格納されたグリフを指す。
【図９】重なり合ったテキスト文字を有するテキスト文字列を例証する図である。
【図１０】重なり合った文字がイメージ上のラインに従ってレンダリングされることを可能にするために図８のエンコーディング技術を用いる一組のテキスト文字列のそれぞれに関する複数のエンコーディングストライプを用いる第３のテクスチャを例証する図である。
【図１１】重なり合った文字がイメージ上のラインに従ってレンダリングされることを可能にするために図３のエンコーディング技術を用いるテキスト文字列に関する複数のエンコーディングストライプを用いる第４のテクスチャを例証する図である。
【発明を実施するための形態】
【００１７】
マップイメージレンダリングシステムのようなグラフィックス又はイメージレンダリングシステムは、イメージデータベースから、又はイメージデータを生成するアプリケーションから、道路、境界などのような種々のイメージオブジェクトを定義するベクトルデータの形態のイメージデータ及び例えばイメージオブジェクトに関するラベルを提供するためにイメージ上に表示されるべきテキスト文字列を定義するテクスチャを受信する。イメージングレンダリングシステムは、テキスト文字列の個々の文字がマルチセグメント化されたライン、例えば、湾曲したラインに従ってイメージ上に配置されるようにイメージをレンダリングする。このレンダリングシステムは、例えば、テキストが湾曲した又は角度がついた道路又は他のイメージ特徴のセンターラインに従うようにテキスト文字列がマップイメージ上に配置されることを可能にする。このレンダリング技術は、この技術が、テキスト文字列情報を格納するテクスチャを作成するときにそれに沿ってテキストが配置されることになるラインの湾曲の詳細を知ることなくラインに従うようにテキストをレンダリングすることを可能にするので、イメージ内のテキストをレンダリングする際の大きな融通性を提供する。この特徴は、例えば道路の湾曲に従う道路内のどこかに道路名が配置されることを可能にするので、マップイメージ内の強化された視覚的特性を提供し、したがって、レンダリングされているマップイメージ内の感じのよい視覚的効果を提供する。
【００１８】
ここで図１を参照すると、マップ関連のイメージングシステム１０は、例えば中央サイト又は種々の異なる離間されたサイトに位置するサーバ１４又は複数のサーバに格納されるマップデータベース１２を含み、且つまた、複数のマップクライアント装置１６、１８、２０、及び２２を含み、そのそれぞれは、マップレンダリング装置又はマップレンダリングエンジンを格納し及び実装する。マップクライアント装置１６〜２２は、例えばハードワイヤード又は無線ＬＡＮ、ＭＡＮ、又はＷＡＮ、インターネット、又はこれらのあらゆる組み合わせを含むあらゆるハードワイヤード又は無線通信ネットワーク２５を介してサーバ１４に接続されてもよい。マップクライアント装置１６〜２２は、例えば、移動電話デバイス（１８）、ラップトップ、デスクトップ、又は他のタイプのコンピュータのようなコンピュータ（１６、２０）、又は自動車ナビゲーションシステムのコンポーネントのような他のイメージングシステムのコンポーネント（２２）などであってもよい。さらに、クライアント装置１６〜２２は、電話及びケーブルハードウェアのようなハードワイヤードに基づく通信構造、及び／又は例えば無線ＬＡＮ及びＷＡＮ、衛星及びセルラー電話通信システムなどを含む無線通信ネットワークのような無線通信構造を使用するものを含むあらゆる公的に利用可能な又は私設の通信ネットワークのようなあらゆる適切な通信システムを介してサーバ１４に通信可能に接続されてもよい。
【００１９】
マップデータベース１２は、ラスタイメージマップデータ及びベクトルイメージマップデータを含むあらゆる所望のタイプ又は種類のマップデータを格納してもよい。しかしながら、本明細書に記載のイメージレンダリングシステムは、表示されるべきイメージ内のイメージオブジェクト、要素、又はプリミティブの多数の組のそれぞれに関する一連の頂点又は頂点データ点を定義し又は含み、且つマップ上に表示されるべきテキスト文字列を定義するのにテクスチャを用いるベクトルイメージデータと共に用いるのに最適である。一般的に言えば、ベクトルデータによって定義されるイメージオブジェクトのそれぞれは、それに関連する複数の頂点を有することになり、これらの頂点は、クライアント装置１６〜２２のうちの１つ又は複数を介してユーザにマップ関連のイメージオブジェクトを表示するのに用いられるであろう。さらに、例えばテキストイメージ又はテキスト文字を定義する種々のテクスチャマップは、マップ上のラベル又は他のイメージをレンダリングするのに用いられるマップデータベース１２に格納されてもよく、又はこれらのテクスチャマップは、クライアント装置１６〜２２内の１つ又は複数のアプリケーションにおいてテキスト文字から生成されてもよい。
【００２０】
同じく理解されることとなるように、クライアント装置１６〜２２のそれぞれは、関連するディスプレイ装置３４上でグラフィックス（イメージ）を実装する又はレンダリングするように公知の様態で概してプログラムされ及び相互接続される、１つ又は複数のプロセッサ３０、１つ又は複数のメモリ３２、ディスプレイ装置３４、及び多くの場合ラスタライザ又はグラフィックスカード３６、を有するイメージレンダリングエンジンを含む。あらゆる特定のクライアント装置１６〜２２に関するディスプレイ装置３４は、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）ディスプレイ、プラズマディスプレイ、陰極線管（ＣＲＴ）ディスプレイ、又はあらゆる他のタイプの公知の又は適切な電子ディスプレイのようないかなるタイプの電子ディスプレイ装置であってもよい。
【００２１】
一般的に言えば、図１のマップ関連のイメージングシステム１０は、ユーザがクライアント装置１６〜２２のうちの１つでマップアプリケーション（図１には図示せず）を開く又は実行するように動作し、マップアプリケーションは、サーバ１４を介してマップデータベース１２と通信し、及びそこからマップ情報又はマップ関連のデータを取得して、受信したマップデータに基づいてマップイメージを表示する又はレンダリングするように動作する。マップアプリケーションは、マップデータベース１２に格納されたマップデータの異なる地理的部分をユーザが見ること、特定の地理的場所をズームイン又はズームアウトすること、及び表示されているマップの二次元又は三次元視野角を回転させる、回す、又は変化させることなどを可能にすることができる。より具体的には、後述のシステムを用いてディスプレイ装置又はディスプレイ画面３４上のマップイメージをレンダリングするときに、クライアント装置１６〜２２のそれぞれは、マップデータベース１２からベクトルデータの形態のマップデータをダウンロードし、関連するディスプレイ装置３４上のイメージをレンダリングするのに１つ又は複数のイメージシェーダを用いて該ベクトルデータを処理する。
【００２２】
ここで図２を参照すると、クライアント装置１６〜２２のうちの１つに関連する又はこれによって実装されるイメージ生成又はイメージレンダリング装置４０がより詳細に例証される。図２のイメージレンダリングシステム４０は、２つのプロセッサ３０ａ及び３０ｂ、２つのメモリ３２ａ及び３２ｂ、ユーザインターフェース３４、及びラスタライザ３６を含む。この場合、プロセッサ３０ｂ、メモリ３２ｂ、及びラスタライザ３６は、別個のグラフィックスカード（水平ラインよりも下に示される）上に配置されるが、これはすべての実施形態においてそうである必要はない。例えば、他の実施形態では、代わりに単一のプロセッサが用いられてもよい。さらに、イメージレンダリングシステム４０は、ネットワークインターフェース４２と、通信及び格納ルーチン４３と、メモリ３２ａ上に格納されプロセッサ３０ａ上で実行されてもよいマップ表示論理を有する１つ又は複数のマップアプリケーション４８とを含む。同様に、例えば頂点シェーダ４４及びフラグメントシェーダ４６の形態の１つ又は複数のイメージシェーダが、メモリ３２ｂ上に格納され、プロセッサ３０ｂ上で実行される。メモリ３２ａ及び３２ｂは、揮発性メモリ及び不揮発性メモリのいずれか又は両方を含んでいてもよく、ルーチン及びシェーダは、後述の機能性を提供するためにプロセッサ３０ａ及び３０ｂ上で実行される。ネットワークインターフェース４２は、ユーザインターフェース又はディスプレイ装置３４上にイメージ表示を作成するのに用いられるベクトルデータの形態のイメージデータを取得するためにハードワイヤード又は無線通信ネットワークを介して例えば図１のサーバ１４と通信するように動作するあらゆる周知のソフトウェアコンポーネント及び／又はハードウェアコンポーネントを含む。イメージレンダリング装置４０はまた、例えば、より詳細に説明されることとなるように、マップデータベース１２から受信したあらゆる数の頂点データ点を含むベクトルデータ及び１つ又は複数のイメージテクスチャを格納する、メモリ３２のバッファ又は揮発性メモリ部である場合があるデータメモリ４９を含む。
【００２３】
作動中に、マップアプリケーション４８のマップ論理は、例えばユーザ入力、ＧＰＳ信号、予め格納された論理、又はプログラミングなどを用いて、ディスプレイ装置３４を介してユーザに表示する必要がある特定のイメージデータを判定することをプロセッサ３０上で実行する。アプリケーション４８の表示又はマップ論理は、マップデータベース１２から好ましくはベクトルデータ又は圧縮されたベクトルデータの形態のマップデータを取得するためにネットワークインターフェース４２を通じてサーバ１４と通信することによって通信ルーチン４３を用いてマップデータベース１２と対話する。このベクトルデータは、ネットワークインターフェース４２を介して戻され、ルーチン４３によって復元され及びデータメモリ４９に格納されてもよい。特に、マップデータベース１２からダウンロードされるデータは、用いられることになる最終ベクトルデータのコンパクトな、構造化された、又は他の方法で最適化されたバージョンであってもよく、マップアプリケーション４８は、プロセッサ３０ａを用いてダウンロードしたベクトルデータを特異的な頂点データ点に変換するように動作してもよい。一実施形態では、サーバ１４から送信されたイメージデータは、画面３４上に表示されるべき多数の異なるイメージ要素又はイメージオブジェクトに関連する一組の頂点のそれぞれに関するデータを概して含む又は定義するベクトルデータを含み、且つ、イメージオブジェクトに対してイメージ上に表示されることになるテキスト文字列又は他のラベルを定義する又は含む１つ又は複数のイメージテクスチャを含む可能性がある。より具体的には、各イメージ要素又はイメージオブジェクトに関するベクトルデータは、イメージの特定の要素又はオブジェクトを構成する１つ又は複数の三角形に関連する複数の頂点を含んでいてもよい。こうした各三角形は、３つの頂点（頂点データ点によって定義される）を含み、各頂点データ点は、それらに関連する頂点データを有する。一実施形態では、各頂点データ点は、参照又は仮想空間における頂点の二次元又は三次元位置又は場所を定義する頂点場所データ、並びに一組の頂点属性値を指す又は定義する１つ又は複数の頂点属性値及び／又は属性参照を含む。各頂点データ点は、それに頂点データ点が関連付けられるイメージオブジェクトのタイプを識別するオブジェクトタイプ識別子のような他の情報を付加的に含んでいてもよい。同様に、本質的にテキストイメージ又はピクセルルックアップテーブルであるイメージテクスチャは、イメージ上でレンダリングされるべきテキスト文字、テキスト文字列、又はラベルを定義する。こうしたイメージテクスチャはクライアント装置１６〜２２にダウンロードされてもよいが、これらのイメージテクスチャはまた、クライアント装置１６〜２２に提供される又はクライアント装置１６〜２２で用いられるテキスト文字の文字列を用いてクライアント装置１６〜２２で生成されてもよい。
【００２４】
一般的に言えば、本明細書に記載のマップイメージ内のラインに沿ってテキストをレンダリングするためのイメージングシステムは、３つの役割を含む又はそれに関係している。第１に、イメージの中のレンダリングされるべきテキストがイメージテクスチャに（それに関連する経路又は特定の向きをもたずに）配置され、テキスト文字列内の各テキスト文字の或る特徴を定義するエンコーディングデータでエンコードされる。このステップは、クライアント装置内のマップアプリケーションによって行われてもよく、その場合、テキスト文字列エンコードされたテクスチャは、クライアント装置のメモリに格納される。このエンコーディングがサーバ１４で行われる場合、このテクスチャ（イメージ又はテキスト文字列ルックアップテーブルとも呼ばれる）は、マップデータベース１２に格納されてもよく、クライアント装置に格納し及びそこで使用するために、クライアント装置１６〜２２に送信されてもよい。第２に、レンダリングされるべきテキストがイメージ上で従うことになる、一組のラインセグメントが、好ましくは適切な頂点属性をもつ三角形として描かれ又は確立される。第３に、１つ又は複数のシェーダが、テクスチャに格納されるテキスト文字列のテキスト又は文字をラインセグメントに正しく従うようにどこに描くかを計算し、このときの個々の文字回転は、テキスト文字列のテキスト文字のそれぞれが、ラインセグメントによって形成されるラインに従って又はこれに対して正しく回転される向きをもってレンダリングされるように行われる。
【００２５】
上記のように、レンダリング技術は、回転されていないテキストをテクスチャ又はピクセルマップにレンダリングする。もちろん、このプロセスは、テキストをイメージテクスチャ又は他のタイプのルックアップテーブルにレンダリングするあらゆる所望のテキストレンダリングライブラリを用いて行うことができる。１つよりも多いテキスト文字列がテクスチャに配置されることになる場合、各テキスト文字列の場所が記録され、テクスチャの一部として格納され又は提供される。さらに、各テキスト文字列内のテキストの高さが、テクスチャに記録され及びエンコードされてもよく、又はテクスチャに関する属性データとして提供されてもよい。
【００２６】
テクスチャ内のテキスト文字列の回転されていないテキストをレンダリングすることに加えて、テクスチャのＸ方向に沿って、テキスト文字の中央に対するテキスト文字の各ピクセル列の相対位置を定義するために、コード化されたピクセルストライプのようなエンコーディングデータが、各テキスト文字列に関するテクスチャ内に提供される。エンコーディングデータはまた、テキスト文字列内のテキスト文字間の切れ目又は遷移を定義してもよい。エンコーディングデータは、あらゆる所望の様態でテクスチャと共に提供されてもよいが、エンコーディングデータは、エンコードされているテキスト文字列のピクセルの場所の最上部のすぐ上又は上付近のピクセルの行内のテクスチャ内に配置されてもよい。
【００２７】
図３は、道の名前「Ｆｒｅｅｍｏｎｔ  Ａｖｅ」、「Ａｕｒｏｒａ  Ａｖｅ」、及び「Ｆｉｒｓｔ  Ｓｔ」の形態の３つのテキスト文字列が配置された、例となるテクスチャ５０を例証する。理解されることとなるように、テクスチャ５０は、テキスト文字列を形成するテキスト文字を構成するピクセルのそれぞれに関するピクセル色値を格納する。さらに、エンコーディングストライプ５２の形態のエンコーディングデータが、テキスト文字列のそれぞれの上部よりも１ピクセル行上のような真上に提供される。一般的に言えば、エンコーディングストライプ５２を構成するピクセルの行内のピクセル値は、各テキスト文字の中央ピクセル列及びテキスト文字の幅又はあらゆる特定のピクセル列位置から関連するテキスト文字の中央までの距離を反映するようにエンコードされる。エンコーディングストライプ５２は、一定の色のピクセルのラインとして図３で例証されるが、エンコーディングストライプ５２は、実際には、それらの異なるピクセル位置に対して異なる色又はピクセル値を含むことが理解されるであろう。さらに、例証のために、テキスト文字列のテキスト文字のそれぞれに関連する中央ピクセル列は、小さい垂直ラインでマークされることで図３のエンコーディングライン５２内に示される。
【００２８】
エンコーディングストライプ５２のうちの１つの一部が、図３Ａでより詳細に例証される。特に、図３Ａは、図３のテキスト文字列「Ｆｒｅｅｍｏｎｔ  Ａｖｅ」のテキスト文字「Ｆｒｅｅ」よりも上に配置されるエンコーディングストライプ５２の一部を例証する。図３Ａの種々のピクセル値の場所にわたるブロックリリーフにテキスト文字Ｆ、ｒ、ｅ、及びｅが示されるが、これは、これらのテキスト文字に関連するテクスチャ５０のピクセル行及び列を単に例証するために行われる。これらのピクセルの場所に格納されるピクセル値が、これらの特異的なテキスト文字の特異的なイメージ特徴を定義することになることが理解されるであろう。図３Ａのエンコーディングストライプ５２は、それにエンコーディングストライプ５２が関連付けられるテキスト文字列の真上のテクスチャ５０内の、例えば、関連するテキスト文字列のピクセルの最上行の真上のピクセルの行に位置する。この場合、エンコーディングストライプ５２におけるピクセルのそれぞれの値は、エンコーディングストライプ５２の真下のピクセルの列内に位置する特定のテキスト文字の中央に対して測定した場合のＸ方向に沿った位置又はピクセルの該列のテクスチャ５０の幅を反映する又は指定する。一例では、テキスト文字の中央列でのピクセル値は、１２８の値に設定されてもよく、一方、中央ピクセルからオフセットされるピクセル値は、テキスト文字の中央ピクセル列から離れる各ピクセル列につき１つだけ（例えば左に）増分し又は（例えば右に）減分してもよい。例えば、テキスト文字列「Ｆｒｅｅｍｏｎｔ  Ａｖｅ」におけるテキスト文字「Ｆ」よりも上のピクセル範囲は１２個のピクセルを含み、このときの中央ピクセルは１２８の値を有し、中央ピクセルの右の５つのピクセルはそれぞれ１２７、１２６、１２５、１２４、及び１２３の値を有し、中央ピクセルの左の４つのピクセルはそれぞれ１２９、１３０、１３１、及び１３２の値を有する。エンコーディングストライプ５２は、このエンコーディングを行うために各ピクセルの赤色の値を用いてもよいが、テキスト文字の中央及び幅をエンコーディングするためにピクセルの他の色値を代わりに又は加えて用いることができる可能性がある。エンコーディングストライプ５２を定義するテクスチャ５０内のピクセルの行において赤色ピクセル色値がエンコードされる例では、エンコーディングストライプ５２における各ピクセルは、ピクセルの現在下である又は同じピクセル列内のテキスト文字の中央とのピクセル距離よりも０から２５５までのスケールで１２８大きい赤色の色値を有する。各テキスト文字に関するエンコーディングストライプ５２内のピクセルの左及び右に１つの追加のピクセルを含めることができ、このときの左の追加のピクセルは例えば２５５の赤色値を有し、右のピクセルは現在のテキスト文字の終わりを示すために例えば０の赤色値を有する。もちろん、エンコーディングストライプ５２は、エンコーディングストライプ５２のすぐ下のテキスト文字列の中の各テキスト文字を同様にエンコードするのに用いられてもよい。さらにまた、エンコーディングストライプ５２は、関連するテキスト文字列よりも上に位置するものとして例証されるが、エ��コーディングストライプ５２は、代替的に、同じテクスチャ内のテキスト文字列よりも下に位置することができる可能性があり、又は付加的な又は別個のテクスチャがそれに関連付けられるテキスト文字列をミラーリングする又はこれと相互に関連付けられる場所を有するような他の様態で提供することができる可能性がある。いずれにしても、エンコーディングストライプ５２の列の位置は、関連するテキスト文字のピクセル列と位置で相互に関連付けられる。しかしながら、テキスト文字列の中の各テキスト文字の中央位置及び幅は、あらゆる他の望ましい又は有用な様態でエンコードされ又は提供されてもよい。
【００２９】
テクスチャにおける各テキスト文字列に関するエンコーディングストライプ５２の形態で提供されてもよいエンコーディングデータを格納し及び用いる結果として、本明細書に記載のイメージレンダリングシステムは、これらのテキスト文字列の中のテキスト文字を、個々の文字がマルチセグメント化されたラインに沿って正しく配向されて描かれるようにレンダリングすることができる。特に、エンコーディングデータを用いて、イメージレンダリングシステムは、各テキスト文字のあらゆる特定の場所（すなわち、ピクセル列）でテクスチャのＸ座標に沿った関連するテキスト文字の中央との相対的距離を判定することができる。この情報を用いて、フラグメントシェーダ４６のうちの１つのようなイメージシェーダは、後述のように文字の中心に切れ目のない、回転されたテキスト、すなわち湾曲したラインに沿ったテキストを正しく描くように動作してもよい。
【００３０】
本明細書に記載のテキストレンダリングプロセスの第２の一般的ステップは、エンコードされたテクスチャ内のテキスト文字列が従うことになるラインのラインセグメントを判定する。このステップは、マップイメージがレンダリングされている際に行われてもよく、もちろん、テキスト文字列が最終的にレンダリングされる様態は、レンダリングされるべきテキストが従うことになる特異的なラインに依存するであろう。もちろん、従うべきラインは、ベクトルに基づくイメージオブジェクト用いて作成される道路の中央に沿って横断するライン、境界に従うラインなどのようなあらゆる所望のタイプのラインであってもよい。こうしたラインは、一般に、道路又は他のイメージ特徴にラベルを付けるためにテキストをレンダリングするのに判定され及び用いられてもよい。もちろん、従うべきラインは、イメージ特徴の輪郭に従うライン又はあらゆる他の所望のラインのようなあらゆる他のタイプのラインであってもよい。用いられるべきラインは、イメージオブジェクトの頂点のような他のイメージ特徴から判定されてもよく、マップデータベース１２に予め格納され及びマップデータベース１２から提供されてもよく、ユーザによって指定されてもよく、又はあらゆる他の所望の様態で判定されてもよい。
【００３１】
それに沿ってテキストをレンダリングするラインを識別すると、ラインは、直線であるが接続されたラインセグメントに分かれ、各ラインセグメントは、近隣のラインセグメント（単数又は複数）に対して概して或る角度をなす。マルチセグメント化されたライン６０の例が、多区間道路６２の中央に沿って横断するラインとして図４の破線で例証される。セグメント化されたライン６０は、相互接続されたラインセグメント６０Ａ、６０Ｂ、６０Ｃ、及び６０Ｄを含む。もちろん、ライン６０及び／又はその関連するラインセグメントは、あらゆる所望の様態で、例えば道路６０のセグメントを画定する頂点に提供されるデータに基づいて判定されてもよい。
【００３２】
図５は、図４のラインセグメント６０Ａ及び６０Ｂをより詳細に例証する。図５では、ラインセグメント６０Ａは、始点６６で始まって終点６８に延びるものとして例証され、一方、ラインセグメント６０Ｂは、始点６８から延びて終点７０に延びるものとして例証される。さらに、図５のラインセグメント６０Ａは、（ラインが用いられることになるイメージに対する空間内で測定される場合の、例えばピクセル数で又はいくつかの他の距離数量詞に従って）３５の長さを有する。図５の場合、ラインセグメント６０Ａは、０の（点６６での）相対参照値で始まって、ラインセグメント６０Ａに平行に配置される図５のスケール７２に沿って３５の（点６８での）相対参照値に延びるものとして示される。同様の様態で、ラインセグメント６０Ｂは、７０の長さ（相対的イメージ空間内）を有し、ラインセグメント６０Ｂに平行に配置されるスケール７４によって例証される場合の３５の（点６８での）相対参照値で始まって１０５の（点６８での）相対参照値に延びる。
【００３３】
ライン６０のラインセグメントのそれぞれ（例えば、６０Ａ及び６０Ｂ）が識別され及びその長さが判定されると、各ラインセグメントは、テキストボックスとして本明細書で言及されることになる矩形を形成する一対の三角形として表わされてもよい。こうした矩形又はテキストボックス８０Ａは、ラインセグメント６０Ａに関する図５で例証される。一般的に言えば、矩形８０Ａは、ラインセグメント６０Ａに沿ってテキストをレンダリングするためにフラグメントシェーダによって用いられるテキストボックスの一組の頂点を定義するのに用いられるであろう。特に、矩形８０Ａの頂点は、（ラインセグメント６０Ａの長さに沿った方向に測定される場合の）ラインセグメント６０Ａの始まりの前に予め定義された又は特異的な距離（例えばライン６０に沿ってレンダリングされるべきテキスト文字列の最も広い文字の幅の半分）で始まるイメージにおける位置からラインセグメント６０Ａの終わりの後の予め定義された又は特異的な距離（例えば、テキスト文字列内の最も広い文字の幅の半分）にわたるように選択される。図５の例では、所定の距離は、５（イメージの相対的空間内）として例証され、したがって、矩形８０Ａは、スケールマーカ７２に沿って−５から４０まで延びる。ラインセグメント６０Ａと直交する方向に、矩形８０Ａは、別の距離、例えばラインセグメント６０Ａと直交する方向のレンダリングされるべき最も高いテキスト文字の高さの半分からラインセグメント６０Ａと直交する他の方向の別の距離（例えば、レンダリングされるべき最も高いテキスト文字の高さの半分）にわたる。したがって、図５のスケール７５によって例証されるように、矩形８０Ａは、−５から５にわたる（ラインに沿ってレンダリングされるべきテキスト文字列の高さが相対的イメージ空間内の１０であるとみなす）。
【００３４】
ここで、本明細書でラインセグメント６０Ａの範囲として言及されることになる始点６６から終点６８までのラインセグメント６０Ａの全体の長さが計算され又は判定され、この範囲は、テキストボックス８０Ａの頂点のそれぞれに関する頂点属性の２つの成分として設定される（このときのこれらの頂点属性の値は、テキストボックス８０Ａを形成する三角形の頂点のそれぞれに関して同じである）。これにより、ラインセグメントの範囲は、ラインセグメントが配置されるテキストボックス８０Ａの範囲として用いられる又は言及されることになる。したがって、矩形８０Ａの範囲は、それに沿ってテキストがレンダリングされることになるラインセグメント６０Ａの範囲となるであろう。この範囲は、矩形８０Ａの一方の端から他方の端までの長さの線形補間が結果的にラインセグメント６０Ａの始まり、ラインセグメント６０Ａの終わり、及びこれらの間のすべての点で正しい長さをもたらすように矩形８０Ａの頂点に関する長さ値を計算するためにフラグメントシェーダにおいて補間するのに用いられるであろう。もちろん、この補間は、ラインセグメント６０Ａの始まりまでのラインセグメント６０Ａの長さから最も広い文字の幅の半分（すなわち、所定の距離）を差し引き、これをラインセグメント６０Ａの前の矩形の頂点に関して用い、最も広い文字の幅の半分（例えば、所定の距離）をラインセグメント６０Ａの終わりの長さに加え、これをラインセグメント６０Ａの後の矩形の頂点に関してを用いることによって行うことができる。さらに、ラインセグメントよりも上のテキストボックスの頂点は、０のＹテクスチャ値を指定する頂点属性を割り当てられてもよく、ラインセグメントよりも下のテキストボックスの頂点は、イメージ内でレンダリングされる場合のテキストの高さに等しいＹテクスチャ値を指定する頂点属性を割り当てられてもよい。図５の矩形８０Ａの外側頂点のＸ，Ｙ座標は、したがって、ラインセグメント６０Ａの始点６６を中央とし、且つラインセグメント６０Ａに平行に（Ｘ方向に）及び直交して（Ｙ方向に）延びるイメージ空間における（−５，０）、（４０，０）、（−５，１０）、及び（４０，１０）として例証される。この座標空間の使用は、単に例証を簡略化するために提供され、イメージ自体に又は補間及びイメージレンダリングを行うシェーダで用いられる実際の座標空間ではなくてもよい可能性がある。しかしながら、イメージのＸ，Ｙ座標空間に整合するように座標を回転及び平行移動させることによって一貫したイメージ空間への変換が達成されてもよい。
【００３５】
テキストボックス（例えばテキストボックス８０Ａ）においてレンダリングするテキスト文字列を指定するのに用いられている同じテクスチャに複数のテキスト文字列が提供される場合、テクスチャ内に格納される場合の当該テキスト文字列のＹオフセット（すなわち、テキストボックスにおいてレンダリングされるべきテキスト文字列のＹオフセット）を、テキストボックス内の正しいテキストイメージをレンダリングできるようにするために頂点属性として送信することが必要な場合もある。あらゆる特定の時点でレンダリングされるべきテキスト文字を突き止め、且つイメージ上のテキスト文字列をレンダリングするときに適正な補間を行うことができるように、特定のラインセグメント（例えばラインセグメント６０Ａ）に沿ってテクスチャ内に格納されるテキスト文字列をレンダリングするシェーダがテクスチャ座標を適正に計算するためにテクスチャ内のテキスト文字列のサイズ（例えば、高さ）を知ることが必要な場合もある。しかしながら、テクスチャにおける文字又はテキスト文字列のサイズ（例えば、高さ）は一様であってもよく、この値は、次いで、テキストボックスの頂点属性としてではなく一様な変数として設定することができる。
【００３６】
理解されることとなるように、従うべきライン６０の他のラインセグメント６０Ｂ、６０Ｃ、６０Ｄのそれぞれに関して矩形又はテキストボックスを形成することができる。例として、テキストボックス８０Ｂが、ラインセグメント６０Ｂに関して図６で例証される。テキストボックス８０Ｂは、相対的イメージ空間（このときスケール７４及び７６によって定義される）内の（３０，０）、（１１０，０）、（３０，１０）、及び（１１０，１０）に頂点を有する。さらに、このテキストボックスの範囲は、ライン６０の始まりから測定したその始点６８からその終点７０までのラインセグメント６０Ｂの範囲であるので、３５〜１０５となるであろう。
【００３７】
矩形又はテキストボックスのそれぞれに関する２つの三角形の頂点が、レンダリングされるべきテキストがそれに沿って従うことになるラインのラインセグメントのそれぞれに関して定義された後で、これらの頂点及びそれらの関連する属性（例えば、二次元の場所及び範囲及びテキスト文字列座標）は、従うべきラインのラインセグメントのそれぞれに関するテキストボックスをレンダリングするために頂点シェーダ４４のうちの１つに送信されてもよい。これらのテキストボックスは、頂点シェーダ４４によって定義されると、例えば後述の様態で図５のテクスチャに格納される場合のエンコードされたテキスト文字列のうちの１つを用いてこれらのテキストボックス内のテキストをレンダリングするためにフラグメントシェーダ４６によって用いられることが可能である。
【００３８】
一般的に言えば、作動中に、フラグメントシェーダ４６は、もしあれば、判定されたラインセグメントのそれぞれに関して定義されるテキストボックスにおける各ピクセルに関して、テキストイメージからのどのピクセルを描くかを判定する。より具体的には、マルチセグメント化されたラインに沿ってテキストをレンダリングするときに、マップアプリケーション４８は、フラグメントシェーダ４６を、種々のテキストボックスにおけるテキストイメージからのテキストを一度に１つのテキストボックスに入れるのに用いる。そうすることで、マップアプリケーション４８は、それに沿って特定のテキスト文字列のレンダリングを始めることになるラインセグメントのうちの１つを選択し、該ラインセグメントに関して作成されるテキストボックスを用いる。第１の選択されたラインセグメント又はテキストボックスは、０の範囲値を有するラインセグメント又はテキストボックスであってもよい。このテキストボックスを用いて動作するときに、フラグメントシェーダ４６は、適切なテクスチャからレンダリングされるべき第１のテキスト文字のピクセルにアクセスしてもよく、テクスチャ内のエンコードされたストライプ５２を用いてテキスト文字の中央との相対的距離を参照し又は判定してもよい。この機能は、テクスチャ内に格納される場合のレンダリングされている文字の位置に関するテクスチャ座標を得るためにテクスチャの幅で割ったテクスチャへのＸ座標として補間された長さ値を用いることによって行うことができる。テクスチャへのＹ座標は、テクスチャにおけるピクセルの第１の行、又は複数の文字列がテクスチャに詰め込まれる場合にテクスチャのオフセット後の第１の行となるように計算することができる。レンダリングされているテキスト文字列の現在のテキスト文字を見つけると、フラグメントシェーダ４６は、テキスト文字列のエンコーディングストライプ５２から適切な色値を読み出し、文字の中央との距離を求めるために１２８を差し引く。補間された長さを加えることは、文字の中央までの長さを与える。文字の中央（イメージ空間に補間される場合の）がテキストボックスの範囲内に入る場合、フラグメントシェーダ４６は、テキストボックス内のディスプレイ上にテキストイメージの１つ又は複数のピクセルを描く。しかしながら、テキスト文字の計算された中央が、テキストボックスに関して提供される範囲の第１の限界と及び第２の限界との間にない場合、現在のテキスト文字のピクセルは廃棄されるべきであり、何も描かれない。より具体的には、フラグメントシェーダ４６は、テキスト文字の各ピクセルをピクセル毎にテキストボックスに入れるかどうかの判定を行い、したがって、テキストイメージのピクセルが、解析される個々の各ピクセルに関する現在レンダリングされているテキストボックスの範囲内に入る中心点を有するテキスト文字と関連付けられるかどうかの判定を行う。もちろん、所望であれば、フラグメントシェーダ４６が、（テキストボックスの対応するピクセルを埋めることを試みるときに）テキストイメージの各ピクセル列に対してこの解析を行うことができる可能性があり、この場合、文字の中央がテキストボックスの範囲内に入るかどうかに応じて、テキストボックスの中に列のテキストイメージピクセルを描く又は描かないことになる。いずれにしても、いかなる特定のピクセル又はピクセル列も廃棄されないとき、フラグメントシェーダ４６は、前と同じテクスチャＸ座標、及びテクスチャの高さで割った頂点属性（レンダリングされている列の特定の行に応じて）として渡される１つ又は複数の補間されたＹテクスチャ座標を用いて、ピクセルの該列におけるテキストに関する色を参照することができる。これは、テキストよりも上の中央エンコーディングピクセルを補正するレンダリングされたテキストから対応するピクセルを与えるべきである。
【００３９】
もちろん、テキスト文字の中央がテキストボックスの範囲外であるためテキストボックスの中にテキスト文字のピクセルが描かれない場合、マップアプリケーション４８は、次の又は後続のテキストボックス（ラインに沿った次の又は後続のラインセグメントに関連する）を処理する又はレンダリングするときに該テキスト文字を描くのにフラグメントシェーダ４６を用いるであろう。フラグメントシェーダ４６は、シェーダ４６がテキストボックスを埋める、すなわちテキストボックスの終わりに達するまで、現在選択されたテキストボックスにおいてテキスト文字のピクセルがレンダリングされるべきかどうかを判定するプロセスを繰り返す。テキスト文字のピクセルが特定のテキストボックス内で又はこれを用いてレンダリングされると、フラグメントシェーダ４６は、同じテキストボックス内の次のテキスト文字のピクセルをレンダリングすることを試み、テキストボックスの終わりに達するまでこのプロセスを繰り返す。理解されることとなるように、ラインセグメントに関して形成されるテキストボックスのサイズが小さい場合があり、（その中心点がテキストボックスの範囲外に延びるため）１つのテキストボックスにおいて１つの文字がレンダリングされない場合、該文字は後続するテキストボックス（すなわち、テキスト文字の中央が入るテキストボックス）においてレンダリングされることになるので、実際には文字のサイズよりも小さい場合がある。このプロセス中に、テキスト文字がレンダリングされないテキストボックスが作成される場合がある。
【００４０】
このプロセスの結果として、テキストイメージ内のテキスト文字のそれぞれが上下に（ｒｉｇｈｔ  ｓｉｄｅ  ｕｐ）（すなわち、テキストボックスの向きに対し直立して）及びラインに従ってレンダリングされるが、この場合、各テキスト文字はマルチセグメント化されたラインに正しく従うようにラインに沿った向きに回転される。結果として、テキスト文字列を、回転されていない様態で予め計算し、テクスチャに格納することができ、異なる湾曲をもつ複数のラインに関して何度も用いることができる。
【００４１】
ここで図７Ａ及び図７Ｂを参照すると、図３及び図３Ａのようなエンコードされたテクスチャ又はテキスト文字列ルックアップテーブルを用いてイメージ内のラインに沿ってテキストをレンダリングするのに用いられてもよい方法、ルーチン、又はプロセス１００のプロセス流れ図又はフローチャートがより詳細に例証される。単なる例として、ルーチン１００は、レンダリングされるテキストが道路の種々のセグメントにわたって道路の中央にあるようにテキストをマルチセグメント化された道路に沿って又はその境界内で、より具体的には道路の中央に従うラインに沿ってレンダリングするために、図２のようなマップレンダリングエンジンで用いられてもよい。一般的に言えば、ルーチン又はプロセス１００は、マップアプリケーション４８の一部であるルーチン及び／又はプロセッサ３０ａ及び３０ｂにおいて実行される頂点シェーダ４４及びフラグメントシェーダ４６によって定義されるルーチンを含む、１つ又は複数のソフトウェアルーチン又はアプリケーションとして実装されてもよい。これらのルーチンは、Ｊａｖａｓｃｒｉｐｔ（登録商標）、Ｃコードなどのようなあらゆる所望の言語で実装され又は書かれてもよく、プロセッサ３０ａ及び３０ｂのうちの一方又は両方で実行されてもよい。さらに、これらのルーチンは、ディスプレイ装置３４上のイメージをレンダリングするのにラスタライザ３６を用いてもよい。
【００４２】
いずれにしても、ルーチン１００のブロック１０２は、それに沿ってテキスト文字が適用されることになる多区間道路のようなイメージ特徴を描く又は形成してもよい。このプロセスの一部として又はこのプロセスが完了した後で、ブロック１０４は、それに沿ってテキスト文字列がレンダリングされることになる多区間道路のようなイメージ特徴に従うマルチセグメント化されたラインを判定する。一例では、このマルチセグメント化されたラインは、図４で例証されるライン６０のような多区間道路のセンターラインに従っていてもよい。次に、ブロック１０６は、マルチセグメント化されたラインの隣接する区間の各対の交差点でのマルチセグメント化されたラインに沿った点を見つけ出す又は突き止める。したがって、ブロック１０６は、それに沿ってテキストがレンダリングされることになるラインの各ラインセグメントの始点及び終点を見つけ出し、マルチセグメント化されたラインの各セグメントに固有の範囲を割り当ててもよい。割り当てられた範囲は、連続的に又は継ぎ目なくラインセグメントの境界を越えて延びるべきである。すなわち、ラインの範囲は、１つのラインセグメントの始まりで開始し、２つのラインセグメントが同じ範囲を有さず、且つ共通の終点だけを共有するように、該ラインセグメントを通して、次いで後のラインセグメントのそれぞれを通して連続的に延びてもよい。
【００４３】
次に、ブロック１０８は、図５及び図６に関して前述した様態で各ラインセグメントに関するテキストボックスを形成する。これらのテキストボックスの頂点は、例えばマップアプリケーション４８内のルーチンで定義され又は計算されてもよく、次いで、ラスタライザ３６を用いてレンダリングされているイメージの中にテキストボックスを形成するために図２の頂点シェーダ４４のうちの１つに送信されてもよい。もちろん、テキストボックスの輪郭は、テキストボックス自体がレンダリングされているイメージの視覚的態様とならない可能性があるため（しかしそれらはそのように望まれるならそうなることができる可能性がある）、透明であるか又は色をもたないであろう。各テキストボックスの頂点は、イメージ内のテキストボックスの頂点の場所を指定することになり、属性として、テキストボックスに関連するラインセグメントの範囲と、必要であればテキストボックスにおいてレンダリングされることになるテクスチャのテキスト文字列への１つ又は複数の参照を含むであろう。すなわち、所望であれば、テキストボックスの頂点は、属性として、ラインに沿ってレンダリングされるべきテキスト文字列が位置するテクスチャ内の場所へのポインタを含んでいてもよい。
【００４４】
次に、ブロック１１０で、ルーチン又はプロセス１００は、参照されたテキスト文字列のレンダリングをそれに沿って始めるテキストボックスのうちの最初の１つを選択する。このテキストボックスは、この範囲値がテクスチャ内に格納されるテキスト文字列のレンダリングをそれに沿って始める開始位置を示すので、一般にゼロ（０）の範囲値を有するテキストボックスであろう。しかしながら、これはそうである必要はなく、テキストは、判定されたラインに沿ったあらゆる所望の場所又は位置で始まるラインに沿ってレンダリングすることができる可能性がある。いずれにしても、ブロック１１２（図７Ｂ）は、ラインに沿った現在の場所としてテキストがそこでレンダリングされることになる現在の又は選択されたテキストボックスにおける開始点を突き止める。この開始点は、（第１のテキストボックス以外は）テキストボックスの始端又は前端となることがあり、一般にはそうなるであろう。ブロック１１４は、次いで、ラインに沿った現在の場所に関連する範囲値に対応するテクスチャ内に格納される場合のテキスト文字列内のテキスト文字の列に関連するピクセル又はピクセルの組を得る。
【００４５】
ブロック１１６は、次いで、テキスト文字全体がラインに沿った現在の場所で現在のテキストボックスに配置された又はそこでレンダリングされた場合に、（現在のテキストボックスの一部として指定されるサイズ内に適合するようにテキストサイズが補間されるときに）それらのピクセルが関連付けられるテキスト文字の中央が現在のテキストボックスの範囲内であるかどうかを判定する。ブロック１１６は、考慮されているテキスト文字のピクセルのすぐ上のテクスチャのエンコーディングストライプ５２を読み出すことによってこのテストを行ってもよい。すなわち、ブロック１１６は、１２８の赤色の色値を有する現在のテキスト文字（すなわち、０又は２５５の値をもつピクセル場所を横断することなく）に関するエンコーディングストライプ５２内のピクセル場所（テクスチャのＸ方向の）を判定するためにエンコーディングストライプ５２を読み出し、次いで、この位置を、考慮されているテキスト文字の中央（テクスチャのＸ方向に沿った）として認識してもよい。代替的に又は加えて、ブロック１１６は、現在のテキスト文字の中央との距離を判定するためにエンコーディングストライプ５２内の幅エンコーディングを用いてもよい。現在のテキストボックス内に配置されるように適正に補間されたときに、現在のテキスト文字の中央ピクセル場所が現在のテキストボックスの範囲内である場合、ブロック１１８は、ラインに沿った現在の場所で現在のテキストボックスにおけるテキスト文字の現在の列のピクセルのすべてを（適正に補間されたサイズで）レンダリングする。一方、現在のテキストボックス内に配置されるように適正に補間されたときに、テキスト文字の中央ピクセル場所が現在のテキストボックスの範囲内ではない場合、テキスト文字のピクセルの現在のピクセル又は現在の列がテキストボックスにおいてレンダリングされないように、ブロック１１８が（ブロック１２２によって）スキップされる。これらのプロシージャは、そのように望まれる場合にはフラグメントシェーダ４６において行われてもよい。もちろん、フラグメントシェーダ４６がテキストボックス内のテキスト文字をレンダリングしているときに、テキスト文字のピクセルは、テキスト文字がテキストボックスの向きによって定義される場合のラインに沿った直立位置においてレンダリングされることになるように、テキストボックスのＸ及びＹ配向に沿ってレンダリングされるであろう。さらに、作動時には、ルーチン１００は、フラグメントシェーダがテクスチャの特定のピクセル列における各ピクセルに関して、該ピクセルが属するテキスト文字がテキストボックスの範囲内に入る中央位置を有するかどうかを別々に解析するように、ブロック１１６及び１１８を継続的にピクセル毎に行ってもよい。簡素さのために、しかしながら、図７Ａ及び図７Ｂのフローチャートは、ピクセル毎の動作を示さないが、代わりに、ピクセル列毎のテキスト文字ピクセルの処理を示す。
【００４６】
いずれにしても、テクスチャの特定のピクセル列のピクセルのすべてが解析された後で、ブロック１２４は、ラインに沿った現在の場所を次の位置に増分し、ブロック１２６は、現在の場所が現在のテキストボックスの後端を越えるかどうかを判定する。越えない場合、制御は、次のピクセル（又はテクスチャのピクセル列におけるピクセルの組）を得るブロック１１４に戻り、これらのピクセルが現在のテキストボックス内でレンダリングされるべきかどうかを確認するためにテキスト文字におけるピクセルの次の列に対してブロック１１６〜１２６のステップが繰り返される。
【００４７】
しかしながら、ブロック１２６で、ラインの新しい場所が現在のテキストボックスの終わりの外又はこれを越えたところで見出される場合、ブロック１３０（ラインに沿ってテキストを描くアプリケーション４８において走る場合がある）は、ラインに関するすべてのテキストボックスがレンダリングされているかどうかを判定する。レンダリングされていない場合、ブロック１３２は、レンダリングする次のテキストボックスを判定し、レンダリングのために該テキストボックスの詳細をフラグメントシェーダ４６に提供する。制御は、次いで、１１２に提供され、１１２は新しいテキストボックスに関連するテキストイメージの開始点を、該点が新しいテキストボックスの始まりによって定義されるラインに沿った場所に対応すると判定し、この点をラインに沿った現在の場所として設定する。フラグメントシェーダ４６は、次いで、次のテキストボックスに対してブロック１１４〜１２６を実施するように動作する。ブロック１３０が、最後のテキストボックスがレンダリングされていることを判定するときに、ラインに沿ってテキスト文字列をレンダリングするプロセスが、テクスチャにおける１つのテキスト文字列に関して完了するであろう。
【００４８】
理解されることとなるように、ルーチン１００は、本質的に、各テキスト文字の中央が入ることになる選択された又は判定されたラインに沿ったテキストボックスを見つけ出し、該テキストボックスの中にテキスト文字全体を描くように動作する。互いに対するテキスト文字の位置を判定するのにラインの範囲が用いられ、この範囲が連続しており、隣接するテキストボックスの交差点で途切れないので、テキスト文字は、それらがレンダリングされるテキストボックスに対して正しい方向（直立）にそれぞれレンダリングされるであろう。しかしながら、各テキストボックスの終わりがテキストボックスの範囲を越えて延長されるので、ルーチンは、テキスト文字全体をただ１つのテキストボックス、すなわち、テキスト文字の中央が入る範囲値を有するテキストボックスの中でレンダリングすることができる及びそうなることを保証する。このシステムは、テキストボックスが、例えば連続的に湾曲するラインの場合などではテキスト文字が各テキストボックスにおいてレンダリングされない可能性がある非常に小さいサイズとなることを可能にする。したがって、この技術は、テキストがあらゆる湾曲したラインに沿って正しくレンダリングされることを可能にする。
【００４９】
図７Ａ及び図７Ｂの異なるブロックによって指定される種々のアクションを他の様態又は順序で再配置する又は再順序付けする及び行うことができる可能性があることがもちろん理解されるであろう。さらに、本明細書に記載のテキストレンダリングが始まる前にテキストボックスが予め確立されている又は予め画定されているのではなく、レンダリングされるべきテキストが現在のテキストボックスの外に入ることが判定されるときに各テキストボックスが必要となるのに応じて、テキストボックスの決定又は確立を実行中に行うことができる可能性がある。
【００５０】
テクスチャにおけるテキスト文字列に関するエンコーディングストライプ５２は、関連するテキスト文字列のすぐ上又は真上にあるものとして説明されるが、このエンコーディングストライプ５２は、テキスト文字列よりも下のテクスチャにおいて提供することができる可能性があり、又はそのように望まれる場合には関連するテキスト文字列のピクセルと何らかの方法で相互に関連付けられ又は参照される様態で別のテクスチャ又はルックアップテーブルにおいてでさえも提供することができる可能性がある。さらに、テキスト文字列の中の各テキスト文字の中央の位置を、エンコーディングストライプ５２を用いない様態を含む本明細書に記載された以外の他の様態でエンコードすることができる可能性がある。さらに、エンコーディングストライプが用いられる場合、エンコーディング技術は、例えば本明細書に記載の特異的なピクセル値を用いることに限定されない。したがって、エンコーディングストライプ５２内のテキスト文字の中央を示すのに用いられるものとして本明細書に１２８の値が記載されるが、代わりに他の値を用いることができる可能性がある。同様に、本明細書に記載のエンコーディングストライプ５２に関してピクセル行の赤色の色値が用いられるが、代わりに１つ又は複数の他のピクセル色値を用いることができる可能性がある。
【００５１】
さらに、上記のように、ラインに沿ってテキスト文字列をレンダリングしているフラグメントシェーダは、フラグメントシェーダがテキスト文字の中央がテキスト文字が現在レンダリングされているテキストボックスの範囲内又はテキストボックスの範囲外のいずれにあるかを判定できるように、各テキスト文字の中央がテクスチャ内のどこにあるかを判定できることが重要である。上記のように文字の中央を判定する１つの様態は、単一の文字列又はテキスト文字の群に対して単一のエンコーディングストライプが用いられる図３及び図３Ａで例証されるようなテクスチャ又はイメージルックアップテーブル自体における文字の中央をエンコードすることであってもよい。
【００５２】
他のエンコーディング技術を用いて、しかしながら、レンダリングされるべき異なるテキスト文字を、テクスチャ内の一組のグリフとして種々の異なるテキスト文字列の一部として（又は同じテキスト文字列の一部として）格納することによって、テクスチャ又はテキスト文字列ルックアップテーブルのサイズを減らすことができる。さらに、こうしたさらなるエンコーディング技術は、テキスト文字列の各テキスト文字に関する中央及び／又は幅情報を含む各テキスト文字列に関する第１のエンコーディングデータと、テキスト文字列の各テキスト文字の場所でテキスト文字として用いられることになる特定のグリフを指す第２のエンコーディングデータを提供する必要がある。例えば、図８は、３つの異なるテキスト文字列に関するエンコーディング情報２０２、２０４、及び２０６を格納するテクスチャ２００を例証し、これらのテキスト文字列は、例えば、マップタイルにおける異なる道路に関するラベル又は名前を定義してもよい。図８のテキストエンコーディング情報２０２、２０４、２０６の例となるラインは、例えばテキスト文字列「Ｆｒｅｅｍｏｎｔ  Ａｖｅ」、「Ａｕｒｏｒａ  Ａｖｅ」、及び「Ｆｉｒｓｔ  Ｓｔ」を定義してもよい。エンコーディング情報２０２、２０４、及び２０６に関連するテキスト文字列のそれぞれは、例えば、マップイメージ内の異なるラインに沿ってレンダリングされるように提供されてもよい。この場合、エンコーディング情報２０２、２０４、２０６の組のそれぞれは、テキスト文字列の中の各テキスト文字の中央及び／又は各特定のピクセル列から関連するテキスト文字の中央までの距離を意味するピクセル値を有するエンコーディングストライプ２０２Ａ、２０４Ａ、２０６Ａをそれぞれ含む。エンコーディングストライプ２０２Ａ、２０４Ａ、及び２０６Ａは、図３及び図３Ａのエンコーディングストライプ５２と同様であるか又は同一である。また、単なる例証のために、テキスト文字列の各テキスト文字の中央は、エンコーディングストライプにおける小さい垂直ラインによって示される。しかしながら、エンコーディングストライプ２０２Ａ、２０４Ａ、及び２０６Ａのそれぞれの真下のテクスチャにおけるテキスト文字を定義するピクセル値の実際の組を格納する代わりに、テキスト文字列エンコーディング情報２０２、２０４、及び２０６の組のそれぞれの内部に第２のエンコーディングラインが提供される。図８でエンコーディングライン２０２Ｂ、２０４Ｂ、及び２０６Ｂとして例証される、これらの第２のエンコーディングラインは、本質的に、テクスチャ２００内に格納されるグリフのフィールド２１０内のいくつかの位置へのポインタの組である。グリフのフィールド２１０内のグリフのそれぞれは、テキスト文字列エンコーディング情報２０２、２０４、及び２０６によって定義されるテキスト文字列のうちの１つ又は複数において用いられる単一のテキスト文字であってもよい。この場合、グリフのフィールド２１０内のグリフのうちの１つ又は複数は、テキスト文字列エンコーディング情報２０２、２０４、２０６によって定義される同じ又は異なるテキスト文字列において１回以上用いられてもよい。
【００５３】
したがって、図８で例証されるエンコーディング技術では、テキスト文字列エンコーディング情報２０２、２０４、及び２０６の各ライン又は組は、関連するテキスト文字列内の各文字（又はグリフ）の幅、間隔、及び中央、並びに関連するテキスト文字列内の互いに対する異なるテキスト文字又はグリフの相対的間隔を示す一組のピクセル値２０２Ａ、２０４Ａ、及び２０６Ａとして形成されるエンコーディングデータの第１の組を含む。さらに、テキスト文字列エンコーディング情報２０２、２０４、及び２０６の各ライン又は組は、関連するテキスト文字列内の該位置で用いるために特定のテキスト文字を定義するグリフのフィールド２１０に格納される場合のグリフの位置又は場所を定義するピクセル２０２Ｂ、２０４Ｂ、２０６Ｂの第２のライン又は組を含む。
【００５４】
第２の又はさらなるエンコーディングライン２０２Ｂ、２０４Ｂ、２０６Ｂは、第１のエンコーディングライン２０２Ａ、２０４Ａ、２０６Ａに隣接する、例えばその下のテクスチャ２００内のピクセルの別個のラインとして格納されてもよい。一実施形態では、エンコーディングデータ２０２Ｂ、２０ＢＢ、２０６Ｂの第２のラインは、例えば、エンコーディングデータ２０２Ａ、２０４Ａ、２０６Ａの第１のラインにおいて定義される場合の各テキスト文字の中央で始まるグリフポインタ値の別個の組を含んでいてもよい。例として、グリフポインタ値の各組は、グリフのフィールド２１０における特定のグリフの場所を一緒に指す４つのエンコードされたピクセル値を含んでいてもよい。単なる例として、グリフのフィールド２１０に格納される場合の参照されたグリフのＸ位置は、２つのピクセル値の第１の組（第１及び第２のピクセル値）に格納されてもよく、一方、グリフのフィールド２１０に格納される場合の参照されたグリフのＹ位置は、２つのピクセル値の第２の組（第３及び第４のピクセル値）に格納されてもよい。より詳細な例として、Ｘ座標は、第１のピクセル場所における２５６で割った参照されたグリフのＸ値を格納し、第２のピクセル場所における残り（２５６を法とするＸ）を格納することによって第１の及び第２のピクセル値に格納されてもよい。同様の様態で、参照されたグリフのＹ座標は、第３のピクセル場所における２５６で割った参照されたグリフのＹ値を格納し、第４のピクセル場所における残り（２５６を法とするＹ）を格納することによって第３の及び第４のピクセル値に格納されてもよい。もちろん、テクスチャ２００内の他の位置（又はさらにはグリフが格納される異なるテクスチャ内の場所）を指す場所ポインタと共にピクセル値を提供する又はエンコーディングするあらゆる他の様態が、代わりに用いられてもよい。さらに、グリフポインタが参照する場所は、関連するグリフの中央、グリフの左上角、右下角、又はあらゆる他の予め定義された位置のようなグリフの場所の角とすることができる可能性がある。テクスチャ２００に格納される場合のグリフは所定の又は予め定義されたサイズであってもよいが、それらのサイズも同様に変化する可能性がある。この後者の場合、エンコーディングライン２０２Ａ、２０４Ａ、２０６Ａは、回復されるべきグリフの幅を定義するのに用いられてもよく、グリフの高さは固定されていてもよい。代替的に、テキスト文字列情報２０２、２０４、２０６の第２のエンコーディングライン２０２Ｂ、２０４Ｂ、２０６Ｂはまた、得られることになるグリフのサイズを含んでいてもよい。別の実施形態では、グリフ自体が、それらのサイズを定義する一組のピクセル値を有していてもよく、このピクセル値の組は、あらゆる特定のグリフと関連付けられるテクスチャ内の正確なピクセル場所を判定するために最初に回復されてもよい。
【００５５】
もちろん、２つ以上のエンコーディングストライプの使用は、図８の例で例証されるように、実際には、このグリフが同じ又は異なるテキストエンコーディングストライプによって多数回参照されることが可能であるので、テキスト文字列のうちの１つ又は複数の中のどこかで用いられる各テキスト文字又はグリフがテクスチャ２００に一度だけ格納されることを可能にする。このデュアルエンコーディング技術は、テキストボックスの複数の組内で又は複数の異なるラインに沿ってテキストのレンダリングを行うのに用いられるテクスチャをダウンロードし及び格納するときに、又はこれらのテクスチャをデバイス４０内のプロセッサ３０ａ及び３０ｂ間で送信するときに、テクスチャに必要とされるスペース又はデータを節約する又は減らす。さらに、第２のデータエンコーディングライン２０２Ｂ、２０４Ｂ、２０６Ｂは、それぞれ関連する第１のエンコーディングデータライン２０２Ａ、２０４、２０６Ａのすぐ下又は僅かに下のピクセル行に配置されるものとして図８で例証されるが、第２のデータエンコーディングライン２０２Ｂ、２０４Ｂ、２０６Ｂは、他の場所、例えば第１のエンコーディングデータラインよりも上のテクスチャ２００に、又はさらには第１のエンコーディングデータラインの異なるカラーフィールドに関する一組のピクセル値として格納することができる可能性がある。例えば、該ピクセルの行の赤色ピクセル値を用いて第１のエンコーディングデータラインがピクセル場所の行に格納される場合、第２のエンコーディングデータラインをピクセルのこの同じ行の青色又は緑色ピクセル値に格納することができる可能性がある。
【００５６】
いくつかの場合には、図９で例証されるように、重なり合った文字を有するテキスト文字列を作成する又はレンダリングすることが望ましい場合がある。図９の例では、「Ａ」の一部（すなわち、ピクセル値の最も左側の列）が「ｒ」のピクセル値の最も右側の列と同じＸ座標上に位置するので、「ｒ」と「Ａ」は重なり合っている。図３、図３Ａ、及び図８に関して図示され及び説明されるエンコーディング技術は、テキスト文字列内のテキスト文字の位置が、単一のラインピクセルにおいて直列にすべて定義され、１つのテキスト文字の終わりと隣接する文字の始まりとの間の別個の遷移を必要とするので、単一のテキストエンコーディング文字列を用いてこうしたテキストをレンダリングすることができない。
【００５７】
共通のテキスト文字列内の重なり合ったテキスト文字又はグリフのレンダリングを可能にする又はできるようにするために、図３、図３Ａ、及び図８に関して説明したエンコーディング技術は、各テキスト文字列に関するエンコーディングラインの複数の組を含むように修正されてもよい。こうした技術は、図１０のテクスチャ２５０において例証される。この場合、単一のテキスト文字列２５２が、エンコーディングラインの２つの異なる組２５４及び２５６を含むものとして例証され、各エンコーディングラインは図８に関して説明した２つのエンコーディングストライプを含む。この場合、テキスト文字列情報２５２（テキスト文字列「Ｆｒｅｅｍｏｎｔ  Ａｖｅ」を定義する可能性がある）の第１の文字２６０は、エンコーディングラインの上側の組２５４に位置し、テキスト文字の中央（Ｘ方向の）及び第１の文字の中央からの幅又は距離を定義するエンコーディングストライプ２６０Ａを含み、さらに、第１のテキスト文字に関して用いられるグリフのフィールド２１０内のグリフの場所を指す第２のエンコーディングライン２６０Ｂを含む。このとき、しかしながら、テキスト文字列情報２５２の第２の文字２６２は、下側ライン２５６に位置し、第２のテキスト文字の中央（Ｘ方向の）及び第２の文字の中央からの幅又は距離を定義するエンコーディングストライプ２６２Ａを含み、且つ第２のテキスト文字に関して用いられるグリフのフィールド２１０内のグリフの場所を指す第２のエンコーディングライン２６２Ｂを含む。図１０で例証されるように、エンコーディングストライプ２６０Ａ及び２６２Ａはテクスチャ２５０の異なる行にあるので、イメージ上でレンダリングされるときに、それらは重なり合ったピクセル場所又はピクセル列を有することができる。したがって、図１０で例証されるように、第１の文字２６０Ａの最も右側のピクセル列は第２の文字２６２Ａの最も左側のピクセル列と重なり合う。エンコーディングストライプ２５４及び２５６の組を読み出すフラグメントシェーダは、テキスト文字列２５２に関するレンダリングする次の文字を認識するのに両方のエンコーディングラインを読み出すことを単に必要とする。フラグメントシェーダは、例えば、エンコーディングライン２５４及び２５６の組の間で交互に次の文字を探してもよく、エンコーディングライン２５４及び２５６の両方の組を読み出し、次の検出された中央位置（どのエンコーディングラインの次の中央位置が見つけ出されるかに関係なく）などに基づいて次の文字を判定してもよい。もちろん、テキスト文字が重なり合わない場合に、２組のエンコーディングライン２５４及び２５６を用いることができ、この場合、（１）エンコーディングライン２５４又は２５６の組のうちの１つが情報を有さない可能性があり、したがって無視することができる、又は（２）２つのエンコーディングライン２５４及び２５６の隣接するテキスト文字に関するエンコーディングストライプが互いに重なり合わない可能性がある、のいずれかである。また、エンコードされたデータの組２７０及び２８０によって図１０で例証されるように、それぞれがエンコーディングデータの複数の組を有するテキスト文字列エンコーディング���ータの複数の組が、グリフのフィールド２１０と共にテクスチャ２５０に格納されてもよい。
【００５８】
図１１は、テキスト文字ピクセルが中央及び幅エンコーディングストライプ５２の近隣に位置する場合の単一のテキスト文字列に関する２つのエンコーディングラインを用いるテクスチャ２９０を例証する。特に、図１１は、グリフを参照するエンコーディングデータを用いない図３のテクスチャにおける重なり合ったエンコーディングデータラインを適用する様態を例証する。特に、図１１の例では、テキスト文字列「Ｆｒｅｅｍｏｎｔ  Ａｖｅ．」の「Ｆ」及び「ｒ」の重なり及びテキスト文字列の最後の２文字である「ｅ」及び「．」の重なりを提供する２つのエンコーディングラインが用いられる。
【００５９】
もちろん、本明細書に記載のテキストレンダリング技術及びテクスチャエンコーディング技術は、湾曲した、例えば、マルチセグメント化されたラインに沿ってテキスト文字列内の個々のテキスト文字をレンダリングする能力をもつマップレンダリングシステムのようなイメージレンダリングシステムを提供するためにあらゆる数の様態で変更され又は変えられてもよい。
【００６０】
本明細書の全体を通して、単一のインスタンスとして説明されるコンポーネント、動作、又は構造を複数のインスタンスが実装してもよい。１つ又は複数の方法の個々の動作が別個の動作として例示され及び説明されるが、個々の動作のうちの１つ又は複数は、同時に行われてもよく、動作が例証される順に行われる必要はない。例となる構成で別個のコンポーネントとして提示される構造及び機能性は、組み合わされた構造又はコンポーネントとして実装されてもよい。同様に、単一のコンポーネントとして提示される構造及び機能性が別個のコンポーネントとして実装されてもよい。これらの及び他の変形、修正、追加、及び改良は、本明細書の主題の範囲内に入る。
【００６１】
例えば、ネットワーク２５は、ＬＡＮ、ＭＡＮ、ＷＡＮ、モバイル、配線又は無線ネットワーク、プライベートネットワーク、又は仮想プライベートネットワークのあらゆる組み合わせを含んでいてもよいがこれらに限定されない。さらに、説明を簡潔明瞭にするために４つのみのクライアント装置が図１で例証されるが、あらゆる数のクライアントコンピュータ又はディスプレイ装置がサポートされ、サーバ１４と通信することができることが理解される。
【００６２】
さらに、或る実施形態は、論理又は多数のコンポーネント、モジュール、又は機構を含むものとして本明細書に記載されている。モジュールは、ソフトウェアモジュール（例えば、機械可読媒体上で又は伝送信号において具体化されるコード）又はハードウェアモジュールのいずれかを構成してもよい。ハードウェアモジュールは、或る動作を行うことができる有形のユニットであり、或る様態で構成され又は配置されてもよい。例となる実施形態では、１つ又は複数のコンピュータシステム（例えば、独立型のコンピュータシステム、クライアントコンピュータシステム、又はサーバコンピュータシステム）又はコンピュータシステムの１つ又は複数のハードウェアモジュール（例えば、プロセッサ又はプロセッサ群）は、ソフトウェア（例えば、アプリケーション又はアプリケーション部分）によって本明細書に記載の或る動作を行うように動作するハードウェアモジュールとして構成されてもよい。
【００６３】
種々の実施形態では、ハードウェアモジュールは、機械的に又は電子的に実装されてもよい。例えば、ハードウェアモジュールは、或る動作を行うように恒久的に構成される（例えば、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向け集積回路（ＡＳＩＣ）のような特殊用途プロセッサとして）専用回路又は論理を備えていてもよい。ハードウェアモジュールはまた、或る動作を行うようにソフトウェアによって一時的に構成されるプログラム可能論理又は回路（例えば、汎用プロセッサ又は他のプログラム可能プロセッサ内に含まれる場合）を備えていてもよい。ハードウェアモジュールを機械的に専用回路及び恒久的に構成される回路に又は一時的に構成される回路に（例えば、ソフトウェアによって構成される）実装することの判断は、費用及び時間の考慮事項によって導き出される場合があることが理解されるであろう。
【００６４】
したがって、ハードウェアという用語は有形のエンティティを包含し、該エンティティは、本明細書に記載の或る様態で動作する又は或る動作を行うように物理的に構築される、恒久的に構成される（例えば、ハードワイヤード）、又は一時的に構成される（例えば、プログラムされる）と理解されるべきである。ハードウェアモジュールが一時的に構成される（例えば、プログラムされる）実施形態を考えると、ハードウェアモジュールのそれぞれは、あらゆる１つの時点で構成され又はインスタンス化される必要はない。例えば、ハードウェアモジュールがソフトウェアを用いて構成される汎用プロセッサを備える場合、汎用プロセッサは、異なる時点でそれぞれの異なるハードウェアモジュールとして構成されてもよい。ソフトウェアは、したがって、プロセッサを、例えば、１つの時点で特定のハードウェアモジュールを構成し、且つ異なる時点で異なるハードウェアモジュールを構成するように構成してもよい。
【００６５】
ハードウェアモジュール及びソフトウェアモジュールは、他のハードウェアモジュール及び／又はソフトウェアモジュールに情報を提供し、及びそこから情報を受信することができる。したがって、説明されたハードウェアモジュールは、通信可能に結合されるものとみなされてもよい。複数のこうしたハードウェアモジュール又はソフトウェアモジュールが同時に存在する場合、ハードウェアモジュール又はソフトウェアモジュールを接続する信号伝送を通じて（例えば、適切な回路及びバス上で）通信が達成されてもよい。複数のハードウェアモジュール又はソフトウェアが異なる時点で構成され又はインスタンス化されるいくつかの実施形態では、例えば、複数のハードウェアモジュール又はソフトウェアモジュールがそれへのアクセスを有するメモリ構造における情報の格納及び検索を通じて、こうしたハードウェアモジュール又はソフトウェアモジュール間の通信が達成されてもよい。例えば、１つのハードウェアモジュール又はソフトウェアモジュールが動作を行い、該動作の出力を、それに通信可能に結合されるメモリデバイスに格納してもよい。さらなるハードウェアモジュール又はソフトウェアモジュールが、次いで、後の時点で、格納された出力を検索し及び処理するためにメモリデバイスにアクセスしてもよい。ハードウェアモジュール及びソフトウェアモジュールはまた、入力デバイス又は出力デバイスとの通信を開始してもよく、リソース（例えば、情報のコレクション）上で動作することができる。
【００６６】
本明細書に記載の例となる方法の種々の動作は、該当する動作を行うように一時的に構成される（例えば、ソフトウェアによって）又は恒久的に構成される１つ又は複数のプロセッサによって少なくとも部分的に行われてもよい。一時的又は恒久的のいずれに構成されようとも、こうしたプロセッサは、１つ又は複数の動作又は機能を行うように動作する、プロセッサに実装されるモジュールを構成してもよい。本明細書で言及されるモジュールは、いくつかの例となる実施形態では、プロセッサに実装されるモジュールを含んでもよい。
【００６７】
同様に、本明細書に記載の方法又はルーチンは、少なくとも部分的にプロセッサに実装されていてもよい。例えば、方法の動作のうちの少なくともいくつかは、１つ又は複数のプロセッサ又はプロセッサに実装されるハードウェアモジュールによって行われてもよい。動作のうちのいくつかの性能は、１つ又は複数のプロセッサ間で分散されていてもよく、単一のマシン内だけに存在するのではなく多数のマシンにわたって展開される。いくつかの例となる実施形態では、１つ又は複数のプロセッサが、単一の場所（例えば、ホーム環境、オフィス環境、又はサーバファーム内）に位置してもよく、一方、他の実施形態では、プロセッサは、多数の場所にわたって分散されていてもよい。
【００６８】
１つ又は複数のプロセッサはまた、「クラウドコンピューティング」環境における該当する動作の性能をサポートするように、又は「ソフトウェア・アズ・ア・サービス」（ＳａａＳ）として動作してもよい。例えば、動作のうちの少なくともいくつかは、コンピュータの群（プロセッサを含むマシンの例として）によって行われてもよく、これらの動作は、ネットワーク（例えば、インターネット）を介して及び１つ又は複数の適切なインターフェース（例えば、アプリケーションプログラムインターフェース（ＡＰＩ））を介してアクセス可能である。
【００６９】
動作のうちのいくつかの性能は、１つ又は複数のプロセッサ間で分散されていてもよく、単一のマシン内だけに存在するのではなく多数のマシンにわたって展開される。いくつかの例となる実施形態では、１つ又は複数のプロセッサ又はプロセッサに実装されるモジュールは、単一の地理的場所（例えば、ホーム環境、オフィス環境、又はサーバファーム内）に位置してもよい。他の例となる実施形態では、１つ又は複数のプロセッサ又はプロセッサに実装されるモジュールは、多数の地理的場所にわたって分散されていてもよい。
【００７０】
本明細書のいくつかの部分は、マシンメモリ（例えば、コンピュータメモリ）内にビット又は２進デジタル信号として格納されるデータに対する動作のアルゴリズム又は記号表現の観点で提示される。これらのアルゴリズム又は記号表現は、他の当業者に彼らの仕事の実質を伝えるためにデータ処理分野での当業者によって用いられる技術の例である。本明細書で用いられる場合の「アルゴリズム」又は「ルーチン」は、所望の結果につながる首尾一貫した一連の動作又は同様の処理である。この文脈において、アルゴリズム、ルーチン、及び動作は、物理量の物理的操作を含む。典型的に、必ずしもそうではないが、こうした量は、マシンによって格納される、アクセスされる、伝送される、組み合わされる、比較される、又は他の方法で操作されることが可能な電気信号、磁気信号、又は光信号の形態をとってもよい。主に共通使用のために、こうした信号を言及するのに「データ」、「コンテンツ」、「ビット」、「値」、「要素」、「記号」、「文字」、「用語」、「数」、「数値」などのような言葉を用いるのが時には便利である。これらの言葉は、しかしながら、単なる便利なラベルであり、適切な物理量と関連付けられる。
【００７１】
特にそれ以外の指定のない限り、「処理」、「コンピューティング」、「計算」、「判定」、「提示」、「表示」などのような言葉を用いる本明細書での説明は、情報を受信し、格納し、伝送し、又は表示する１つ又は複数のメモリ（例えば、揮発性メモリ、不揮発性メモリ、又はそれらの組み合わせ）、レジスタ、又は他のマシンコンポーネント内の物理（例えば、電子、磁気、又は光学）量として表わされるデータを操作する又は変換するマシン（例えば、コンピュータ）のアクション又はプロセスを指す可能性がある。
【００７２】
本明細書で用いられる場合の「一実施形態（「ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ」又は「ａｎ  ｅｍｂｏｄｉｍｅｎｔ」）」へのあらゆる言及は、実施形態との関連で説明される特定の要素、特徴、構造、又は特性が少なくとも１つの実施形態に含まれることを意味する。本明細書の種々の場所での「一実施形態では」というフレーズの出現は、必ずしもすべて同じ実施形態を言及していない。
【００７３】
いくつかの実施形態は、それらの派生語と共に「結合される」及び「接続される」という表現を用いて説明される場合がある。例えば、いくつかの実施形態は、２つ以上の要素が物理的に又は電気的に直接接触していることを示すために「結合される」という用語を用いて説明される場合がある。「結合される」という用語は、しかしながら、２つ以上の要素が互いに直接接触しないが依然として互いに協働する又は相互作用することも意味する可能性がある。実施形態はこの文脈に限定されない。
【００７４】
本明細書で用いられる場合の「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」という用語、又はこれらのあらゆる他の変形は、非排他的包含をカバーすることを意図される。例えば、要素のリストを含むプロセス、方法、物品、又は装置は、必ずしもこれらの要素だけに限定されないが、明示されない又はこうしたプロセス、方法、物品、又は装置に固有の他の要素を含んでいてもよい。さらに、それと反対に明白に規定されない限り、「又は」は、包含的な又は（ｏｒ）を指し、排他的な又は（ｏｒ）を指さない。例えば、条件Ａ又はＢは、以下のいずれか１つによって満たされる。Ａが真であり（又は存在する）且つＢが偽である（又は存在しない）、Ａが偽であり（又は存在しない）且つＢが真である（又は存在する）、及びＡとＢとの両方が真である（又は存在する）。
【００７５】
さらに、「１つの（「ａ」又は「ａｎ）」」の使用は、本明細書の実施形態の要素及びコンポーネントを説明するために採用される。これは単に便宜上、説明の一般的意味を与えるためになされる。この説明は、１つ又は少なくとも１つを含むように読まれるべきであり、他の意味が意図されることが明らかである場合を除き、この単数形は複数形も含む。
【００７６】
さらにまた、図面は、マップレンダリングシステムの好ましい実施形態を単に例証する目的で描いている。当業者は、本明細書で例証される構造及び方法の代替的実施形態が本明細書に記載の原理から逸脱することなく採用されてもよいことを以下の説明からすぐに認識するであろう。
【００７７】
本開示を読めば、本明細書で開示された原理を用いてマップ又は他のタイプのイメージをレンダリングするシステム及びプロセスに関するさらに付加的な代替的な構造上及び機能上の設計を当業者は理解するであろう。したがって、特定の実施形態及び用途が例証され及び説明されているが、開示された実施形態は、本明細書で開示された正確な構成及びコンポーネントに限定されないことが理解される。添付の請求項で定義される精神及び範囲から逸脱することなく、本明細書で開示された方法及び装置の配置、動作、及び詳細に、当業者には明らかであろう種々の修正、変化、及び変形がなされてもよい。
【図１】
0005959637.tif 000002
【図５】
0005959637.tif 000003
【図６】
0005959637.tif 000004
【図７Ｂ】
0005959637.tif 000005
【図２】
0005959637.tif 000006
【図３】
0005959637.tif 000007
【図３Ａ】
0005959637.tif 000008
【図４】
0005959637.tif 000009
【図７Ａ】
0005959637.tif 000010
【図８】
0005959637.tif 000011
【図９】
0005959637.tif 000012
【図１０】
0005959637.tif 000013
【図１１】
0005959637.tif 000014