(57)【特許請求の範囲】
【請求項１】
一連のテキスト内においてユーザのために代替グリフを識別し、選択されたグリフを描画する方法であって、
ａ．前記一連のテキストを走査して代替グリフを有する文字を識別する段階と、
ｂ．代替グリフを有する文字のリストを作成する段階と、
ｃ．前記一連のテキスト中の各識別された文字に関する代替グリフのリストをユーザに提示する段階と、
ｄ．ユーザの選択に応じて、各識別された文字に対し、ユーザが選択した代替グリフを特定するマークを付ける段階と
を備えることを特徴とする方法。
【請求項２】
前記代替グリフを有する文字のリストを作成する段階が、レイアウトサービスライブラリを用いて代替グリフフォントテーブルにアクセスし代替グリフを有する文字を識別することを特徴とする請求項１に記載の方法。
【請求項３】
前記代替グリフのリストをユーザに提示する段階が、レイアウトサービスライブラリを用いて代替グリフフォントテーブルにアクセスし各識別された文字に関する代替グリフを取得することを特徴とする請求項１に記載の方法。
【請求項４】
請求項１に記載の方法をコンピュータに実行させるためのプログラムを格納したコンピュータ読取可能記録媒体。
【請求項５】
一連のテキストの代替グリフを識別するためのプログラムを格納したコンピュータ読取可能記録媒体であって、前記プログラムは、
ａ．前記一連のテキストを受け取り、
ｂ．前記一連のテキストを走査して代替グリフを有する文字を識別し、
ｂ．代替グリフを有する文字に対応する文字位置のリストを作成し、
ｃ．前記一連のテキスト中の各識別された文字に関する代替グリフのリストを作成することをコンピュータに実行させることを特徴とするコンピュータ読取可能記録媒体。
【請求項６】
クライアント処理とサーバ処理間の通信方法であって、
ａ．前記クライアント処理によって一連のテキストを選択する段階と、
ｂ．前記クライアント処理から前記サーバ処理に対し、前記一連のテキストを走査して代替グリフを有する文字を識別することを求める段階と、
ｃ．前記クライアント処理から前記サーバ処理に対し、代替グリフを有する各識別された文字に関する特性パラメータ構造のリストの作成を求め、前記サーバ処理から前記クライアント処理に対し前記特性パラメータ構造のリストを返す段階と、
ｄ．前記サーバ処理からの特性パラメータ構造のリストに基づき、前記クライアント処理において、代替グリフを有する文字のリストを作成する段階と、
ｅ．前記一連のテキスト中の各識別された文字に関する代替グリフのリストをユーザに提示する段階と、
ｆ．ユーザ選択に応じ、前記クライアント処理において、各識別された文字に対しユーザが選択した代替グリフを特定するマークを付ける段階と
を備えることを特徴とする方法。
【請求項７】
クライアント処理とサーバ処理間の通信方法であって、
ａ．前記クライアント処理によって一連のテキストを選択する段階と、
ｂ．代替グリフを有する文字のリストを作成するため、前記クライアント処理から前記サーバ処理に対し、代替グリフを有する文字を識別することを求め、前記クライアント処理から前記サーバ処理に対し、各識別された文字に関する代替グリフを取得することを求める段階と、
ｃ．各識別された文字に関する代替グリフのリストをユーザに提示する段階と
を備えることを特徴とする方法。
【請求項８】
前記クライアント処理から前記サーバ処理への文字識別の求めに応じ、前記サーバ処理は、前記一連のテキストから１つの文字を選択し、代替グリフフォントテーブルにアクセスし、前記選択された文字が代替グリフを有するか否かを決定することを特徴とする請求項７に記載の方法。
【請求項９】
前記クライアント処理から前記サーバ処理への各識別された文字に関する代替グリフ取得の求めに応じて、前記サーバ処理が、前記一連のテキストから１つの文字を選択し、代替グリフフォントテーブルにアクセスし、前記選択された文字に対応する代替グリフがあるか否かを決定することを特徴とする請求項７に記載の方法。
【請求項１０】
ユーザの選択に応じて、前記クライアント処理が、ユーザが選択した代替グリフを特定するマークを対応する文字に付けることを特徴とする請求項７に記載の方法。
【発明の詳細な説明】
技術分野
本発明は、一連のテキストに対応したグリフの描画に関する。特に本発明は、レイアウトサービスライブラリを用いたグリフの置換および配置に関する。
背景技術
コンピュータが事務所、学校、家庭において一般的になるにつれ、電子文書が普及してきた。電子文書は紙の文書に取って代わりつつある。紙の文書の代わりに電子文書を使うには、電子文書のテキストは読みやすく言語的に正確でなければならない。電子文書のテキストは、一般に１つ以上のフォントを用いて描画される。フォントには、例えばエリアル、タイムズニューローマン、クーリエがある。フォントとは字体である。電子文書用のフォントは、モニタやプリンタなどの画素表示装置に出力した際、文書が読みやすいように設計される。電子文書のテキストを特定のフォントを使って描画する場合、そのテキストはグリフによって表示装置に表示される。グリフとは、１つ以上の文字イメージである。例えば１つのグリフは、小文字の「f」のように１つの文字を表す。また１つのグリフは、合字の「fi」のように一続きの文字を表す。表示装置に文書を描画するには、その文書の各文字をグリフに変換し、それらグリフを表示装置に表示することによって一連のテキストを描画する。
一般に、グリフ情報を含んだフォント情報は、フォントテーブルとしてメモリに格納される。例えば、本発明の譲受人であるマイクロソフト社が公表したオープンタイプレイアウトフォント規格は、各オープンタイプレイアウトフォントについて５つのフォントテーブルを定める。すなわち（１）グリフ置換テーブル、（２）グリフ位置テーブル、（３）行揃えテーブル、（４）ベースラインテーブル、（５）グリフ定義テーブルである。これらオープンタイプレイアウトフォントテーブルは、文字とグリフ間の対応付けにおいて、前後関係を考慮した対応付けをサポートする。すなわち、合字、位置に応じた形状の字、置換字、代替字等をサポートする。オープンタイプレイアウト規格に基づくフォントは、グリフ輪郭、距離、ビットマップ、対応付け情報等の追加的なデータを含んだフォントテーブルを持つこともできる。さらに高度表示技術に関する情報を含んだテーブルを持つこともできる。
ワードプロセッシングプログラムやその他のプログラム（クライアントプログラムまたはクライアント）は、これらフォントテーブルの情報を使い、電子文書のテキスト（グリフ）を表示装置に配置し描画する。例えば、米国特許第5,416,898号にはフォントテーブルを使うテキスト描画の方法と装置が記載されている。フォントテーブルはベースライン、合字、カレット、光学的結合（opticalbound）、グリフのプロパティ、グリフ変形、行端揃え、フィーチャー名、カーニングテーブルを含む。
高度表示技術では、テキスト文字と、その文字を表示装置に表示するグリフとの間は、１対１の相互関係に限られない。例えばフォントによっては、「＆」という文字を表示装置に描画する際のグリフは、いくつかの別形あるいは代替形がある。特定の文字に対して適切なグリフを選択する何らかの機構がないと、クライアントプログラムは、フォントテーブルが提供する選択肢等の機能をフルに活用できない。
高度表示技術の別の側面として、一連のテキストを描画する際のグリフの配置がある。書法における問題の１つは、グリフの複雑な配置である。例えばベトナム語は、発音区別符号等を用いて文字の音や意味を変化させる。このような書法においては、各符号の互いの配置を制御することにより、読みやすさと言語的な正確さとを実現しなければならない。書法によっては、正確な表示体裁を実現するために、グリフを複雑に配置しなければならない。例えばウルドゥー語のグリフは、書道的であり斜め下がりのテキストラインに沿って互いに連結される。このテキストラインは右から左へ向かう。ウルドゥー語を適切に描画するため、テキスト処理を行うクライアントは、各グリフの横（X）位置および縦（Y）位置を変更する必要がある。
現在のトゥルータイプフォント用のグリフ配置は、１つの値、すなわち前進値のみを使ってテキストレイアウト用のグリフの位置を決める。テキストのベースラインに沿って移動する仮想的な「ペン先」に対してグリフを位置決めする場合、前進値は次のグリフを配置するための仮想ペン先の移動先を示す。水平なテキストでは、前進値はX方向の進み幅に対応する。トゥルータイプフォントは、水平レイアウトについてはX方向の前進値のみを指定し、縦レイアウトについてはY方向の前進値のみを指定する。単純なラテン語テキストレイアウトなら、この前進値によってグリフを正しく配置できよう。しかしより複雑なレイアウトを必要とするテキストの場合、グリフ配置はより広い範囲をカバーしなけらばならない。トゥルータイプ配置モデルが定義する位置調整は、ペアカーニングだけである。これは２つのグリフ間の水平間隔を変化させる。代表的なカーニングテーブルは、各グリフペアをリストアップすると共に、各ペアのグリフ間隔を指定する。テキスト処理クライアントは、この間隔を各ペアのグリフ間に付加あるいは除去することにより、グリフを適切に表示する。しかしこのカーニングテーブルは、各ペアにおけるグリフの調整方法に関する情報は提供せず、２つ以上にわたるグリフの前後関係は調整できない。
代替や複雑な位置決めによるグリフ描画機能を活用するため、クライアントプログラムは、フォントテーブルとそれが含む情報とにアクセスし操作できねばならない。このようなアクセスや操作は複雑であるため、多くのクライアントプログラムはそれを実行できない。複雑なグリフ位置決めを行う共通インタフェースは今のところ存在しない。これは、高度レイアウト情報を含むフォントが少ないからである。オペレーティングシステムである「ウインドウズ９５ME」や「ウインドウズ９５FE」等のクライアントプログラムは、システムフォントが含む高度レイアウト情報を使う。しかしこれらのプログラムは、フォントデータ自体を解析し解釈することによってそれを行う。つまり置換や複雑なグリフ位置決め等、フォントテーブルに準備されている高度表示機能は、クライアントプログラムがそれを扱えないため、利用されないでいる。
従ってこの分野においては、一連のテキストに対して代替グリフを描画し位置決めするための効率的な方法が要求される。
発明の開示
上記要求に応えるため、本発明は、クライアントプログラムのユーザのために代替グリフを識別し、ユーザが必要に応じて適切なグリフを選択できるようにする方法を提供する。
代替グリフの選択機能およびグリフの複雑な配置機能を提供するため、本発明の方法は、レイアウトサービスライブラリ（サーバ処理あるいはサーバ）を使う。このレイアウトサービスライブラリは、ワードプロセッシングプログラム等のクライアントプログラムによって使用されるテキスト処理機能セットを提供する。レイアウトサービスライブラリは、フォント情報機能、テキストレイアウト機能、テキスト情報機能を含む。フォント情報機能は、フォントに関する情報を提供する。テキストレイアウト機能は、グリフ置換、グリフ位置決め、行揃えを含めた基本的なレイアウトサービスを提供する。レイアウトサービスライブラリは、機能的にクライアントプログラムとオペレーティングシステムとの間に位置し、フォントテーブルと連絡する。レイアウトサービスライブラリは、フォント情報にアクセスすることによってクライアントプログラムのために働き、テキスト（グリフ）を描画する際にオペレーティングシステムの手助けをする。レイアウトサービスライブラリは、フォントファイルフォーマットの詳細およびオペレーティングシステムの詳細動作からクライアントを解放しテキスト処理を簡単にする。特にレイアウトサービスライブラリは、クライアントになじみのある文字や文字特性（例えば上付き特性）のレベルでの作業を実現する。
代替グリフを選択する場合、クライアントプログラムは、一連のテキストを定義し、レイアウトサービスライブラリに対して、前記一連のテキストを走査し代替グリフを持つ文字を識別するよう指示する。レイアウトサービスライブラリは、特性パラメータ構造のリストを返す。各特性パラメータ構造は、各識別された文字に適用可能な代替グリフの数を含む。クライアントプログラムはこの情報を利用し、異なるパラメータを持つ同一文字のリストを作成する。次にクライアントプログラムは、レイアウトサービスライブラリを呼び出し、すべての代替（別形）グリフのリストを入手する。クライアントプログラムは、そのリストをクライアントプログラムのユーザに提示する。ユーザが１つの代替グリフを選択すると、クライアントプログラムは、一連のテキストにおける対応文字に特性記述を付け、ユーザが選択した代替グリフを識別するためのパラメータによるタグを付ける。
グリフを配置する際、クライアントプログラムは、レイアウトサービスライブラリ（サーバ）を呼び出し、一連のテキストの各文字に関するグリフ位置情報を要求する。レイアウトサービスライブラリは、前記一連のテキストのグリフをベースラインに沿って位置決めするための情報を返す。特にレイアウトサービスライブラリは、ベースラインに沿った仮想ペン先の前進値、前記仮想ペン先からのグリフのX値およびY値を返す。これら前進値、X値、Y値に基づき、オペレーティングシステムは、前記一連のテキストにおける正しい位置にグリフを描画できる。
またクライアントは、レイアウトサービスライブラリからの位置決め情報を使って位置決めされたグリフの数を監視する。この数に基づき、クライアントプログラムは、グリフ位置決め用のレイアウトサービスライブラリを使い続けるか、あるいはレイアウトサービスライブラリをバイパスして表示装置の既定位置決め情報に基づいてグリフを描画するかを決定できる。特にクライアントは、一連のテキスト内の各グリフに対して、前記グリフがレイアウトサービスライブラリを使って位置決めされたか否かを示すフラグを付け、それらフラグのリストを作成する。連続する所定数のグリフがレイアウトサービスライブラリを使わずに位置決めされており、これらグリフおよび位置決め情報が印刷装置に既に定義されていれば、印刷クライアントは、レイアウトサービスライブラリの位置決め情報を使わずに、前記グリフを印刷装置にダウンロードできる。この方法は、印刷装置への一連のテキストのダウンロード時間を節約する。
【図面の簡単な説明】
図１は、本発明の一実施例の動作環境としてのパーソナルコンピュータを示すブロック図である。
図２は、本発明の一実施例に基づくコンピュータシステムの構造を示すブロック図である。
図３は、本発明の一実施例に基づく一連のテキストの配置ステップを示すフローチャートである。
図４は、本発明の一実施例に基づく、ユーザのために代替グリフを識別する各ステップと、選択されたグリフによって一連のテキストを描画する各ステップを示すフローチャートである。
図５は、本発明の一実施例に基づく、一連のテキストを描画する際にグリフを位置決めする各ステップを示すフローチャートである。
発明の詳細な説明
本発明は、一連のテキストのグリフを描画する際、レイアウトサービスライブラリを用いて別形グリフを識別し、前記一連のテキストのベースラインに沿ってグリフを位置決めする方法に関する。特に本発明は、レイアウトサービスライブラリを用いて一連のテキストを描画するに当たり、ユーザのために代替グリフを識別し、ユーザによって選択されたグリフを描画する方法に関する。また本発明は、レイアウトサービスライブラリを用いて一連のテキストを描画する際にグリフを位置決めする方法に関する。本発明の一実施例は、ワシントン州レドモンドのマイクロソフト社が販売する「ウインドウズ」等のオペレーティングシステムに内蔵できる。本発明の他の実施例は、マイクロソフト社が販売する「インターネットエクスプローラ」等のインターネットブラウザや、同社が販売する「パブリッシャ」等のパブリシングプログラムに内蔵できる。
概略を説明する。ユーザのために代替グリフを識別する方法は、描画しようとする一連のテキストを識別するクライアントプログラムを含む。一連のテキストを識別すると、クライアントプログラムは、レイアウトサービスライブラリに対して、前記一連のテキストを走査し代替グリフが存在する文字の位置を特定するよう指示する。レイアウトサービスライブラリは、特性パラメータ構造のリストを返す。このリストは、代替グリフが準備されている文字の位置を特定する。この情報に基づき、クライアントは、異なるパラメータを有する同一文字のリストを作成する。次にクライアントは、レイアウトサービスライブラリを介して、すべての代替グリフ（別形グリフ）のリストを検索する。次にクライアントプログラムは、代替グリフのリストをユーザに提示する。ユーザは、代替グリフの１つを選択する。次にクライアントプログラムは、前記一連のテキスト中の各文字に特性記述を付し、ユーザが選択したグリフを識別するためのパラメータによってその文字にタグを付ける。
グリフ位置決めを説明する。クライアントプログラムは、描画する一連のテキストを識別する。次にクライアントプログラムは、レイアウトサービスライブラリを呼び出す。レイアウトサービスライブラリは、ベースラインに沿ったあるグリフから次のグリフへの仮想ペン先の前進値、およびX値、Y値を返す。これらX値およびY値は、ベースライン上の仮想ペン先に対するグリフの位置決めに使用される。
レイアウトサービスライブラリを使うことによって、クライアントプログラムは、フォントファイルの詳細およびオペレーティングシステムの描画能力から解放される。
動作環境の例
本発明を実施するための適切なコンピューティング環境を図１に基づき簡単に説明する。本発明は、パーソナルコンピュータのオペレーティングシステム上で実行されるアプリケーションプログラム（クライアントプログラム）として説明するが、当業者には明らかなように、本発明は他のプログラムモジュールで実行してもよい。一般に、プログラムモジュールは、ルーチン、プログラム、構成要素、データ構造等を含み、これらが特定のタスクを実行したり、特定の抽象データ型を実行する。さらに当業者には明らかなとおり、本発明は、携帯装置、マルチプロセッサシステム、マイクロプロセッサをベースとした民生電子機器、プログラム可能民生電子機器、ミニコンピュータ、メインフレームコンピュータ等、他のコンピュータシステム構成でも実行できる。本発明はまた、分散コンピューティング環境においても実行できる。分散コンピューティング環境は、通信ネットワークを介してリンクした遠隔の処理装置によってタスクを実行し、プログラムモジュールを局所記憶装置や遠隔記憶装置に置く。
図１の例において、本発明を実行するシステムは、従来のパーソナルコンピュータ２０を含む。このパーソナルコンピュータは、処理装置２１と、システムメモリ２２と、システムバス２３とを含む。システムバス２３は、システムメモリと処理装置２１とを接続する。システムメモリ２２は、リードオンリーメモリ（ROM）２４と、ランダムアクセスメモリ（RAM）２５とを含む。基本ルーチンを含む基本入出力システム（BIOS)２６は、ROM２４に格納される。この基本ルーチンは、例えばスタートアップ時に、パーソナルコンピュータ２０内の要素間での情報の転送をサポートする。パーソナルコンピュータ２０はさらに、ハードディスク装置２７と、例えばリムーバブルディスク２９を読み書きするための磁気ディスク装置２８と、例えばCD-ROMディスク３１等の光媒体を読み書きするための光ディスク装置３０とを含む。ハードディスク装置２７と磁気ディスク装置２８と光ディスク装置３０とは、それぞれハードディスク装置インタフェース３２と磁気ディスク装置インタフェース３３と光ディスク装置インタフェース３４とを介して、システムバス２３に接続される。これら装置および関連するコンピュータ読取り可能媒体は、パーソナルコンピュータ２０用の不揮発性記憶装置として働く。コンピュータ読取り可能媒体として、ハードディスクとリムーバブル磁気ディスクとCD-ROMディスクとを示したが、当業者には明らかなように、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ等も、コンピュータ読取り可能媒体として前記動作環境で使える。
前記記憶装置およびRAM２５は、多くのプログラムモジュールを格納できる。例えばオペレーティングシステム３５、１つ以上のアプリケーションプログラム３６、他のプログラムモジュール３７、プログラムデータ３８、レイアウトサービスライブラリ３９等を格納できる。ユーザは、キーボード４０や例えばマウス４２等のポインティング装置を介して、パーソナルコンピュータ２０にコマンドや情報を入力できる。他の入力装置（図示せず）として、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用アンテナ、スキャナ等も利用できる。一般にこれら入力装置は、システムバスに接続したシリアルポートインタフェース４６を介して処理装置２１に接続されるが、ゲームポートや汎用シリアルバス（USB）等の他のインタフェースを介して接続してもよい。モニタ４７等の表示装置は、ビデオアダプタ４８等のインタフェースを介してシステムバス２３に接続される。一般に、パーソナルコンピュータは、前記モニタに加えてスピーカやプリンタ等の周辺出力装置（図示せず）も含む。
パーソナルコンピュータ２０は、遠隔コンピュータ４９等の１つ以上の遠隔コンピュータへの論理接続を用いたネットワーク環境で動作させてもよい。遠隔コンピュータ４９は、サーバ、ルータ、同等装置、他のネットワークノード等であり、パーソナルコンピュータ２０に関連して説明した要素の多くあるいは全部を含む。ただし図１は、記憶装置５０しか示していない。図１の論理接続は、ローカルエリアネットワーク（LAN）５１と広域ネットワーク（WAN）５２とを含む。このようなネットワーク環境は、事務所、企業コンピュータネットワーク、イントラネット、インターネットにおいて一般的である。
LAN環境で使用される場合、パーソナルコンピュータ２０は、ネットワークインタフェース５３を介してLAN５１に接続される。WAN環境で使用される場合、パーソナルコンピュータ２０はモデム５４等の手段を含み、インターネット等のWAN５２を介して通信を確立する。モデム５４は内蔵型あるいは外付け型であり、シリアルポートインタフェース４６を介してシステムバス２３に接続される。ネットワーク環境の場合、パーソナルコンピュータ２０に関連するプログラムモジュールの全部または一部は、遠隔記憶装置に格納できる。図示のネットワーク接続は例であり、他の手段を使ってコンピュータ間に通信リンクを確立しても良い。
レイアウトサービスライブラリの実施例
本発明の一実施例に基づくワードプロセッシングプログラムは、レイアウトサービスライブラリを用いて表示装置に一連のテキストを描画する。この実施例をレイアウトサービスライブラリ実施例と呼ぶ。本発明は、パブリッシングプログラムやブラウザ等のテキスト処理プログラムにも適用できる。
レイアウトサービスライブラリ実施例は、オープンタイプレイアウトフォント規格に適合した多くのフォントと共に使用できる。オープンタイプレイアウトフォント規格に適合したフォントファイルは、グリフ、書体、言語システム、文字特性を定義する。グリフは、１つ以上の文字を表現するための文字イメージである。１つのグリフは、例えば小文字の「f」のように単一の文字を表す。あるいは１つのグリフは、小文字の「fi」のように一続きの文字を表す。書体は、１つ以上の言語によって使用される関連文字のグループである。ラテン、アラビック、タイは、書体の例である。書体は、各言語システムで共用できる。例えばラテン書体は、英語、フランス語、ドイツ語の言語システムで使用される。各言語システムは、テキスト処理に対して異なる要求を持つ。１つの言語システムは、多くの文字特性をサポートする。文字特性は、フォントが提供する機能である。オープンタイプレイアウトフォント規格は、斜体字特性と合字特性とを含む多くの文字特性をサポートする。斜体字特性は、既定のグリフを代替グリフに置換する。合字特性は、一続きのグリフを合字グリフに置換する。
オープンタイプレイアウトフォント規格は、５つのフォントテーブルを定義する。すなわち（１）グリフ置換テーブル、（２）グリフ位置テーブル、（３）行揃えテーブル、（４）ベースラインテーブル、（５）グリフ定義テーブルである。これらフォントテーブルは、フォントの文字特性をサポートする情報を含む。例えばグリフ置換テーブルは、グリフ置換に関する情報を含み、単一グリフ置換、１対多置換（合字分解）、美的置換、多グリフ置換（合字）、前後関係グリフ置換をサポートする情報を含む。グリフ位置テーブルは、グリフの位置決めに関する情報を含み、前進値、X値、Y値を提供する。グリフ位置決め情報は、単一調整（例えば上付きおよび下付のサポート）、ペア調整（例えばカーニングのサポート）、筆記体連結（例えば筆記体のサポート）、MarkToBase連結（例えばアラビア語、ヘブライ語、ベトナム語における母音字、発音区別記号、音声記号の位置決めのサポート）、MarkToLigature連結（例えば合字の周囲に母音字を位置決めすることのサポート）、MarkToMark連結（例えばベトナム語における母音発音区別記号に対する音声記号の位置決めのサポート）、前後関係における位置決め（例えば文脈において１つ以上のグリフを位置決めすることのサポート）を提供する。ベースラインテーブルは、複数のテキスト行を行揃えるための情報を提供する。行揃えテーブルは、テキストを行揃えするための情報を提供する。グリフ定義テーブルは、グリフのクラス、連結点、合字カレットに関する情報を提供する。
ワードプロセッシングプログラムは、レイアウトサービスライブラリが提供するこれら機能を利用してテキストをレイアウトする。レイアウトサービスライブラリは、フォントテーブルにアクセスし、ワードプロセッシングプログラムに対してテキストレイアウトに関する候補を示す。ワードプロセッシングプログラムは、これら候補の一部または全部を実行する。いずれも実行しないでも良い。ワードプロセッシングプログラムは、レイアウトサービスライブラリに対し、これら機能の呼出しを行う。例えばワードプロセッシングプログラムは、一連のテキストを定義しそれを機能呼出しに関連付ける。一連のテキストとは、特定書体および特定言語システムにおける特定サイズの特定フォントを使用した一続きのテキストである。ワードプロセッシングプログラムは、各機能について追加のパラメータを定義できる。例えばグリフ位置決め機能を実行する場合、ワードプロセッシングクライアントは、まず一連のテキストを定義する。グリフ位置決め機能呼出しに応答し、レイアウトサービスライブラリは、前記一連のテキストにおける各グリフについて、前進値、X値、Y値を返す。これらデータは、例えばレイアウトサービスライブラリが定義するデータ構造に格納される。ワードプロセッシングプログラムは、返された値を使って、横および縦方向にグリフを位置決めする。グリフ置換方法およびグリフ位置決め方法をサポートするために使われる機能呼出しおよびデータ構造は、「レイアウトサービスライブラリインタフェース」の章で詳しく説明する。
レイアウトサービスライブラリのシステム構成
図２は、本発明のレイアウトサービスライブラリ実施例を実現するためのシステム構成を示す。ワードプロセッシングプログラム（クライアントプログラム）２０２は、文書テキストファイル２１０からのテキストを処理し、表示装置への表示の準備をする。この表示装置は、モニタ２００やプリンタ等の画素表示装置である。文書テキストは、レイアウトサービスライブラリ２０８が提供するテキスト処理機能を使って表示装置２００に描画される。ワードプロセッシングプログラム２０２は、レイアウトサービスライブラリ２０８が提供するサービスのクライアントである。レイアウトサービスライブラリ２０８は、図２においてオペレーティングシステム２０４の一部だが、ワードプロセッシングプログラム２０２とオペレーティングシステム２０４との間に配置した動的リンクライブラリであっても良い。レイアウトサービスライブラリ２０８は、１セット以上のフォントテーブル２１２a、２１２b…２１２nとのインタフェースを行う。レイアウトサービスライブラリ２０８は、フォントテーブル２１２a、２１２b…２１２nに格納された情報を使い、ワードプロセッシングプログラム２０２に対してレイアウト情報とレイアウト候補とを提供する。ワードプロセッシングプログラム２０２は、アプリケーションプログラムインタフェース（API）セットを介してレイアウトサービスライブラリ２０８とのインタフェースを行う。
レイアウトサービスライブラリに含まれるAPIは、代替グリフ識別方法およびグリフ位置決め方法を含む本発明のグリフ描画方法をサポートする。レイアウトサービスライブラリは、フォントテーブルにアクセスし、ワードプロセッシングプログラムが代替グリフを識別し選択し一連のテキスト内においてグリフを位置決めする手助けをする。
表示装置２００にテキストファイルを表示するため、ワードプロセッシングプログラム２０２は、ラスタライザ２０６を使う。ラスタライザ２０６は、例えばオペレーティングシステム２０４内に配置される。ラスタライザ２０６は、出力装置２００にテキストを描画するための情報をフォントテーブル２１２から取得する。
テキスト描画方法
図３は、レイアウトサービスライブラリを用いて一連のテキストを描画するための各ステップを示す。ステップ３００において、ワードプロセッシングプログラムは、描画しようとする一連のテキストを定義する。この一連のテキストはステップ３０２〜３１０において描画される。ステップ３０２において、ワードプロセッシングクライアントは、レイアウトサービスライブラリのグリフ置換機能を呼び出す。これに応じ、レイアウトサービスライブラリは、フォントテーブルにアクセスし、どの文字をどのグリフで置換するかを決定する。レイアウトサービスライブラリは、グリフ置換機能の呼出しによって変更されたグリフのリストを返す。グリフ置換機能の呼出しは、文字とグリフとの間に１対１の対応付けがなければ、代替グリフを提供する。代替グリフは、前後関係に基づいて文字のグリフ形状を変化させる時に必要である。例えばアラビア語における文字「g」は、単独、語頭、語の中間、語尾によって４つのグリフを持つ。グリフ置換ステップ３０２は、一連のテキストにおける２つ以上のグリフの合字グリフの置換も提供する。さらにグリフ置換ステップ３０２は、本発明に基づくユーザ選択に応じて、１つのグリフの代替グリフを識別し描画する。これについては「別形グリフの識別」の章で詳述する。
選択された別形グリフの置換も含めてグリフの置換が終わると、ワードプロセッシングプログラムは、ステップ３０４においてグリフ位置決め機能を呼び出す。レイアウトサービスライブラリは、グリフ位置テーブルにアクセスし、前記一連のテキスト用のグリフ位置情報を決定する。前記一連のテキストにおける各グリフについて、レイアウトサービスライブラリは、グリフ位置情報を返す。この情報は、ベースラインに沿った仮想ペン先の前進値、X値、Y値を含む。本発明のグリフ位置決めステップ３０４は、「グリフ位置決め」の章で詳述する。
ベースラインに沿ったグリフの位置が決まると、描画処理はステップ３０６のパラグラフレイアウトに進む。パラグラフレイアウトは、前記一連のテキストの長さと所定行長さとを比較する。前記一連のテキストの長さを決定するため、ワードプロセッシングプログラムは、レイアウトサービスライブラリの長さ計算機能を呼び出す。これに応じ、レイアウトサービスライブラリは、前記一連のテキストのグリフ位置を文字位置に変換し、前記一連のテキストの長さを計算する。レイアウトサービスライブラリは、開始位置と終了位置とをワードプロセッシングプログラムに返す。この開始位置は、右から左へのレイアウト方向において、先頭文字の左または上を示す。終了位置は、末尾文字の右または下を示す。ワードプロセッシングプログラムは、前記開始位置および終了位置と所定行長さを比較し、前記一連のテキストが所定行長さを越えるか否かを決定する。前記一連のテキストが、所定行長さより短いか同一であれば、パラグラフレイアウトは完了する。
前記一連のテキストが所定行長さより長ければ、ワードプロセッシングプログラムは、レイアウトサービスライブラリの文字識別機能を呼び出し、行末文字の識別を要求する。レイアウトサービスライブラリは、行末文字を識別する。行末文字が空白であれば、前記一連のテキストは、そこで親テキストと子テキストとに分割される。前記一連のテキストを空白文字において分割する際、親テキストが所定行長さを越えないように、そして子テキストが残りのテキストを含むようにする。
行末文字が空白文字でなければ、ワードプロセッシングプログラムは、前記一連のテキストをさかのぼり、１つ前の文字の識別を要求する。ワードプロセッシングプログラムは、空白文字が見つかるまで、前記一連のテキストをさかのぼり続ける。空白文字が見つかれば、そこで一連のテキストは分割される。この処理は、前記一連のテキストが完全に配置されるまで繰り返される。
パラグラフレイアウトの完了後、行揃えが有効であれば、行揃えステップ３０８に進む。行揃えの際、ワードプロセッシングプログラムは、行ごとに一連のテキストを揃える。パラグラフレイアウトステップ３０６において一連のテキストが親テキストと子テキストに分割された場合、親テキストは、それ自体が行として揃えられる。行が定義されると、その行の長さが所定行長さに等しいか否かが決定される。その行の長さが所定行長さに等しければ、行揃えは完了する。その行の長さが所定行長さと異なれば、ワードプロセッシングプログラムは、優先行揃え方式を選択する。この優先行揃え方式は、その行を揃えるために許される変更の度合いを示す。例えば第１の優先行揃え方式は、単語間隔調整など、最も緩やかな行揃え調整を行う。第２の優先行揃え方式は、例えばグリフの再置換や再配置など、より強い行揃え調整を行う。
ワードプロセッシングプログラムは、優先行揃え方式を選択すると、レイアウトサービスライブラリの行揃え情報機能を呼び出し、要求した優先行揃え方式がフォントによってサポートされているか否かを確認する。レイアウトサービスライブラリは、フォントテーブルにアクセスし、その優先行揃え方式がサポートされているか否かを決定する。その優先行揃え方式がサポートされていれば、グリフ置換および/またはグリフ位置決めが必要か否かを決定する。ワードプロセッシングプログラムは、前記行揃え情報機能呼出しに対するレイアウトサービスライブラリの応答を受け取る。その応答が、要求した優先行揃え方式がサポートされていることを示していれば、ステップ３０８はテキストの行揃えを続行する。前記応答が、要求した優先行揃え方式がサポートされていないことを示していれば、行揃えエラーが発生する。パラグラフレイアウトおよび行揃えは、現在出願中である共通譲渡された米国特許出願第08/883,666号「レイアウトサービスライブラリを用いたパラグラフのレイアウト方法」（代理人事件番号第１３２３７-１７５５号）に詳述されている。
ステップ３１０において、ワードプロセッシングプログラム２０２は、レイアウトサービスライブラリ２０８から受け取った情報を利用し、オペレーティングシステム２０４に対して表示装置２００にグリフを描画するよう命令する。
別形グリフの識別
図４は、図３のグリフ置換ステップ３０２の代替グリフ選択処理の詳細を示す。グリフ置換ステップ３０２の代替グリフ選択処理は、ワードプロセッサ２０２がステップ３００（図３）において一連のテキストを定義すると開始する。ワードプロセッサは、GetOtlFeatureParams機能を呼び出す。これに応じて、レイアウトサービスライブラリは、ステップ４００において、前記一連のテキストを走査し、代替グリフのある文字の位置を識別する。ステップ４０２において、サーバは、特性パラメータ構造のリストotlListを返す。各特性パラメータ構造は、対応する文字位置に適用される代替グリフの数を含む。リストotlListは、レイアウトサービスライブラリが定義するデータ構造であり、文字、グリフ、属性、座標等の様々なデータリストを表す。ステップ４０４において、クライアントは、レイアウトサービスライブラリが返した情報を使い、異なるパラメータを持った同一文字のリストを作成する。
ステップ４０６において、ワードプロセッサは、SubstituteOtlGlyphs機能を呼び出し、別形グリフのリストを取得する。ステップ４０８において、ワードプロセッサは、ワードプロセッシングプログラムのユーザに別形グリフのリストを提示する。前記ユーザは、ステップ４１０において、描画する別形グリフを選択する。ステップ４１２において、ワードプロセッサは、一連のテキスト内の文字に特性記述を付け、ユーザが選択した別形グリフを識別するためのパラメータによってその文字にタグを付ける。これにより、それと同一の文字が後から出現した場合、その文字は同一の別形グリフを用いて描画されるようになる。
ステップ４１４において、ワードプロセッサは、処理された文字（ステップ４１２）は、ステップ４０４が作成したリストの最後の文字か否かを決定する。その文字が最後の文字でなければ、「No」の分岐をたどってステップ４０６に戻り、ステップ４０４が作成したリストから次の文字用の別形グリフを識別し選択する。その文字がステップ４０４における同一文字の最後であれば、ステップ４１４の「Yes」の分岐をたどってグリフ位置決めステップ３０４（図３）に進む。
グリフ位置決め
図３に戻り、グリフ置換ステップ３０２は、グリフ位置決めステップ３０４に移る。図５は、グリフ位置決めステップ３０４の詳細を示す。
ワードプロセッサは、ステップ３０４に入ると、ステップ５１２においてレイアウトサービスライブラリからの情報を使用せずに既に位置決めした連続するグリフの数を決定する。レイアウトサービスライブラリを使用せずに位置決めした連続するグリフの数が所定数Nよりも大きければ、「Yes」の分岐をたどってステップ５１４に進む。ステップ５１４において、ワードプロセッサは、表示装置に既定の位置情報が用意されているか否かを決定する。表示装置に既定の位置情報が用意されていれば、ステップ５１４から「Yes」の分岐をたどり、ステップ３０４のグリフ位置決め処理を終了する。
ステップ５１２においてレイアウトサービスライブラリからの情報を使用せずに位置決めした連続するグリフの数が所定数Nを越えていないか、あるいはステップ５１４において既定の位置決め情報が存在しなければ、「No」の分岐をたどってステップ５１６に進む。
ステップ５１６において、クライアントはレイアウトサービスライブラリに対して位置決め情報を求める。ステップ５１８において、レイアウトサービスライブラリは、ワードプロセッサが配置したベースラインにおける仮想ペン先の前進値、およびグリフのX値とY値を返す。これらを受け取ると、ワードプロセッサは、オペレーティングシステム２０４（図２）の資源を使うことにより、先に確立したベースラインに沿って適切な位置にグリフを描画できる。
レイアウトサービスライブラリインタフェース
レイアウトサービスライブラリは、ワードプロセッシングクライアントが使うためのテキスト処理機能セットを提供する。これらテキスト処理機能は、フォントテーブルに格納したフォント情報にアクセスし、フォントテーブルフォーマットの詳細からワードプロセッシングクライアントを解放する。レイアウトサービスライブラリは、一般にフォント情報機能と、テキストレイアウト機能と、テキスト情報機能とを有する。フォント情報機能は、フォントに関する情報を返す。この情報は、サポートされている書体、言語システム、フォントがサポートしている文字特性等を含む。テキストレイアウト機能は、基本的なレイアウトサービスを提供する。これは、グリフ置換、グリフ位置決め、行揃えを含む。テキスト情報機能は、一連のテキストに関する情報を返す。ワードプロセッシングプログラムは、機能呼出しを行うことにより、レイアウトサービスライブラリが提供するテキスト処理機能を起動する。レイアウトサービスライブラリは、データ構造のリストotlList等を介して、ワードプロセッシングプログラムに情報を返す。
特にレイアウトサービスライブラリは、図３、図４、図５に関連して説明したグリフ描画方法をサポートする。テキスト情報機能GetOtlFeatureParamsは、別形グリフ識別方法をサポートする。このGetOtlFeatureParams機能は、一連のテキスト内で別形グリフまたは特性パラメータを見つけだし、その結果としてptlParamsを返す。これは文字レベルの特性パラメータのリストである。このリストから、クライアントプログラムは、一連のテキスト内において別形グリフを有する各文字につき、別形グリフのリストを要求し作成できる。
テキストレイアウト機能PositionOtlGlyphsは、グリフ位置決め方法をサポートする。このPositionOtlGlyphs機能は、仮想ペン先の前進値、描画するグリフのX値およびY値の結果として、ptlDAdv、ptlDX、ptlDYを返す。これらX値、Y値、前進値を使うことにより、ワードプロセッサは、複雑なレイアウトを必要とするテキストをサポートできる。グリフ位置決め方法は、一連のテキストに関連して、PositionalOtlGlyphs機能が返すデータを使うことにより、レイアウトサービスライブラリを用いて位置決めした連続するグリフの数を決定できる。
要約すると、本発明は、一連のテキストに対応するグリフを描画するに当たり、レイアウトサービスライブラリを用いて別形グリフを識別すると共に、ベースラインに沿ってその一連のテキストのグリフを位置決めするための方法を提供する。レイアウトサービスライブラリは、グリフ描画方法をサポートするためのテキスト処理機能セットを提供する。一実施例において、レイアウトサービスライブラリは、フォント情報機能と、テキストレイアウト機能と、テキスト情報機能とを含む。当業者には明らかなように、機能をさらに追加することもできる。オープンタイプレイアウトフォント規格に適合したフォントに関連して本発明を説明してきたが、本発明は、他のフォント規格やフォントにも適用可能である。
当業者には明らかなように、本発明には他の実施形態も可能であり、本発明は、その精神および範囲を逸脱することなく、それら他の実施形態も含むものである。本発明の範囲は、請求項に記述の通りであり、本明細書によって補われるものである。
【図１】
0004497432.tif 000002
【図２】
0004497432.tif 000003
【図３】
0004497432.tif 000004
【図４】
0004497432.tif 000005
【図５】
0004497432.tif 000006